首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >智能契约设计:2步托管体系结构

智能契约设计:2步托管体系结构
EN

Ethereum用户
提问于 2018-05-04 22:58:34
回答 1查看 250关注 0票数 0

怎样才能使我的建筑以最优的方式跟随;

我试图在合同A、B和C之间流动。

合同C应该将ERC20发送到合同B。

合同A应该派以太去合同B。

合同B应接受来自合同C& A的两个值,并在双方同意合同B执行将其发送的值交换给合同B的情况下,才能在两者之间进行交换。

因此,在这个特定的场景中,我们处理的是一个两阶段的过程。

EN

回答 1

Ethereum用户

发布于 2018-05-05 00:39:46

合同B应接受合同C&B的两个价值,并在双方同意合同B的情况下,才能在两者之间进行互换。

你指的是C&A的两个值吗?如果C&A同意,而不是C& B?

如果你是这个意思,我会做这样的事。

代码语言:javascript
运行
复制
contract B { 
     // this mapping will store if address A has given permission for the 
     // contract to swap with address C.
     mapping (address => (address => bool)) permissionGiven;
     mapping (address => uint) ethBalance; //ether balance
     mapping (address => uint) balances; //ERC20 token balance

     function () payable { 
        ethBalance[msg.sender] = ethBalance[msg.sender].add(msg.value); 
     }

     function givePermission (address _a) public { 
        permissionGiven[msg.sender][a] = true;
     }

     function swap(address _a, address _c) public {
        if (permissionGiven[_c][_a] && permissionGiven[_a][_c]) {
           _c.transfer(ethBalance[_a]);
           transfer(_a, balances[_c]);
        }
     }

     function transfer (address _to, uint _tokens) {
         // usual ERC20 transfer function
     }
} 

在这个实现中,契约C和A可以调用givePermission,分别传递A和C的地址。然后,在沉积乙醚/令牌和调用交换后,乙醚将被转移到C,令牌转移到A。

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

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

复制
相关文章

相似问题

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