Confirmations
連鎖重組事件的分佈?
例如,我很好奇鏈重組的頻率,以及它們的深度分佈。這些資訊在任何地方都可用嗎?
這主要是因為我對監控乙太坊節點並將其與 etherscan 的塊歷史進行比較的規則感興趣,以便在節點執行不正確時發出警報。但我也對交易所如何確定他們認為交易結算的深度等問題感興趣。
從過去 20 天內etherscan上的區塊統計數據來看,大約有:
- 每天 475-525 次深度重組(叔塊)
- 每天兩次深度重組 1-2 次
- 我沒有看到三個或更多重組的單一深度
這些數字可能很快就會過時。就在幾個月前,還有一天有 2000 個叔塊的日子。
然而,你必鬚麵對這樣一個現實,即每天都會有大量的單塊重組,並且會發生雙塊重組。
只是從丹尼爾的回答開始,這裡有一個糟糕的 Python 刮板來刮 Etherscan 併計算不同長度的臨時分叉的數量。
結果:
Forks of length 1: 6526 Forks of length 2: 164 Forks of length -: 85699
(注意:我認為這些
-
值來自較舊的塊,其中深度數據沒有被 Etherscan 記錄……因此用途有限。可能會給出關於長度 1 和 2 叉的相對比率的想法。)程式碼:
import requests from bs4 import BeautifulSoup from collections import OrderedDict URL = "https://etherscan.io/blocks_forked?p=" def getData(sess, page): url = URL + page print("Retrieving page", page) return BeautifulSoup(sess.get(url).text, 'html.parser') def getPage(sess, page): table = getData(sess, str(page)).find('table') return [[X.text.strip() for X in row.find_all('td')] for row in table.find_all('tr')] def main(): resp = requests.get(URL) sess = requests.Session() counts = OrderedDict() page = 0 while True: page += 1 data = getPage(sess, page) try: for item in data: if len(item) != 0: if item[8] in counts: counts[item[8]] += 1 else: counts[item[8]] = 1 except: break for k, v in counts.items(): print("Forks of length {}: {}".format(k, v)) if __name__ == "__main__": main()