Solidity
將乙太幣從一份合約發送到另一份合約
我想知道如何在我的契約中有乙太幣。我有 2 份與不同帳戶關聯的契約。
我想將乙太幣從一份合約發送到另一份合約,但我如何首先在合約中擁有乙太幣才能發送它?
這是範例:
contract ethertransfer { function fundtransfer(address etherreceiver, uint256 amount) { if(!etherreceiver.send(amount)) { throw; } } } contract etherreceiver { function etherreceiver() { } }
ethertransfer
從外部賬戶(使用者控制賬戶的術語)向您的合約 ( ) 發送 Ether 。為了能夠做到這一點,你需要payable
在你的合約中有一個函式(這可能是備份函式 https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function)。應付函式是帶有payable
修飾符的函式(例如function receivePayment() payable {}
)。然後你需要向合約發送交易(如果定義了回退函式)或呼叫合約上的函式(如果你決定有一個接收付款)。您可以使用web3客戶端與您的聯繫人進行互動。- 將乙太幣從一個合約發送到另一個合約時幾乎相同。目標合約也需要具有功能(
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(){ } }
希望能幫助到你。