2014年1月,Pebble專案(BFT共識)
2015年1月,Dfinity立項(隨機種子想法的第一次浮現)
2016年7月,成立Dfinity Stiftung(一個建立在瑞士的非盈利性基金會)
2017年2月,種子輪融資
2017年8月,Dfinity測試網(Copper)
2017年10月,釋出Dfinity白皮書
2018年6月,預售輪融資
2019年Q1,Dfinity SDK釋出
2019年Q2,Dfinity MVP釋出
設計哲學
Dfinity的設計哲學是建立在以太坊之上的,基於對以太坊碰到問題的思考,重新設計的Dfinity具有更好的效能,更大的可擴充套件性。在以太坊的PoS演算法Casper FFG實現之前,Dfinity完全不需要考慮以太坊的PoW的過渡階段,而是重點考慮在解決以太坊的效能和擴充套件問題上。
同時,Dfinity對以太坊相容,特別在Dapp的執行上。Dfinity的EVM和以太坊的EVM相容,但明顯,同樣的Dapp執行在Dfinity上有更大的優勢,同時Dfinity宣傳自己的技術可以被應用到以太坊中,也希望以太坊透過運用自己的技術來獲得提升。
效能上,透過特有的閾值接力的方案,保證驗證人的選舉安全,具有無偏差性隨機的同時,還能讓共識在閾值範圍內快速達成共識。共識的最終確定性可以在不需要執行共識演算法的驗證組快速完成驗證,保證交易幾乎可以實現立即的生效。
Dfinity為了加快出塊和驗證出塊的速度,把驗證人隨機分組,組合組之間接連出塊和驗證,閾值接力就是透過演算法把各組之間驗證做上連線,來保證安全。和區塊鏈原理類似,這樣接力的驗證情況,攻擊者很難進行協調攻擊。
另外,閾值是一個數值,比如設定為驗證組裡驗證人的51%,那麼400個人的驗證組裡面,只有201個人簽名就可以得到驗證(Dfinity使用了BLS演算法保證任何201個人簽名都是同樣值)。
擴充套件性上,Dfinity將架構進行分層設計,共識,驗證,儲存分開設計,來獲得更大的擴充套件性。這裡引用一段話:
DFINITY透過將共識、驗證和儲存分層來實現“幾乎無限”的可擴充套件能力。共識層不涉及交易資料。儲存層被分成多個子鏈,每個子鏈負責處理更新交易的分片。驗證層負責將所有分片的雜湊組合成類Merkle樹結構,將根狀態雜湊儲存在母鏈上的區塊中。這種架構在實踐中仍然存在一些重大問題需要解決,例如涉及跨分片狀態資料的交易。
以太坊的路線圖中也包括狀態分片,但還需要幾年時間部署到主網路上。以太坊必須要從全域性複製切換到分片的狀態,而DFINITY有機會從一開始就使用分片技術,這是巨大的可擴充套件性優勢。然而,DFINITY第一個支援狀態分片的版本- 鎢,也還需要一段時間才能釋出。
共識層裡,分層設計同樣可見,見下圖。
第一層是ID註冊層,主要用於使用者註冊成為驗證人,抵押金懲罰問題追溯。第二層是隨機數燈塔,該隨機數透過註冊層的所有ID透過VRF演算法得出一個隨機值,用於下個週期的驗證人選舉和排序,這一層部署了Dfinity的關鍵技術,閾值簽名(BLS),用以保證可以動態完成隨機值的生成。第三層是區塊鏈層,這一層部署了Dfinity另外一項關鍵技術,概率插槽技術(PSP),這項技術用於解決區塊鏈分叉問題。第四層是公證層,解決塊資料的最終確定性。公證是驗證人共同 建立的某個區塊下的一個閾值簽名,只有經過公證的區塊才可以包含在鏈中。Dfinity可以實現2個區塊,約7.5s就確認交易。
Dfinity PoS
參與到Dfinity的執行中來,需要抵押DFN來獲得註冊成為驗證人的資格(目前還不清楚需要抵押多少DFN才能成為驗證人)。和大部分PoS公有鏈節點一樣,Dfinity裡的驗證人也是完全匿名的,註冊成功後會獲得一個ID,這個ID會伴隨著該驗證人參與網路執行。
參與網路,驗證人需要執行一個節點程式,程式會規定驗證人在指定時間做操作,比如提議出塊,對塊進行簽名等。為了提高效率,每個驗證人ID會被分成組,每個組透過隨機數選擇輪候出塊。每個高度,Dfinity演算法透過隨機排序,按照DFN數量權重,對驗證人ID規定出塊的優先順序,塊被提議出來後,被選中的組中所有驗證人對其進行驗證,並簽名,簽名數量需要大於等於閾值才會被廣播,廣播後的資料被公證人公證後即為最終確定性的塊。
如果一個高度上,非最高優先順序的人也進行了出塊,驗證人會對得分最高的塊進行簽名,也就是說如果第一高優先順序的驗證人提議的塊是會被大部分誠實的驗證人簽名的,而次優先順序的塊可能不會得到簽名,如果次優先順序得到了超過閾值的簽名,那麼Dfinity也有策略選擇高得分(高優先順序)的塊來得到最長鏈,這就是Dfinity的另外一個技術點,概率插槽(Slot)技術。
另外,驗證人在參與執行的過程中,需要保持線上,否則可能無法獲得激勵。如果你被選擇為出塊人,但是你卻不線上,那麼你的權利將會被剝奪,轉而由其他驗證人代替你來出塊。這點和Tezos給驗證人排優先順序(priority)的方式是一致的,用來保證該高度上始終有一個塊能打包交易。
同一個驗證人ID可能會出現在多個組中,每個組目前並沒與定義數量,看到有過舉例,網路中有1000個驗證人,一個組400人,閾值為201,即51%的概率簽名為透過。
效能
從目前的測試網中看,Dfinity的效能可以秒殺當前的以太坊的。以下是官網給出的對比資料:
可以看出Dfinity的理論值對以太坊的優勢還是很明顯的。但以上僅限於測試值,真實的資料還得得主網上線後,並確定閾值後才可能確定。閾值的確定很關鍵,閾值設定的小,肯定達成共識就更快,但安全就成問題;相反,閾值越大,達成共識就越慢,但更安全。
閾值的定值除了安全,還有中心化這點比較有爭議,閾值定得小,容易引起中心化詬病。比如100人的組,閾值定位21,那麼實際上一個塊的驗證人只有21個,這和EOS就很類似了,所以Dfinity容易被認為是加大版的EOS,雖然21個驗證人是隨機從100個人中選出來的,和EOS的21個節點透過投票選出不同,但不得不說,但從數量上看,Dfinity如果閾值定的足夠小的話,那極有可能陷入中心化的詬病當中。
另外,如果Dfinity整體的驗證人就很少,那麼閾值不管定多少,都有可能引起這樣或者那樣的問題。閾值確定和參與Dfinity的驗證人人數有關係,如果驗證人人數比較少,那麼無論怎麼隨機,選出的來人都是那些人。所以會有人說,Dfinity的閾值簽名只不過是用隨機方式取代了人為選舉的方式而已,如果人數真的很少,做出來的隨機頂多是一個加大版本的EOS而已,關鍵一個更尷尬的問題是,如果真的是加大版本的EOS,效能又比不上EOS,目前tps還是差蠻多的,是蠻尷尬的。不過現在Dfinity還是測試網,一切等到主網上線才能確定最終答案。
按照現在的Tezos,Cosmos上執行的節點數,100個節點數就已經很了不起了。這個數字放到Dfinity上,閾值應該是51,每個組都是51個人,那麼基本上只要存在多個組的情況,大部分都分佈在幾乎全部的組裡面,所以閾值簽名技術看似美好,但現在市場明顯缺少驗證人的情況下,是否必要呢?頗有點殺雞在用宰牛刀的感覺。
除了新的簽名和共識能保證出塊速度和確認速度,Dfinity整個系統也是非常高效的。這個高效體現在資料傳輸上,我們來看一組測試網的資料:
在一個400個人的驗證組裡面,閾值是201,完成一個閾值簽名所需要的通訊開銷預期是22kb的資料,這個資料是非常小的,在即將到來的5G時代裡面,這樣數量級的通訊大小完成傳輸幾乎是毫秒級的。
出塊人
Dfinity的出塊人,也是驗證人。驗證人執行節點程式主要執行3個操作,
· 參與去中心化的隨機數燈塔
· 參與去中心化的 公證
· 提議區塊
每個操作是否有獎勵目前還不清楚,但不需要驗證人操作,只需要保證執行節點程式,7x24小時不斷網不斷電即可。任何持幣人都可以成為驗證人,只需要抵押DFN並註冊成為驗證人就可以了。除了驗證人,持幣人還可以參與到Dfinity的神經網路BNS的治理中來,同樣,需要抵押DFN,為提議投票。
因為有抵押金,驗證人不能做惡,一旦作惡,抵押金會被沒收。系統做了很多容錯處理,所以Dfinity對驗證人的嚴苛程度,並沒有像Cosmos那麼嚴厲。不要求長期線上,不要求必須對提議進行投票,開放參與,開放退出,所以在Dfinity上做驗證人,體驗要比Cosmos好很多。
但Dfinity對驗證人的伺服器要求會高,作為雲服務網路的節點,要隨時能根據系統需要提高自己的伺服器配置,頻寬,計算和儲存,特別是前期對儲存的需求,中期對Dapp計算能力的需求上。
持幣人
持幣人透過抵押DFN,可以參與到Dfinity的網路中來。在10.5.3裡面列舉了DFN的作用,其中第2、3、4點都是持幣人可以參與的功能。但參與這些功能對持幣人的要求比較高,會減少較多的參與性。
目前還沒有看到Dfinity網路裡面,允許使用者將DFN委託給驗證人的功能,這意味著持幣人只能自己來使用DFN所賦予自己的功能。
激勵
Dfinity對兩種行為會有比較明確的激勵,第一是充當驗證人工作,第二是參與到神經元系統中的投票治理。前者需要持幣人抵押DFN成為驗證人並執行節點程式,後者同樣需要持幣人抵押DFN來參與投票,如果投票結果被採納,會得到一定的獎勵。
獎勵的程度目前尚未明確,至於獎勵來源來自於剩餘基金會的持有量,還是透過增發?目前也尚未得知。一定程度反應出來,關於社羣自治這塊,Dfinity團隊還是偏向於技術,很多經濟模型的激勵的優先順序並不高。
目前較為清楚的就是,增發以及激勵的方案會根據Dfinity的神經網路系統動態調節,比如當DFN的市場價格下降的時候,神經網路系統BNS會將抵押DFN的數量增加,用以防止網路的低成本攻擊問題;又或者當DFN的價格上升時,BNS會動態的調整DFN的增發速率,來保證合理的通脹率等。
懲罰
Dfinity中對於懲罰也並沒有明確的太清晰,白皮書當中只提到了一嘴,就是做出對系統不利行為的驗證人,其抵押金會被扣除。但白皮書中並沒有明確哪些屬於不良行為,一般PoS公有鏈上Slash的行為,如雙籤,雙塊,Dfinity的系統都做了比較大的系統容錯,理論上來說這些行為下,系統不會出問題,所以也沒有明確這些雙籤雙塊行為到底會不會被懲罰。
同理,Dfinity的懲罰機制和數量也會根據神經網路系統BNS動態調整。
鏈上治理
Dfinity非常關注鏈上治理。但凡關注鏈上治理的專案都會做出屬於自己的一套投票方案,像Tezos的Futarchy,Cardano的流行性民主,Cosmos的投票-Slash系統等,而Dfinity也有一套方案叫區塊鏈神經網路系統(Blockchain Nervous System 簡稱BNS)。
BNS首次提出了AI就是法律(AI is law)的概念,相對的是以太坊上程式碼即法律(Code is law)的概念。這裡的AI並不是我們現在說的機器智慧學習,而是需要依賴人類輸入源影響的一類判斷輸出,這種分散式的智慧被整合到了Dfinity的網路當中,使得整個網路可以在沒有人類的參與下,能解決一些比較棘手的問題。
Code is law在現實中會碰到很多問題,因為人情總是在一些情況下難以避免被碰到,程式碼的無情,無法解決這種爭端,著名的DAO分裂其實就是感情派和Code is law派較量的惡果。WIlliams在介紹BNS的文章中,提及了5個比較重要的點,來說明BNS的好處:
· 偷盜行為:盜幣行為在區塊鏈世界裡面時有發生,著名的Mt.Gox交易所就曾遭遇過浩劫,超過100M+的比特幣被盜,數千名投資人血本無歸。Code is law無法解決此類問題,盜了也就盜了,被盜人只能眼睜睜的看著自己的資產在鏈上卻束手無措,而帶許可權的BNS系統,可以凍結被盜資金,來歸還給投資人。
· DAO事件:DAO組織籌集了市面上超過14%的ETH,卻因為籌集ETH的智慧合約被攻擊,而導致DAO組織的去中心化自治夢想流產,Code is law是承認程式碼而不承認攻擊,程式碼需要承擔過錯,人們需要承擔程式碼的過錯。而BNS可以使用最高許可權來凍結,或者改變分裂狀況,使得情況轉機變得可能。
· 加速進化:傳統軟體的升級需要各種監控,當效能跟不上或者出問題時,需要人為進行干預,這種干預的反應往往是滯後的,人們對此付出的代價則是低效的生產力代價。BNS可以幫助監控,在需要的時候自動升級並給出最理想的反饋速度。
· 更安全,更經濟:BNS會隨著供需波動,給出合理的增發速率,來解決因為幣價波動導致的系統安全漏洞。還可以在合適的時機提高供給,以滿足大量的執行需要,使Dfinity朝向一個更安全更經濟的方向發展。
· 殺死不良交易:暗網中往往充斥著眾多不良資訊,商品的交易市場,BNS可以透過監控或治理,將這些執行在Dfinity上的智慧合約關閉,從而直接殺死不良交易。
從這些點可以看出,許可權型的BNS的權利很大,它可以凍結資產,甚至回滾交易,頗有點EOS治理的影子,不同的是,AI和人為的較量,相當給Dfinity的網路安插了一個智慧機器人,這個機器人會聽從人們的命令,來處理各種高階別的事務,解決當下區塊鏈裡頭一些比較棘手的問題。
BNS怎麼參與?
持幣人可以透過執行“神經元”客戶端來參與到BNS的工作中來,完全匿名,任何人都可以透過提議來獲得DFN的獎勵,同時投票人可以抵押DFN對提議進行投票表決,來決定提議是否被採納。整個投票的過程其實和Cardano的治理流程很像,持幣人可以直接投票,但是如果你對投票的內容並沒有足夠的判斷依據,你可以將你的投票權代理給“專家”,讓“專家”代替你來投票。
為了激勵投票,Dfinity會獎勵投票人以獎勵,具體數量和抵押的DFN數量成正比。
問題
Dfinity的負面新聞比較少,公關也比較出色,但在開發者關係,投資者關係上處理的不是太好。雖然有對使用者的空投行為,但是很多人並沒有能很好的接觸到這個專案中來,總覺得這個專案很神秘,神秘到除了知道Dfinity融了很多錢之外,就再也不知道什麼資訊了 ,目前測試網並不開放,也不知道到底做到什麼層度了,這個情況下,按照公鏈開發的尿性,估計很難如期上線。下面,我把研究Dfinity的過程中,發現的問題和大家說一下:
· 專案資訊紕漏不完善:官網披露的資訊較少,文件也不夠完善。估計還是處於測試網的早期,無法參與,
· 獎罰規則不明確:對於激勵,懲罰等方面的方案不夠明確,很多都是一個框架,並沒有具體的細則。
· 團隊偏技術,和社羣交流較少,幾乎很少有交流。有一個開發者社群,但是活躍度很低。
· 開發延期,MVP拖延
未來
去中心化的雲伺服器如果發展壯大,的確是被需要的。但前提是效能比肩當今的AWS,谷歌雲,如果做不到旗鼓相當的等級,那麼談去中心化雲架構所帶來的好處還為時尚早。
以太坊也正在奔向PoS共識的道路上,Casper FFG對於PoW的提升也是顯著的。Dfinity雖說是以太坊的姐妹鏈,但是並不能擺脫兩者之間的競爭關係。同樣是超級計算機提供基礎功能,Dapp開發者肯定希望執行在一個比較高效能的公鏈上,所以兩者的競爭在2019年會是一個看點,當然,這依賴於Dfinity和Casper FFG的順利上線。
另外一個點,就是Dfinity是否能夠吸引到足夠多的節點。節點能為網路提供硬體,節點數量的多少除了了代表去中心化的程度外,還能表現網路處理能力的強弱。目前Dfinity的節點激勵計劃並沒有出來,如果是透過BNS系統來動態調節激勵模型引數的話,那麼初期的激勵必須足夠大,才能吸引足夠多的節點參與。
而最後,也是最重要的一點,就是網路採用(adoption),網路採用意味著Dfinity的實際價值,只有更多的網路採用,Dapp執行,才能體現網路本身的價值,要不然就是空中樓閣,猶如外表華麗,內心醜陋的人,好在Dfinity做了相容以太坊的EVM,那意味著以太坊Dapp挪過來是好使的,只要效能安全俱佳,那麼剩下就是公關的事情了。