Solidity
Solidity 智能合約 - 在兩個賬戶之間拆分和發送合約 ETH 餘額
想先說聲謝謝。我對 Solidity 很陌生,所以非常感謝您的時間。
我已經為測試目的建構了一個基本的智能合約,並在 Remix 上執行它。
我想定義一個函式(withdraw_equal),它允許將智能合約的餘額(比如 4 eth)分成兩半並均勻地發送到兩個賬戶)(即2 eth 到 account_one以及2 eth 到 account_2。
這是我的程式碼:
pragma solidity ^0.5.0; contract JointSavings { address payable account_one = 0xc3879B456DAA348a16B6524CBC558d2CC784722b; address payable account_two = 0xA29f7E79ECEA4cE30DD78cfeb9605D9aFt5143a3; uint public balanceContract; function withdraw(uint amount, address payable recipient) public { recipient.transfer(amount); balanceContract = address(this).balance; } function withdraw_equal() public { uint amount = balanceContract / 2; account_one.transfer(amount); account_two.transfer(amount); balanceContract = address(this).balance; } function deposit() public payable { balanceContract = address(this).balance; } function() external payable {} }
我意識到“提款”功能有效,因為“應付地址”作為輸入參數包含在內。但是,由於“withdraw_even”函式不帶任何參數,我不太確定如何調整我的程式碼。
PS我只是在這裡亂搞和試驗,所以請隨意發送任何有趣的調整/建議/添加,您可能需要修復/更新/增強程式碼。提前致謝!
對我來說似乎很容易解釋……如果你錯過了它,他想創建一個函式,然後從支付地址函式呼叫該函式。我將他的問題解釋為:“我可以將付款交給子功能嗎”。查看 open zeppelin 下的支付拆分器。你應該能夠從中理解你自己的程式碼。 https://forum.openzeppelin.com/t/using-paymentsplitter-with-remix/3007
我同意 @macguyver 關於使用open zeppelin 的支付拆分器的觀點,您可以將其導入您的契約或將其部署為單獨的契約。
您還可以在PaymentSplitter.io生成支付拆分器的可複製實例。複製實例比部署合約程式碼更便宜,無論它是獨立合約還是另一個合約包的一部分。完全公開,我為它建構了 Web UI!