在以太坊智能合约开发时,可能会有如下需求: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>进行转帐部署
send
和 transfer
的区别<address>.transfer(uint256 amount)
io
发送给定数量的wei给指定地址,错误时抛出异常function
<address>.send(uint256 amount) returns (bool)
发送给定数量的wei给指定地址,错误时返回false