Solidity

Solidity 智能合約 - 在兩個賬戶之間拆分和發送合約 ETH 餘額

  • April 20, 2022

想先說聲謝謝。我對 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!

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