以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2419
0
0
有三种方式:6 F- e( U1 W" n, Y. Q! I, g5 O# x, K
部署合约时转账
调用合约提供的方法
6 w5 e* n6 c* r+ A# N1 w& w6 x
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?" e6 A5 _ D7 B
1、部署转账
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
# r- p) u5 Z" B! E1 ]! L
示例:
7 _) @; A6 ^4 Y; W2 W
contractTest{
& N- {* B9 y; \1 i6 [- i6 m
//构造函数添加payable修饰符即可4 x% Y2 ~5 k/ o0 j$ _- m* `, Z
functionTest()payable{
//构造函数其他逻辑代码
8 U* g5 H4 `, p Z
} t# W$ y- R5 {) R
}
6 g+ b; q: O ]9 x. C
2、执行合约转账
7 F/ l1 s# S0 ]# M$ ^0 U5 ?
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符. ` H$ J! ]9 r& S. w' r, e3 y
示例:4 O$ C: B, c9 `8 k, _. {) v' T O
7 S$ W) h5 M5 f+ H- s
contractTest{6 y0 q# f& C! y5 z, ]/ @
8 N' G( [; g* T$ z& Y
functiongetBalance()payable{
//其他逻辑
}7 Y1 F/ b( w: t1 C T- F% u
}4 e1 t* `1 j9 V ]
3、直接转账
# L* O) Y) u5 |
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
4 h+ e7 H$ Y% P# p- {3 X
示例: L1 W4 j, U9 ~& f) G4 H
contractTest{
/ D9 }5 f4 r: \& g6 W
function()payable{' Z8 g7 ? {3 p2 q# m& I
//其他逻辑 Q4 A/ ^& P. z3 V2 r7 @
9 s2 _ U6 f; I& G }
}
/ V0 B! S; Y# {& U. t1 B
}
附录
函数修饰符(FunctionModifiers)
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人