Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2419 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?* z; |. H+ g+ r7 `! w

' n9 w# u& m( ]  C; i+ H    有三种方式:6 F- e( U1 W" n, Y. Q! I, g5 O# x, K

- }& Q8 n! n1 R& Y0 F, B    部署合约时转账
+ n+ [1 ~7 W7 i- Y
- d2 L% u- ]) l' c    调用合约提供的方法
. q' }- Q+ p' \6 @2 R- u* M6 w5 e* n6 c* r+ A# N1 w& w6 x
    直接向合约地址进行转账
. [* l* I5 C3 M# s
. B" U/ N4 S$ h* Z1 c    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?" e6 A5 _  D7 B

: r! Q: x" a( H. V    1、部署转账
# H$ O( ]; L* j
5 N; f) a4 b. R) J3 j    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
# H2 ~5 E: j( M- q' F9 ]# r- p) u5 Z" B! E1 ]! L
    示例:
. @+ z/ B  N% Y& V7 _) @; A6 ^4 Y; W2 W
    contractTest{
$ l1 T! {; D* Y  ?. W. e$ y3 c& N- {* B9 y; \1 i6 [- i6 m
    //构造函数添加payable修饰符即可4 x% Y2 ~5 k/ o0 j$ _- m* `, Z

; ]' x# G- u. e) F% @    functionTest()payable{
% p* Y$ T: p6 X. h; o7 n$ ^; \9 n5 A% @
4 M, [' n+ L. f, g, N    //构造函数其他逻辑代码
: p' p' E; ?. |) F8 U* g5 H4 `, p  Z
    }  t# W$ y- R5 {) R

. r8 W6 j+ j2 e" {0 H) \( M  D9 e    }
! L1 G, l5 I$ c" f) ?6 g+ b; q: O  ]9 x. C
    2、执行合约转账
- F7 p/ D% Y' P$ p- u7 F/ l1 s# S0 ]# M$ ^0 U5 ?
    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符. `  H$ J! ]9 r& S. w' r, e3 y

- w$ R+ J0 ^# ^' M2 u" ~( G    示例:4 O$ C: B, c9 `8 k, _. {) v' T  O
7 S$ W) h5 M5 f+ H- s
    contractTest{6 y0 q# f& C! y5 z, ]/ @
8 N' G( [; g* T$ z& Y
    functiongetBalance()payable{
( P+ X8 k5 m4 }. N
- Y8 i1 B1 i9 r5 f    //其他逻辑
1 U3 Z' r2 y$ e5 Q% Y6 c) n- v0 X
; x) @2 V: \5 T* L$ {4 O: [    }7 Y1 F/ b( w: t1 C  T- F% u

! n5 C# D8 V; w# B8 w    }4 e1 t* `1 j9 V  ]

5 m% K5 X% [3 ~7 z% Y' y    3、直接转账
; q! |  R" m+ n( g# L* O) Y) u5 |
    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
# d' E* M2 E9 r% M* `4 h+ e7 H$ Y% P# p- {3 X
    示例:  L1 W4 j, U9 ~& f) G4 H

$ O; ]1 R1 t6 L; y: u8 b/ [4 @    contractTest{
5 w$ t% X: \, ?& r* y; q/ D9 }5 f4 r: \& g6 W
    function()payable{' Z8 g7 ?  {3 p2 q# m& I

% n& Z' `$ f* J2 I    //其他逻辑  Q4 A/ ^& P. z3 V2 r7 @
9 s2 _  U6 f; I& G  }
    }
! o, Y5 f5 ^- L- ]/ V0 B! S; Y# {& U. t1 B
    }
! d; t% b) ^* ?$ o# m8 W: _
# w! N* g" F8 }; ]  I% r+ u7 k2 b    附录
" e0 d4 E  s$ \) B" @9 w
2 \- l2 H# H: i    函数修饰符(FunctionModifiers)
- k' ~' `5 |% _
; \+ p. h3 d" @) _# H2 g, h    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12