Batch
發送 n 批交易的成本是線性的嗎?
想知道在單筆交易中將 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}(""); } } }