以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2439
0
0
! C% Z2 [* `: N; y' J
有三种方式:
部署合约时转账. F1 T- o+ v4 m
& n$ d/ h! m+ x( O$ {, f
调用合约提供的方法
1 i( f7 Z7 b$ l' I2 \
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
0 T+ b; t" h& N* K! W7 L
1、部署转账
5 X3 [" k1 [4 \7 Z
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
6 t7 L# G6 i. O. m
示例:
3 K6 G: Q5 c3 R4 p8 @; [1 {
contractTest{
//构造函数添加payable修饰符即可
functionTest()payable{
//构造函数其他逻辑代码
- w# s' @" W( {; e! M: s% y3 m
}
}
, `5 N5 X# X5 R/ h
2、执行合约转账, _$ ^! Z- c5 Z( e- Y
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符5 d8 B; T. K" Y7 O- A, g/ S; { |
' Y ]. m* u2 [% H. V& R
示例:
# q2 e9 v' t, G+ V. O2 X; m
contractTest{
functiongetBalance()payable{
//其他逻辑
}
, n7 J- J+ v6 h: [, ^2 Z
}
3、直接转账
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符- C& w T! G1 j$ s3 _/ h! L4 Z( Q
( n$ `9 s* `( k8 A& `$ y
示例:
d" l0 P. }8 ^$ ^7 B5 a; }
contractTest{
function()payable{( c9 ~2 X7 @3 N$ F7 [& Y( X
//其他逻辑2 F) n# C8 P$ ?
}" p5 }9 Z4 ?+ X9 H4 e; e# W5 G! v
1 R: C" h9 `) V6 }9 s
}" A% B( @5 L, s: Z& l8 s$ \
附录8 q& k9 Y4 ~0 ~+ Q Y
( y W8 x! i. R: c
函数修饰符(FunctionModifiers)/ X: Q% n7 G& h6 L$ v# V+ b
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人