Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

以太坊智能合约开发:让合约接受转账

星火车品
2439 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?
7 U: D; H4 Q/ f! C% Z2 [* `: N; y' J
    有三种方式:
/ h9 ?1 x1 d; s* }! e
/ I. o) Z7 o$ P( T    部署合约时转账. F1 T- o+ v4 m
& n$ d/ h! m+ x( O$ {, f
    调用合约提供的方法
( N+ v; s4 q& o1 i( f7 Z7 b$ l' I2 \
    直接向合约地址进行转账
. l  k! R0 m# Z4 g3 |6 P# f$ X7 U3 V- a5 J
: v* `. Q/ H  Y" O6 S1 b    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
+ z4 @! d  E2 U3 i$ U5 T/ [, t0 T+ b; t" h& N* K! W7 L
    1、部署转账
$ E3 }  `" ^7 ?; z7 W7 v0 H5 X3 [" k1 [4 \7 Z
    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
' ~$ M! Y; f. W6 t7 L# G6 i. O. m
    示例:
3 @: e  I/ X+ Q0 q& m& ^- _8 I+ N3 K6 G: Q5 c3 R4 p8 @; [1 {
    contractTest{
& D% Y+ x+ c. n
' T- h+ O, q; ~6 i# F& |    //构造函数添加payable修饰符即可
& L3 A# \# z2 O6 C! ~- T5 Z
8 f- o- n. Y! K& Y+ A5 Q    functionTest()payable{
: I# A: J) j; U
5 D1 e& E# K2 Y" m) _    //构造函数其他逻辑代码
4 [1 z8 V; G" z0 P  D- r; r) y& G- w# s' @" W( {; e! M: s% y3 m
    }
+ @( g3 A' s/ [: W" C
, [8 O8 }% S6 |' K    }
( k+ a/ M/ P/ n& G( l" H, `5 N5 X# X5 R/ h
    2、执行合约转账, _$ ^! Z- c5 Z( e- Y

! Y8 t/ V! s+ F4 ?    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符5 d8 B; T. K" Y7 O- A, g/ S; {  |
' Y  ]. m* u2 [% H. V& R
    示例:
( Z+ K0 N( @; n1 M# q2 e9 v' t, G+ V. O2 X; m
    contractTest{
! T7 A" s9 [& z9 ~0 l
  w4 L2 m$ Y3 {# H; J8 c    functiongetBalance()payable{
5 d  k* t5 @) Z, e
3 Q% D: V9 w# e) N8 F' U    //其他逻辑
1 `1 V. c4 y! i$ S
$ h5 X" p1 i) }1 V: E( e    }
. b. b0 D( [7 E6 K. r7 f- [, n7 J- J+ v6 h: [, ^2 Z
    }
6 m$ q9 @7 v# p0 b5 l% b& g
$ ]+ D" r5 I: d2 q    3、直接转账
7 c. U5 ^+ a. e( q. L1 D5 F
) x# \9 Z5 u6 S0 q0 A. s    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符- C& w  T! G1 j$ s3 _/ h! L4 Z( Q
( n$ `9 s* `( k8 A& `$ y
    示例:
! V5 r# b) X- o5 V' I6 @+ E  d" l0 P. }8 ^$ ^7 B5 a; }
    contractTest{
3 k+ ~; Y' |) c6 u: V
! d+ X/ v+ ^) |4 W    function()payable{( c9 ~2 X7 @3 N$ F7 [& Y( X

/ O9 I" I, A+ B4 y0 x    //其他逻辑2 F) n# C8 P$ ?

: B- U& O2 I: H1 Q. m8 i    }" p5 }9 Z4 ?+ X9 H4 e; e# W5 G! v
1 R: C" h9 `) V6 }9 s
    }" A% B( @5 L, s: Z& l8 s$ \

2 s$ q& h- `, |1 a4 j; w    附录8 q& k9 Y4 ~0 ~+ Q  Y
( y  W8 x! i. R: c
    函数修饰符(FunctionModifiers)/ X: Q% n7 G& h6 L$ v# V+ b

( C$ J3 X1 W: H    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12