Solidity

將乙太幣從一份合約發送到另一份合約

  • February 14, 2021

我想知道如何在我的契約中有乙太幣。我有 2 份與不同帳戶關聯的契約。

我想將乙太幣從一份合約發送到另一份合約,但我如何首先在合約中擁有乙太幣才能發送它?

這是範例:

contract ethertransfer {    
 function fundtransfer(address etherreceiver, uint256 amount) {
   if(!etherreceiver.send(amount)) {
      throw;
   }
 }
}

contract etherreceiver {

 function etherreceiver() {      
 }
}
  1. ethertransfer外部賬戶(使用者控制賬戶的術語)向您的合約 ( ) 發送 Ether 。為了能夠做到這一點,你需要payable在你的合約中有一個函式(這可能是備份函式 https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function)。應付函式是帶有payable修飾符的函式(例如function receivePayment() payable {})。然後你需要向合約發送交易(如果定義了回退函式)或呼叫合約上的函式(如果你決定有一個接收付款)。您可以使用web3客戶端與您的聯繫人進行互動。
  2. 將乙太幣從一個合約發送到另一個合約時幾乎相同。目標合約也需要具有功能(payable可能又是:回退功能或任何其他功能)。
  • 如果定義了回退函式:使用etherreceiver.transfer(100)etherreceiver.send(100)
  • 如果有自定義函式定義使用 etherreciver.myPayableFunction.value(100)(myArgument1, myArgument2)

進一步閱讀:我建議閱讀有關modifiers它的部分,這將幫助您了解什麼payable是: https ://solidity.readthedocs.io/en/latest/contracts.html#function-modifiers

最簡單的方法是一個payable函式,然後從一個普通賬戶向它發送資金。

contract ethertransfer{

   function payMe() payable returns(bool success) {
       return true;
   }

   function fundtransfer(address etherreceiver, uint256 amount){
       if(!etherreceiver.send(amount)){
          throw;
       }    
   }
}


contract etherreceiver{       
   function etherreceiver(){          
   }    
}

希望能幫助到你。

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