Solidity
從智能合約中退還一些乙太幣並將其餘的發送到一個帳戶
假設我們要進行 x 乙太幣的交易,如果 (x>20) 將 5% 退還給發送者並將其餘部分發送給原始初始接收者。如何在智能合約程式碼中實現它,並從控制台呼叫它?我應該以數據或類似的方式將乙太幣發送到契約和接收者的地址嗎?
使用一個最佳實踐的退出模式,它看起來像這樣。如果不清楚,該功能很像 ATM。
pragma solidity ^0.4.18; contract Refund { mapping(address => uint) public balances; event LogDeposit(address sender, uint amount); event LogWithdrawal(address receiver, uint amount); function withdrawFunds(uint amount) public returns(bool success) { require(amount >= balances[msg.sender]); LogWithdrawal(msg.sender, amount); msg.sender.transfer(amount); return true; } function () public payable { require(msg.value > 0); uint change; uint dep; if(msg.value > 20) { dep = 20; change = msg.value - change; } balances[msg.sender] += dep; if(change > 0) balances[msg.sender] += change; LogDeposit(msg.sender, msg.value); } }
希望能幫助到你。
ps 抱歉格式化。瀏覽器今天在 SE 上表現不佳。