Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2510 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?
$ q" }3 c" g$ Q% `  {" J" t
4 p% p  F* W& P* a    有三种方式:
( Y$ n& `+ a4 ^! `
/ o$ `' R) \( F! J0 v9 [9 R. ^    部署合约时转账. i) f! q9 c" N! x1 [5 t* J

, S* _: _' r- V/ m    调用合约提供的方法
4 k5 B+ k8 s; u2 |: U7 Q6 H& |3 O; @+ s) h$ a% c+ g
    直接向合约地址进行转账! Y, j, U4 x% X8 \+ P( E
6 S& C1 j/ ^" l
    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?8 `7 I1 D" r3 I# D, w" S

; k% N& z) h: m) x) L  x, U# h    1、部署转账: y  @2 X7 s7 c

3 q+ e$ R* j/ m2 v    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。* P0 m! |9 K1 T6 f, k; B8 \+ r

& y4 x7 ?( r! x+ c    示例:$ \) U" {* ]; w! K+ |  @

' c" F: `! G+ V$ ?$ p) d5 m) \8 ^    contractTest{( P% b4 J6 v% z! ^! h
1 _7 n( l5 h8 `$ d
    //构造函数添加payable修饰符即可
6 }3 @" a6 A( Z- U) |* I' B0 @4 I
) S9 ?" p: T; |& e8 y1 J- t! G    functionTest()payable{) V& p8 I5 \% ]1 u

% D; N( V+ u& [, S3 s/ s/ X    //构造函数其他逻辑代码# C, V# F5 {) O( y# w# z( W

5 t% e1 ?7 r# l" \* @- p3 g; R    }
) q; ?. _* b; I( m7 d, S/ x- J3 @0 D- h1 B$ B" m) E
    }
9 d' L9 z! A5 {  |0 z+ ?- \/ K# ?4 R+ o) X6 G. {7 W, \& ]7 t
    2、执行合约转账+ F* C. e$ G/ d: x1 f  O6 @5 ~
) y  M6 m8 r8 m- n( ?* E: s# S
    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符! \4 p8 O0 I' e$ N1 N) w

: k; R* ?+ B: }1 i    示例:
/ P4 g6 I# A  d5 I4 i' X" C; a1 u6 r6 z& E( l
    contractTest{
2 r) u4 Z9 V7 t7 H! x9 i9 C1 c7 O0 E: i, o$ A1 g
    functiongetBalance()payable{, G, g, t" O, h+ a

$ W( b/ i- ?! D5 f    //其他逻辑6 x5 E% ?  i  U: H! ~% F% B2 m$ q+ |

* V. |- D- `0 s- `3 j    }
, t' X" k6 S- a+ ]' i# h% `4 B/ m; V9 o6 J
    }/ b1 H& A" V# y7 \" E! R

8 }4 ^5 p: r1 h  Z# s    3、直接转账
: W' l" l+ d5 D( N- K! |* ~/ |  T
    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
# h0 u3 I3 m* d/ e+ |* @- ^; X5 ?1 F- `' b; ^* L
    示例:. N/ X% [$ k. P

9 V3 R, y; S* m/ s: m    contractTest{
8 ^, j4 C9 ~% g
7 R$ E0 P" q2 T6 b. z* C$ Q    function()payable{% Z& b& G5 w3 n7 c+ N/ G6 L

1 M( A$ i) Q2 O( Z% q7 c+ B    //其他逻辑3 g; B: `2 w& U0 X

# R3 @3 D, s, U) b0 G, V6 ]& g5 s0 p    }
) F* N$ W3 F( s" @& B3 K/ ]) b
0 j0 z1 _% x8 c7 D    }/ a, q' a' d! `" U

" Z: Z8 |0 I# i. B% u0 Q" B2 E    附录* s* ^" P6 v: `

. F- x6 f5 L/ L    函数修饰符(FunctionModifiers)8 J# R4 b7 U. [) u

/ u# e9 W& s  c3 ~" N$ F    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12