以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2420
0
0
有三种方式:- W0 |+ }+ t8 X( i( d" V5 d1 O4 o
部署合约时转账
/ J: _! C0 C4 C/ W: g! a
调用合约提供的方法
直接向合约地址进行转账
3 C5 }9 O5 `' Q) I& Z8 j
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?. m. @! {/ W+ D2 h: K! W6 a' B9 i
4 U% [3 l; N9 h) S* `) ?
1、部署转账
7 `7 L) P3 m4 s d% G& B0 ~: M2 F
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
示例:: f% Z8 A5 Z8 X, z
contractTest{) M: C F& Y ]7 k" X. \
//构造函数添加payable修饰符即可
: ^3 l9 E' J" j3 v& E
functionTest()payable{
2 i4 ?* R5 O+ r% U3 G- L4 S
//构造函数其他逻辑代码
+ _5 G: X: l8 ?* K0 Q# n) w
}
/ T. _+ Y: k! ?5 X
}1 X* ` L8 p1 }6 ^4 g# q
9 F. x( {& g3 _# @
2、执行合约转账
: B( K# \* s1 c
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符. |6 [4 r7 N! G9 Z& d7 n
示例:! y- \6 b6 x% o% p' I
i( H$ p6 m# V* E5 L+ a( T
contractTest{
) G% B# c" h2 [ J
functiongetBalance()payable{5 Z: d5 b: L5 l" D! ]' x J
//其他逻辑" _1 h( ~7 s$ c H# n6 |
5 m: a5 X8 E% b: T; k, o, B
}% e6 }& x+ i4 [$ _: r! l) o
}
% g7 N2 a1 p: w5 ?
3、直接转账3 P, ^4 j; S: x3 Z/ H0 d# i* j
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
4 W' i: q' q7 B8 v$ B1 p4 x% D8 r8 w
示例:9 [0 b3 N1 _1 P6 W2 n
contractTest{3 x) E$ G; j. _4 Q: O
% C/ x; U; ` @* ^5 b6 a
function()payable{
* J; r. e9 T2 T
//其他逻辑
}
}: \0 R. H/ B( ?# e; h
附录
函数修饰符(FunctionModifiers)& I! I `% F2 O( [4 T, @
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人