2021年11月20日,在第八期BeWater Live 上,Acala 合夥創始人兼CTO 陳錫亮分享了《波卡底層技術分析:共享安全與平行鏈卡槽》。
這場深度且系統的分享,核心內容:
1、波卡架構簡介
2、波卡架構共享安全設計理念:
- 去中心化- NPoS 驗證人選舉算法
- 安全- BABE 出塊人選舉算法
- 高效- GRANDPA
區塊最終確認算法
3、波卡架構共享安全技術細節:
-
鏈下工作機與選舉算法
- 混合共識算法
- 驗證人- 收
集人架構
4、平行鍊和平行線程:
- 驗證人分配機制
- 反作惡機制
5、卡槽拍賣:
- 波卡代幣經濟設計
- 蠟燭拍賣介紹
BeWater
大家好,我是陳錫亮Bryan ,Acala 聯合創始人兼CTO。今天有幸可以在bewater 社區給大家分享一下這個波卡的技術。這次會主要側重於共享安全,還有平行鏈卡槽的一些方面給大家做分享和介紹。
一、波卡架構簡介
波卡是一個異構的區塊鏈。比特幣作為第一代區塊鏈來說,主要的功能是轉賬。以太坊作為第二代區塊鏈擁有的智能合約功能,用戶可以上傳智能合約,然後發布自己的應用。但以太坊目前到了一個瓶頸階段:所有人包括以太坊官方自己都認為,目前以太坊不足以承擔未來的職責,所以Gavin Wood 離開了以太坊創建了波卡,來打造他認為最適合有長遠發展的web 3.0 技術。
區塊鏈目前最大的瓶頸之一是性能限制,解決性能瓶頸一般有幾種方式:橫向發展跟縱向發展。
縱向發展就是分層,橫向發展就是分片。波卡使用分片的技術。以太坊2.0 比較類似,但以太坊2.0 使用的是同構分片,波卡使用的是異構分片。你可以用波卡來實現以太坊2.0,只要保證每一個分片都是一個智能合約片就行。所以說異構分片在從技術架構上來說明顯優於同構分片,因為只要能實現異構分片的技術,就可以非常簡單的實現同構分片的技術。

