Contract-Development

可以在單筆交易中替換整個餘額圖嗎?

  • January 15, 2018

我知道每個區塊的氣體限制,但我現在無法解決這個問題。

如果我有一個需要更新每個地址餘額的代幣合約,是否可以有一個函式創建一個包含所有新余額的新余額圖?這似乎是要在單個事務中操作的大量數據……

如果我有一個包含 1,000,000 個地址的平衡圖,那麼這將以 kB 表示多少數據?你是怎麼計算的?如果你因為gas限制不能替換整個平衡圖,你會怎麼做呢?

SSTORE如果將一個非零值更改為另一個非零值,則儲存一個單詞(操作碼)需要 5000 gas。(如果舊值為零,則更多。)

5,000 氣體 * 1,000,000 = 5,000,000,000 氣體

ETH 加油站表示 5 gwei 是每 gas 的合理價格。

5,000,000,000 * 5 雜草 = 25,000,000,000 wei = 25 乙太

在~ $ 1300 per ether, this would cost $ 32,500。由於存在限制,您實際上無法進行花費這麼多 gas 的交易,但即使您將其分散到許多交易中(可能來自許多使用者),這樣做也非常昂貴。

根據您的目標,可能會有更好的方法。例如,如果您想定期增加每個人的餘額,您可以只儲存一個值extra並即時計算餘額為balances[address] + extra. 在不知道您要做什麼的情況下,很難提出具體的方案。

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