以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2507
0
0
有三种方式:
部署合约时转账1 i+ X/ x4 H; e9 g: A% [
调用合约提供的方法, x4 s" h. K7 u/ X) Z1 S
' Y. F }' @& I1 Q1 }! U4 N
直接向合约地址进行转账
1 \" _ x. A0 R% h% M+ @9 f2 q+ S2 `" N. H
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?/ K4 z0 l1 A7 H( i- t6 s9 n( X4 W; w
1、部署转账
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
示例:3 u; h P$ ^; Z. J" p
contractTest{
//构造函数添加payable修饰符即可/ d0 i1 L) b/ f: V
. A5 E0 j" J2 ^; v$ r/ ^/ O
functionTest()payable{
$ {: z2 n& W, b [) S& G3 N# X1 {) }
//构造函数其他逻辑代码
' f8 {' ~$ }1 }1 w* g3 ?
}
& X7 g8 _5 c; {$ ?8 a
}
. O# S S' B n6 [+ k+ X( |
2、执行合约转账
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
7 w/ l& j5 Z- S+ {1 }
示例:* V. s( l$ n3 g) ]% ]& s' ]) x0 V1 r' o
contractTest{
8 O2 `! ^8 p% q9 A' j( l
functiongetBalance()payable{, I2 d% V- Q# g L( Z( Z
//其他逻辑
' _6 }7 \& i; }% l4 V' T; n r
}4 p% Z7 G" Z8 F% @& H
} e3 N5 P* F, a6 B, W3 |# ~" y9 k, ]
$ {0 M9 B1 S- [) I9 `3 m$ n7 G
3、直接转账; J9 ^6 @3 ^1 @$ i6 t% T4 Q$ Z! o
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
. V% O' ?" D0 _, M$ X+ E* {
示例:
contractTest{
function()payable{% ^" W+ }3 E5 Y& U! m
) `! I! ?8 W6 A$ J% k5 i
//其他逻辑
}
. |. B* W$ `- d. V
}, l& a* `9 q4 R) h
附录
; l) u* J9 y8 X" L
函数修饰符(FunctionModifiers)3 _) K4 j* k+ a* V& j; m9 |
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人