這個圖是波卡的一個非常簡單的架構,分別有幾種角色:中間的Relay Chain 是波卡中繼鏈,然後每個中繼鏈會連接多個Parachain ,每個Parachain 就是平行鏈,然後每個平行鏈都是自己的一條鏈,成為自己的layer 1 ,所以說波卡連接所有平行鏈,有人說波卡的是一個layer 0 的協議。
每一個平行鏈的安全是由Validators 驗證人,來維護整個波卡網絡的安全性。然後同時這些Validators 也驗證了這個平行的安全性,每個平行鏈還有一些Collators 收集人,這些我會在之後再詳細介紹。那波卡生態作為一個跨鏈的核心,自然不能是一個很自閉的生態,我們希望是可以連接到除了波卡生態,還有以太坊,其他新興生態,打造一個互聯互通的一個區塊鏈3.0的未來。所以橋也是一個非常重要的部分在這個生態之中。
“橋”實際上是一個普通的平行鏈,但是它的目的就是為了能跨其他的鏈。所以通過橋可以使波卡生態連接到其他的生態,包括比特幣、以太坊等。這些跨鏈橋有一些已經實現,有一些在實現中,所以說這樣就可以打造一個完全開放式的,可以互通整個區塊鍊網絡的生態。
延伸link:
https://wiki.polkadot.network/docs/getting-startedhttps://research.web3.foundation/en/latest/index.htmlhttps://w3f.github.io/parachain-implementers-guide/https:// docs.substrate.io
二、波卡架構共享安全設計理念
1、去中心化-NPoS驗證人選舉算法
第一個是去中心化。波卡希望支持至少1000 個驗證人節點,算是一個非常去中心化的網絡。
如果全世界這麼多人競爭二十一個節點,成為一個節點的成本將會非常的高,但如果你競爭前1000 個節點,這個成本會相對低非常多。當然如何以去中心化的方式,選前1000 個節點也相對複雜。
很多POS 使用的方法,簡單來說是每一個有資產的人都可以作為提名人,提名人可以選舉驗證人,但問題是提名人只能選舉一個驗證人,而提名人只有在他選舉的驗證人被選入之後,他才會有收益,導致的結果只有21 個驗證人的網絡,第21 個人和第22 個驗證人之間的票數差距是非常巨大的。所以說導致的結果,是既得利者非常容易在這個圈子之中,外來者很難打破平衡。那這個實際上對去中心化來說不是理想的狀態。
波卡實現了NPoS 算法:每一個驗證人可以選舉最多24 個驗證人,只要24 個之中任意一個被選上了,你就會得到10 staking 的收益。這樣大家會有動力選他認為更優秀的驗證人,而不是選他一定會選上的人。這不會產生非常高的壁壘,使得新的驗證人加入會比較容易。
所以說這個選舉算法就會變得比較複雜。因為一個人有24 票,這個票數是動態分配的,那麼全局算法就會比較複雜。使用了Sequential Phragmen 算法,驗證人的選舉是非常去中心化的,所以說這是波卡去中心化的其中之一。
延伸link:
https://wiki.polkadot.network/docs/learn-phragmenhttps://research.web3.foundation/en/latest/polkadot/NPoS/index.html
2、安全-BABE 出塊人選舉算法
作為一個區塊鍊網絡,安全自然是非常重要的。波卡有相關的各種方式保證它是安全的。我先側重的說一下BABE 這個出塊的選舉算法。因為波卡可以支持上千個驗證人,但是每一個區塊不可能讓這一千個驗證人同時出一個區塊,所以說如何選下一個出塊人也是一個問題。
這個做法目前是普遍有兩種方式,最簡單的方式就是使用按順序來輪流來大家排個隊,一人出一塊就完了,這個是可行的,但是他會有一些問題,比如說誰是下一個出塊人是可預測的,就會使得一些攻擊就會比較容易實現,這個是比較危險的。
第二種方式就是使用 VRF (Verifiable Random Function) 的方式。這可以使出塊人的選舉方式有一定隨機性,你沒有辦法預測到下一個出塊人是誰。好處就是驗證人合夥作惡的可能性大大降低了,因為他並不知道什麼時候他自己會被選上,他也不知道他被選上之後接下來幾個驗證的都是誰,再加上一共有上千個驗證者,要勾結幾個人做成本就會大大的增加。
VRF 有一個slot, 每6 秒鐘是一個出塊的區間,這個時候大家每一個驗證人都會知道自己手上有一根簽,這個簽單只有他自己能看到,每6 秒鐘抽一次簽,如果抽中了他就可以進行出擁有出塊的權利。同時出塊的時候可以發布一個證明,證明他確實抽中這一根簽。
當然這種隨機抽籤的話有一個小小的問題,你沒辦法保證只有一個人選中,你也沒有辦法保證一定會有人選中。所以就有可能會出現一個slot 裡面有多個validator 或者說沒有validator 。這個BABE 也做了一些的處理,多個的validator 的話相對容易來說會導致產生一個分叉,但是最終來說的話只會有一個分叉成為合法分叉。
如果說沒有任何選中的話,他會使用回排序的方式,說每一個slot 會有一個primary做主要的這個出塊者,還有一個secondary 一個次要的出塊者。 primary 就是使用VRF 來選的,如果說沒有人選中或者說選中的那個人不在線,或者說他因為某種原因他不出來聲明說他選中,不進行出塊。那麼就會有一個替補,這個替補可以出來進行一個出塊的動作。這使得在驗證出塊方面達到一個比較好的隨機性,同時使一些外來者的攻擊更加困難:比如你可以快速的預測到下一個出塊人的話,那你可以針對這個人的網絡,服務器,你可以作為一個DOS 的攻擊,發一堆流量,把這個服務器給打垮掉,使得網絡癱瘓。
但如果說你不知道誰是下一個,那你必須得同時攻擊這上千個驗證人,那這個攻擊成本就直接翻了一千倍,所以說也使得網絡在更加的安全。 BABE 也不是說一個完美的算法,波卡正在做這個SASSFRAS 算法,就可以使得每一個slot之間只會有一個,並且一定只有一個的這個出塊人。就不會產生多個人同時抽到一簽,或者說同時沒有人抽到一籤的情況發生。這個算法在現在應該是在一個審計的階段。
延伸link:
https://wiki.polkadot.network/docs/learn-consensus#block-production-babehttps://research.web3.foundation/en/latest/polkadot/block-production/Babe.html
3、高效-GRANDPA 區塊最終確認算法
然後下一個的話作為一個新時代的區塊鍊網絡的話,那我們勢必是要保證這個網絡是一個高效的。那這個同樣,我會我只是先說其中比較重要的一點就是GRANDPA 這個算法。 BABE 是選擇這個誰是出塊人,誰有出塊的權利。 GRANDPA 是去做一個這個最終確認的這麼一個過程。因為Babe 來說的話是還是有導致這個fork 的可能性的。
如果在產生fork 的情況下,那麼誰才是真正的這個被敲定到一個區塊,這個就是由GRANDPA進行這個確認。那GRANDPA 和傳統的這個PBFT 這個算法可以說是一個擴展,它原理上是幾乎一模一樣的,都是需要有超過2/3 的這個誠實節點才能防止拜占庭攻擊。

