Chain簡介

Chain 簡介

chain設計了一種多種資產能夠互相交易發佈的分佈式帳本協議。用該協議的多條鏈能夠獨立的存在, 而且能夠跨鏈交易, 這樣不一樣的運營商能夠以相同的形式互相交易。堅持最小權限原則, 資產的管理和分佈式帳本同步控制相分離。
鏈協議容許任何網絡參與者經過編寫自定義「發佈程序」來定義和發行資產。一旦發行,資產單元由「控制程序」控制。 控制程序是用圖靈完備的編程語言實現, 該語言可用於編寫複雜的智能合約。
每一個網絡由「塊簽名者「組成的聯盟來保護安全性。 只要法定的塊簽名者遵循協議, 該系統就能夠安全的抵抗分叉。爲了提升效率,全部出塊人能夠達成協議, 委託單個節點出塊,相似於raft協議。 網絡的任何節點均可以驗證塊並廣播交易。
Chain 主要是面向企業軟件產品的聯盟鏈。 Chain的代碼是長久開源的, 而且搭建了一個測試鏈,供你們自由測試。編程

設計Chain 的動機

當今社會的貨幣, 證券以及衍生品是以電子支付的形式進行交易的。電子支付須要太多的第三方中介參與,須要太多的人力物力去對賬。比特幣雖然去中介化了,但堆棧式腳本實現的功能太少, 只支持本幣的簡單交易合約。以太坊的evm 又太過於複雜, 有太多的安全不肯定性。再者, 他們是公有鏈,全部數據在公衆的眼皮底下。 這時, Chain 剛好可以解決這些痛點。 Chain 是聯盟鏈,支持多種資產的發佈和交易, 也支持多種組織的跨鏈交易。安全

Chain 大部分思想來自於比特幣和以太坊。服務器

  • 1.在比特幣的基礎上增長了多種資產自由發佈。而比特幣只支持btc。
  • 2.evm的功能介於比特幣和以太坊之間。主要用於資產的發佈與管理。
  • 3.採用了比特幣的utxo模式而且採用隔離見證的數據格式,交易狀態和交易驗證相隔離。
  • 4.加入了以太坊的PAT樹用於世界狀態, 但該世界狀態不是面向帳戶的, 而是面向utxo的。

基本數據結構

Chain 的目的是管理數字資產的發行、全部權、 交易。資產的發佈、轉讓和交換是經過向網絡發送交易來完成的。 這些交易會被排序並分批打包成塊,而後組成一條不可更改的區塊鏈。
資產 
每條區塊鏈均可以支持多種類型的資產。 每種資產被一個256位字節的全局資產ID 所定位惟一(在全部的區塊鏈中該ID惟一)。每種資產ID有相對應的發佈程序,它定義了該資產的發佈規則。一旦資產發佈,資產的支出由控制程序決定。
交易 
交易使用比特幣的UTXO模式。但在這些基礎上作了改進, inputs 能夠選擇發佈資產或者是未消耗的發費,outputs能夠選擇控制程序的輸出或者資產的銷燬,而且在inputs和outputs上加了個資產ID字段,支持多種資產的混合交易, 只要inputs和outpus的價值相等便可。以下圖:

爲了提升性能,交易實現了相似比特幣的隔離見證功能, 以下圖:

區塊 
爲了防止雙花,塊引入了相似以太坊的世界狀態,但世界狀態是針對UTXO 存儲的, 即每一筆交易的執行,都是在該世界狀態中執行兩步微信

  • 1.刪除原來的已經發費了的outputs。
  • 2.增長產生的outputs。
    區塊中存儲每一筆排序的交易,並連接成一條不可更改的區塊鏈。以下圖

    全部的交易在每個塊中排序好,成爲不可更改的歷史事實。世界狀態做爲當前區塊鏈的快照。 固然塊與塊之間少不了共識, 共識程序的執行流程相似於上上圖交易驗證的流程。(recover(signature + message) ?= pubkey)
    區塊鏈的總體數據結構以下圖:

程序設計

