Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2421 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?- Z6 s# O( ?# S5 P
2 ]" w( ]4 c1 i
    有三种方式:
1 U3 _! K& }2 i3 M& f0 n
, j) t+ S2 F, D4 k. w$ w    部署合约时转账
# [7 D/ s) M6 I! v% f6 B1 |7 K) g2 S: t( J
    调用合约提供的方法
) ~6 e; e" @7 o* v" H- e9 R* d3 ^+ j( p; t
    直接向合约地址进行转账. l: Q- A& g' a5 o$ O2 v
7 U8 X- E$ C: u  {% I& o$ @
    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
7 o& X1 U- x" {: z9 z
; A6 P" A; h+ {- I/ g    1、部署转账& N( f: c) I4 t5 S- n
+ q0 Q2 g2 P3 C- Y
    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
' l5 U; b& ]' G: U" [4 O! v$ _4 w8 @: b5 F5 m+ Y/ O* U! u6 ]
    示例:% c; _8 f# \$ k5 D% D' r0 b
9 ~2 p, X! J: U
    contractTest{4 [+ @7 V1 c3 j" I; u3 G4 s$ g

' w1 d4 w+ [4 o# e0 ]; R    //构造函数添加payable修饰符即可
1 C$ p% i4 y: w1 ?8 U+ V8 d0 k6 x, K: Q- w; E2 p6 _6 X
    functionTest()payable{
9 Q3 S$ l0 P* Q  X# m/ ]1 f  c8 l: d9 R; Q) ^0 ?4 T' O
    //构造函数其他逻辑代码
# i9 G+ i8 @7 _+ X6 X1 U4 m4 b8 q- \+ W. W/ h9 ~$ k: ?
    }$ W1 Z- H% I- `
- S- r9 u3 w; [5 W
    }& j0 @/ Y' S+ L, E/ G% e9 \
4 L* c! P: @) k6 q
    2、执行合约转账9 t  d' w$ F/ S% T5 Z

3 N7 u# j9 L, [' ^    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符( d  v4 K% J! q' o
6 T* K2 t, ], l  x3 b+ P6 f; }4 f
    示例:7 x4 _! I* Y5 ~# G$ v

7 Z- Z1 u4 c, v6 n& W" a) s    contractTest{( T$ v7 H, c( m, X' X8 g& h& x
. a% w4 t* q7 h& m
    functiongetBalance()payable{6 h: R, A8 U% F$ y2 U: T3 t& ^
" O1 h# R7 o6 ^
    //其他逻辑
, J  t0 I" |7 u, X  c( G4 S" N' f) z
    }' Q( D9 H5 L8 p3 m; P
) C8 [! E$ e6 S9 @* R
    }
7 _% f5 @/ ~2 L% f: Q8 E) G' I! L
+ c& n7 Q: S  E+ p    3、直接转账
9 J' l# n- Q+ U$ M4 @; A5 t
: @  a! T. e" [. V2 P4 p& j' e    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
9 ?1 ^+ x) Q  |, t- J) i
8 T' R$ J- S: _# n% T; u4 U+ \    示例:
7 s* E+ e$ w/ ?- f* ~# p
& Z6 u9 f, D5 P# M( I$ K6 h% r    contractTest{5 m0 h6 k1 _3 w  x0 D* N

7 k  G1 v# L% T; k' S    function()payable{( [7 b& x0 ?9 o; ?3 C

2 v5 Y( v" ?) c1 e6 |) b    //其他逻辑
$ L7 H% S5 A: q2 f9 m: l) S3 s# J$ H5 g1 Y( b
    }, g9 t2 N. u; N3 {

  T; |3 l: a6 u5 p! b! Z    }, t* A0 O4 c, L$ X: A" G/ h! w9 R
& r/ A: w) ~  Z7 V  h
    附录! M, m; B. h# U

3 [. R! Z* O5 N* O# J$ M    函数修饰符(FunctionModifiers)
( @2 M3 H) w' d7 \* I( J) L7 V, A: z& M
    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12