主页 > imtoken 官网 > 以太坊智能合约开发:实现转账退款
以太坊智能合约开发:实现转账退款
imtoken 官网 2023-08-24 05:07:17
摘要:在以太坊智能合约的开发过程中,可能存在以下需求,即只接受用户转账的指定价值。 如果用户转账少,直接返回异常。 当用户转账越多,用户转账越多。 返回。 执行合约后,它不会被调用。 执行合约时,转账金额以太坊自动转账,以单位为单位。
在开发以太坊智能合约的过程中以太坊自动转账,可能会有以下需求:
只接受用户转入指定价值的eth。 如果用户转的eth少,直接返回异常。 当用户转出的eth越多,用户转出的eth就越多。
这里我们可以使用fallback函数,即备份函数来限制转账金额。 示例如下:
代码示例
contract Refund { address owner = 0x0; uint256 ticket = 1 ether; // 一个eth // 合约构造函数 // 第一次部署合约时,会调用该方法。 // 之后执行合约不会调用。 function Refund() public payable { // 将部署合约的地址作为合约拥有者 owner = msg.sender; } // 后备函数 function () public payable { require(msg.value >= ticket); if (msg.value > ticket) { var refundFee = msg.value - ticket; msg.sender.transfer(refundFee); } } }
代码解释
public : 函数可见性
payable : 一个payable函数修饰符,没有它就不能接受转账操作。
msg.value : 合约执行时转入的eth数量,单位为wei。
msg.sender : 执行合约的地址
.transfer(uint256): 转账到指定地址
发送和传送的区别
.transfer(uint256金额)
发送给定数量的wei给指定地址,错误时抛出异常
.send(uint256 amount) 返回 (bool)
发送给定数量的wei给指定地址,错误时返回false