Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2424 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?, j- T* {  B4 l( h& o0 B
% A( ?% a# J& m' O) D1 f
    有三种方式:/ ~& k# `9 P2 w; ?9 ^8 N( C; W

! q) |0 O! y" n8 q8 p# E1 d    部署合约时转账; z- @- M8 Q3 z2 s

& s, z  t: w2 {8 S3 A/ u* R    调用合约提供的方法6 L9 H% a9 F) I" K9 `1 O# j

/ Q! P! _# Z* c; G% c    直接向合约地址进行转账
( I! Y- x# _; h2 [- j) t
7 E* ]  k3 }0 |9 \, ?6 J+ r    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
% ~* q* m( n7 W- e9 o) R* G  y( {8 C* E4 [$ `5 ~
    1、部署转账# o+ W6 r2 [) `4 e( o9 |

8 b+ T) q& C" k# I    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。" |/ |, M8 f  O
0 o, O. R, l+ M, u* Y' x
    示例:& r. A- K# |% _0 p1 v
9 K5 P' L" F* U) o# J
    contractTest{9 i9 W, G3 A8 C+ p, w; V9 ]
) x8 B8 p. x/ R8 O- k: {' V" c( P
    //构造函数添加payable修饰符即可
7 I, S  R2 E/ ~! t+ U, V( N7 ]; q( q) c* k
    functionTest()payable{' d* M$ F& _. g4 q

. }6 [0 V! O; A% s( e    //构造函数其他逻辑代码
2 |0 y: P0 J+ v' h+ w# O: `
: a8 d! ^' p# w. n. f    }
3 n8 x7 X3 \- u/ t0 M6 w; W* K5 e+ [! x+ K, p7 S) b8 `
    }
* s! R" {3 T- l/ d2 u/ l% ?2 C1 j6 Z  i( B* c! C, f( D: q- n8 v& G
    2、执行合约转账/ f5 P+ e, e1 F9 B7 Y! h
  ^. o' u$ {6 e  D
    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
- z5 y1 f' a+ ^+ h) D* y$ C) x1 B  p: c4 u6 V3 s" o- w6 p
    示例:1 s. F! G2 P0 R$ x

1 l5 ?" Z! j7 A5 L5 O* \  {* y& o    contractTest{
  U" x$ c  \) X# x/ ]
7 J2 d. M6 L( T5 a    functiongetBalance()payable{7 S, l: i- X% M# a
8 f7 e1 F$ \% r) j
    //其他逻辑, Y( @! K8 X4 ?3 \# B$ y+ I

; q6 _6 |4 `& F* _) f* K4 I    }6 l! r* k6 k2 @- a8 m9 ]

) a7 M* n3 l, \6 w3 V' q    }! i$ R* Y* ~5 T6 D( `% ^4 M
' U& R  b& q; Z& I
    3、直接转账9 Q. h, p& X; v3 o9 V

3 h2 o4 w5 I% T3 T: k    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符5 Q7 s* o. c+ o# ?8 ~* _

6 D2 H+ w0 C  T    示例:
! `7 J  b) d/ U: O% G3 m3 A
  |$ @% p; C0 X6 _8 j    contractTest{2 A; ~  v: w+ r5 x2 L
( L2 T( d( i- l' I+ `$ q+ ~8 r
    function()payable{
6 v, f7 O* H4 W% t$ Y' A# |$ O& U! w. G" }9 r! u
    //其他逻辑
; k7 _7 H& @" U0 @1 x) j  I
( R' p- B4 v" j5 x    }, p$ `  R6 }9 f9 v# J4 ~

1 J& R) T4 E3 G+ O2 `    }
. V/ k8 d3 |8 \( {$ R  j2 h
7 y* j* [" J, L    附录6 k" l( o* `7 m- p% j- |
( F2 V$ D4 Q/ N# ^% z5 U& c
    函数修饰符(FunctionModifiers)
- d+ ]  V& b2 o+ f+ U5 U7 T0 r. z4 O& K: Q! z+ l) `
    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12