首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将bool发送到另一份合同中的`` ```function() payable``` ``

将bool发送到另一份合同中的`` ```function() payable``` ``
EN

Ethereum用户
提问于 2019-05-24 04:14:42
回答 1查看 460关注 0票数 0

我正在尝试创建一对契约,比如C1和C2。我想在可支付函数if...else of C2中添加一个bool,当从C1调用send()时,它可以处理ContractC1返回的D1值。

我怎么能做到呢?

也许这个代码片段有助于更好地理解它。

代码语言:javascript
复制
contract target.sol{
    bool private flag=false;    
    function set0(int val) public returns(bool){
        if (val % 10 == 0) {flag0 = true;}
    }


    function transact() public returns(bool){
        if(!flag){
            // heavy computation
        }
        else{
            // light computation
        }
    }
}


contract attacker(){



    function() public payable {
        if(flag == true){
            // Do some heavy computation to generate uncomplete send    
        }

        else {
            // Do some light computation to let send pass
        }
    }

}

这里,我想从contract attackercontract target发送一个事务,其中包含消息中的bool值,这样当控制落在contract attacker的应付款函数上时,它会检查bool值,如果true,计算量较大的部分被执行,否则会更轻。

希望这有助于描述。

Note:我控制着 target contract only。我不能从 attacker contract**.**运行任何函数

EN

回答 1

Ethereum用户

发布于 2019-05-24 04:43:52

很难从你的描述中看出,但也许你想要这样的东西?在这里,C1将乙醚发送给C2,然后C2调用C1读取布尔值。

代码语言:javascript
复制
contract C1 {
    function pay(address whoToPay) external payable {
        require(whoToPay.send(msg.value)); // just because you said "send" instead of "transfer"

        // for gas reasons, you may instead need to use whoToPay.call.value(msg.value)("")
    }

    function getBoolValue() external pure returns (bool) {
        return true;
    }
}

contract C2 {
    function() external payable {
        if (C1(msg.sender).getBoolValue()) { ... }
    }
}

如果这不是你的意思,请改进你的问题。

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

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

复制
相关文章

相似问题

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