互聯網?速發展讓信息的流轉速度變得非常?效,從而推動了人類社會的發展,但從另外一方面看,隱私問題也正是因為互聯網的?速發展而變得更加嚴重。區塊鏈作為下一代的價值互聯網,曾被認為是保護隱私非常好的工具,但大家很快發現,當前主要的區塊鏈網絡中,一旦數字錢包地址和它的擁有者的個人信息對應起來,該錢包的擁有者所有賬戶信息、交易信息都將在整個網絡中一覽無遺并且無法消除,這會導致比互聯網的隱私泄露更加嚴重的問題。為此區塊鏈行業的密碼學和頂尖的技術專家都在進行不懈努力,業界有幾支團隊研發了一些保護隱私的特殊虛擬貨幣,這類虛擬貨幣被稱之為“匿名幣”,行業中比較有名的數字貨幣包括大零幣 Zcash (ZEC),門羅幣 Monero (XMR),達世幣 (DASH)等,這些采取了一定隱私保護的數字貨幣基于其巨大的市場需求,均獲得了非常?的流通市值,排名在全球20大虛擬貨幣之列,說明隱私保護對區塊鏈行業而?是一個非常強烈的需求。
智能合約是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。區塊鏈上圖靈完備的智能合約系統,可以滿?開發者編寫任意復雜的,存在于區塊鏈上并且能被區塊鏈傳遞的合約。開發者可以用智能合約開發語?實現比如定制貨幣、?融衍生品、身份系統和去中心化組織等功能,極大的擴展了區塊鏈系統的適用范圍。智能合約是價值互聯網重要的的技術基礎之一,但是目前令人沮喪的情況是,全球目前運行的區塊鏈系統均不支持對智能合約加密保護,現有的隱私保護機制使用場景受到這一技術限制的影響被極大的縮小了其適用范圍。區塊鏈技術起源于中本聰發明的比特幣,被視為區塊鏈1.0,讓人類世界找到了數字虛擬貨幣這一巨大的財富;而當以太坊面世后,智能合約的發明讓區塊鏈技術的落地變得更為可行,從此基于區塊鏈技術的去中心化分布式應用(簡稱“DApp”)成為可行,這讓區塊鏈技術可以被運用到更多的行業中,因此以太坊被視為區塊鏈2.0。同樣可以類比,如果Zcash和門羅幣為代表的不支持智能合約的匿名區塊鏈系統是隱私保護方案1.0的話,為了讓方案可以落地到更多行業和應用場景中去,支持智能合約的隱私保護方案2.0備受期待。
不可否認的是,支持智能合約的匿名區塊鏈系統具有非常?的技術門檻,全球僅有屈指可數的團隊正在為之努力,如今Super Zero(簡稱“Sero”,中文:超零幣)也正式向全球進行產品發布,Sero的研發團隊(簡稱“Sero團隊”)也是目前全球唯一能就該問題提出完整的解決方案,并已經完成主要工程研發工作的團隊。不僅如此,Sero團隊并沒有將成功研發支持智能合約的隱私保護區塊鏈系統作為去中心化應用的隱私保護方案的終點,為了讓受到隱私保護的去中心化應用的廣泛落地成為可行,Sero團隊不但考慮到了保護DApp使用者的賬戶隱私、相關令牌(Token)和私有數據傳遞過程的隱私,同時充分考慮到了在區塊鏈系統數據傳輸過程中,之前受各層傳輸層協議限制的隱私保護策略,甚?還包括了去中心化應用和互聯網應用相結合場景下的數據隱私保障。
為此,Sero團隊設定了一個能為去中心化應用提供完整隱私保護解決方案的三件套項目,包括Sero(支持智能合約的匿名區塊鏈系統)、異形協議(一個能解決去中心化網絡信息傳輸的協議)以及卡斯特羅協議(保護去中心化網絡,以及為互聯網交互的各節點提供隱私保護的協議)等尖端創新科技組件。最近Sero已經完成了核心的研發工作,包括隱私保護相關協議,和圖靈完備的鏈上運行智能合約,本文主要就Sero的工作進行說明,并包含了該項目的一些基本情況以及披露后續的項目計劃。
Sero(Super Zero,超零系統)是全球?個通過非交互式零知識證明(NIZK),真正實現具有圖靈完備智能合約的隱私保護的區塊鏈系統,和現有的區塊鏈隱私保護技術相比,Sero不僅能實現對賬戶信息和交易信息的隱私保護,還能實現對圖靈完備的智能合約輸入輸出的隱私保護,另外,開發者還能基于Sero-Chain上的智能合約發行的匿名數字資產(Token),并且與智能合約的通訊信息也同樣會得到隱私安全保護。
Sero重新設計了區塊鏈結構和各類底層協議,使得對隱私保護的圖靈完備智能合約成為現實,不僅使更廣泛的應用場景獲得了隱私保護措施,并且因為其采用的先進的NIZK加密學算法,也進一步提升了對用戶隱私數據的攻擊難度。除此之外,在即將發布的V1.0版本中,改進了目前NIZK加密算法的實用性問題,大大降低了所需要消耗的內存資源,提升了計算效率。除此之外,對比市面上的主流匿名區塊鏈系統,Sero對圖靈完備的智能合約的支持和對其相關的去中心化應用的隱私保護措施,使其使用場景得到了極大的泛化。
更值得一提的是,Sero團隊不僅考慮到了去中心化應用本身所需要的隱私保護措施,而且還從應用落地的?度,計劃從點對點的網絡傳輸安全以及賬戶物理的網絡地址的隱私性?度提供解決方案,可以使與中心化應用交互時,或者與使用者客戶端交互式時也能獲得強大的隱私保護功能。
整個綜合解決方案會由三位一體的全套套件構成,其中Sero是第一個公開發布的項目,另兩個項目的定位分別如下:
異形協議 (Alien Protocol):一種分布式的DNS系統,可以利用現有的P2P網絡交互信息,具備IP自動切換和動態尋址的功能,抗攻擊者阻斷,使整個數據傳輸網絡具備?分穩定的安全性。
卡斯特羅協議(Castrol Protocol):通過去中心化網絡的方式,實現對IP地址的匿名保護,可同時運用于中心化和去中心化網絡的物理節點的隱私保護。
SERO的設計
1. 設計原則
正如前文所說,現有市場存在的去中心化網絡的隱私保護技術,并沒有跟去中心化應用相結合,尤其是沒有對智能合約的執行進行隱私保護。在智能合約中執行的動作序列,通過網絡傳播和/或記錄在區塊鏈上,是公開可見的。在圖靈完備的區塊鏈網絡中,Sero的設計,在滿?系統能力需求的同時,還必須滿?幾個基本的原則。
不可追蹤性,區塊鏈網絡中的每一筆交易都具有輸入和輸出,如此一來,就構建了一個交易的有向無環圖,在這個圖上可以跟蹤所有的交易流向,所有的交易序列都能被串聯起來,并以此溯源。Sero的設計中要將兩個交易之間的鏈接斷開,使攻擊無法進行。
不可關聯性,區塊鏈網絡中每個用戶都有自己的收款地址,一旦這個地址跟真實的用戶身份關聯,那么,在網絡中這個地址發生的所有交易,都能關聯到這個身份上,該地址一切的行為都暴露無疑。即使用戶可以創建新的假名公鑰以增加其匿名性,每個假名公鑰的所有交易和余額的值都是公開可見的。Sero通過加密技術?段使收款地址無法被關聯。
抗統計分析,真實用戶的行為具有統計特點,如果區塊鏈網絡中的交易數據之間具有反應這樣統計特點的關聯性,通過對區塊鏈數據的統計分析,就能夠一定幾率推測出這些地址發生的交易是屬于某個特定用戶的行為。即使是采用環簽名,在面臨有作惡的環成員或者節點的時候,抵抗統計分析的能力將會下降。Sero需要通過技術?段將地址以及地址之間的關系完全隱藏。
實用性原則,Sero在對交易數據進行隱藏的同時,并不會一股腦的將所有的信息都納入范圍內,這樣做是不經濟并且運行效率低下的。Sero會兼顧用戶已有的使用習慣和痛點,進行階段性研發。
可選的審計方案,對于某些較為復雜的商業應用領域,用戶可能需要有一個完全信用的第三方對他發生的所有交易進行財務方面的審計,這時,他應該可以做出選擇,決定是否給予第三方一個跟蹤他所有交易具體信息的能力。
2. 實現方案
在第一期的計劃中,Sero通過非交互零知識證明(NIZK),將交易體系的輸入和輸出以及交易細節完全隱藏起來,除了交易雙方,其他任何人對這些隱藏細節完全是不可見的。同時,因為考慮到線上運行智能合約以及公開合約發行資產總數具有普適性的適用性,Sero會保留鏈上運行的智能合約,將智能合約所產生的資產與Sero本身的交易體系融合,以此來實現智能合約所產生資產的隱私性。
在第二期的計劃中,對于具有隱藏合約發行資產總數的需求,我們將在線上運行智能合約內部提供一種名為隱匿數據的隱藏結構,同時只在鏈下對這種隱匿數據進行計算。以此來實現隱藏合約發行資產總數的功能。
在第三期的計劃中,我們會采用更為先進的共識機制,提升Sero網絡的吞吐量。同時,對于具有隱藏合約內部計算規則的需求,我們會將合約的運行分解為線下計算和線上驗證兩個步驟,線下計算完全了解運算規則和數據,并給出運算后的加密結果,當這個結果提交到線上時,線上節點只會對結果進行有效性驗證,以確定其中包含的數據是否符合運算規則,但節點并不知道這些數據和運算規則的詳細信息。
3. SERO協議
賬戶系統(Account System)
賬戶分為用戶賬戶和合約賬戶兩個類別,其中,用戶賬戶是用戶選定一個 32 byte 的Seed,而合約賬戶根據用戶安裝智能合約的環境產生的一個 64 byte 的地址,兩者都是系統唯一、不可重復的。
用戶賬戶可以產生個64 byte的私鑰 ,和一個64 byte的公鑰 ,該公鑰就是用戶的付款地址。在安裝或者調用智能合約的時候,錢包會根據當前的情況生成一個暫存地址PK,這個暫存地址無法用任何方式關聯到用戶的私鑰和公鑰,并且只會使用一次。
在智能合約安裝的時候,錢包會根據當前情況,將暫存地址轉為一個64 byte的智能合約地址 (CADDR ) ,當節點收到地址時,需要確保合約地址是沒有出現過的。
Seed是賬戶種?,用戶必須妥善保存。SK是私鑰,不可持久化存儲,其中(TK)是跟蹤私鑰,可以提供給可信的第三方用作賬戶的審計。PK是公鑰,提供給其他用戶的交易目標地址。(PK)是暫存地址,提供給智能合約,臨時用來接收資產的目標地址。
資產系統(Assets System)
不管是用戶賬戶還是智能合約賬戶,其下都具有管理無限種類資產的屬性,除了交易費用結算采用Sero幣以外,每一種資產都具有跟Sero本身等同的交易特征,除Sero幣之外,其余的資產可以由智能合約產生。每種資產在產生的同時,可以賦予一個最?32 byte?度的名稱(Currency),用于助記,這些名稱也是不允許重復使用的。在賬戶進行余額查詢或者轉賬操作的時候,可以指定資產類型。
見證系統(Witness System)
Sero協議采用非交互零知識證明(NIZK),在生成交易的時候,需要提供資產來源的見證信息,每個節點會根據這些見證信息進行驗證。因此,Sero會采用merkle tree維護一個記錄狀態變更的見證系統,系統在節點提供驗證功能,在錢包端提供認證所需的信息。
ROOT = MERKLE_ROOT_AUTH(POSITION, LEAF, PATH)
ROOT是當前 merkle 樹的根,LEAF是第POSITION?葉?,PATH是LEAF到ROOT的證明路徑。
證明系統(Proof System)
Sero的證明系統包含一個基于有向無環圖的計算電路,用來描述Sero每筆交易的內部約束,包括各種資產類型的輸入輸出平衡、公私鑰驗證、承諾的有效性、見證的有效性等環節。裝載好數據的電路可以通過非交互零知識證明(NIZK)生成一個Proof,通過提交這個Proof,可以在隱藏大量細節信息的情況下,讓節點對電路中裝載的各種參數和約束進行驗證。
執行步驟(Process Step)
1. 計算(Compute),用戶采用賬戶、資產、見證系統提供的信息,并根據當前所需的計算,提供輸入數據,然后在鏈下運行計算規則得到結果,結果通過上述幾個系統將生成狀態變更的密文(E)和一個證明(P1,P2)。
OUTPUT = COMPUTE(METHOD, INPUT, ACCOUNT, ASSETS, WITNESS)
(E, (P1,P2)) = PROVE(OUTPUT )
2. 提交(Commit),用戶將生成好的密文(E)和證明(P1,P2),加上隨機生成的寄存地址(ZRPK,VRPK),封裝為交易(Stx),提交給節點。
FROM = (Rf , Rf PK)
STX = (E, P1,P2,FROM)
Commit(STX)
3. 驗證(Verify),節點在收到交易(Stx)之后,將其中P1在見證系統中進行確認,將P2交給證明系統,兩者確認正確后會運行智能合約得到輸出,最后將輸出關聯到暫存地址上。
witness_ret = CHECK_WITNESS(P1)
proof_ret = CHECK_PROOF(P2)
verif y_result = witness_ret & proof_ret
4. 確認(Confirm),資產接受方在同步到得到驗證的交易(Stx)之后,利用自己的私鑰將結果密文(E)解出生成明文(D),并將明文(D)和證明(P1)輸入到證明系統中進行校驗,成功則說明交易是真實的。真實的交易如果被n個區塊進行了確認,那么交易接收方可以認為這筆交易已經確認。
D = DEC(E, VSK)
commitment_ret = CHECK_COMMITMENT(D, P1,PK)
confirm_ret = commitment_ret & block_confirm 》 n
要說明的是,Sero的執行步驟是開放式的,也就是說這樣的步驟和參數的抽象描述,可以支持“實現方案”中所描述的一到三期的修改,在后續升級時對代碼結構的調整最小。
通用隱私交易
在Sero內部,普通交易中的數據都是加密的,非交易雙方不能得知來源、去向、資產種類、?額等細節。系統在共識和交易處理時并不區分智能合約產生的資產和Sero本身的資產。
線上智能合約
Sero的通用智能合約可以進行公開計算,制定對各種資產的統計方案、處置規則、公示規則,但輸入輸出信息都必須通過暫存地址與用戶的真實身份隔離。Sero智能合約兼容以太坊智能合約指令,也就是說以太坊大部分的智能合約可以不修改就在Sero上運行。
線上匿名資產
智能合約通過調用線上匿名資產發行方法發行資產,所發行資產數量對所有用戶可見,并具有與Sero本身資產等同的交易屬性,可以通過隱私交易進行處理。
線下匿名資產
智能合約通過調用線下匿名資產發行方法發行資產,所發行的資產數量對用戶不可見,這些資產具有Sero本身資產等同的交易屬性,可以通過隱私交易進行處理。智能合約在此資產的輸入和輸出上,對于第三方不可見。匿名資產有多種類型以供不同的場景使用。
線下智能合約
智能合約在線下運行,計算規則只對部分用戶可見,所發行資產數量對用戶不可見,這些資產具有與Sero本身資產等同的交易屬性,可以通過隱私交易進行處理。智能合約在此資產的輸入和輸出上,對于第三方不可見。
4. SERO面向的場景
隱私保護是每個人都存在的強烈需求,Sero有巨大的市場應用前景,然而不僅如此,Sero支持開發者發行自己的匿名數字代幣,意味Sero能夠兼容千萬個不同的經濟生態的流通,而Sero對智能合約的支持意味著巨大的業務擴展性,使基于Sero發行的匿名數字代幣不僅僅只是一種支付工具,這項技術的落地場景將會輻射到許多行業。
醫療健康
在泛醫療健康行業,數字隱私體現于方方面面,從個人病歷到醫療記錄,面向多??的隱私保護和授權機制需要?分靈活和安全的隱私保護能力,涉及到醫院、患者、保險公司、醫藥公司等,數據隱私的保護和限制授權使用顯得尤為重要。
在線競拍
在諸多追求公平的在線競拍業務中,出價的私密性是非常重要的,但在利益驅使下往往難以做到,尤其是類似集合競價這類?頻報價、對其它對?的報價有限知情甚?毫不知情的規則下,報價數據隱私往往就代表了最終巨大的利益回報。而SERO可以為提供一個完全安全、獨?、公平的報價環境。
在線預測相關業
在線菠菜業的發展一直以來受到中心化信任的制約,哪怕解決這點,基于在線預測的游戲對于對?的出價策略往往也是?度需要隱私保護的。在這個巨大現?流的行業中,非常需要一個能夠提供集多人出價、支付、結算,并能有統一匯率的公平貨幣流通體系,而SERO完全能支持到這些。
游戲
每個游戲都有自己的經濟生態,游戲中的數字資產自成體系,而同一個公司發行的不同游戲都很難就數字資產進行打通,但有時也會有這類需求,以便將游戲生態進一步擴大。因此大型的在線游戲往往需要一個易于流通、交易和結算的貨幣體系,并能基于智能合約發行和流通,同時還要兼顧交易的隱私保護(游戲資產的交易對用戶而?往往并不希望被公開),而目前Sero是唯一能做到多貨幣體系能基于同態智能合約發行流通,且兼顧交易隱私的技術方案。還有更多的涉及資產數字化,又涉及數字資產隱私敏感的行業,如保險行業、數字貴?屬交易、期貨交易、數字資產交易(如征信和知識產權等)、信貸行業等,Sero對于這些行業在現有的市場中有著不可替代的方案優勢,不僅支持?度的貨幣流通性對技術的需求,還支持獨?完善的加密貨幣生態建?。
5. 關于非交互式零知識證明(NIZK)的性能優化
對于采用NIZK方案的區塊鏈系統,目前最大的瓶頸就是生成交易時產生證明(Proof)的時間?度。幸運的是,交易通常是在錢包中生成。
1. 目前我們構建系統時使用原生的zkSNARK庫來實現NIZK,采用其中的ALT_BN128曲線和Groth16預處理過程,這個過程大約比Zcash的PGHR13預處理方案減少1/3左右運算時間。同時我們認為merkle tree的深度可以適當的縮減,并盡可能加入并行處理方案,可以將平均一個交易生成時間再次大幅度降低。雖然 zkSNARK 需要一個信用安裝的過程,但Sero的實現方式中不會動態的構造計算電路。因此,在所有的場景下,zkSNARK協議是能滿?Sero的需求的。
2. 我們研究了Zcash最新的成果jubjub,并嘗試采用他們的BLS12-381曲線,以及采用Twisted Edwards曲線生成公鑰,pedersen hash進行merkle tree的生成,這樣?少可以4倍以上提升交易生成速度。
3. Bulletproofs也具備?分有趣的特性和性能上的優勢(如批量驗證的性能優勢),而且天生支持橢圓曲線(EC)公鑰和Pedersen commitments,也是我們的嘗試方向之一。
4. zkStark的“零知識證明機制”提供了更簡單的密碼假設,避免了橢圓曲線、配對和指數知識假設的需要,而僅僅依靠散列和信息論。這也意味著,這塊在算法設計上,能抵抗量?計算攻擊。
Sero中大量使用了零知識證明來隱藏信息。雖然目前我們在TestNet版本仍然采用的是zkSNARK的C++實現庫libsnark來進行這項工作。但在MainNet上線時,我們會綜合考察之前提到的幾種NIZK協議,并構建效率最?安全性最好的庫來支持我們的系統。
6. 暫存地址
在Sero的鏈上計算部分,我們采用了暫存地址來臨時承接線上計算的輸出目標,如果采用簽名的方式使用這個輸出,對于不可追溯性會有稍微的減弱。Sero對這種情況提供的方案是,用戶在使用這個輸出的時候,輸出的標識跟其他普通交易一樣,會被隱藏在證明之中。如此一來每筆交易之間都是斷開的,無法追溯,而且一旦輸出被使用,這個暫存地址就算是被銷毀了。
7. 未來計劃
鏈下計算和同態加密智能合約
事實上對智能合約的同態加密已經進入到實質開發階段,并計劃于2019.3發布到2.0版本的Sero平臺上。目前我們已經找到了一種通過鏈上和鏈下計算,兼顧數據安全(可以面向計算者完全隔離敏感數據的機制)與性能的方法,并計劃于6個?內完成這項工作。
錢包和其它生態應用
Sero的去中心化錢包應用目前同樣正在開發當中,并計劃于2019.3前正式發布,由于Sero支持開發者自己發行Token的特性,Sero的錢包將會支持Sero自己的Token以及所有開發者基于Sero發行的Token所對應加密貨幣資產的管理。
最新共識機制
我們會在1年內的某個版本發布新的共識機制SE-Random,結合了最新的PBFT理論和VRF算法設計的一種可以相對兼顧公平和效率的共識機制。
隱私三劍客
Sero有兩個兄弟,分別是異形協議 (Alien Protocol)和卡斯特羅協議(Castrol Protocol),前者提供一種分布式的DNS系統,通過自動尋址的方式實現網絡的穩定運行和信息傳輸,后者則對節點的IP地址實現加密隱私保護,三位一體形成完整的去中心化應用隱私保護方案。
安全多方計算
在許多情況下,數據證明需要結合現有的中心化的數據源,也可以成為鏈下數據源,當前,解決上述問題的策略是假設有可信任的服務提供者或是假設存在可信任的第三方。但是在目前多變和充滿惡意的環境中,這是極具?險的,面對該問題,通用的安全多方計算問題是可解決的。
Sero未來也將考慮引入安全多方計算(SMC),從而在隱私保護的前提下實現對鏈外數據的廣泛支持。
多鏈體系
多鏈體系是Sero可擴展性解決方案。Sero將采用類似以太坊Plasma的機制進行基于多鏈體系的橫向的性能擴容。類似Plasma的多鏈并行計算機制,可使Sero的每秒狀態更新達到極??平(可能會有數?億)。從而使Sero在性能上取代當前中心化集群的能力,讓Sero具有處理全球的各類隱私相關去中心化應用的前景。
基礎框架
除了隱私保護的機制之外,鏈基礎架構同樣需要具備?夠強大的可擴展性,這對于構建一個實用的應用平臺顯得?分重要,Sero會引入以下技術來對鏈的底層架構進行增強:
? 優化共識 - 使用一種全新的共識機制SE-Random,它結合了最新的PBFT理論和VRF算法設計的一種可以相對兼顧公平和效率的共識機制。
? Plasma - 是一種實現區塊鏈擴容計算的方式,在plasma中,眾多區塊鏈組合成樹形結構,共同參與計算,從而實現區塊鏈的橫向擴展。
? 更為強大的虛擬機——不僅滿?EVM的兼容性,而且有充分的擴展性,并且要有底層指令的基礎來滿?性能的需求。
? 以下會重點闡述部分技術的具體實現。
1. 共識機制
Sero在研究各類共識的基礎上,提出了自己的主鏈共識引擎SE-Random。SE-Random共識引擎的設計思路受到最新一代共識研究Algorand和Ourboros的啟發,只需要驗證節點很少的計算開銷,整個區塊鏈網絡產生分叉概率極小,并能實現近乎無限的擴展性。
下面描述一下SE-Random共識的細節。
SE-Random使用拜占庭協議BA*(Byzantine Agreement)在一組交易中達成共識。為了擴展性,SE-Random使用一種隨機算法篩選出一批用戶,允許用戶自己私下檢查是否被選中,并參與BA*協議中共識的達成。在此算法下,隨著用戶量的增多,整個BA*共識系統不會變慢。
VRF算法的使用
SE-Random共識引擎基于VRF(Verifiable Random Function)算法作為隨機驗證節點選擇基礎。VRF是隨機生成函數,而且這個函數是可驗證的。即同一把私鑰對同樣的信息進行簽名,只有一個合法簽名可以通過驗證,這個有別于普通的非對稱加密算法。
VRF的具體操作流程是:
1. 證明者生成一對密鑰,PUB_KEY和PRI_KEY。PRI_KEY是私鑰,PUB_KEY是配對的公鑰。
2. 證明者輸出隨機結果 result = VRF_Hash(PRI_KEY, info)
3. 證明者輸出隨機證明 proof = VRF_Proof(PRI_KEY, info)
4. 證明者把隨機結果和隨機證明提交給驗證者。驗證者需驗證result和proof是否匹配,若匹配,進入下一步。
5. 證明者把PUB_KEY和info提交給驗證者,驗證者計算VRF_Verif y(PUB_KEY, info, proof )結果是否為TRUE,是TRUE的話即驗證通過。
6. 驗證通過即可推導出info和result是否匹配,即證明驗證者給出的材料是正確的。在整個過程中驗證者沒有拿到證明者的私鑰PRI_KEY。
隨機種?(Seed)生成
在SE-Random的一些地方的隨機算法會用到種?(seed),比如SE-Random的加密抽簽中,需要隨機選擇并公開的種?。這個seed既要讓參與節點知曉,又不能被對?控制。SERandom第r回合產生的seed是由上一回合r-1的seed通過VRF來確定。這個種?和相應的VRF證明被包含在每個被提出的塊中,一旦SE-Random在r-1輪的塊上達成一致,當r輪開始之后,每個人都知道當前輪的偽隨機的seedr 。初始的seed0的值是由初始參與者們一起用多個節點進行計算,得到的一個絕對無法預測的隨機seed。這樣,seed不會被“破壞者”預測,也不會被操縱。
通過VRF算法進行加密抽簽選出驗證者的方法
SE-Random用加密抽簽方法來根據每個用戶的權重來選擇用戶的隨機?集。系統將固定單位數量的Sero幣設為一個篩選候選單位S,并規定每個節點有限定數量的Sero幣w作為篩選計算,所有候選單位的總權重是。并且如果節點i擁有j個篩選單位數量的Sero幣,則節點i可以以j個不同的子節點的身份參與抽簽篩選。抽簽算法的隨機性來源于前面提到的隨機種子。在BA*的每次循環中,SE-Random基于當前seed構建一個VRF,VRF的私鑰只能由節點自己知道。每個節點用自己的私鑰運行系統公布的隨機算法進行抽簽。系統按照節點持有的不超過限定閾值SERO幣的比例選擇驗證節點。
SE-Random需要指定閾值,用以選擇驗證節點的預期數量。這個預期數量滿足概率p = w/W。在W(總節點權重)選擇子驗證節點的概率滿足二項分布:
當前驗證節點(包含子驗證節點)的選擇數量的確定方式也是由抽簽算法確定的。抽簽算法將區間[0,1)劃分為連續區間的形式:
此加密抽簽的方法的特性為:
1、驗證節點根據他們持有Sero幣的權重隨機選出N個驗證子節點
2、不知道節點i私鑰的破壞者無法知道i是否被選中,以及選出多少個子驗證節點。
在隨機選出的驗證者節點中進行BA*共識計算
驗證節點(包括子驗證節點)在秘密的情況下獲知自己被選中,但他們只有公布憑證才能證明自己的驗證者資格。對于每一個選中的節點,使用自己的私鑰對seed進行簽名,并輸入哈希函數后得到自己的憑證。哈希函數的性質表明憑證是一個隨機的?度為256的字符串,不同節點的憑證不會相同,并且憑證字符串的分布是均勻的。用同樣的方式選出一批候選領導節點,把候選領導節點的憑證按照字典順序進行排列,排序中最小的候選領導節點被選為領導節點,即領導節點是通過候選領導節點集合隨機的公共選舉產生。
驗證節點和領導節點一起參與拜占庭協議BA*的運算,在BA*的每一個階段和步驟?,節點都通過私人和非互動的方式來獨?確定自己是否被選擇在當前步驟的委員會中。BA*是一個兩個階段的投票機制。第一階段,驗證節點對收到的候選區塊進行分級共識,選取驗證共識最多的候選區塊。第二階段,對第一階段篩選出的候選區塊進行二元拜占庭判斷。BA*共識要保證參與共識的誠實節點大于2/3,如果隨機選出的集合不能滿足該條件,那么需要進行多次隨機選舉,只要有一次參與共識的誠實節點大于2/3,就能達成共識。BA*共識的每個步驟的驗證節點并行指定或抽簽篩選出來用來加快共識確認速度。
BA*共識計算的步驟
BA*的每一步都要銷毀當前步驟臨時密鑰,步驟簡述如下:
1. 生成區塊(Step1)
2. 分級共識協議
這個協議將在任意一個塊上達成一致的問題轉化為在的兩個值上達成一致,這兩個值是最后確定特定塊的散列或者空塊的散列的依據,總共分為3個步驟,我們會在后面的技術黃皮書中詳細說明。大體來說判斷消息中是否有超過2/3的 并且相同,如果有,則廣播此特定區塊,如果沒有,則廣播空塊,此消息用于后繼二元拜占庭判斷。
3. 二元拜占庭判斷
在這?驗證節點統計判斷分級共識協議發出的值。二元拜占庭判斷是一個三步的循環,驗證節點會不斷的對收到的歷史進行檢查,看是否達到了有兩種結束條件,即區塊合法或者區塊不合法是否達到2/3的投票總數;如果區塊不合法,共識系統會判斷并生成一個空區塊。為了預防無限循環的情況發生,我們會設定一個最大總循環數m,如達到m后還沒判定出是否符合一個結束條件,共識系統會臨時生成暫定的共識,并在后續過程中(后面幾輪)形成最終共識,并確認這些較早的交易。
SE-Random共識會適應網絡弱同步情況下的共識判定。在網絡強情況下不會造成區塊分叉,在網絡弱同步情況下,會臨時做出暫定共識并在網絡強同步恢復后達到最終共識。SErandom可以防范?巫攻擊、自私挖礦攻擊、Nothing-at-Stake攻擊、遠程攻擊等各類攻擊方式。即使Sero鏈的用戶擴散到億級以上的節點,SE-Random共識也可借助VRF機制快速達成全網一致的拜占庭共識。
2 擴容機制
Plasma是一個激勵,和強制智能合約執行的框架。可以擴容達到每秒大量的狀態更新(能達到每秒10億級),在區塊鏈上能支持全球范圍內的大量的去中心化金融應用。這些智能合約通過網絡交易?續費用于激勵持續的自動化運作,最終依賴于底層的區塊鏈來強制交易狀態的鎖定。
Plasma由兩個核心部分構成:重組所有區塊鏈計算為一組MapReduce函數,和一個可選的方法,在現存的區塊鏈上,以不鼓勵區塊扣留的Nakamoto共識原則,來實現一個Pos的代幣押金機制。
這種構建通過在主鏈上編寫智能合約,使用欺詐證明,可以在主鏈上強制狀態的鎖定。Plasma將區塊鏈編組為一個樹形的分層結構,將每一個區塊鏈視為一個獨?的分支,強制將整個區塊鏈的歷史,和可MapReduce的計算提交到Merkle證明。通過主鏈強制將某個鏈的帳本信息打包到子區塊鏈中,這個鏈將通過最低的信任達到擴容的需求。
圍繞全局強制非全局數據的數據可用性,區塊扣留攻擊是是一個非常復雜的問題。Plasms通過對有問題鏈的退出機制來緩解了這個問題,同時也創建了一個激勵和持續的強制的執行數據的正確性機制。
僅僅通過周期性的將正常狀態的Merkle證明廣播到主鏈,這將允許不可思議的擴展性,降低交易成本和計算量。Plasma支持了大規模去中心化應用的持續運行。額外的,重要的可擴展性是通過減少單次花費的資金表達方式為一個位圖中的一個位來實現,這樣,一個交易和一個簽名代表一個與多方的交易聚合。Plasma將這與一個MapReduce框架結合,同時使用含押金的智能合約來構建可擴展的計算強制性。
這種構建方式允許讓外部的參與方持有資金,并根據自己的行為計算合約,類似于一個礦工,但是Plasma是運行于一個已存在的區塊鏈上,由此大家不用在每次狀態更新時在主鏈上創建對應的交易(即使包括添加新用戶的賬本),而只需要將合并后的狀態變化這樣的少量信息寫到鏈上。
Sero將采用Plasma這樣的機制進行基于多鏈體系的橫向的性能擴容。這種多鏈并行計算機制,可使Sero的每秒狀態更新達到極高?平(可能會有數十億)。從而使Sero在性能上獲得很大提升,達到取代當前中心化集群的承載能力。
3. 虛擬機
目前以太坊已經擁有了大量開發者,Solidity語言也已經成了智能合約開發最廣泛使用的語言。因此,我們需要在Sero系統中提供EVM的兼容性。
EVM虛擬機是在以太坊的基礎上發展出來的,以太坊是一個標準的區塊鏈結構,其數據結構是單一的,因此其虛擬機在交易調用層面設計為類似數據庫的ACID(Atomicity,Consistency,Isolation,Durability)特性。即在以太坊的協議中,一個智能合約的調用,可能會影響多個賬戶的狀態變化。這些狀態變化是有實時一致性的剛性事務,即這些狀態變化要么同時發生,要么都不發生。但是,Sero需要考慮到未來充分的擴展性,并且要有底層指令的基礎來滿足性能的需求。我們將Sero鏈的虛擬機設計為滿足BASE(Bascically Available,Soft state,Eventual consistency)理念的最終一致性方案,我們將此虛擬機稱為MEVM虛擬機。
在BASE理念中,基本可用是指系統在出現不可預期的故障時,允許損失部分可用性;軟狀態是指允許系統中的數據存在中間狀態,不過該中間狀態的存在不會影響系統的整體可用性;最終一致性是指所有的數據副本,在一段時間的同步之后,最終都能夠達到一致。和ACID概念的強一致性相比,BASE理念通過犧牲實時強一致性來獲得可用性,但最終會達到一致狀態。區塊鏈中區塊結構和各類共識算法,其本質都是符合BASE理念的,不過并不滿足ACID。因此MEVM虛擬機設計為復合BASE語義是適合的,并且在此層面上相比原來的EVM的ACID設計,
會克服運行性能瓶頸的這個方面的制約。
另外,Solidity語言一直被人詬病的一點是缺乏標準庫的支持,比如比較兩個字符串這種基本的功能,Solidity中沒有標準庫函數給開發者調用。類似OpenZeppelin這樣的項目提供了一些標準庫,但是還遠遠不夠用。特別是Sero的區塊鏈應用需要用到的高級的數學和密碼學算法庫,比如零知識證明協議、RSA公鑰加密算法,奇異值分解等。MSolidity可以參考這些實現并添加更多的庫,這些庫采用預編譯或者用Native方式實現,以減少運行消耗。
在今后的發展中,Sero體系會考慮對基于Web Assembly(WASM)的虛擬機提供支持,從而進一步提升性能,并提供對除了Solidity外用更多的語言,比如C,C++,Rust,或者Go語言編寫的智能合約進行支持。隨著Cardano項目組設計的IELE虛擬機的成熟,Sero體系也會考慮提供對這個虛擬機進行支持。IELE是LLVM的一個變種,有希望成為高級語言的智能合約翻譯并執行的統一、低級的平臺。通過IELE虛擬機,可以讓Sero體系支持更多種類的高級語言。
4. 抗量子計算
目前區塊鏈系統上普遍使用的非對稱加密簽名算法,比如基于大整數因子分解難題的RSA算法和基于橢圓曲線上離散對數計算難題的ECC算法,可以被量子Shor算法將NP問題變成P問題,從而容易被破解。Sero體系會根據項目進度和量子計算機實用化的發展適時引入抗量子計算暴力破解的加密算法,比如基于格的密碼系統(Lattice-based cryptography),基于編碼的密碼系統(code based cryptosystems)和多元密碼(multivariate cryptography)等;其中基于格密碼可以設計加密、簽名、密鑰交換等各種密碼系統,是后量子密碼學算法的一個重要方向。同時,我們也會對基于超特異橢圓曲線上同源問題(Isogen)、共軛搜索問題(conjugacy search problem)和辮群(Braid Groups)相關問題等設計的抗量子密碼系統的前沿研究方向進行同步追蹤。
激勵的經濟模型
傳統的點對點通訊網絡將焦點關注于信息傳輸,有點像互聯網1.0時代的應用,一切都是公開和共享的,而其并沒有達到區塊鏈技術所達到的震動效應,一方面是因為缺少有效的共識機制將分散的節點協同參與工作(僅限于點和點的共識),而更重要的是因為一切人類的行為都是需要背后的經濟邏輯驅動的,在缺乏有效的經濟規范趨勢下人類的行為只能受到社會規范約束(即出于公益性質的精神激勵的驅動下的工作),這對于大部分需要共同完成的目標而言對個體是缺乏約束力的。
比特幣網絡通過POW(工作量證明)共識機制,并以貢獻算力獲得記賬權從而獲得比特幣獎勵的方式激勵節點參與共識,無疑是一項了不起的設計,我們認為Token經濟模型是區塊鏈價值的核心也不為過。
然而問題在于同一種token是否能解決所有共識協同行為的激勵問題?我們認為答案顯然是No。現今我們發現市場上有各種流通的Token,背后的經濟模型五花?門,但是缺乏統一的標準將其共識的成本與產生的共識價值關聯起來,因此整個加密貨幣的二級市場流通規則顯得相當脆弱。
以太坊基于同一種底層共識機制,允許智能合約開發者發行自己的Token,并且使用ETH作為GAS費用支付共識成本,既統一了共識成本的計量單位,又允許在相同的共識成本下,能夠根據Token所用于的生態獲得不同的價值輸出,使用者?少能夠計算最佳的投入與回報的平衡點,如今許多人詬病在以太坊上發行ERC20的代幣太過容易導致?目混珠,卻很少有人意識到以太坊在這個設計初衷的重要意義。
我們在設計整個Sero-CHAIN時也同樣延用了以太坊的這個功能,可以想像,通過鏈上完成基于共識的交易,?先我們需要降低GAS消耗,以降低鏈上交易性價比的硬門檻,為此我們設計了新的共識機制,這點在其他章節已經闡述。
假設在共識成本即GAS消耗可以忽略不計的情形下,任何一種Token的價值取決于鏈上交易的其他成本,這些成本受到數字資產的集中化程度、市場供需關系等影響,這和現實世界的貨幣并無不同,加密貨幣同樣是用來衡量商品、服務或權益的價值的,因此我們認為開發者發行Token可以有自己的經濟模型,這?僅就Sero幣的經濟模型角度討論。
站在Sero生態的角度,所有的商品、服務的價值都有一個源頭,由于區塊鏈平臺本質是一個公平的價值流通市場,因此所有的經濟行為的成本底層在于交易成本,Sero幣就是交易成本的載體,站在這個角度,Sero幣將用于以下激勵用途:
? 記賬獎勵;
? 算力貢獻獎勵(對于使用了隱私機制的應用,會需要更多的算力消耗);
? 其它角?包括算法提供者(通過發布智能合約的形式)的運行激勵;
? 在SE-Random共識中,Sero的Token持有會影響個別場景下(譬如初始種子節點隨機選擇)的權重;
? Sero生態的開發者會因其開發應用的實際產生價值而獲得Sero的Token獎勵,這種獎勵往往用于實際補貼其共識記賬或算力支付開銷的成本方式給出;
? 用戶也可以將Sero的Token用于其DApp或Sero相關的生態系統中的各種目的。
評論
查看更多