首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将eth锁定在一段时间内的智能合同中?

如何将eth锁定在一段时间内的智能合同中?
EN

Ethereum用户
提问于 2019-07-29 21:25:36
回答 2查看 2.2K关注 0票数 3

是否有任何方法将一定数量的eth发送到智能契约地址,在发送方地址可以赎回之前设置延迟时间?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2019-07-30 08:23:29

下面的代码允许多个用户将以太锁定在智能契约中。每个受试者都可以在一段时间后(在本例中为1天)取出他/她所存放的以太。

代码语言:javascript
代码运行次数:0
运行
复制
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);
    }



}

希望这能有所帮助。

票数 0
EN

Ethereum用户

发布于 2019-07-30 00:33:36

OpenZeppelin有一个TokenTimelock合同,您可以对以太使用类似的想法。https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#TokenTimelock

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/73427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档