Batch

發送 n 批交易的成本是線性的嗎?

  • December 4, 2021

想知道在單筆交易中將 ETH 發送到 1、10、100 和 1,000 個地址的費用倍數可能是多少?

所謂倍數其實就是地址的個數。

更多資訊請參考乙太坊黃頁

您不能通過一筆交易將 Eth 直接發送到多個地址。一筆交易總是發往一個地址。一次 Eth 傳輸(無負載)需要 21000 gas - 全部成本取決於使用的​​ gas 價格。

然而,你可以做的是創建一個將乙太幣分配給 N 個接收者的合約。因此,您可以遍歷地址並將 Ether 發送到每個地址。

執行此操作的成本可能是最容易測試的。以下三個地址需要 49064 gas,四個 82076 gas,所以再添加一個地址需要 33012 gas。因此,再添加 100 個地址應該花費大約 3301200 gas。

請注意,這不是一個優雅的解決方案,也不是最省氣的解決方案,僅用於測試目的。

pragma solidity ^0.8.0;

contract A {
   function distribute() payable public {
       address[3] memory addresses = [address(0x0), address(0x1), address(0x2)];
       uint share = msg.value / addresses.length;
       for (uint i = 0; i < addresses.length; i++) {
           addresses[i].call{value: share}("");
       }
   }
}

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