以太坊智能合约开发:实现转帐退费

在以太坊智能合约开发时,可能会有如下需求:javascript

仅接受用户转入指订价值的eth,若是用户转入eth较少,则直接返回异常,当用户转入eth较多,则将用户多转入的eth退回。java

在这里咱们能够借助 fallback function,也就是后备函数进行转入金额的限定,示例以下:函数

代码示例
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 : 函数可见性ui

payable :可支付的函数修饰符,没有该修饰符没法接受转帐操做。code

msg.value :执行合约时,转帐的eth数量,以wei为单位。ip

msg.sender : 执行合约的地址 开发

<address>.transfer(uint256):给指定地址<address>进行转帐部署

sendtransfer 的区别

<address>.transfer(uint256 amount)io

发送给定数量的wei给指定地址,错误时抛出异常function

<address>.send(uint256 amount) returns (bool)

发送给定数量的wei给指定地址,错误时返回false

相关文章
相关标签/搜索