區塊權重和隔離見證的概念仍不清楚
這似乎是重複的問題,但我閱讀了很多文章和文章以了解 segwit。
下面的連結是我讀過的東西
但我需要範例來明確塊重量 T_T
在 了解隔離見證塊大小的文章中,作者說
Segwit 塊受到稱為塊權重的限制。區塊權重是隔離見證中引入的一個新概念,它是基於每筆交易計算的。每筆交易都有一個“權重”,它是這樣定義的:
(tx size with witness data stripped) * 3 + (tx size)
我認為 tx 大小是
tx = transactions + witness data
然後我陷入了遞歸……我無法理解。
在我看來,這似乎是矛盾的。
因為要定義 tx 大小,需要塊權重來限制見證數據大小。但是要獲得權重,需要一個 tx 大小。
我知道如果沒有見證數據,那麼最大塊大小為 1mb(隔離見證之前)。是的,很清楚。但是有些人使用與字節相同的權重。
比如有人說(尤其是比特幣wiki- Block weight)
weight = 1mb * 3 + 1mb = 4mb
還有人說(什麼是塊重量,它與塊大小有什麼不同?)
即使在這篇文章中,Sam Jone 說 4,000,000 WU 但塊仍然是 1mb
weight = 1mb * 3 + 1mb = 4,000,000 Weight unit(WU) Or 4mWU
確切的表達方式是什麼?
如果沒有見證數據,那麼剩下的 3mb 或 3mWU 是什麼?是空的嗎?
在#577639塊中,塊大小為 1158.038 kB
見證數據是如何儲存的?
1mb 交易 + 見證數據對吧…?
要麼
交易和見證數據共享 1mb 塊?
segwit 的基本概念是將塊大小保持為 1mb 用於交易並添加見證數據,對嗎…?
這意味著交易的大小(不包括見證數據)是 1158.038kB?或者交易+見證數據是1158.038kb?
眾所周知,最大塊重量為 4mWU 或 4mb。因此,如果沒有見證數據的交易大約是 1.1mb,那麼這似乎很奇怪
block weight = 1.1mb * 3 + (1.1mb + witnessdata)
因為它大於可能的最大尺寸。
如果交易 + 見證數據約為 1.1mb
block weight = (1.1mb - witnessdata) * 3 + 1.1mb
這個計算似乎更合理。但如果見證數據小於 0.1mb,則塊權重大於 4mb。有沒有可能這麼少的證人數據?
如果只有交易數據,沒有見證數據,比如 1mb 交易數據和 0 見證數據(區塊權重為 4mb 或 4mWU,這是理論上的最大大小),那麼如何解決交易延展性問題?
我很抱歉。問題很長,但我希望它不僅對我有幫助,對正在研究區塊鏈的人也有幫助。
感謝您閱讀
Size = 1,158,038 bytes Weight units = 3,992,825 WU
現在是什麼意思?所以大小是你可能很好理解的——當你在磁碟上有一個文件時,它的大小以字節為單位,這正是這里大小的含義。它是在記憶體或磁碟上儲存這樣一個塊所需的字節數。這是非見證數據 (nWD) 和見證數據 (WD) 的總和。為清楚起見,我們稱其為絕對大小 (AS)。
還有一種叫做虛擬大小(VS)的東西。這是一個新概念,它以新的單位來衡量塊,稱為 vBytes。它的計算公式為(非見證數據的絕對大小)+(見證數據的絕對大小)/4。
塊的權重(BW)以權重單位計算,計算方式為(非見證數據的絕對大小)* 4 +(見證數據的絕對大小)。這實際上等於您在文章中提到的內容:
(tx size with witness data stripped) * 3 + (tx size)
因為交易本身包含見證數據和非見證數據。所以,現在我們知道了:
AS = 1,158,038 bytes = nWD bytes + WD bytes BW = 3,992,825 WU = nWD * 4 weight units + WD weight units
協議中有哪些限制?目前不再有塊大小限制。塊重量只有一個限制。此限制設置為 4,000,000 WU。因此,對於沒有 Segwit txs 的塊,每個字節的權重為 4 WU,因此,這樣的塊沒有 Segwit txs 的絕對大小受到 1 MB 的限制。
包含 Segwit txs 的塊可能比這更大,並且有一些理論計算表明你可以達到 3.7 MB 的絕對大小的塊。但這個理論上的極限就是——理論上的。在實踐中,即使該塊充滿了 Segwit txs,其絕對大小也不會達到此限制。
目前,大多數塊都包含 txs - Segwit 和 legacy,因此我們看到完整塊的塊大小通常在 1 - 2.2 MB 之間。如果塊的權重非常接近 4,000,000 WU 的協議限制,則該塊已滿。
這意味著認為一個大小為 1.1 MB 的塊由 1,000,000 字節的 nWD 組成,其餘的是 WD 是不正確的。那是行不通的,因為 1,000,000 nWD 字節的權重已經是 4,000,000 WU,因此如果我們將 WD 的權重添加到它,我們將超過限制。這是不可能的。
因此,如果我們知道 AS = 1,158,038 KB,那麼寧可有 944,929 字節的 nWD,權重為 3,779,716 WU,其餘的是 213,109 字節的 WD,權重為 213,109。這使得塊的總重量為 3,779,716 + 213,109 = 3,992,825 WU。
我們現在可以計算 VS:
VS = nWD vBytes + WD/4 vBytes = 944,929 + 213,109 / 4 = 998,206.25 vBytes
因此,虛擬大小 (VS) 不能大於 1,000,000 vBytes,因此如果有人說新塊大小仍受 1 MB 限制,這就是這個意思——他們實際上是指 100 萬 vBytes。