以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2376
0
0
有三种方式:$ ?$ |# c+ }$ ]
部署合约时转账
调用合约提供的方法' z0 {4 b" w; s3 v* |, m
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?- g3 z6 ^2 l, I2 q% p
1、部署转账( I- z' ?! P; v
9 I5 s& g9 `. W" f- H
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
+ R$ V9 G8 V. p2 X/ q
示例:
# a5 U1 O" I2 M7 c/ X
contractTest{2 N( \7 A4 C/ P( U, I
% e2 b% f! E; H& ~' d3 }+ D
//构造函数添加payable修饰符即可3 g" K6 H7 t; e+ k. K" u, P% o8 f
functionTest()payable{
//构造函数其他逻辑代码
}' }0 i0 X. ? B/ e. z2 t
3 x8 V3 k- B' J- l: K" V+ O
}
2、执行合约转账
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符 @' ^9 [5 n+ O5 W* F' w
& g, s2 s, F# z. O6 v
示例:
" o+ k- i, B4 n0 {. N$ j
contractTest{4 p) C- o; X( O( N2 H) h% h4 e( c8 g
) V4 G3 }2 `* }3 w4 j0 Y% V+ y
functiongetBalance()payable{3 r) R& o4 P6 \3 A$ s. t/ a
: i+ M+ b& }- f3 L0 x, m7 @
//其他逻辑
0 r; u( e& f, z2 ^; d
}. F4 a' L1 g/ p/ Q; O& f! t
& [6 f. `1 h3 D8 G1 l% R
}. `* I! e; l9 A9 _
3、直接转账
l. x; c4 z" ]) r- d& k5 S
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符) O0 a8 m; N4 w: K1 R# H" l
示例:- E/ d- u8 S. q. i
contractTest{' ~) r: c( Q/ }. i6 [) _ K
' S8 T9 R: M$ ?9 _! g; I
function()payable{5 [6 r* e/ m( K0 ^# C- a
//其他逻辑% T6 Y, m0 ]0 B4 k6 G4 Z
}
}) e$ r% @! s: z/ ~. K. Q
/ M+ [0 s! m7 A
附录
% m7 i8 k6 F/ U& ^. I
函数修饰符(FunctionModifiers)
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人