1

我想创建一个从 A 人那里接收金额的函数,使用合约账户余额将收到的金额加倍,然后将加倍的金额转移给 B 人。到目前为止,我创建了一个接收外部应付金额的函数仅从 A 人那里,我注意到放置的金额应该 > 2 以太币,但是对于加倍和转移金额,我对方法有点困惑。

    contract MyContract {
    address payable public personA;
    address payable public personB;
    mapping(address => uint) balances;
    modifier onlyonlypersonA() {
        require(msg.sender == onlypersonA, "Only onlypersonA can call this method");
        _;}       
   function Send() onlypersonA external payable {
        if(msg.value < 2 ether) {revert();} 
        balances[msg.sender] += msg.value;}
}

4

1 回答 1

1

试试这个:


  contract MyContract {
    address payable public personA;
    address payable public personB;
    mapping(address => uint) balances;
    modifier onlyonlypersonA() {
        require(msg.sender == onlypersonA, "Only onlypersonA can call this method");
        _;}       
   function Send() onlypersonA external payable {
        if(msg.value < 2 ether) {revert();} 
        balances[msg.sender] += msg.value;

        // Try doubling
        require(msg.value * 2 <= address(this).balance, "Insufficient funds to doubling");
        personB.transfer(msg.value * 2);
   }
}
于 2020-07-20T15:51:18.243 回答