Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2505 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?
3 L, s4 L: H. s( ~1 t2 D7 Z
" g4 D% \, X; J7 ^0 \0 k/ _5 s    有三种方式:
  `. d8 ^0 q# `# o4 I/ A: h/ M3 h% Y8 Z" v4 f
    部署合约时转账$ U, Y# Z* e1 X3 v% k$ E

5 V9 r# Y1 O+ e, t    调用合约提供的方法
3 K. G3 G  L( o/ M8 ]4 K, o  t( n: z$ o) [/ A; V1 @, a
    直接向合约地址进行转账9 \+ j% t( [  \* Q3 [
4 Y/ W; s" h1 s
    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
1 P, L# B$ R) a7 l
  N2 V  s) I. a- a2 N; K  F    1、部署转账
) D9 }; |- T6 _+ \1 y' X3 e" M4 U& w' t6 T3 w
    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
. g0 t: c" s: Q( f2 f
/ m1 ]$ j' I6 O7 `    示例:
5 [3 w& |' O2 e; E# {7 S  h7 W$ w! n2 _
5 S5 D# J$ N6 `; \    contractTest{0 }  |& F1 q5 z2 {! t: C$ _

7 s" }8 \  D/ b( p4 `3 f    //构造函数添加payable修饰符即可0 J  c) b+ X. k9 `9 `
+ u$ h9 P6 d/ J/ R3 C9 e$ J3 x
    functionTest()payable{7 i! j# O. k) d# I6 {7 N1 y0 K

2 D' _% A7 T9 f& X    //构造函数其他逻辑代码
& j7 s6 a# `* B) ?# w& q+ ]: @1 t7 h4 @3 y5 \5 V& v' K& f
    }
2 O5 b+ V9 G7 o' z2 ]4 N0 Q! L- z" d4 G2 W4 t* Y7 s+ q5 [: j
    }9 Q/ O) Q" _4 x  B; O

1 O1 A7 p! X$ g) z    2、执行合约转账; O2 G. J, m- r5 W: R+ P$ ~
$ ?2 T/ f' q+ c/ u% |" d  ?
    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
* [/ s$ \9 t  c  o) z8 a7 {
+ T8 c) w: z/ R    示例:6 {: Z% r6 d5 c7 E1 @1 U
, G8 L9 R1 p( T
    contractTest{
) u# b+ Z$ r- \+ ^& N
- f- }8 E1 {3 `# U) u) _    functiongetBalance()payable{
9 {. @7 `; c3 l( z+ {5 q  p  T
2 r6 Q0 V* ]- h% C) b    //其他逻辑) G: x- K/ t" d7 h

/ B6 f) k- }6 v- d    }
9 e/ S: K( j# u5 T: o
, ^* f( |7 k% ^  X* Q  r3 Z    }
3 ]  ?) j* M$ E5 u+ T
1 ^4 ^0 o* Z8 x8 |. L( Y" M. D    3、直接转账/ e% L8 ^# p" b% J7 M. ^* j
5 Z% w4 S) Z: a8 N
    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符4 q: {6 M% _# Q- D

! _' s8 k3 Z7 i+ Q: o/ c( O    示例:
6 ~! d- q' X" `3 p9 K0 o3 V* c5 Y; ^# V/ C/ ^9 t
    contractTest{
; B  H9 m; P! e; `3 P" G1 c' m/ y& A. p7 ~3 K
    function()payable{4 T& R& `4 Y$ o* x

+ z( |# `5 @& J/ m( w; Y2 I    //其他逻辑  F7 E# V5 A- C- r6 f" {% J8 r

; z9 v9 R3 l! I' I    }
: u% y$ d0 I  {9 F8 J# Y8 M; U2 V" G
    }/ l2 V2 |1 w; g/ d/ o. w* H- g
( |4 Q, X( Y' {, v" I
    附录
% j7 v8 F- r2 p4 o: k% _# w9 ]' i0 b1 g
    函数修饰符(FunctionModifiers)
9 a3 Q: M! C  r3 \1 B
0 A% {; y4 B0 r3 ^1 F    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12