但是GRANDPA 它和傳統的這個算法來說有一個最大的優勢,就是說它可以一次性快速的finalize 大量的區塊。如果說作為一個傳統的這個比如說pbft 這個算法,他一次性只能敲定一個區塊,這就是直接限制了它的效率。但是GRANDPA 理論上,它一次性的可以敲定上百上千個區塊。
所以說它使得這個在發生比如說網絡故障或者說有一部分節點掉線的情況下,如果說是傳統的這個Tendermint 的算法,它這個就會直接導致網絡的停滯。但是如果使用GRANDPA 的話,那就沒有任何關係,只是說有一段時網絡還是可以正常的往前走,正常的出塊。但是它的finalize 會停下來,但是一旦網絡恢復正常,一旦有足夠的節點上線,它可以在幾秒鐘之內就把這個最終敲定的區塊的直接跟上來。
延伸link:
https://wiki.polkadot.network/docs/learn-consensus#finality-gadget-grandpahttps://research.web3.foundation/en/latest/polkadot/finality.html
三、波卡架構共享安全技術細節
1、鏈下工作機與選舉算法
在波卡上面有幾千個提名人,幾千個validator 。所以說你要在這麼多人之間要選這個最優秀的和200 個或者300 個驗證人的話,不管這個算法是怎麼被優化,它的計算量都會比較龐大。大家應該知道這個鏈上的計算是非常昂貴的,因為這個需要每一個節點都進行運算,而且它是有時間有限制的。所以說在鏈上做這個運算就不是非常的適合。
波卡的網絡是6 秒鐘一個塊。 6 秒鐘一般是分為三個部分,其中2 秒鐘是出塊的時間,2 秒鐘是網絡傳輸的時間,2 秒鐘是引入上一個區塊的時間。所以說一共是6 秒鐘,但是其實只有2 秒鐘時間在進行出塊。所以說這直接限制了這個選舉算法必須在2 秒鐘之內執行完成。這個在網絡人數少的時候是可行的,但是在人數多的時候就會變成一個非常大的限制。所以說波卡用off-chain-worker 工作機這個技術來解決這個問題。這也是一個比較全新的技術,據我所知在其他網絡之中應該是沒有的。
然後簡單來說這個off-chain-worker 就是可以在網絡可以使一段代碼在鏈下進行執行。 Phragmen 這個算法它會把節點在鏈下進行計算,尋找最優秀的提名方案。然後進行計算之後然後再將最優秀的這個方案傳到鏈上。因為驗證這個方案是一個比較快速的過程。然後這樣就可以以一個性能上比較適合的方式進行一個選舉,把大量的計算過程在鏈下執行,在鏈上只會選舉分數足夠優秀的方案。這樣就可以突破鏈上兩秒鐘執行的時間限制。
Off-chain-worker 除此之外還可以做很多的其他事情,比如說目前也是做到用來做這個發送驗證的也是使用off-chain-worker 來執行。然後這個off-chain-worker 有非常強大的很多API ,他甚至可以發送HTTP 的request。比如說最簡單的案例,可以與coinmarket cap 等等的這些價格網站直接詢問價格,然後將這些價格信息發到鏈上,可以做很多這個傳統區塊鏈架構是不可能做到的事情。所以這個也是一個和其他的區塊鏈開發框架來說一個比較有獨特優勢的地方。
延伸link:
https://docs.substrate.io/v3/concepts/off-chain-features/https://wiki.polkadot.network/docs/learn-phragmen#off-chain-phragmén
2、混合共識算法
波卡的這個共識算法實際上是一個混合的算法。他將這個出塊和finalize 做了一個區分,做了一個拆分。因為BABE 的話是直接只要這個你隨機抽中的這個節點在線,或者說他的備選節點在線,那麼他就可以進行一個出塊。只要有一個節點在線,就算其他節點全部死掉了,都不會影響網絡正常的出塊。那所以說這個大大提高了網絡的可用性。
當然了為了這個安全性的話,我們還是需要finalize 的。所以finalize 還是需要要有超過2/3 的誠實節點在線。但是因為這兩個是區分開的,所以說在這個如果說網絡發生了問題,BABE 進行自己出塊,然後在網絡恢復之後,可以在幾秒鐘之內重新再把這個finalize 這個區塊跟上來,所以這個混合公司算法得大大提高了這個網絡的可用性和安全性。
3、驗證人-收集人架構

