Transactions

如何使用元遮罩將交易拆分到兩個地址?

  • December 4, 2021

我的想法是詢問使用者他們想給其他使用者多少小費。但是,我想取其中的 5% 並將其發送到另一個地址(作為網站運營商的佣金)

我知道使用者必須確認兩筆交易,但 metamask 或 web3 是否有辦法進行批量交易或一項交易依賴於另一筆交易?

如果使用者想給 1 美元小費,那麼 95 美分將給收件人,5 美分將給網站運營商。

我想確保他們必須批准兩筆交易才能通過(即:阻止他們不發送佣金交易)

僅使用標準的 web3 交易是否可以做到這一點,還是我需要一個智能合約來處理佣金交易並將其餘部分支付給預期的接收者?

使用智能合約可能是最簡單的。單個交易始終只針對一個地址,並且沒有本地方式來進行批量交易。

一些錢包客戶端可能會提供某種批量交易,但可能這些也不是您所需要的。

您可以考慮要求使用者先發送佣金交易,然後才允許他發送真實交易。但是,在我看來,這是對交易(和金錢)的浪費,因為你可以通過智能合約和單筆交易輕鬆做到這一點。

一個簡單的佣金函式範例(可能甚至無法編譯,但希望能說明這一點):

function pay() payable public {
 uint mainPart = msg.value * 95 / 100;
 uint commission = msg.value - mainPart;

 address(0x123).transfer(mainPart);
 address(0x345).transfer(commission);
}

您應該通過OpenZeppelin部署Payment Splitter 合約

這是合約程式碼:https ://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.4.0/contracts/finance/PaymentSplitter.sol

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