項目的特點
1. 共識協(xié)議:DDPOS。高TPS,兼顧精英治理與大眾普選,避免成為少數(shù)人的專政。
2. 完善的系統(tǒng)升級機制:區(qū)塊鏈系統(tǒng)的每次升級即是一次硬分叉。由于各種原因,部分用戶選擇不更新客戶端,因此和升級后的客戶端失去共識,造成系統(tǒng)價值的損失。Genesis將投票功能built in客戶端,系統(tǒng)升級在系統(tǒng)中多數(shù)人達成共識后自動進行,保證了系統(tǒng)升級的時候的價值得以延續(xù)。
3. DApp Store(1.0版):傳統(tǒng)的區(qū)塊鏈主鏈像windows一樣,開發(fā)者開發(fā)的DApp散落無組織。 Genesis中有一個DApp store作為面對普通用戶的入口,開發(fā)者和用戶都必須遵守一定的規(guī)則和監(jiān)管。作為一個去中心的自制社區(qū),這個監(jiān)管由社區(qū)自行投票擬定。最初的原始規(guī)則采用類似reddit的排名機制(基于用戶投票排名)。
4. 自帶存儲側鏈:目前市面上的公鏈大都不具備存儲能力。Storj和siacoin之類 雖然允許開發(fā)者存儲數(shù)據(jù),但是這些鏈設計復雜,更適合于專業(yè)的去中心存儲場景。Genesis存儲側鏈自帶數(shù)據(jù)存儲的經(jīng)濟體系,開發(fā)者可以直接調(diào)用來開發(fā)需要存儲大量數(shù)據(jù)的應用。
5. 開發(fā)進度30%:基于Rust開發(fā),系統(tǒng)編程、安全、并發(fā)、高效。Framework鏈計劃于2018年9月測試,主網(wǎng)testnet計劃于2018年12月上線。
6. 和其他主鏈項目的對比:Genesis作為一條公鏈,通過側鏈實現(xiàn)擴展,和現(xiàn)有的公鏈的對比如下:
?
項目的目標
我們希望最終Genesis要打造的不僅僅是一個區(qū)塊鏈基礎鏈,更是John Barlow 夢想中的,能實現(xiàn)DAO治理的理想國,一個全新的,完全獨立自治的,不受任何中心化權威控制的互聯(lián)網(wǎng)虛擬世界,一個未來將顛覆所有現(xiàn)有社交網(wǎng)絡和互聯(lián)網(wǎng)生產(chǎn)關系的互聯(lián)網(wǎng)空間。
Genesis系統(tǒng)介紹
出發(fā)點
用戶為社交平臺貢獻了大量的內(nèi)容,成就了臉書等社交平臺的巨大成功。然而,用戶提交的內(nèi)容所產(chǎn)生的收益大部分被這些平臺拿走,并沒有分享給這些用戶。實際上,用戶只有這些社交平臺的使用權,沒有所有權。Genesis用區(qū)塊鏈技術打造一個去中心的社區(qū)。社區(qū)所有內(nèi)容由全體用戶擁有,社區(qū)的規(guī)則也由用戶自己制定。社區(qū)依托于一條高性能的公鏈,用戶可以通過在其上發(fā)布的各種去中應用來實現(xiàn)各種功能和場景。
治理機制
Genesis用區(qū)塊鏈技術打造一個去中心的社區(qū)。社區(qū)所有內(nèi)容由全體用戶擁有,社區(qū)的規(guī)則也由用戶自己制定。Genesis的核心治理原則為“自治”, 用戶參與自治最重要的工具是“投票”。
Genesis里有下面這些核心對象:
1. 人
Genesis系統(tǒng)里的第一要素是人,也就是用戶。Genesis由共享同一用戶系統(tǒng)的一條主鏈和多條側鏈組成。Genesis中的用戶可分為普通用戶、地主和元老三種。其中地主負責維護一個云盤,而元老負責維護整個區(qū)塊鏈系統(tǒng)。
Genesis的用戶具有如下特點:
● 用戶名無需注冊,生成私鑰/公鑰即可以使用。
● 出生紙:用戶激活時,設定一個僅自己知道的字符串,用于被質(zhì)疑時驗證身份。
● 投票權:每個用戶都有投票權利,用于對各種事件作出選擇。
Genesis的用戶在系統(tǒng)里有不同角色,例如:
● 元老 Block Producer:元老負責對全網(wǎng)數(shù)據(jù)進行共識維護。
● 地主 Landholder:地主負責以Merkle Tree的形式維護一個云盤。
● 普通用戶 Users:普通用戶可以從市場購買應用并且參與投票等。
2. 貨幣
Genesis系統(tǒng)流通的貨幣叫Gencoin或者創(chuàng)世幣。創(chuàng)世幣是驅動Genesis生態(tài)系統(tǒng)的動力。
獲得創(chuàng)世幣渠道:
● 普通用戶:
○ 保持在線狀態(tài)會有機會獲得創(chuàng)世幣
○ 用戶的事件記錄被應用端程序調(diào)用時會獲得創(chuàng)世幣
○ 參與投票等活動會獲得發(fā)起投票的人所附上的獎勵
○ 創(chuàng)造出有用的內(nèi)容
○ 創(chuàng)建應用程序并發(fā)布在應用商店上
● 地主:維護云盤獲得創(chuàng)世幣
● 元老:維護區(qū)塊鏈共識機制等獲得創(chuàng)世幣
消耗創(chuàng)世幣的渠道:
● 應用端程序每次獲得用戶授權需要消耗創(chuàng)世幣
● 普通用戶:
○ 發(fā)起投票等活動可能會消耗創(chuàng)世幣
○ 使用應用程序或購買應用程序內(nèi)的功能
類似EOS的模式,基本上任何需要消耗計算力的事件都需要用創(chuàng)世幣做抵押,這樣可以有效防止Ddos攻擊。 以下是Genesis創(chuàng)世幣的經(jīng)濟關系圖:
3. 市場
市場(Genesis Market/DApp store)是DApp的交易場所,也叫應用商店。在這里,普通用戶可以找到所有在Genesis生態(tài)圈里的應用。用戶通過對這些應用的下載和使用來實現(xiàn)其在Genesis虛擬世界的各項生活需求。對于開發(fā)者來說,這里是他們發(fā)布應用并獲取收入的場所。
4. 憲法
Genesis允許用戶簽訂共同希望遵守的協(xié)議,即憲法(如果是少數(shù)用戶直接的協(xié)議,則叫法律)。憲法是系統(tǒng)的最高規(guī)則,所有用戶和活動必須遵守憲法。憲法由大法官來負責發(fā)起投票動議,并且由全體用戶投票的方式來更新。
5. 投票
通過投票來參與到管理是Genesis的核心治理原則。用戶的投票權作為核心機制寫在區(qū)塊鏈里。系統(tǒng)運行之后,算法成為基本邏輯的堅定執(zhí)行者,任何一種全局性改變都需要群體通過投票的來決定。投票的機制是Genesis演化和用戶自治的核心手段。區(qū)塊鏈中記錄的不可篡改的特點讓Genesis里的投票具有絕對的公信力,因此集體通過投票達到的系統(tǒng)進化即可以代表大多數(shù)用戶的意愿。
Genesis主要通過用戶投票的機制完成對自身協(xié)議的更新, 實現(xiàn)進化。對于程序無法處理的邏輯,Genesis通過人工投票來完成決策。例如軟件出現(xiàn)bug,必須更新的情況,即可由系統(tǒng)里的任何一個人提出動議,并且附上更新后的版本以及愿意為該動議支付的貨幣,其它人用投票方式表決是否接受新版本。Genesis中投票應用廣泛,還可以用于仲裁用戶之間的糾紛等場合。
Genesis的區(qū)塊鏈技術
Genesis的共識機制
Genesis項目在發(fā)展過程中,設計過兩種共識機制。第一種是將POW的算力用于數(shù)據(jù)模型訓練的POC(Proof of Comprehension)共識。第二種是民主代理人權益證明 DDPOS(Democratic Delagated Proof of Stake)共識。兩種機制都為Genesis團隊原創(chuàng)并申請專利。POC作為Genesis共識的最初版本,將被做成一個DApp放在側鏈。目前Genesis采用第二種共識機制,即DDPOS。
1.0版:POC(Proof of Comprehension)
POC(Proof of Comprehension)是一種基于POW的改良。傳統(tǒng)區(qū)塊鏈工作量證明POW是一個復雜的加密機制, 當?shù)V工節(jié)點試圖去制造一個區(qū)塊時, 會將若干筆交易通過hash算法進行加密,來形成一個符合協(xié)議的字符串。這個加密的過程會消耗幾乎100%的cpu運算量以及時間,加密出來的字符串被稱為解。傳統(tǒng)POW機制產(chǎn)生的解是無意義的,其好壞只由反映出區(qū)塊鏈的健壯性的特定序列的長度來決定。
眾所周知基于深度學習的人工智能算法近些年在包括語音識別,圖像識別等領域都取得了突破性進展。而訓練深度學習模型需要消耗大量的算力,可以說算力的堆積對于深度學習模型的效果有著決定性的作用。由于GPU等高性能計算設備價格昂貴且在市場上經(jīng)常供不應求,而算力的缺乏成為了學術界和工業(yè)界搭建更優(yōu)秀深度學習系統(tǒng)的瓶頸之一。
Genesis將區(qū)塊鏈加密所必須的工作量證明和深度學習進行了有機結合。不同于傳統(tǒng)的POW方法僅僅依賴于算力的多少來進行工作量證明,我們通過驗證礦工使用算力訓練所得到的深度模型的有效性來判斷其工作量,這也就是所謂的POC(Proof of Comprehension)。鑒于之前我們提到的模型有效性與算力之間的正比關系,因此礦工所訓練深度模型的有效性可以作為其工作量的證明,同時,挖礦的過程最終將締造出強大的人工智能系統(tǒng),使整個求解的過程具有實際意義,解決了傳統(tǒng)POW算力浪費的問題并且為Genesis提供了一個極其廣闊的應用空間。
Genesis的Proof of Comprehension 本質(zhì)上是一個具有自動學習和理解能力的人工智能機制。POC在不斷的數(shù)據(jù)訓練中會變得更強大和聰明,讓Genesis的共識過程更高速,單位時間內(nèi)處理更多交易。不同于大多數(shù)區(qū)塊鏈項目,Genesis單位時間處理交易的次數(shù)tps是隨著系統(tǒng)的進化動態(tài)增加的一個指標,隨著使用人數(shù)和處理數(shù)據(jù)越多,系統(tǒng)tps反而會越大。
另外一方面,隨著Genesis訓練的數(shù)據(jù)越多,Genesis將有能力理解更多人類邏輯,從而未來系統(tǒng)有可能進入到其它需要大量運算力的領域,前景非常廣闊。需要強調(diào)的是,Genesis 的POC共識機制僅僅會放在側鏈上作為一個DApp運行。
Genesis的POC機制是Genesis團隊原創(chuàng),已經(jīng)申請專利。POC的詳細實現(xiàn)流程如下:
數(shù)據(jù)獲取和模型輸出
數(shù)據(jù)通過DApp store里的DApps輸入Genesis。第三方的應用程序開發(fā)團隊可以在Genesis現(xiàn)有的基礎上進行DApps的開發(fā),并通過這些DApps提供個人或者實體上傳數(shù)據(jù)的渠道。同時數(shù)據(jù)提供者也通過DApps獲得補償。
數(shù)據(jù)進來Genesis后,將會被存在一個分布式的文件存儲系統(tǒng)。Genesis中,每一個farmer都是一個數(shù)據(jù)資源的維護者,而所有的farmer的集群可以看作是一個由所有farmer共同維護的可實時擴充的分布式文件存儲系統(tǒng)。
數(shù)據(jù)經(jīng)過POC訓練后,通過DApp輸出結果。
數(shù)據(jù)存儲
數(shù)據(jù)在Genesis中被存儲在一個虛擬數(shù)據(jù)中心當中供下一步POC使用。
1. 虛擬數(shù)據(jù)中心
Genesis系統(tǒng)中用于存儲數(shù)據(jù)的節(jié)點被稱為存儲節(jié)點,存儲節(jié)點和普通節(jié)點使用一樣的地址空間。數(shù)據(jù)集將以碎片的形式復制并分散到不同的存儲節(jié)點上。 存儲節(jié)點的集群被稱為虛擬數(shù)據(jù)中心。每當用戶提交transaction時, 該用戶將會和虛擬數(shù)據(jù)中心的若干節(jié)點簽訂存儲合約來租賃數(shù)據(jù)中心的存儲空間。該技術將確保Genesis的可擴容性和數(shù)據(jù)一致性。
2. 默克爾樹
默克爾樹常用于不可信源數(shù)據(jù)驗證。 默克爾樹有如下特征:
● 默克爾樹的葉子節(jié)點上的值為等長數(shù)據(jù)塊。
● 非葉子節(jié)點的value是根據(jù)它下面所有的葉子節(jié)點值,然后按照一定的HASH算法計算而得出的。如果非葉子節(jié)點的子節(jié)點也同為非葉子節(jié)點,該非葉子節(jié)點的值由其子節(jié)點的值組合后HASH加密后得到。
● 用戶會以默克爾樹的一個分支路徑進行數(shù)據(jù)同步。這個路徑被稱為驗證路徑。 每一個驗證路徑會被默克爾樹根驗證。
Genesis使用二叉默克爾樹進行數(shù)據(jù)存儲。假設數(shù)據(jù)塊的數(shù)量為N, 那么根據(jù)二叉樹的特性可知一個默克爾樹的生成復雜度為O(2-N)。
3. 數(shù)據(jù)存儲方式
Genesis的數(shù)據(jù)以默克爾樹的形式存于不同的存儲節(jié)點中。處于激活狀態(tài)的存儲節(jié)點在p2p網(wǎng)絡中廣播自己的IP,用戶收到廣播后會將可信度高的存儲節(jié)點置于節(jié)點隊列中并構建虛擬數(shù)據(jù)中心。之后用戶將自己的默克爾樹同步到虛擬數(shù)據(jù)中心并在數(shù)據(jù)同步校驗成功后和虛擬數(shù)據(jù)中心簽訂存儲合約。
4. 存儲合約的制定與發(fā)布
存儲合約是存儲空間租賃者和存儲節(jié)點之間達成的協(xié)議。 協(xié)議內(nèi)容以腳本的形式存在于合約的payload中, 協(xié)議內(nèi)容包含簽訂者雙方應當履行的義務。合約在發(fā)布前會要求合約附上數(shù)據(jù)提供者與數(shù)據(jù)中心的數(shù)字簽名組。 一旦合約簽訂發(fā)布,合約將不能被修改。合約內(nèi)容包含:
● 合約hash頭
● 合約創(chuàng)建時當前區(qū)塊鏈高度
● 租賃周期(以區(qū)塊高度計算)
● 驗證數(shù)據(jù)有效性的默克爾樹根
● 數(shù)字簽名組(包含數(shù)據(jù)提供者和虛擬數(shù)據(jù)中心的數(shù)字簽名)
● 存儲節(jié)點的外網(wǎng)IP組
● 雙重鎖定腳本(數(shù)據(jù)上傳者會將一個周期內(nèi)的獎勵通過虛擬數(shù)據(jù)中心的公鑰組合特殊驗證路徑進行雙重鎖定, 需要礦工使用特殊驗證路徑以及存儲節(jié)點使用私鑰進行解鎖)
● 存儲合約將以transaction的形式發(fā)布到存儲區(qū)塊鏈上。
5. 存儲鏈與存儲合約的執(zhí)行
負責維護存儲合約的側鏈名為存儲鏈。存儲鏈由礦工負責維護。礦工在創(chuàng)建新存儲鏈塊的時候會將當前有效周期內(nèi)的部分存儲合約指向的數(shù)據(jù)進行下載驗證,當數(shù)據(jù)被存儲合約上的數(shù)據(jù)可信根驗證通過,礦工會將一個帶有特定數(shù)據(jù)驗證路徑的交易發(fā)布到主鏈上,該交易會復制存儲合約中雙重鎖定腳本并進行一次解鎖,上述過程被稱為合約履行。用戶客戶端會監(jiān)聽區(qū)塊鏈上的交易并收到合約履行成功的事件。存儲合約在有效周期過后會從存儲側鏈上移除。在合約周期快結束時,用戶可以選擇是否向數(shù)據(jù)中心進行續(xù)租。
6. RS碼糾錯
由于網(wǎng)絡抖動或者數(shù)據(jù)損壞等原因,虛擬數(shù)據(jù)中心的節(jié)點會提供錯誤數(shù)據(jù)。Genesis采用RS編碼來進行數(shù)據(jù)糾錯。 RS編碼是一種簡單實用的代數(shù)編碼模式,該技術廣泛用于數(shù)據(jù)傳輸中并有著較強的抗干擾能力。
POC實現(xiàn)
Genesis的POC機制采用基于深度神經(jīng)網(wǎng)絡模型的優(yōu)化和驗證邏輯,下面詳細描述其實現(xiàn)。
1. 深度神經(jīng)網(wǎng)絡
基于深度神經(jīng)網(wǎng)絡(Deep Neural Network)的深度學習已經(jīng)被證明在包括圖像識別,自然語言處理在內(nèi)的人工智能應用中極其有效。神經(jīng)網(wǎng)絡模型采用類似大腦神經(jīng)突觸聯(lián)接的結構進行信息處理,主要用于監(jiān)督式學習領域。通過處理給定的帶有標簽的數(shù)據(jù),抽象數(shù)據(jù)的分布特征,從而學習出從數(shù)據(jù)特征到標簽的映射,使訓練出的模型具有數(shù)據(jù)分類(classification),回歸(regression)等功能。增加神經(jīng)網(wǎng)絡的層數(shù)后,即可通過組合低層特征形成更為抽象的高層標書屬性類別或特征,可更好地刻畫數(shù)據(jù)的分布。
例如在圖1展示的深度神經(jīng)網(wǎng)絡,通過對將數(shù)據(jù)輸入模型的輸入層(input layer),經(jīng)過多層隱含層(hidden layers)的特征提取及抽象,在輸出層(output layer)生成數(shù)據(jù)的標簽。其中,層與層之間的聯(lián)系往往是線性變換,而每一次的神經(jīng)元則對應了一個非線性變換。深度神經(jīng)網(wǎng)絡可以用于解決不同的實際問題。舉例而言,當使用神經(jīng)網(wǎng)絡進行人臉識別時,將圖片通過輸入層,經(jīng)過隱含層的特征提取及抽象,判斷該圖片是否包含人臉(例如,當輸出層輸出1則有人臉,輸出0為無人臉)。
神經(jīng)網(wǎng)絡的架構有很多種,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network)通常用于圖像識別。遞歸神經(jīng)網(wǎng)絡(Recurrent Neural Network)以及衍生出來的長短期記憶網(wǎng)絡(LongShort Term Memory)則更多的應用于自然語言處理。生成對抗網(wǎng)絡(GAN)則是一類在無監(jiān)督學習中使用的神經(jīng)網(wǎng)絡,在圖片,視頻,自然語言和音樂的生成方面有著廣泛應用。
2. 深度神經(jīng)網(wǎng)絡的參數(shù)優(yōu)化
在使用深度神經(jīng)網(wǎng)絡時,除了設計網(wǎng)絡結構(網(wǎng)絡的層數(shù)及每層的結構)一個重要的問題是如何通過給定的訓練集(數(shù)據(jù)及對應的標簽)對模型進行訓練,以決定其每一層的參數(shù)。具體而言,這個問題可以定義為,給定數(shù)據(jù)集D = {X,Y},其中X={X_1,。..X_N}為輸入數(shù)據(jù),且每一個樣本向量xk為一個d維的向量,Y={y1,…,yN}為對應樣本的標簽。而我們優(yōu)化的目的就是找到一個由X到Y的映射F(X),這樣給定一個樣本向量,我們可以確定它的標簽。為了達成這個目標,一般的做法是確定一個損失函數(shù)L(F(X),Y),使得映射F(X)相對于Y的損失值最優(yōu)。常見的損失函數(shù)包括squared loss,cross-entropy等。
其中n是預先設定的學習率。在實際的訓練過程中,通常會在開始訓練的時候選取一個稍微大一點的學習率(比如0.1),加速訓練的過程,在訓練的過程中慢慢的調(diào)小學習率,以求達到精確的結果。由于深度神經(jīng)網(wǎng)絡模型所需優(yōu)化的參數(shù)數(shù)量很多,即使使用了不同的正則化方法(如使用卷積神經(jīng)網(wǎng)絡,或使用Dropout技術)稀疏所需優(yōu)化的參數(shù),想要訓練如此巨大的模型仍舊需要大量數(shù)據(jù),那么計算梯度往往會導致運算速度過慢。一個標準化的處理方法是使用隨機梯度下降(stochastic gradient descent)的方法。具體而言,就是每次計算梯度以更新參數(shù)時,都隨機從原訓練數(shù)據(jù)集中抽取部分數(shù)據(jù)計算梯度并進行參數(shù)更新,在有限次迭代更新中同樣可以取得穩(wěn)定的表現(xiàn)。
3. 驗證深度神經(jīng)網(wǎng)絡的表現(xiàn)
在實際的使用中,我們需要在訓練好模型后判斷神經(jīng)網(wǎng)絡的表現(xiàn)是否足夠優(yōu)秀。在訓練模型時,我們已經(jīng)使用了大量數(shù)據(jù)進行參數(shù)優(yōu)化,由于在訓練樣本的過程中已經(jīng)包含了訓練時使用數(shù)據(jù)的信息,那么在測試模型是否真正有效時,我們需要預留一部分用于交叉驗證的測試數(shù)據(jù),并只是用訓練數(shù)據(jù)進行模型訓練,以規(guī)避模型訓練中常見的過擬合信息。如圖2所示,一個在訓練集中表現(xiàn)優(yōu)秀的模型可能對于新數(shù)據(jù)表現(xiàn)不夠穩(wěn)定。而只有當測試數(shù)據(jù)在訓練好的模型中表現(xiàn)優(yōu)秀,我們才可以信任訓練好的深度學習模型。
4. 模型訓練與工作量證明
Genesis的POC共識機制是基于深度神經(jīng)網(wǎng)絡模型的優(yōu)化及驗證邏輯,通過模型的有效性來驗證miner的工作量證明。同時,POC中深度學習模型的訓練是和側鏈技術緊密結合的,其中每個模型訓練任務都是互相獨立并由一條側鏈單獨完成。
2.0版:DDPOS(Democratic Delegated Proof of Stake)
傳統(tǒng)共識機制的弊端
目前市面上有各種各樣的共識機制,應用比較廣泛的有POW(Proof of Work)、POS(Proof of Stake)和DPOS(Delegated Proof of Stake)。這些共識機制在實際應用中,逐漸暴露出來一些問題。
POW強調(diào)“全民參與”,任何節(jié)點都可以成為礦工去挖礦,維護整個系統(tǒng)。然而實際應用中,特殊礦機的出現(xiàn)讓普通人幾乎不可能挖到礦,更糟糕的是,礦場和礦池的出現(xiàn)讓系統(tǒng)的挖礦算力變得越來越集中,系統(tǒng)越來越中心化。
POS采用通過計算節(jié)點持有幣數(shù)占總幣數(shù)的百分比,包括節(jié)點占有幣數(shù)的時間來決定一個節(jié)點獲得本次記賬權利的概率,這導致窮人參與到系統(tǒng)維護的機率渺茫,可以說POS是一種”富人游戲“。
DPOS是 POS 的進化方案。DPOS中,系統(tǒng)首先選出delegates,然后由這些超級節(jié)點來負責維護整個系統(tǒng)。這些超級節(jié)點被賦予了對系統(tǒng)維護的至高權力,同時他們也因為提供維護系統(tǒng)的服務進而獲得更多系統(tǒng)的stake,和POS一樣,這會導致富人更富,系統(tǒng)越來越中心化的問題。
DDPOS簡介
Genesis團隊經(jīng)過長時間的研究后,提出一種全新的共識機制DDPOS(DemocraticDelegated Proof Of Stake)。DDPOS可以完美的保留DPOS的高速tps的特性,同時又可以有效的解決DPOS的“富人更富”的問題。
以下詳細描述DDPOS的概念與邏輯。
元老院:元老院由21個超級節(jié)點組成,這些節(jié)點有維護區(qū)塊的絕對權利,包括打包,回滾,刪除賬號等。
元老選舉:元老的選舉指元老院的超級節(jié)點通過某種機制將其中全部或者部分成員換成新的節(jié)點的過程。所有元老都可以從普通節(jié)點中直接選舉產(chǎn)生。每次選舉根據(jù)之前的表現(xiàn)更換排名最靠后的3位元老。
選舉期:系統(tǒng)正常運行一定階段后,會自動進入的一個進行元老院中元老的選舉和置換的過程,稱為選舉期。 并且,在上一個選舉期之后系統(tǒng)內(nèi)發(fā)生的任何投票動議(系統(tǒng)升級,回滾,刪除賬號等所有投票動議)都會在這個選舉期中匯總,并決定是否執(zhí)行。
第一次全民公選:第一次元老會成員的選舉通過全民公投來進行。采用某種投票的辦法,系統(tǒng)的開發(fā)者發(fā)起第一次全民公投,由所有節(jié)點參與投票后選出21個元老。
DDPOS的選舉過程:
(1)元老院的第一期成員由全網(wǎng)公投選舉產(chǎn)生。
(2)維持循環(huán),并且按一定周期自動調(diào)整元老會。
執(zhí)政期:系統(tǒng)正常運行的時期,由若干個循環(huán)周期組成,其中每21個塊周期為一個循環(huán)周期(Round),元老院每產(chǎn)出一個塊為一個塊周期(slot);在執(zhí)政期內(nèi),所有的區(qū)塊由元老院的全部元老依次生成,每個元老生成一個塊。
選舉期:當一輪執(zhí)政期完成后,系統(tǒng)會迎來為期若干個循環(huán)周期(Round)的選舉期。值得一提的是,在DDPOS中,每個元老會成員會在打包時以自己的區(qū)塊頭生成一個Hash謎題發(fā)布到區(qū)塊中,謎題類型與POW中的Hash碰撞謎題相似。選舉期開始時,當前最高區(qū)塊的有效謎題會被推舉為選舉謎題。全網(wǎng)任何節(jié)點都可以提交對謎題的解,每次提交需要支付一定的token作為費用;選舉期結束后,剩余的18名元老會通過謎題答案來推選出3名新的元老會成員。 因為每一個區(qū)塊的區(qū)塊頭都必須由前一個區(qū)塊的區(qū)塊頭組成,我們不用擔心最高區(qū)塊的打包者會以此作弊。通過對每一個節(jié)點有效提交次數(shù)的限制,我們可以在確保不對選舉期的整個網(wǎng)絡造成擁堵同時盡可能地篩選出優(yōu)質(zhì)的競選者。
獎勵周期:根據(jù)區(qū)塊鏈高度,設置里程碑時間(Milestone),在某個時間點調(diào)整區(qū)塊獎勵。
(3)循環(huán)產(chǎn)生新區(qū)塊,廣播
DDPOS的創(chuàng)新之處
DDPOS中更換元老的方式通過在選舉期的算力比拼,讓那些有較強算力的普通節(jié)點也有機會成為元老會成員,進而參與到系統(tǒng)的治理過程中,避免了整個系統(tǒng)被小部分節(jié)點壟斷的風險。同時,通過嚴格的懲罰機制和末位輪換制度,即使進入了元老會的超級節(jié)點也需要提供高效的出塊率來保障自己的長期收益,整個系統(tǒng)因此更公平高效。
Genesis的DDPOS機制也是Genesis團隊原創(chuàng),已經(jīng)申請專利。DDPOS的詳細技術原理請見Genesis的專利申請。
Genesis的升級機制
在一個中心化的軟件系統(tǒng)里,系統(tǒng)的升級一般通過服務器來完成。當有新的軟件版本時,服務器推送消息給用戶,提醒用戶去官網(wǎng)下載或者如果更新包比較小的話,直接將新版本推送到用戶客戶端,用戶安裝新的版本后,更新過程完成。
在一個去中心的分布式系統(tǒng)中,節(jié)點與節(jié)點通過共識機制形成聯(lián)系,整個系統(tǒng)沒有服務器的概念,因此一旦系統(tǒng)客戶端有了新版本,是否升級取決于每個節(jié)點:
1. 是否得知這個新版本的消息。
2. 是否愿意自己去下載這個新版本并且進行升級。
這個情況導致系統(tǒng)的更新并不像中心化系統(tǒng)那樣有效率,新舊客戶端混合在一起。如果這個版本更新是一次硬分叉的話,會導致舊版的客戶端和新版客戶端實際運行在兩個不同的共識機制下,整個系統(tǒng)也一分為二,這個對一個分布式系統(tǒng)來說,是一種嚴重價值的損害。
Genesis系統(tǒng)的升級采用發(fā)起特殊投票的方式,這個機制的目標是讓盡可能多的節(jié)點在同一時間完成升級。分為以下幾個步驟:
1. 提出投票動議
任何節(jié)點都可以提出一個投票動議,在系統(tǒng)里相當于發(fā)起一個特殊類型的交易。這個交易包含以下內(nèi)容:
● 動議的描述
● 愿意為此投票動議所支付的token獎勵
● 可執(zhí)行代碼
2. 投票
動議提出后,這個動議(特殊交易)通過p2p網(wǎng)絡在全網(wǎng)廣播,系統(tǒng)中的所有節(jié)點將收到這個動議以及其附帶的獎勵和可執(zhí)行代碼。這些節(jié)點必須對這個動議做出選擇:同意、不同意、棄權(默認無操作)
3. 動議通過,客戶端完成升級
當滿足要求數(shù)量的節(jié)點對這個動議做出選擇后,如果選擇同意的節(jié)點超出一定的比例,則認為這次投票動議獲得通過,這時,該動議所附的可執(zhí)行代碼被激活,將所有節(jié)點的客戶端自動升級到新版本,同時把附帶的獎勵平均分配給參與了投票的節(jié)點。
這個投票的機制保證了系統(tǒng)升級只是在大多數(shù)節(jié)點人工投票“同意”后才進行,系統(tǒng)升級后,大多數(shù)節(jié)點也將運行在同一個共識機制下,系統(tǒng)的價值得以最大程度的保留。
Genesis里,投票可以分為多個級別的投票,一般遵循的方案是只需要涉及到的節(jié)點參與投票。如果一個動議只涉及到側鏈上的少數(shù)人,則這個動議只需要側鏈上的少數(shù)人投票即可。如果這個動議涉及到系統(tǒng)里所有的節(jié)點,則這個動議是一次對憲法的公投,需要系統(tǒng)內(nèi)所有節(jié)點的參與率達到一定比例,并且選擇“同意”的節(jié)點和選擇“不同意”的節(jié)點超過一定比例才可以。
側鏈技術
Genesis的將大部分核心內(nèi)容放在主鏈上,同時大量采用側鏈技術來分擔網(wǎng)絡的負擔并且增加可擴展性。Genesis的主鏈上包含用戶核心信息、交易(Genesis所有行為都以交易的形式來呈現(xiàn),如投票、 用戶互動 以及提交文件等)。Genesis的主鏈全部采用經(jīng)過驗證的成熟技術,以穩(wěn)定為優(yōu)先。
側鏈是實現(xiàn)Genesis進化的關鍵技術。用戶可以通過投票更新側鏈協(xié)議,甚至可以整體遷移到一個全新的側鏈,從而達到系統(tǒng)的進化。
Genesis的側鏈都可以有單獨的合約,主鏈通過動態(tài)索引實現(xiàn)與側鏈溝通。Genesis目前有兩條內(nèi)置側鏈,分別負責實現(xiàn)文件存儲、應用商店機制,未來還將上一條側鏈運行POC。另外,Genesis上可以快速生成一條和主鏈架構完全一樣的側鏈,作為程序員的開發(fā)測試環(huán)境。
Genesis的側鏈技術詳細描述如下:
雙向錨定以及簡化支付驗證機制(SPV)
簡化支付驗證(SPV)的概念最初出現(xiàn)在Satoshi2008年寫的一個區(qū)塊鏈文檔中。Satoshi沒有運行完整的節(jié)點來驗證區(qū)塊鏈中的交易,而是討論了一種更有效(更輕)的方法,即簡化版驗證過程。這個機制是這樣的:只保留最長工作證明鏈的塊頭的副本??梢酝ㄟ^查詢盡可能多的網(wǎng)絡節(jié)點來獲得區(qū)塊鏈的頭部,直到獲得滿足可信度的最長鏈為止。然后,獲得一個包含這筆交易的,帶有時間戳的Merkle分支。
與全節(jié)點驗證相比,SPV不會驗證所有內(nèi)容,而是將其作為高難度的可信度作為有效性證明的代理。這是一種DMMS,可以使用概率和隨機游走進行進一步的理論分析來證明這一點。從實際角度來看,SPV提供了一種簡易的方法來確定某個特定交易處于區(qū)塊鏈的某一塊中,而無需存儲和檢查整個區(qū)塊鏈。由于每個交易都具有哈希值,并且每個塊都有哈希值,因此可以建立Merkle樹證明交易的哈希和區(qū)塊的哈希。
Merkle樹是一種數(shù)學模型,其中樹根位于頂點,所有交易都放置在樹葉中。整個結構呈一個樹狀。 Merkle樹證明包含頂點(塊)和葉子(交易)之間所有哈希的列表。為了證明某一筆交易在某個區(qū)塊中,只需要塊的一小部分?;掘炞C有兩個步驟:1。驗證Merkle分支的存在,證明交易處于塊中。 2.驗證塊本身是否在區(qū)塊鏈的主鏈中。這兩個步驟足以證明交易的真實性。
在Genesis Space中,我們使用SPV和Merkle樹來實現(xiàn)父鏈和側鏈之間的驗證過程。我們現(xiàn)在討論虛擬幣轉移示例的步驟。該設計主要基于Back等人的Enabling Blockchain Innovations with Pegged Sidechains 理論的常見側鏈框架。最初,父鏈上的幣被發(fā)送到父鏈上的特殊輸出,該輸出只能通過側鏈上的SPV證據(jù)解鎖。為了使兩個鏈保持同步,定義了兩個等待(緩沖)周期:
1)確認期。側鏈之間轉移的確認期是在將虛擬幣轉移到側鏈之前必須將虛擬幣鎖定在父鏈上的持續(xù)時間。此確認期的目的是允許創(chuàng)建足夠的工作量證明,使得在下一個等待期間的DDOS攻擊變得更加困難。典型的確認期限為一天或兩天。
在父鏈上創(chuàng)建特殊輸出后,用戶將等待確認期,然后在引用此輸出的側鏈上創(chuàng)建一個交易,提供SPV證明它已創(chuàng)建并隱藏在父鏈的足夠工作量證明之下。確認期是一個每側鏈的安全參數(shù),它以交叉鏈傳輸速度換取安全性。
2)競爭期。然后用戶必須等待驗證期間。其的目的是通過在重組期間轉移先前鎖定的硬幣來防止雙花。如果在此延遲期間的任何時候,發(fā)布的新證據(jù)包含具有更多聚合工作的鏈,該鏈不包括創(chuàng)建鎖定輸出的塊,則轉換將追溯無效。我們稱之為重組證明。
如果可能的話,側鏈的所有用戶都有動機提出重組證明,因為證據(jù)不正確的結果是所有虛擬幣價值的稀釋。典型的競爭期間也將是一天或兩天的量級。為避免這些延遲,用戶可能會使用原子交換進行大多數(shù)傳輸。
當鎖定在母鏈上時,虛擬幣可以在側鏈內(nèi)自由轉移而無需與母鏈進一步交互。但是,它保留了作為母鏈幣的身份,并且只能轉移回它來自的鏈。當用戶想要將幣從側鏈轉移回母鏈時,他們會按照原始轉移過程執(zhí)行相同的操作:將側鏈上的幣發(fā)送到SPV鎖定輸出,生成足夠的SPV證明,這樣做,并使用證明解鎖父鏈上具有相等面額的多個先前鎖定的輸出。
Genesis的存儲側鏈
作為社交社區(qū)平臺,當用戶與Genesis Space交互時,預計會產(chǎn)生大量數(shù)據(jù)。因此,為數(shù)據(jù)存儲的可擴展性和安全性建立分散的存儲機制至關重要。在Genesis Space中,采用了存儲側鏈以滿足這些要求。除了一些核心敏感數(shù)據(jù)(如用戶配置文件和錢包數(shù)據(jù))之外,大多數(shù)數(shù)據(jù)都存儲在此存儲側鏈中。這樣既保證了社交網(wǎng)絡對區(qū)塊鏈的快速反應和記錄的要求,同時也滿足了社交網(wǎng)絡等系統(tǒng)產(chǎn)生的大數(shù)據(jù)的存儲需求。在目前的設計中,輕量級數(shù)據(jù)將直接存儲在側鏈上(類似與Steemit存儲方案);更大的數(shù)據(jù)(超過1MB的文件等)將采用ipfs進行存儲,僅在側鏈上記錄指向該塊存儲的Hash值。提供存儲的側鏈節(jié)點將受到獎勵。
Genesis 中的存儲鏈用作對等存儲網(wǎng)絡,其中文件管理記錄在存儲側鏈中被索引。當Genesis Space用戶想要存儲文件時,用戶可以創(chuàng)建包含文件元信息的文件合同,以及他愿意為此支付的付款。 Genesis 中的其他用戶可以將文件存儲在本地硬盤上來充當主機。文件合同由客戶簽署,主機指定存儲協(xié)議以及獎勵。合同存儲在存儲側鏈上并且是不可變的。為避免虛假的主機,還需要從主機進行存儲證明。在發(fā)送來自客戶的獎勵付款之前,證據(jù)將被發(fā)送到存儲側鏈。此外,該文件可以分為幾個部分和多個副本,以提高文件的完整性和可檢索性。
Genesis的去中心應用商店側鏈
Genesis包含一個DApp的商店(即Genesis市場),幫助開發(fā)者發(fā)布應用,同時方便所有的用戶查找并下載應用。Genesis的應用商店有一個基于投票的應用審核、上架、下架和反饋的機制。同時,Genesis采用類似Reddit的vote機制對應用做出排名,讓優(yōu)秀的應用更容易被用戶發(fā)現(xiàn)。Genesis的應用商店是整個Genesis系統(tǒng)基礎設施建設中最主要的表現(xiàn)形式,也是最重要的一個環(huán)節(jié)。
Genesis Space中的DApp Store通過側鏈實現(xiàn)。 DApp開發(fā)人員可以在DApp商店中發(fā)布他們的應用程序。當他們這樣做時,相關的應用程序信息將被散列并添加到側鏈中。為了使用戶更容易找到相關的應用程序,DApp元數(shù)據(jù)被索引為Merkle樹,并且根將被記錄在塊頭中。
如圖所示,Genesis Space中DApp Store Side Chain的框架??蛻舳撕虳App開發(fā)人員之間的應用程序購買交易是通過側鏈完成的。此外,為了鼓勵應用用戶提高參與率,開發(fā)人員還可以根據(jù)用戶在DApp上的注意力提供獎勵激勵(以Gencoins的形式)。關注度是Herbert A. Simon于1971年在“為信息豐富的世界設計組織”中創(chuàng)造的一個概念。它指的是消費者對信息作為稀缺資源的關注。注意模塊是預定義的智能合約,用于評估客戶參與度。根據(jù)用戶的關注量向用戶授予獎勵,并將反饋發(fā)送給開發(fā)人員以進一步改進應用程序。同時,為了鼓勵開發(fā)人員提供高質(zhì)量的應用程序,還在側鏈上跟蹤聲譽記錄?;谟脩敉镀焙驮u級來評估信譽。較高的聲譽將使應用程序獲得更高的排名,并且還將向開發(fā)者授予獎勵。
Genesis的測試鏈
除了使用側鏈進行數(shù)據(jù)存儲和實現(xiàn)應用程序市場外,我們還實現(xiàn)了第三個側鏈,使開發(fā)人員能夠試驗和測試他們的應用程序。此側鏈可幫助開發(fā)人員在DApp Store鏈中發(fā)布高質(zhì)量且穩(wěn)定的DApp,而不會讓迭代的應用測試影響到應用商店鏈。該鏈也可供部分用戶訪問,例如自愿選擇開發(fā)人員進行測試的用戶(調(diào)查,行為反饋等)。獎勵也以實驗參與的形式授予,以開發(fā)人員和志愿者之間的交易形式。
獨立合約
Genesis的每條側鏈都可以有自己的合約,可以單獨用來解決某一方向的問題。這種架構讓單一業(yè)務的處理變的更容易,同時又極具擴展性和維護性。
索引
Genesis的主鏈包含側鏈的索引,鏈與鏈之間可以很容易通過主鏈的Merkle Tree以及外部消息的輸入驗證來交互。
Genesis的經(jīng)濟模型
一個去中心的系統(tǒng),除了技術以外,最重要的是保證系統(tǒng)內(nèi)的各個元素有一個合理并且公平的經(jīng)濟平衡,只有這樣才能激勵系統(tǒng)內(nèi)的各個對象,為系統(tǒng)的繁榮作出貢獻,保證一個可持續(xù)的系統(tǒng)。Genesis的經(jīng)濟模型圖如下:
系統(tǒng)中各個角色如下:
● 普通人:
正如現(xiàn)實世界從太陽獲取能量,Genesis里用戶花在系統(tǒng)里的時間就是系統(tǒng)的原始驅動力。因此普通用戶只要保持在線狀態(tài)就可以獲得系統(tǒng)的token獎勵。系統(tǒng)將BP的收入的一部分隨機分配給在線的用戶。
● 開發(fā)者:
Genesis強調(diào)將應用開發(fā)者的地位提高到和礦工一個等級,給他們直接的經(jīng)濟反饋,激勵他們來開發(fā)更多更好的DApp。
● 大法官:
Genesis作為一個去中心系統(tǒng),其發(fā)展依賴于持續(xù)不斷的版本迭代。Genesis專門在系統(tǒng)里設置大法官的角色,用來推動系統(tǒng)的更新。大法官在系統(tǒng)里可以提出對憲法的更新的投票動議。大法官分享部分參議院(即Block Producer)的收益。
● 參議員:
參議院負責出塊,又叫BP(Block Producer),負責維護整個系統(tǒng),每次出塊會獲得系統(tǒng)的獎勵。這個獎勵的一部分自動分配給普通人和大法官。
● 地主:
地主負責維護一條存儲側鏈,為用戶提供存儲服務,通過智能合約的方式獲得收益。
整個系統(tǒng)采用通貨膨脹的方式每年增發(fā)5%的貨幣,用于支付上述的各項活動。系統(tǒng)范圍內(nèi)的所有服務都不需要費用,但是部分服務將需要用戶將自己的財產(chǎn)抵押,這個設計主要是防止DDoS攻擊。
評論
查看更多