然後接下一個說這個更多的是平行鏈擴展的部分,使用了這個收集人驗證人的這個架構。我剛剛已經簡單的提到了,說波卡自己是一個中繼鏈,然後中期鏈又有他自己的validator 然後這個每一個然後這些validator 會負責驗證一些這個平行鏈的安全,然後每一個平行鏈都有自己的collator 那collator 就是收集人,他負責這個平行鏈的出塊,但是他並不負責這個安全性,所有的安全性能都是由這個波卡的驗證人來進行執行的。
所以說導致的結果是大家不需要相信collator。這些collator本質上沒有任何作惡的能力。這使得對一個平行鏈來說,相對波卡來說,collator 有幾個就行了,反正這些collator 是沒有能力作惡的。這使得平行鏈的安全性能得到一個大大的提高,同時的大大的降低了運行一個平行鏈的成本。因為你只需要擁有幾個collator 就可以了。
延伸link:
https://wiki.polkadot.network/docs/learn-collator
4、基於共享安全的技術拓展
共享安全性
所以說這個共享安全的最大優勢就是使得所有的平行鏈的可以共享到波卡主鏈的網絡的安全性。這個是一個非常重要的一點。因為作為一個POS 的網絡的話,你想擁有一個很好的安全性能是非常困難的,你必須擁有一個足夠的這個網絡的代幣的市值,你必須擁有一個足夠分散的這個節點。所以說這個都不管是在運營方面和這個資金方面都是有一個非常高的門檻的。波卡的使用共享安全的這個技術,就可以使得這個平行鏈直接使用到這個波卡的安全性。
所以說這個是一個非常必要的方式,否則導致的結果是不同每一個網絡都會勢必產生一個這個安全性上的競爭。最簡單的例子就是各種比特幣的分叉,他們每一個礦工的之間這個小型的網絡,它的hash rate 是非常低的,然後就非常容易被雙花攻擊。然後同時小型的POS 網絡,因為代幣的市值太低,所以說也非常容易被收購到足夠的代幣,然後進行這個1/3 的攻擊等等。
但是如果說這個平行鏈的網絡是基於這個波卡安全性的話的,那麼攻擊任意一個平行鏈的成本都是與攻擊這個波卡自己的成本是一樣的。這會達到一個非常高的成本。然後但是這個只是共享這個共享安全的這個重點之一。
那共享安全其實還有達到另外一個效果,也是非常重要的,實際上是為了這個跨鏈技術的服務。因為跨越技術其中有一點是非常困難的,假如你有100 個區塊鏈互相自己可以跨鏈溝通,這個幣在這100 個鍊子之間是可以互相轉來轉去的。那麼你這個就會有一個問題,如果說這100 個鏈最終有一條鏈被攻擊了,然後他被惡意操控了。那麼這條鍊是不是有可能就可以無限增發其他鏈的貨幣,然後通過跨鏈的方式把這個貨幣轉到其他鏈上,然後導致其他的這些所有與這條被攻擊的鏈相連的鏈都會受到這個攻擊。
所以說使用共享安全的話,就可以保證這個網絡之中沒有短板。在做這個跨鏈技術的開發之後,我們當然還是要考慮很多其他技術細節。但是有一個事情不需要考慮就是這條鏈的這個消息是否足夠安全。而且因為是使用這個中繼鍊和平行鏈的架構,所有的跨鏈消息都是會被這個中繼鏈的驗證人進行驗證的,然後同時會得到這個中繼鏈的一個保證。
所以說導致的另外一個優勢比如說鏈A 給鏈B 發一條消息。鏈B 收到之後,這條消息實際上是經過中繼鏈保證的,中繼鏈確確實實驗證過這條鍊是鏈A 發送過來的,這樣子的鏈B 就可以直接相信這條消息是因為通過共享安全性。所以說這個很多消息來源的驗證的方式就完全是不需要考慮的。所以說這個也使得跨鏈的技術實現來說會容易得非常多,所以也是波卡的跨鏈的優勢之一,可以使得鏈與平行鏈之間暫時得到一個非常高效的一個跨鏈的消息的傳遞。
治理問題
然後那這個只能保證這個鏈與鏈之間的消息的傳輸的的合法性的驗證。但是有一個問題並不能解決,治理的問題。理論上來說,所有鏈在基礎安全性都是一致的情況下,還有一種攻擊方式就是治理攻擊。
你可以如果說有一條平行鏈,他的自己代幣價錢足夠便宜,那麼攻擊者可以大量的收購這個平行鏈代幣,使得他控制這條鏈的治理權,然後甚至就可以做一些操作,比如說同樣大量的惡意增發其他鏈的幣或者說篡改一些消息。那這個解決方法,就是其針對攻擊問題,波卡也是提供了一個解決方式。
大致來說的話,就是舉個例子,大家的手機電腦之間都有一個可信硬件,叫做TEE 的一個芯片,然後包括在iPhone 上或者Mac 上,甚至在所有的大部分的新的CPU 上面都有這麼一個可信執行區域,然後在這裡面執行的所有東西都是會被認為是可信的。比如說你iPhone 上面用指紋解鎖,用facetime 解鎖的話,所有的這個指紋的信息都是在這個可信區域裡面執行的。這個認為是不可以被惡意攻擊操縱的。這個使得很多安全性上面的東西的開發就會非常容易,因為你只要在TEE 裡面執行,你就會認為它是安全的。
那這個時候也是達到一個類似的效果,平行鏈如果說選擇使用SPREE 這個組件的話,他並沒有能力修改這個組件的代碼的能力,因為這個組件是由這個中繼鏈來進行維護的,所以說是可以把一些非常重要的比較敏感的一些代碼,比如說這個代幣的轉賬、增發銷毀邏輯等等放在這個框架裡面。
那麼這樣的話其他平行鏈就可以相信相對應的代幣的轉賬的操作是會被正確執行的。其他的平行鏈就算是進行惡意攻擊,他也沒有能力作為一個惡意的增發等等。因為這部分的這個邏輯並不會被其他平行鏈所操縱,所以這個同樣也會解決了非常多的一些信任上的問題,你不需要信任對方,因為對方沒有作惡的能力。所以這個也是波卡技術非常優勢的一個問題。也是目前來說我沒有看到其他的技術有解決這個方式的方案。
當然這個理念是非常先進的。先進到這個目前來說一行代碼都沒寫出來。所以說這個在實際使用這個東西的話,我們可能還需要等待一段的時間才能真正用上這個功能當然了,大家有興趣的話,也歡迎參與到這個SPREE 的一些技術細節的討論和探討。這個也是會在波卡平行鏈上線之後的這個開發的一個非常大的側重點。
延伸link:
https://wiki.polkadot.network/docs/learn-security#shared-securityhttps://wiki.polkadot.network/docs/learn-crosschainhttps://wiki.polkadot.network/docs/learn-spree
五、平行鍊和平行線程
1、驗證人分配機制
那接下來我說一下這個關於卡槽的一些東西。當然我已經說到了波卡,我們有中繼鏈還有平行鏈。然後實際上還有一個平行線程這麼一個概念。當然了這個實際上就是非常簡單的,平行鏈就其實像一個多核的電腦,然後每一個鏈就是每個應用佔用一個核,然後這個核是由它獨有的,然後平行線程就是一個thread 然後他等於多個線程之間共享幾個合核心。然後使得有一些對於這個比如說交易量比較少的應用它不需要永遠在線,它就可以和其他的一些同樣的線程共用一個核心,這個就使得這個網絡能達到一個更高效的一個分配。
當然了平行線程目前也是屬於一個開發階段,目前還沒有上線。但是因為它的核心功能是和平行鍊是一致的。所以說希望在這個平行鏈上線之後的不久的未來,我們就可以看到平行線程。
然後這邊又說到了這個驗證人的這個分配機制。在波卡的這個白皮書來說,他會說波卡會有100 個卡槽。所以說很多人會有這個問題,為什麼是100 個卡槽? 100 卡槽用完了怎麼辦?不夠用怎麼辦?然後不夠用的這個問題,就是做一個二級的relay 所以說我們有波卡這個鏈波卡會連到100 個平行鏈,然後這100 個平均鏈每個自己也是一個中繼鏈,100個鏈又連100 個鏈,那我們就有1 萬個鏈了,1萬個鏈100 個不夠,1萬個總該夠了。所以這個是波卡解決方案。這100 這個數字怎麼來呢?波卡的一開始的設計是它支持1000 個驗證人,然後他們又會去分配,然後每10 個驗證人,然後負責驗證一個平行鏈。那我們1000 個驗證人10 個平行鏈,那我們就有了100 這個數字。
當然因為這個驗證人的上限並不是1000 個。這上限具體的多少實際上大家都不知道,所以Kusama會在接下來一年之內會不斷的增加這個驗證和數量,在實際的網絡之中來探索這個這個驗證的數量的上限。那這樣我們就會知道波卡實際上最多可以支持多少驗證人和多少個平行鏈。然後同時這個10 也是當初設定的一個數字。
現在每個平行鏈實際上只分配了5 個驗證人。這個也是Web3他們之後一些更多的研究,他們認為有五個驗證人可以做到足夠安全的了。
延伸link:
https://research.web3.foundation/en/latest/polkadot/networking/1-parachains.html
2、反作惡機制
當然這個肯定會有人問,要是這五個驗證人都是一伙的作惡怎麼辦?所以說波卡的這個驗證並不是僅僅簡單單的就相信這五個驗證人。當然首先第一點就是因為從1000 個里面選5 個,然後這5 個在一起作惡的可能性是在因為作為POS 網絡的話,一個最基本的這個設想是至少有2/3 的節點是誠實的,然後在1/3 的節點是作惡節點之中,然後再隨機有5 個分配到一個你想要攻擊的這個平行鏈,他們認為這個機率是足夠低的,所以說這是足夠安全的。
然後就算這種情況發生了,這只是一個第一步的驗證。實際上還有一個第二步的驗證。
波卡剛剛我說過了出塊和這個最終的finalize 是分開的。所以這個和平行鏈的這個機制實際上也是一致的。這5 個驗證的人會驗證一個平行鏈的節點,然後將其打包放在這個平行鏈的這個區塊,將平行鏈區塊頭打包,然後放到這個波卡中繼鏈的區塊之中。然後這個會波卡的區塊會進行一個出塊,然後這個就會被認為是確認了。
確認是不夠的,我們一般情況下要有敲定的過程,這個就會涉及到了波卡的這第二個機制。波卡在GRANDPA 驗證之中,他們又會進行作為一個第二步的驗證。然後來再次驗證這個這五個人打包了這個平行的鏈的區塊是否是合法的。所以說這就使得這五個這個作惡的機率。就算這五個人作惡,他們可以在波卡的區塊裡面打包這個非法的平行鏈的區塊。這個等於就創建了非法的中繼鏈區塊,它有可能會被確認,但是它並永遠不會被finalize。
延伸link:
https://research.web3.foundation/en/latest/polkadot/networking/3-avail-valid.html
六、卡槽拍賣
1、波卡經濟設計
對於這個傳統的這種英式拍賣的話來說,就是大家出價,然後最終出價高者得。這個在區塊鏈上進行事情也是有非常多的問題。首先你這個拍賣勢必要有一個時效性,你不能讓大家這個拍賣永遠的拖下去,這樣的話很容易比如說惡意攻擊,大家合謀,每次就多出一塊錢,大家都不想多拍,那每次加一塊錢,那真的不知道拍到猴年馬月去了。所以說波卡是使用了蠟燭拍賣,這個蠟燭是拍賣。簡單來說這個拍賣分兩個週期,第一個是一個正常的出價週期,第二個是一個隨機熄滅的周期,然後最終拍賣結束之後,他會使用到VRF 這邊提供的這一個隨機性數字,然後利用這個數字隨機的選出一個區塊,由這個區塊裡面價格最高者獲得勝利。
然後這個也是為什麼這個在如果說你有關注波卡拍賣的話,你會發現並不是拍賣一結束這個結果就出來的,一般要等兩到四個小時,這也是等足夠安全的隨機數出來,然後才能做一個這個確認拍賣結果的這個區塊。
然後這個蠟燭開發為什麼要這麼設計呢?他們所需這個主要解決的問題就是說一個是保證這個拍賣可以在遊戲在確定的時間之內完成不可能永遠被拖下去。第二個就是說避免大家最後一秒出價,因為如果說是一個有時效的正常拍賣方式的話,那麼最優策略勢必是在最後一秒鐘再出價。
所以說是這個蠟燭拍賣機制的,會鼓勵大家就在隨機熄滅之前,越早把那個籌碼交出來越好。因為你交的就算你是在這個蠟燭週期的最後周期開始之前最後一秒鐘出價,那也無所謂。反正其他人之後看到你出價再加就是了唄。因為在實際週期的開始之前加價是沒有那種太多影響。但是如果你選擇在熄滅週期的最後一秒鐘出價,那麼出的這個價有非常大的機率是無效的。所以說這個也使得拍賣的參與策略,從某種意義上來說就更加簡單了,反正你就一開始all in 就行了。然後所以這個就是蠟燭拍賣。
延伸link:
https://research.web3.foundation/en/latest/polkadot/economics.htmlhttps://wiki.polkadot.network/docs/learn-staking#inflation
2、蠟燭拍賣介紹
然後這邊也再順便說一下波卡的設計。波卡他認為資產是一個工具而不是一個貨幣。
所以說在早期的這個波卡經濟模型的設計有一個非常激進的想法,就是說這個增發率年化甚至達到百分之五十之多。那導致的結果是如果說你不參與staking 那麼你這個資產大幅度的貶值會。進而以一種類似強迫的方式使得大家也參與到這個網絡之中。當然這玩意就是反正大家都可以覺得太激進了。然後所以說最終沒有使用到,所以說現在使用一個相對合理的10% 的增發率,大家對波卡的經濟頭設計有興趣的話,同樣也可以看這個鏈接裡面有一些非常多的一些用信息。
延伸link:
https://wiki.polkadot.network/docs/learn-auction
