以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2466
0
0
- b1 N+ C B: l2 ^2 w4 o
有三种方式:( `9 r' }# J. h3 Q
5 b; e5 \) _( A ] S1 o
部署合约时转账
7 H; N% z: h. X0 S* Y5 ` h
调用合约提供的方法% r4 p: p8 N$ v; d$ Z/ n5 h
& v$ Z* k0 s% [2 E" S, O: ~
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?. W) N. r" B: Z+ z7 ~4 w, C& b P
, z5 v3 i* W! |, \
1、部署转账
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
- F% y% u9 R b, m* Y
示例:7 N* `$ Q. s( i
: G2 Y! V7 O: u3 u6 r2 U* _
contractTest{
5 F' i3 E4 B3 |5 o1 N* h4 k/ |
//构造函数添加payable修饰符即可
functionTest()payable{1 `0 u) X7 j2 N: g! S
b S& ^. E _7 q8 Q- c
//构造函数其他逻辑代码; ?3 `0 W8 ]' i2 L& Y+ ~, R
1 j* q4 w j0 B( E1 \8 w# D
}$ D/ f/ G& G2 g c6 G* S
9 b9 S# e5 G9 E: ^9 O
}
' y* c: _& Y1 l! O2 U2 N& s U
2、执行合约转账! I5 P! E, c3 x! h
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符# @# h$ F% S4 S( u4 U( e5 i: D% \* S
2 v. F0 @; I k6 Q( j* Q
示例:! w7 S+ S, ^% b7 f" m
contractTest{: }. K, m3 k8 S
functiongetBalance()payable{, D; ?. [4 y1 D: Z& I9 K1 k2 T
//其他逻辑3 h" w" f0 G8 j0 z
! l4 A7 v' `( u" H" J
}" E: F6 v" [/ g$ R. F) ?) p- C
}
- k/ B+ E) \+ a0 [& Z$ z1 B$ Q T
3、直接转账
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符8 h% I2 D1 y! e4 q9 }2 z; m
2 t0 K% a+ u5 [; J) Y( j! B
示例:! s7 |1 t& g$ N. X' @
& u2 n: a8 U3 N: O! f: c
contractTest{' ~1 |' r5 M9 U
function()payable{
//其他逻辑
}, G9 o \' T4 \1 B8 _
" U% d" b* A* ]7 W. W
}
2 l$ w) a& Z1 U9 y: W- \
附录" ~) @1 c2 j! r- L
函数修饰符(FunctionModifiers)! c4 C5 }2 N: p( S' z* c
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人