以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2512
0
0
/ o4 s% f# r" n2 n3 N, }; m
有三种方式:
部署合约时转账
" n$ n- R* \4 ^' o5 n9 q
调用合约提供的方法
3 u, H+ C' V s" `" ^( G1 i7 N( W3 b
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
1、部署转账
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
% e& C6 s: m! r2 ^3 |
示例:& l! ^: o) R( }
contractTest{& O- K. I5 F4 o7 V5 n
! J* u3 g9 g+ _
//构造函数添加payable修饰符即可3 |4 Z$ u+ }. \% g
functionTest()payable{# i$ C. Y5 Q, }0 ?
//构造函数其他逻辑代码
9 i% y& W2 a" ` p% ~
}
}" U+ w4 W8 d6 H
2、执行合约转账/ |! t2 q8 c% a* F: J$ H( U5 y
" Z. I& p8 b8 r$ \5 g4 L6 d
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符3 p( `- P7 r. z r8 u# B7 s2 |
+ j6 F$ z- G1 z( W2 _$ X
示例:
contractTest{3 ]( A/ e( v5 N! _8 \3 S1 t& V9 i k
functiongetBalance()payable{/ e6 O' ?( L6 D) _! ^) A
9 |: a8 u9 _4 A# w) {
//其他逻辑* j2 |+ X9 @1 N0 j
}& ]- s+ y: ]8 d0 p
0 R# [6 W. ?# y2 p' K- I
}
% q6 \7 N- X# z; l; M- z
3、直接转账
; j* X3 G) j* p3 S9 `
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符! Q' j/ p& X0 R4 l
示例: T" Z& i' t9 E( q) `0 D2 w, o" V
* S6 N* K" B& y. f5 ^9 i
contractTest{
7 `7 ?2 z5 d4 j& S' V
function()payable{+ p$ e+ W& o, O. ?
6 l' `* K+ `. d. b2 j
//其他逻辑
}9 L7 ]( s2 s+ @# T2 X
6 [! o. d2 M3 I
}* Z6 L3 _& S* k+ @
附录
函数修饰符(FunctionModifiers)
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人