以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2418
0
0
- ]" Q9 P0 U4 q6 ]. C0 {
有三种方式:
9 B' x# [, n) s# z( C- C
部署合约时转账
# A, Y# u: F1 E8 v Y( ?' P6 w- [
调用合约提供的方法+ i2 O) c" E3 F
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?9 {* j, X, T& f& R
1、部署转账
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。( i( g! h0 p% a) d9 `( f, t
示例:
contractTest{
//构造函数添加payable修饰符即可/ f: R$ v' ~, W9 I) E+ N7 l5 S [
8 b* b# ?9 j% s; }! m& \
functionTest()payable{9 p2 q8 e, @4 D% N' L/ s
//构造函数其他逻辑代码
}* @1 V3 u" G3 N( @ X2 v; z
$ [, M6 u. |& F" c* v
}
, i3 Y7 a7 H5 R7 J9 h
2、执行合约转账* ^" ^+ t7 R7 a9 S+ C
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符4 |: _& o4 g) ]/ y2 a, k
- P+ w$ y2 Z' {- C0 Q
示例:' k- Y/ ~. b% V, V
8 j& k! H5 K8 ]4 b$ X) G. p5 q
contractTest{* U! L# n0 `4 }3 t# Q2 f
functiongetBalance()payable{2 g+ R; g. r, _3 Y' |1 Q8 Z
//其他逻辑" V$ I% o5 ^7 R5 K C
}
}
, T4 T( L5 B0 H) @9 ^+ ]
3、直接转账
~# a# z2 X. h( w3 l6 V) r
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
示例:
contractTest{
function()payable{
N p2 @6 S9 @* T$ T y* F
//其他逻辑
}* O: q3 e3 B" _. ]4 y; O0 R# u6 I
}0 E9 K0 m) }% g- U/ T, w: L5 C5 C
附录! f# H& Y) Q6 V0 C9 c
5 i/ `, t- b( j
函数修饰符(FunctionModifiers)
% a9 e4 [4 J% ~0 Q' o+ Q
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人