以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2510
0
0
有三种方式:
部署合约时转账. i) f! q9 c" N! x1 [5 t* J
调用合约提供的方法
& |3 O; @+ s) h$ a% c+ g
直接向合约地址进行转账! Y, j, U4 x% X8 \+ P( E
6 S& C1 j/ ^" l
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?8 `7 I1 D" r3 I# D, w" S
1、部署转账: y @2 X7 s7 c
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。* P0 m! |9 K1 T6 f, k; B8 \+ r
示例:$ \) U" {* ]; w! K+ | @
contractTest{( P% b4 J6 v% z! ^! h
1 _7 n( l5 h8 `$ d
//构造函数添加payable修饰符即可
functionTest()payable{) V& p8 I5 \% ]1 u
//构造函数其他逻辑代码# C, V# F5 {) O( y# w# z( W
}
, S/ x- J3 @0 D- h1 B$ B" m) E
}
4 R+ o) X6 G. {7 W, \& ]7 t
2、执行合约转账+ F* C. e$ G/ d: x1 f O6 @5 ~
) y M6 m8 r8 m- n( ?* E: s# S
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符! \4 p8 O0 I' e$ N1 N) w
示例:
1 u6 r6 z& E( l
contractTest{
9 i9 C1 c7 O0 E: i, o$ A1 g
functiongetBalance()payable{, G, g, t" O, h+ a
//其他逻辑6 x5 E% ? i U: H! ~% F% B2 m$ q+ |
}
# h% `4 B/ m; V9 o6 J
}/ b1 H& A" V# y7 \" E! R
3、直接转账
( N- K! |* ~/ | T
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
* @- ^; X5 ?1 F- `' b; ^* L
示例:. N/ X% [$ k. P
contractTest{
function()payable{% Z& b& G5 w3 n7 c+ N/ G6 L
//其他逻辑3 g; B: `2 w& U0 X
}
}/ a, q' a' d! `" U
附录* s* ^" P6 v: `
函数修饰符(FunctionModifiers)8 J# R4 b7 U. [) u
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人