以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2505
0
0
有三种方式:
3 h% Y8 Z" v4 f
部署合约时转账$ U, Y# Z* e1 X3 v% k$ E
调用合约提供的方法
4 K, o t( n: z$ o) [/ A; V1 @, a
直接向合约地址进行转账9 \+ j% t( [ \* Q3 [
4 Y/ W; s" h1 s
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
1、部署转账
3 e" M4 U& w' t6 T3 w
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
示例:
contractTest{0 } |& F1 q5 z2 {! t: C$ _
//构造函数添加payable修饰符即可0 J c) b+ X. k9 `9 `
+ u$ h9 P6 d/ J/ R3 C9 e$ J3 x
functionTest()payable{7 i! j# O. k) d# I6 {7 N1 y0 K
//构造函数其他逻辑代码
& q+ ]: @1 t7 h4 @3 y5 \5 V& v' K& f
}
! L- z" d4 G2 W4 t* Y7 s+ q5 [: j
}9 Q/ O) Q" _4 x B; O
2、执行合约转账; O2 G. J, m- r5 W: R+ P$ ~
$ ?2 T/ f' q+ c/ u% |" d ?
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
示例:6 {: Z% r6 d5 c7 E1 @1 U
, G8 L9 R1 p( T
contractTest{
functiongetBalance()payable{
//其他逻辑) G: x- K/ t" d7 h
}
}
3、直接转账/ e% L8 ^# p" b% J7 M. ^* j
5 Z% w4 S) Z: a8 N
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符4 q: {6 M% _# Q- D
示例:
0 o3 V* c5 Y; ^# V/ C/ ^9 t
contractTest{
1 c' m/ y& A. p7 ~3 K
function()payable{4 T& R& `4 Y$ o* x
//其他逻辑 F7 E# V5 A- C- r6 f" {% J8 r
}
9 F8 J# Y8 M; U2 V" G
}/ l2 V2 |1 w; g/ d/ o. w* H- g
( |4 Q, X( Y' {, v" I
附录
% _# w9 ]' i0 b1 g
函数修饰符(FunctionModifiers)
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人