以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2520
0
0
5 o* ]2 n( L- l& r2 b/ e) x
有三种方式: p9 ] O5 \7 i$ {+ Q8 _/ g
部署合约时转账 w+ s6 n3 F* L, K
% l( o2 T7 N/ K8 b1 r
调用合约提供的方法
- L, i, e" l7 p4 Y% K( p! Y8 s5 B
直接向合约地址进行转账$ D, t; ~4 f: y9 I
+ ~4 E; o* I: `
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
1、部署转账# G6 {% r/ {0 G% u; U
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。' c9 f% g0 B; ]/ y4 y( z& p
/ H$ d8 x! O" f' K
示例:" L% `6 {* x" d3 Y
+ P3 V5 p6 i" h8 V
contractTest{
% p* l9 b- I% e( p7 H$ N
//构造函数添加payable修饰符即可3 x7 S% p/ Y% |7 l
: o! q! a: `8 K
functionTest()payable{$ p V4 d3 T$ Q
, v* c8 d5 a+ r$ A. R' e
//构造函数其他逻辑代码6 p' O0 Z7 ^) j- t
}0 B- ?% ^+ K! w1 _; [
}! d3 Q2 k. x0 j6 c x$ U1 d1 d$ H
2、执行合约转账
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符( \5 v8 u+ J& q' a
% Y8 I$ P2 W9 c$ r; t
示例:
contractTest{
functiongetBalance()payable{
//其他逻辑
}8 ?% e0 \- O! q
7 G3 ?; h2 _3 l
}
+ j4 C9 v7 a( y2 O$ s1 g& Z
3、直接转账+ _( ~9 V$ P5 n
( ]* G9 d) Y' }5 V4 L2 p
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
# |7 q' ?, b, N9 J2 L- w
示例:
! Z1 n& i7 g; m. b
contractTest{
function()payable{; F! |9 A! C. q& u6 p/ y
* }! U7 I+ t+ D
//其他逻辑1 U8 L" E I& ^/ p
+ I F! f! u+ q2 _1 t, m f( F
}( ^" Y$ i# e8 V( x9 J
}3 n' b; N2 n$ J3 M
5 [( F7 `9 _0 V, G! S* L
附录# f' q0 Z1 z" v& c) @* ?
函数修饰符(FunctionModifiers)
' n7 ?7 J. Y- u Z
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人



