Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

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

星火车品
2507 0 0
在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?
, M1 u- a2 p/ X# W
, Y' T9 w9 H% [; m. f2 M, z    有三种方式:
+ G" q0 B, X1 z- _% x
' L2 R( ?. I* Q" W( A    部署合约时转账1 i+ X/ x4 H; e9 g: A% [

& B( Y1 h1 M2 l: N5 R- J- z% u    调用合约提供的方法, x4 s" h. K7 u/ X) Z1 S
' Y. F  }' @& I1 Q1 }! U4 N
    直接向合约地址进行转账
" w. ~4 ^7 Q& w" X& G* }1 \" _  x. A0 R% h% M+ @9 f2 q+ S2 `" N. H
    但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?/ K4 z0 l1 A7 H( i- t6 s9 n( X4 W; w

/ a+ `- q6 l1 S- |8 K' X, n0 C    1、部署转账
$ i# u9 ~8 p* h, L+ ^
; ~$ N1 c5 @& |' g    在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
- }/ m) D; P( F" f
7 H0 N, P! g& k( X" p    示例:3 u; h  P$ ^; Z. J" p

+ L- A) K0 b  T+ ]0 u( F0 }    contractTest{
! C7 n7 l: G6 b% Z: _" Y6 Z1 ^
0 Y0 j! ^( U2 N# x& m- ^    //构造函数添加payable修饰符即可/ d0 i1 L) b/ f: V
. A5 E0 j" J2 ^; v$ r/ ^/ O
    functionTest()payable{
/ H* B: H  N# w) r' K. G( k4 F$ {: z2 n& W, b  [) S& G3 N# X1 {) }
    //构造函数其他逻辑代码
8 u! X: x7 }) a5 G; R0 ^' f8 {' ~$ }1 }1 w* g3 ?
    }
7 o- M6 v/ ?, ~& X7 g8 _5 c; {$ ?8 a
    }
+ z$ a- D; p* d- B4 m. e. O# S  S' B  n6 [+ k+ X( |
    2、执行合约转账
4 J/ _7 j( y( |4 N; K
% Y0 @1 K! P1 q. ]% L8 P. d    执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
* z, ^( g( t" z- P: c& T7 w/ l& j5 Z- S+ {1 }
    示例:* V. s( l$ n3 g) ]% ]& s' ]) x0 V1 r' o

+ d! V; A9 q% i4 H% v    contractTest{
& L) P& r8 ~* `+ \) d8 O2 `! ^8 p% q9 A' j( l
    functiongetBalance()payable{, I2 d% V- Q# g  L( Z( Z

  \7 V, K% K4 b7 N    //其他逻辑
0 b2 T# l# O6 ?! p' _6 }7 \& i; }% l4 V' T; n  r
    }4 p% Z7 G" Z8 F% @& H

# B' E/ m; Z6 Q' u' d; _    }  e3 N5 P* F, a6 B, W3 |# ~" y9 k, ]
$ {0 M9 B1 S- [) I9 `3 m$ n7 G
    3、直接转账; J9 ^6 @3 ^1 @$ i6 t% T4 Q$ Z! o

9 t6 ]' G' G- V2 d    支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符
' i1 @8 ?' v/ e0 i# @8 C. V% O' ?" D0 _, M$ X+ E* {
    示例:
' Y: ~% H: k/ {) n4 s$ |! \
$ b9 O  x* ]7 v# z3 K2 ~    contractTest{
: Z/ w7 D9 `: s2 y- u# Y' p
+ I: O" l2 A5 B1 Z6 |    function()payable{% ^" W+ }3 E5 Y& U! m
) `! I! ?8 W6 A$ J% k5 i
    //其他逻辑
, d3 F9 l! R! l8 ?+ g6 u* {. S" p
( C2 k8 Q' O: T    }
, q; Y9 z: ]: {/ Z( U4 G# U. |. B* W$ `- d. V
    }, l& a* `9 q4 R) h

5 ^2 q0 I5 q4 x2 o! W0 U    附录
  B; _( L* ~# w( W( J8 E  d; l) u* J9 y8 X" L
    函数修饰符(FunctionModifiers)3 _) K4 j* k+ a* V& j; m9 |

+ Y' U. f+ b% v7 B    内部修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

星火车品 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    12