Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2506 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?. G# c) v5 v) @8 V
8 e7 K9 k2 n9 v# v
    有三种方式:* G6 D' P4 l& j- ?9 x
: ^1 M+ l1 t' U( M$ U' P
    部署合约时转账/ b, @8 }  V1 D! B& u2 \

4 z! U; p* i/ N1 H% h/ b+ f& x  v    调用合约提供的方法  N; X, f% t3 x

2 p2 ?1 u# m6 r- L6 [0 r" K/ h/ F    直接向合约地址进行转账
4 n# n6 ?1 x* C. ^+ E" V9 H; W9 [- ]/ F7 z( B! t
    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?
& ?8 |/ a& O' e) |9 m5 W) `" `. v. W+ o6 D# [8 n( B  C
    1、部署转账
3 I' {2 f$ v! G) Q! |4 r. Z- x" d: M) A) r1 D' m! E
    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。' A1 v6 V' O6 z6 k/ k8 `, _4 `
3 D, w* p0 m. C) ~% D9 C  N
    示例:
2 X& w# l( a+ Y# d8 p3 G
0 m& O' y1 y6 }6 D: u! B, p! M    contractTest{
- |' ^6 j4 m2 ?' j. \: }1 p
5 R7 X* c# s$ `0 j6 Q  [    //构造函数添加payable修饰符即可
5 i' I& D0 }, s5 x  L; ]+ Q
3 w% w0 C: u0 U- X7 ~, T    functionTest()payable{" W' n; V/ a  H' a% f
' _4 E. {2 x! Z
    //构造函数其他逻辑代码
& H5 |; P9 ^+ \. X6 p* s) P: ?) V; h# L/ r, i/ A  P
    }  Q& i* q4 v! J/ [

3 m$ `8 F: z1 v2 j    }8 c- {# V" z1 `3 F4 j

/ R9 I1 R* u( e! A    2、执行合约转账
$ D: g2 Q+ T. Z2 E# ~/ j/ a: O6 c5 v+ J: E8 T4 N
    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符: ]/ q" `$ O; K! {2 o

) E7 u' d% m) K' _" s" @, }; H- C    示例:
$ Z; W: P+ g& X, T3 x5 y2 @3 ]& N- F8 S: m; a, s
    contractTest{( D5 ]( q3 Y9 J( g. h

8 m/ ]1 d/ i$ R, I/ }* i8 B/ s    functiongetBalance()payable{
; X, U# x) K) l7 i% z* \* w8 L; i" F8 k/ ]* Q$ _1 s  }
    //其他逻辑& ^# P) q2 L2 A7 w. w6 y9 D2 ?0 z

0 t+ ?! C* s5 M" m& g  V, j    }  X- V& b# E1 c: J
: I1 e$ i+ i; o0 P4 W0 a0 M; v
    }
, N, K4 ]# t  o8 l+ z+ f0 L2 h. J' q7 f$ f/ g
    3、直接转账
" J# w$ X- \0 {9 J) F$ B) q8 i% q
/ A8 C; Z7 P/ b* U    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
" q$ y0 H: d5 q  o* Z6 n( n) W
! a7 _4 b' D4 \* d5 T5 T: d9 p    示例:4 p5 ?' ?; \# h/ r4 J7 [: N
. a9 I# A$ E) W% n
    contractTest{
' _7 G" y, p/ M& s! k# D* X, q3 M5 B+ T' ?  }6 M' n3 D
    function()payable{
4 j5 I, F7 a4 u) u
0 c2 x( {, B, K0 K  F+ i    //其他逻辑8 \3 L. J) }" q) ~$ x: X* F, e

/ e1 E1 R# W7 A- e    }; ^; ?9 R1 [# C; Y1 s( X! g4 w3 r
  ]+ C1 `; o  N" ]5 j
    }
7 Z2 V9 o5 g7 F, v1 @1 D: a2 V! @3 C4 v7 X
    附录' i' m, T# P. m  ?

" u1 m$ J. u2 r) s: N5 T    函数修饰符(FunctionModifiers)
+ M9 n+ z' \# m- k5 G: ^0 {/ |* R/ t$ t4 b4 [
    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12