以太坊智能合约开发:让合约接受转账
星火车品
发表于 2022-11-21 23:46:48
2500
0
0
* g2 Y z* G8 D& Y' I
有三种方式:5 H$ X; u8 @) t5 X4 `. q" D
部署合约时转账& t9 X* g* Z. n! R* o
, [3 o# [ u4 h5 |! ^" z4 G
调用合约提供的方法
3 l/ U A% h1 S6 u3 u% f$ U, c
直接向合约地址进行转账
但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?) n* M6 m, w: j
1、部署转账
" p8 a! { Y7 b# u
在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。
: R) x' E6 W2 M- p
示例:+ g2 q- N5 @) s# a2 ~: J
contractTest{+ v- m" V. u- C6 ]' m2 l7 h
b) _4 p, {/ ?& l1 E
//构造函数添加payable修饰符即可
functionTest()payable{
( f W P2 W: D, m- ^/ F
//构造函数其他逻辑代码
9 Q X: q h4 p- `+ j; C, R9 B
}
}
* Q* t/ n. b3 e+ o
2、执行合约转账
执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符
2 H7 _9 C% V. }2 S) [' s* y
示例:
* B9 s5 }: |! P, e& L
contractTest{- F, \: H1 z! ` E
' g6 Z3 e; k3 A7 W
functiongetBalance()payable{2 k$ `2 d: t, J- U3 @ S3 M
' D1 w% }+ D# ^0 {
//其他逻辑
; s7 U2 G: }- O2 T/ P9 w+ Z- N
}
9 o3 w; ?# N& u0 J) B! Z
}
3、直接转账
: D, y. k5 Z2 I) E& g- L
支持直接转账,需要借助后备函数(fallbackfunction),只需要为后备函数添加payable修饰符2 z: ]9 z! K; u8 W1 `
示例:9 x9 T8 G, b% K' M, `
6 {! Z4 e" r4 X. e# r4 m
contractTest{' W, B! ]. q( W# j
function()payable{
//其他逻辑
}
; t p" [2 `, i P
}
附录
6 T0 l5 o! q' G/ Q, T
函数修饰符(FunctionModifiers)
q) N* j. S6 L
内部修饰符
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
成为第一个吐槽的人