Contract-Design

合約可以儲存的數據量是否有(理論上的)限制?

  • March 15, 2016

一個合約在不考慮gas的私有網路中執行時可以儲存的數據量是否存在理論上的限制?

背景:在要取代全球支付系統的金融 Dapp 中,tx/s 吞吐量肯定是被廣泛討論的一個限制因素。但這不是我在這裡得到的。合約能否在合約中儲存 1GB、1TB、……數據?數據不會一次性寫入,而是隨著時間的推移而積累。

範例:讓我們假設一個最佳情況,我們設法將智能合約之上的單個代幣交易壓縮到 100 個字節中。在 1000 tps 吞吐量下,這將產生 100100036002431*12 = 3.2TB/年。隨意猜測這是否/何時可能。

合約儲存是 32 字節的鍵和 32 字節的值,因此單個合約可以儲存的最大值約為 1.46 GB (32^32)。

錯誤的。有 2^256 個不同的 key,每個 key 可以儲存 32 個字節,所以總共可以儲存 2^261 個字節。也就是說,屆時乙太坊區塊鏈可能會因雜湊衝突而崩潰……

合約儲存是 32 字節的鍵和 32 字節的值,因此單個合約可以儲存的最大值約為 2^261 字節(2^256 * 32b)。

在不考慮gas的私有鏈中,由於地址空間是160位,假設可以全部​​使用,可以創建2^160個合約。所以理論上大約 2^421 字節是合約可以儲存的最大值。

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