Solidity

虛擬機錯誤:還原。嘗試將乙太幣從合約發送到另一個合約

  • February 10, 2020

我在這裡遇到了一個小問題,即通過msg.sender值將一些乙太幣從Sender合約發送到另一個Escrow合約。

順便說一句,我在 Remix 上執行程式碼,並在呼叫*sendEth()*後指定來自發送者的值。

pragma solidity ^0.5.11;

contract Sender {
   event sent(
       address indexed escrowAddress
   );
   
   function sendEth() external payable{
       Escrow escrow = new Escrow();
       
       address payable _payableEscrow = address(uint160(address(escrow)));
       _payableEscrow.transfer(msg.value);
       
       emit sent(_payableEscrow);
   }
}

contract Escrow {
   function getBalance() external view returns(uint256) {
       return address(this).balance;
   }
}

和 IDK 為什麼我收到這個錯誤:

向 Sender.sendEth 交易錯誤:VM 錯誤:還原。

事務已恢復到初始狀態。

感謝您的幫助!

您需要在Escrow合約中添加一個payable備份功能來接受或拒絕資金:

function() external payable {
   // you can reject the funds (assert/require/revert) under certain conditions...
}

引用自:https://ethereum.stackexchange.com/questions/79772