合约入金(eth)
合约入金有四个方式:
合约函数入金,只需合约函数 用 public payable修饰即可
回调函数入金(无参数函数也叫callback函数)用public payable修饰即可 如
function () public payable{}
外部账户直接给已存在的合约地址转入eth
外部地址部署智能合约时转入eth
合约出金(eth)
合约要出金给他人账户,必须在合约内执行调用,调用方式有三种
receiveAddress.transfer(uint256 amount)
receiveAddress.send(uint256 amount)
receiveAddress.call.valle()
合约内出金方法 | 是否抛出异常 | 发送交易的gaslimit | 是否会调用receiveAddress的callback()函数 |
transfer | 会抛异常,触发回滚 | 23000 | 会调用 |
send | 不抛,但返回false | 23000 | 会调用 |
call | 不抛,但返回false | 不限制(容易因为调用address的callback()导致恶意攻击) | 会调用 |
出金注意事项:
1.尽量使用前两种出金
2.慎重使用call出金,理由因为不限制gaslimit,若address的callback()有恶意攻击代码,可能带来不可预估的损失,如递归式恶意调用你的程序
3.无论哪种,出金前,先做数据 *** 作,在做出金函数调用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)