美文网首页solidity
以太坊智能合约开发:实现转账退费

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

作者: 中v中 | 来源:发表于2018-08-17 15:25 被阅读0次

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

仅接受用户转入指定价值的eth,如果用户转入eth较少,则直接返回异常,当用户转入eth较多,则将用户多转入的eth退回。

在这里我们可以借助 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 : 函数可见性

payable :可支付的函数修饰符,没有该修饰符无法接受转账操作。

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

msg.sender : 执行合约的地址

.transfer(uint256):给指定地址进行转账

send 和 transfer 的区别

.transfer(uint256 amount)

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

.send(uint256 amount) returns (bool)

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

相关文章

网友评论

    本文标题:以太坊智能合约开发:实现转账退费

    本文链接:https://www.haomeiwen.com/subject/pbftiftx.html