Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2466 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?1 C- m6 U# Z/ B: t1 B
- b1 N+ C  B: l2 ^2 w4 o
    有三种方式:( `9 r' }# J. h3 Q
5 b; e5 \) _( A  ]  S1 o
    部署合约时转账
  F# X; T) _8 Z6 i7 g7 H; N% z: h. X0 S* Y5 `  h
    调用合约提供的方法% r4 p: p8 N$ v; d$ Z/ n5 h
& v$ Z* k0 s% [2 E" S, O: ~
    直接向合约地址进行转账
4 E- K6 R$ a& p' E# A: Q( |5 F8 q
3 N/ t, O1 F; N: {! ?% n    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?. W) N. r" B: Z+ z7 ~4 w, C& b  P
, z5 v3 i* W! |, \
    1、部署转账
! I, E: P9 @4 I6 L* s
3 Q' y+ o+ I2 x    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
8 v' X* T) F8 Q5 L* s0 l* h- F% y% u9 R  b, m* Y
    示例:7 N* `$ Q. s( i
: G2 Y! V7 O: u3 u6 r2 U* _
    contractTest{
, A5 V3 a% P* z) Y& i; F5 F' i3 E4 B3 |5 o1 N* h4 k/ |
    //构造函数添加payable修饰符即可
" q  y+ n2 Y. E7 D2 i. R
' G. K5 R* V9 o8 Y  E+ [7 j6 Y    functionTest()payable{1 `0 u) X7 j2 N: g! S
  b  S& ^. E  _7 q8 Q- c
    //构造函数其他逻辑代码; ?3 `0 W8 ]' i2 L& Y+ ~, R
1 j* q4 w  j0 B( E1 \8 w# D
    }$ D/ f/ G& G2 g  c6 G* S
9 b9 S# e5 G9 E: ^9 O
    }
3 [% p" d# @3 I9 j; z  t' y* c: _& Y1 l! O2 U2 N& s  U
    2、执行合约转账! I5 P! E, c3 x! h

& j4 S0 Q  X6 f$ x4 ]" }5 P    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符# @# h$ F% S4 S( u4 U( e5 i: D% \* S
2 v. F0 @; I  k6 Q( j* Q
    示例:! w7 S+ S, ^% b7 f" m

! z3 Y1 y2 t) \. c! B: L    contractTest{: }. K, m3 k8 S

/ Q! a! ^8 X: n6 T. O    functiongetBalance()payable{, D; ?. [4 y1 D: Z& I9 K1 k2 T

4 `5 c: [" w( m1 k3 s  v0 u5 ]    //其他逻辑3 h" w" f0 G8 j0 z
! l4 A7 v' `( u" H" J
    }" E: F6 v" [/ g$ R. F) ?) p- C

& z0 a& F5 e9 w' t+ W) C    }
! w$ Z; X) O; j$ q8 g; Y- k/ B+ E) \+ a0 [& Z$ z1 B$ Q  T
    3、直接转账
/ e6 C! I( g+ P7 M1 ^2 b% m5 _9 T
( b0 y. X7 `8 `6 {5 v5 K    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符8 h% I2 D1 y! e4 q9 }2 z; m
2 t0 K% a+ u5 [; J) Y( j! B
    示例:! s7 |1 t& g$ N. X' @
& u2 n: a8 U3 N: O! f: c
    contractTest{' ~1 |' r5 M9 U

* b3 d7 t6 Y  T, x: k% j' ?1 Z+ M. [    function()payable{
; R9 X# D" R2 k3 {  v
4 \7 t' p# }6 c    //其他逻辑
7 \4 H7 v% S  ~- S- h, M
- R/ R- N' ^# I- n& h    }, G9 o  \' T4 \1 B8 _
" U% d" b* A* ]7 W. W
    }
, J: A) O; N+ z7 G2 l$ w) a& Z1 U9 y: W- \
    附录" ~) @1 c2 j! r- L

3 i! @. V: g( L% r. _    函数修饰符(FunctionModifiers)! c4 C5 }2 N: p( S' z* c

/ U; a6 J9 z+ ^  L    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12