Chain 的協議使得編程很是靈活, 可根據不一樣的層次並行計算。網絡

  • 1.發行資產程序指定相應的規則發行新資產。
  • 2.控制程序指定相應的規則在一種資產上做交易。
  • 3.共識程序指定相應的規則產生新的區塊。
    這些程序根據內存和時間的限制, 能夠並行的運行。正由於如此,程序是足夠靈活以容許實施普遍的金融工具(如期權、債券、互換),安全方案(存儲資產),應用如提供,契據,拍賣。

    虛擬機(CVM)

    Chain 的虛擬機是一個棧式狀態機: 任何指令都在該棧中執行。CVM 的指令集是圖靈完備的,爲了防止死循環, 採用了run limit 來限制陷入死循環, 協議容許網絡去達成共識設置該run limit. 根據運行消耗來訂價每一條指令的run limit。 這 很是相似於以太坊的gas機制, 和以太坊不一樣的是CVM 不會在每筆交易中給run limit 計費。CVM 指令集包含了push, pop等基本指令集, 同時還包括了SHA3, CHECKSIG, CHECKMULTISIG等複雜的數學加密運算。
    自省功能
  • 交易自省: 能夠在執行過程判斷是否超過預約的時間,也能夠增長自帶控制程序,來對(價格,資產,運行過程, 索引)作必定自由控制。
  • 區塊自省: 自省指令集(BLOCKHASH, NEXTPROGRAM),只能在共識程序中執行。
    由於豐富的指令集,能夠組合使用完成不只僅是交易簽名和驗籤的功能。如:多重簽名,多方簽名,提早部署(我最喜歡的是:相似於微信紅包功能, A給B發送交易,須要B確認才能上鍊)CHECKPREDICATE 提供了強大的其它跨鏈功能,包括實現相似於BTCRelay的功能。

    共識

    Chain 能夠支持任意的共識程序, 目前實現的共識, 是不支持拜占庭容錯的。 他是有N個節點對每一個高度的塊簽名投票,當一個塊收集到超過M個節點的簽名時就出塊。只要不超過2M-N-1的節點違反同時給同一高度的多個塊簽名投票, 就不會產生分叉。

    安全性

    Chain 支持M-N 多重簽名控制程序, 支持M-1 簽名的發佈程序來保證資產的安全。
    隱私
  • 1.鏈上登記,不須要第三方中介信任。
  • 2.每個控制程序都有一個惟一的公鑰來防止同一個帳戶被別人發現。一個主密鑰,該主密鑰能夠產生無數的公私鑰對, 每次交易,不用主私鑰,只須要衍生私鑰, 這在必定程度上保證了安全性。
  • 3.能夠保證一些敏感數據的隱私, 如期限,價格和利率。 能夠經過每一個分支鏈的merkle 後的程序隱藏。 只有執行中的分支鏈須要執行期間被顯示。這樣的合約,能夠在交易時多方簽名認證,(私人合約鏈下解決, 在鏈上簽名認證便可。)和合同在現實世界中的工做方式類似 - 雖然在法庭執行時一般要求將合同的條款公開,但大多數合同都是私下解決的,公共系統只能做爲一個隱含的支持者。
  • 4.共識安全性防範: 效率和安全不可兼得。
    監管 
    Chain 容許本地的政策發佈, 但監管方能夠經過塊生成器進行監管。若是塊簽名者在同一高度簽署多個塊,參與者可使用不一致的簽名來構建欺詐證據,以警告其餘節點或爲鏈下執行提供證據。

    伸縮性,擴展性, 互通性。

  • 1.utxo 與以太坊帳戶模型不一樣, 能夠並行驗證交易, 只要用相似於nonce的機制保證每個未花費outputs最多隻能被一筆交易所引用。
  • 2.Chain 自然的比以太坊瘦, 不須要完整的世界狀態, 參與者只須要記住未花費的outpus就可了, 由於交易會自帶其餘相關信息(如資產ID, 量額, 控制程序), 超級輕客戶端。
  • 3.compact 驗證 , 只容許客戶端驗證塊中所相關的交易,而不須要驗證全部的交易,只要信任簽名者的數量便可。整個過程是用Merkle證實。客戶端也能夠將監視整個區塊鏈的任務委託給本身信任的服務器。 塊能夠經過軟分叉的方式向前向後版本兼容。 Chain 不只支持在實現本協議的區塊鏈間通訊, 但須要保證全局惟一資產ID。每一條分鏈是從另一條鏈的塊高度叉出去的,根據這點能保證資產ID惟一。 並支持不一樣的協議的鏈互相交互, 由於CVM提供了足夠多的指令。
相關文章
相關標籤/搜索