newsence

Etherscan 已標記智能合約之分析報告

Ethereum Magicians·25 天前

本報告分析了包含一百萬個已標記智能合約的數據集,旨在探討存儲插槽的使用情況、部署模式,以及合約級過期政策對以太坊狀態縮減的潛在影響。

**Etherscan 已標記智能合約之分析

前提**:本報告包含一項基礎分析,係於幾個月前為 Stateless Consensus 內部用途所完成,現予發布以供感興趣者參考。我們從 Etherscan 獲得了一份包含約一百萬個已標記智能合約的數據集。數據集中的合約通常被標記有多個標籤。

我們檢視了零/非零存儲插槽(storage slots)數量、部署模式以及合約層級的過期政策。

在第一張圖表中,我們統計了每個標籤中出現的合約存儲插槽數量,並展示了前 10 大標籤。這裡必須注意,由於許多合約擁有多個標籤,許多存儲插槽存在重複計算的情況。藍色長條計算中的 100% 基準是數據集中所有合約的總存儲插槽,即不含重複計算。

關鍵洞察:在頂級標籤中,代幣合約(Token contracts)和 NFT 佔據了以太坊狀態的主導地位。

在第二張圖表中,我們採用了不同的計算方式,藍色長條中的百分比是以「包含重複計算」的總存儲插槽為 100% 基準,即屬於具有 N 個標籤之合約的插槽會被計算 N 次。此圖表還顯示了有狀態(Stateful)與無狀態(Stateless,已標記)合約的比例,其中:

有狀態合約 = 非零存儲計數,無狀態合約 = 零存儲計數。

關鍵洞察:幾乎所有 Etherscan 已標記的合約(99.9%)都是有狀態的。

接下來,我們考慮針對已標記合約的「合約層級」過期政策。

在 n 個月(我們設定 n=6, 12)的過期政策中,如果一個合約的所有存儲插槽在過去 n 個月內都未被訪問(讀取/寫入),我們將使該合約的整個存儲樹過期。

在此圖表中,我們看到前 10 大標籤中,透過 6 個月(合約層級)過期政策可釋放的存儲插槽百分比(右側綠色或左側橘色)。也就是說,對於每一列,左圖的橘色條代表從藍色條(代表該標籤合約的總存儲插槽)中釋放出的存儲插槽百分比。

關鍵洞察:6 個月的合約過期政策顯示,代幣合約將釋放最多的存儲插槽。

上圖分析了「零壽命」(zero-lifespan)插槽。如果一個插槽在創建它的區塊之後未曾被訪問,則該插槽具有零壽命。與之前一樣,我們專注於前 10 大標籤(按存儲插槽計)。

請注意,橘色條代表零壽命插槽佔該標籤總存儲插槽的百分比。

關鍵洞察:即使在頂級合約標籤中,也存在許多零壽命插槽。特別是,代幣合約超過一半的存儲插槽具有零壽命。

上圖考慮了合約的代碼類型。如果數據集中沒有其他合約共享相同的代碼,我們稱該合約為「唯一代碼」(unique code)。否則,該合約被稱為「模板」(template)。

關鍵洞察:儘管大多數合約是模板(複製的代碼),但代幣合約顯示出較高比例的唯一代碼。

上圖比較了我們已標記數據集中的合約插槽數與所有以太坊智能合約插槽數的對比。

關鍵洞察:在第 2300 萬個區塊時,已標記合約佔以太坊總存儲插槽的 55%,且軌跡顯示已標記合約的佔比隨時間推移而下降。

我們最後一張圖表(上方)比較了已標記合約在 6 個月和 12 個月合約層級過期政策下的情況。

關鍵洞察

(1) 從百分比來看,(合約層級)過期政策隨時間推移變得更加有效。

(2) Han 之前的分析顯示,12 個月的合約層級過期政策預計可釋放約 20% 的總存儲插槽數。在這裡我們看到,12 個月的政策僅釋放了總(已標記)存儲插槽數的約 7%。這表明,針對所有合約(不一定是已標記合約)的過期政策中,大部分釋放的插槽來自未標記的合約,而這些合約的重要性可能較低。

        1 則貼文 - 1 位參與者

        [閱讀完整主題](https://ethereum-magicians.org/t/analysis-of-etherscans-labeled-smart-contracts/27957)
https://ethereum-magicians.org/t/analysis-of-etherscans-labeled-smart-contracts/27957