以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2421
0
0
2 ]" w( ]4 c1 i
有三种方式:
部署合约时转账
6 B1 |7 K) g2 S: t( J
调用合约提供的方法
- e9 R* d3 ^+ j( p; t
直接向合约地址进行转账. l: Q- A& g' a5 o$ O2 v
7 U8 X- E$ C: u {% I& o$ @
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
1、部署转账& N( f: c) I4 t5 S- n
+ q0 Q2 g2 P3 C- Y
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
4 w8 @: b5 F5 m+ Y/ O* U! u6 ]
示例:% c; _8 f# \$ k5 D% D' r0 b
9 ~2 p, X! J: U
contractTest{4 [+ @7 V1 c3 j" I; u3 G4 s$ g
//构造函数添加payable修饰符即可
8 d0 k6 x, K: Q- w; E2 p6 _6 X
functionTest()payable{
# m/ ]1 f c8 l: d9 R; Q) ^0 ?4 T' O
//构造函数其他逻辑代码
8 q- \+ W. W/ h9 ~$ k: ?
}$ W1 Z- H% I- `
- S- r9 u3 w; [5 W
}& j0 @/ Y' S+ L, E/ G% e9 \
4 L* c! P: @) k6 q
2、执行合约转账9 t d' w$ F/ S% T5 Z
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符( d v4 K% J! q' o
6 T* K2 t, ], l x3 b+ P6 f; }4 f
示例:7 x4 _! I* Y5 ~# G$ v
contractTest{( T$ v7 H, c( m, X' X8 g& h& x
. a% w4 t* q7 h& m
functiongetBalance()payable{6 h: R, A8 U% F$ y2 U: T3 t& ^
" O1 h# R7 o6 ^
//其他逻辑
c( G4 S" N' f) z
}' Q( D9 H5 L8 p3 m; P
) C8 [! E$ e6 S9 @* R
}
3、直接转账
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
示例:
contractTest{5 m0 h6 k1 _3 w x0 D* N
function()payable{( [7 b& x0 ?9 o; ?3 C
//其他逻辑
3 s# J$ H5 g1 Y( b
}, g9 t2 N. u; N3 {
}, t* A0 O4 c, L$ X: A" G/ h! w9 R
& r/ A: w) ~ Z7 V h
附录! M, m; B. h# U
函数修饰符(FunctionModifiers)
( J) L7 V, A: z& M
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人