| 知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
首先你需要在智能合約中定義這個函數 function () payable public {},這時這個合約地址就可以接收ETH了。
測試方法,向合約地址發送ETH即可。
pragma solidity ^0.4.24;
contract NetkillerCashier {
function () payable public {}
function claim() public {
selfdestruct(msg.sender);
}
}
https://ropsten.etherscan.io/tx/0x6504df0e18416c3c319f1f11f84ffa40a752b47c257faee58a7ef2c8ef78cc45
Contract 0x0896827f5e3d2683763321bdf780bde1824f6137 TRANSFER 0.03 Ether from 0x0896827f5e3d2683763321bdf780bde1824f6137 to 0x22c57f0537414fd95b9f0f08f1e51d8b96f14029 SELF-DESTRUCT Contract 0x0896827f5e3d2683763321bdf780bde1824f6137
查看 Code https://ropsten.etherscan.io/address/0x0896827f5e3d2683763321bdf780bde1824f6137#code 顯示
Contract SelfDestruct called at TxHash 0x6504df0e18416c3c319f1f11f84ffa40a752b47c257faee58a7ef2c8ef78cc45
本合約只收取 1 ETH 多餘 ETH 將退給用戶
pragma solidity ^0.4.24;
// Author: netkiller@msn.com
// Website: http://www.netkiller.cn
contract Refund {
address owner = 0x0;
uint256 ticket = 1 ether;
constructor() public payable {
owner = msg.sender;
}
function () public payable {
require(msg.value >= ticket);
if (msg.value > ticket) {
uint refundFee = msg.value - ticket;
msg.sender.transfer(refundFee);
}
}
}
合約收到ETH後自動轉到 owner 賬號中。
pragma solidity ^0.4.24;
contract NetkillerCashier {
address public owner;
constructor() public payable {
owner = msg.sender;
}
function () payable public {
owner.transfer(msg.value);
}
}
pragma solidity ^0.4.24;
contract NetkillerCashier {
address public owner;
uint public amount;
modifier onlyOwner {
require(msg.sender == owner);
_;
}
constructor() public {
owner = msg.sender;
}
function () public payable {
amount += msg.value;
}
function transferOwnership(address newOwner) onlyOwner public {
if (newOwner != address(0)) {
owner = newOwner;
}
}
function withdraw() onlyOwner public {
msg.sender.transfer(amount);
amount = 0;
}
}
function transferOwnership(address newOwner) 可以修改指定賬號提取 ETH function withdraw() 提取 ETH 的函數
https://ropsten.etherscan.io/tx/0xadad8c4cd7649d825fb8c362e97f80c4821b07c97d423050289986bd75703b78
Contract 0xb31fb5297340a06e1af3e21c1780b7001db6890a TRANSFER 0.05 Ether from 0xb31fb5297340a06e1af3e21c1780b7001db6890a to 0x22c57f0537414fd95b9f0f08f1e51d8b96f14029