以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2506
0
0
8 e7 K9 k2 n9 v# v
有三种方式:* G6 D' P4 l& j- ?9 x
: ^1 M+ l1 t' U( M$ U' P
部署合约时转账/ b, @8 } V1 D! B& u2 \
调用合约提供的方法 N; X, f% t3 x
直接向合约地址进行转账
+ E" V9 H; W9 [- ]/ F7 z( B! t
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
" `. v. W+ o6 D# [8 n( B C
1、部署转账
. Z- x" d: M) A) r1 D' m! E
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。' A1 v6 V' O6 z6 k/ k8 `, _4 `
3 D, w* p0 m. C) ~% D9 C N
示例:
contractTest{
//构造函数添加payable修饰符即可
functionTest()payable{" W' n; V/ a H' a% f
' _4 E. {2 x! Z
//构造函数其他逻辑代码
: ?) V; h# L/ r, i/ A P
} Q& i* q4 v! J/ [
}8 c- {# V" z1 `3 F4 j
2、执行合约转账
: O6 c5 v+ J: E8 T4 N
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符: ]/ q" `$ O; K! {2 o
示例:
3 ]& N- F8 S: m; a, s
contractTest{( D5 ]( q3 Y9 J( g. h
functiongetBalance()payable{
* w8 L; i" F8 k/ ]* Q$ _1 s }
//其他逻辑& ^# P) q2 L2 A7 w. w6 y9 D2 ?0 z
} X- V& b# E1 c: J
: I1 e$ i+ i; o0 P4 W0 a0 M; v
}
0 L2 h. J' q7 f$ f/ g
3、直接转账
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
示例:4 p5 ?' ?; \# h/ r4 J7 [: N
. a9 I# A$ E) W% n
contractTest{
3 M5 B+ T' ? }6 M' n3 D
function()payable{
//其他逻辑8 \3 L. J) }" q) ~$ x: X* F, e
}; ^; ?9 R1 [# C; Y1 s( X! g4 w3 r
]+ C1 `; o N" ]5 j
}
1 @1 D: a2 V! @3 C4 v7 X
附录' i' m, T# P. m ?
函数修饰符(FunctionModifiers)
0 {/ |* R/ t$ t4 b4 [
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人