加入Wisdom Chain社區,共建價值互聯網!
本文來自Wisdom Chain公鏈社區
01
交易是區塊鏈的基石
交易是區塊鏈的基石,我們每天都會接觸到各式交易,不論你是操作DeFi,還是轉賬購買NFT,或者只是單純的從交易所提現/充值,交易都是上述操作的基礎。
不過,鮮有人知曉交易的中轉站——記憶體池的重要性,由于大量教材為大家提供了“區塊鏈是一個不需要中介的交易賬本”這個概念(并非說這個概念有誤,并且這個概念還相當精準),如果不深入了解區塊鏈的技術細節往往會忽略記憶體池,并導致在一些特殊時刻出現不必要的損失。
位元幣、以太坊、Wisdom Chain都有記憶體池設計,幾乎所有的區塊鏈專案都離不開記憶體池,那么究竟什么是記憶體池?記憶體池又在交易程序中扮演了什么角色呢?
02
記憶體池是什么?
要了解記憶體池的概念,首先我們需要回顧交易的狀態。
相信大家在操作以太坊,尤其是近期擁堵的以太坊時,如果設定了較低的手續費,那么交易將會被等待一段時間才會被礦工打包。
等待的這段時間交易將會儲存在收到這筆交易的礦工節點中,而礦工節點則會將這些等待被它打包的交易存放在“記憶體池”(mempool,又叫交易池)中。
放在記憶體池中的交易,礦工一般會按照手續費價格的多少來進行排序,優先打包價格較高的交易,至于手續費比較少的交易自然就必須排隊了。
不過由于礦工每時每刻都會接收到其他節點發來的新交易,這些交易也會不斷的更新到記憶體池中,因此礦工也會在一定時間后重新排列交易池中的順序——換句話說,如果你的手續費太低,那么交易有可能一輩子都不會被打包(除非整個網路的手續費大幅降低,或者你自己對交易進行加速,這個概念后面會提到)。
以太坊和位元幣雖然采用了完全不同的結構,但他們的交易記憶體池設計都是大同小異的,或者說,所有的區塊鏈專案在記憶體池上的設計都大同小異,我們以Wisdom Chain的記憶體池作為例子:
上述各個引數定義了Wisdom Chain中記憶體池的各個特點,我們挑選其中最重要的幾點進行解釋:
1
Pending
pending代表著尚未被礦工打包的交易,這些交易已經經過了初次校驗并等待被礦工打包
2
Queued
queued代表著初步被驗證過的交易,但這些交易的優先級比pending低,處于”等待進入pending“佇列的狀態。需要注意的是pending和queued佇列也會按照Nonce亂數來進行排序。
3
過期時間
過期時間。交易如果超過了一段時間將會從記憶體池中清除,用戶需要重新向網路廣播交易才能讓交易被放入到礦工的記憶體池中
4
手續費
手續費,顧名思義,避免大量無意義的交易填塞網路導致擁堵。
5
最大事務數
最大事務數。確保礦工的記憶體池不會儲存過多交易,導致節點宕機。
不論位元幣、以太坊,記憶體池的設計都離不開”交易佇列“,”手續費門檻“,”記憶體池上限“三大概念,Wisdom Chain中也是如此。
03
為什么需要記憶體池?
試想一下,如果沒有記憶體池,區塊鏈會發生什么?
雖然作為點對點交易的媒介,區塊鏈看起來是一個用戶同另一個用戶直接交易,就像線下一手交錢一手交貨一樣,加入交易池作為中介媒介似乎是徒增摩擦成本。但實際上,記憶體池的存在不僅沒有對網路造成負擔,甚至還是網路減負的重要手段。
如果沒有記憶體池,首先區塊鏈就喪失了對粉塵攻擊的抵抗性。所謂區塊鏈上的粉塵攻擊,指的是大量毫無意義的交易填充了整個區塊網路,而交易驗證是需要花費時間和算力的,如果用戶和礦工節點被大量的粉塵交易所填塞,那么他們將無法正常的驗證并打包本應當正常的交易。
甚至如果礦工節點不設上限地接收粉塵交易,交易將會直接填滿礦工節點的記憶體導致宕機。記憶體池的存在,通過最大事務數和手續費門檻,確保無價值的粉塵攻擊不會讓網路陷入擁堵狀態。
交易額低數量大
其次,缺乏記憶體池,網路激勵機制將會受到挑戰。記憶體池設定了按照亂數+手續費進行排列的交易佇列,為的是讓礦工(也是大多數礦工的首要選擇)盡可能以網路、用戶還有礦工個人所期望的方式打包交易——即優先高手續費的交易。
如果缺乏記憶體池,雖然從利己角度礦工依然會選擇較高手續費的交易進行打包,但惡意礦工可以通過以低手續費門檻吸引大量的交易并孤立其他礦工,如果交易過多的聚集在某個礦工控制的節點下,發動雙花攻擊的難度也會有所下降。
另一方面,如果礦工對交易不按照亂數進行排序,那么事務/合約的執行也會存在問題。如果一個礦工節點收到了來自一個用戶的多筆交易,在記憶體池的輔助下交易將會按照亂數大小進行排列,本質上也符合交易的”理想發起時間“。
缺乏記憶體池,如果在網路存在延遲的環境下,用戶發起的交易并不會按照實際發送時間廣播到礦工手中,礦工如果單純按照接收時間來執行某一用戶的多筆交易,那么對于事務/合約這種嚴格限定交易先后順序的設計,錯序交易會讓用戶無法正常的呼叫合約。
04
記憶體是交易的驛站
記憶體池是交易的驛站,或者說港口。所有的交易都需要在記憶體池進行校驗、打包、排序,之后才會經由礦工發送到區塊鏈網路中。如果忽視記憶體池設計,或者忽視記憶體池的存在,在市場劇烈波動或者網路環境不穩定的情況下,是會發生類似3.12 MakerDAO 0價格ETH拍賣烏龍事件的。
關注Wisdom Chain動態
Twitter:Wisdom_Chain
微博:WisdomChain
知乎:智慧鏈技術社區
Facebook:WisdomChain
Telegram:WisdomPublicChain
Medium:Wisdom_Chain
相關資源
WIsdom Chain公鏈檔案知識庫:
https://docs.wisdchain.com/#/
Wisdom Chain官網:
https://wisdchain.io/
Wisdom Chain技術論壇:
http://tech.wisdchain.io/
Wisdom Chain開源代碼庫:
https://github.com/WisedomChainGroup
Wisdom Chain區塊瀏覽器:
https://scan.wisdchain.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/58491.html
標籤:區塊鏈技術
