Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2420 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?7 L. }9 \4 N( o

) l" j% g" X4 K! p& g4 M) @    有三种方式:- W0 |+ }+ t8 X( i( d" V5 d1 O4 o

0 M' A! p9 L! j$ z9 l    部署合约时转账
  ]/ ]5 m, L$ J. l- {# k/ J: _! C0 C4 C/ W: g! a
    调用合约提供的方法
# y' k4 g& q8 G& J3 U* {  C
0 k" E& y0 j  O, \3 U- j* E0 X    直接向合约地址进行转账
( O5 ]! r: z/ U" q3 C5 }9 O5 `' Q) I& Z8 j
    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?. m. @! {/ W+ D2 h: K! W6 a' B9 i
4 U% [3 l; N9 h) S* `) ?
    1、部署转账
: ^2 z/ o7 i+ y9 O# u2 E/ x7 `7 L) P3 m4 s  d% G& B0 ~: M2 F
    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
3 r* i% |1 ^; \$ U( }
) |8 q9 A4 ~: F  h$ y6 w    示例:: f% Z8 A5 Z8 X, z

3 F) }% X, l2 T+ l" O+ Q    contractTest{) M: C  F& Y  ]7 k" X. \

1 j* Q0 G$ Q% I" q. Z, `    //构造函数添加payable修饰符即可
( M! S" x, G3 Q: ^3 l9 E' J" j3 v& E
    functionTest()payable{
* p7 \6 f6 V7 N+ |2 i4 ?* R5 O+ r% U3 G- L4 S
    //构造函数其他逻辑代码
; t2 ~  ]/ i; ^3 v6 X" A3 j& M+ _5 G: X: l8 ?* K0 Q# n) w
    }
& U' I6 A5 l, Y& z& S# `2 }0 ?/ T. _+ Y: k! ?5 X
    }1 X* `  L8 p1 }6 ^4 g# q
9 F. x( {& g3 _# @
    2、执行合约转账
4 J6 C3 O" q6 B& t1 l/ l: B( K# \* s1 c
    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符. |6 [4 r7 N! G9 Z& d7 n

8 D$ z. o2 i0 }7 Q7 G    示例:! y- \6 b6 x% o% p' I
  i( H$ p6 m# V* E5 L+ a( T
    contractTest{
1 w5 R! {8 [' r7 n3 ?/ U) G% B# c" h2 [  J
    functiongetBalance()payable{5 Z: d5 b: L5 l" D! ]' x  J

% i7 E- n+ E3 a6 H2 f: y& P1 `  s    //其他逻辑" _1 h( ~7 s$ c  H# n6 |
5 m: a5 X8 E% b: T; k, o, B
    }% e6 }& x+ i4 [$ _: r! l) o

' M: n0 O) o. f5 P    }
9 X" I! P0 L5 w+ o5 B8 `% g7 N2 a1 p: w5 ?
    3、直接转账3 P, ^4 j; S: x3 Z/ H0 d# i* j

: J8 W5 v; l- w+ M1 M, q/ d9 S8 n    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
5 ?$ V: H2 |! P' l# S$ C, v4 W' i: q' q7 B8 v$ B1 p4 x% D8 r8 w
    示例:9 [0 b3 N1 _1 P6 W2 n

, u0 I1 p; y: Y& S( O8 c4 E    contractTest{3 x) E$ G; j. _4 Q: O
% C/ x; U; `  @* ^5 b6 a
    function()payable{
) p/ A# ]2 z% x6 E) O- X# ^* J; r. e9 T2 T
    //其他逻辑
8 I. M2 x" g# V( Y
  S- g  f; c: O3 j# r7 c    }
( d6 M  E! b) j  I$ b# t! B( d
  y) L4 ^+ j/ w" l7 E    }: \0 R. H/ B( ?# e; h

) r8 X) B4 v, z) Q# p    附录
) L5 @. T3 E0 {, X
* v6 m$ t4 R* g! {0 J( w( G2 R0 R    函数修饰符(FunctionModifiers)& I! I  `% F2 O( [4 T, @

# G' d7 m( @, R7 T* n    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12