是否有任何方法将一定数量的eth发送到智能契约地址,在发送方地址可以赎回之前设置延迟时间?
发布于 2019-07-30 00:23:29
下面的代码允许多个用户将以太锁定在智能契约中。每个受试者都可以在一段时间后(在本例中为1天)取出他/她所存放的以太。
pragma solidity ^0.5.1;
contract timeLock {
uint256 lockTime = 1 days;
struct locked{
uint256 expire;
uint256 amount;
}
mapping(address => locked) users;
function lockEther() public payable {
require(msg.value>0);
locked storage userInfo = users[msg.sender];
userInfo.expire = block.timestamp + lockTime;
userInfo.amount = msg.value;
}
function withdraw() public {
require(block.timestamp>=users[msg.sender].expire);
locked storage userInfo = users[msg.sender];
uint256 value = userInfo.amount;
userInfo.expire = 0;
userInfo.amount = 0;
msg.sender.transfer(value);
}
}
希望这能有所帮助。
发布于 2019-07-29 16:33:36
OpenZeppelin有一个TokenTimelock合同,您可以对以太使用类似的想法。https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#TokenTimelock
https://ethereum.stackexchange.com/questions/73427
复制相似问题