以太坊與超級賬本
以太坊與超級賬本的對比
以太坊 | 超級賬本 | |
---|---|---|
設計原理 | 緊耦合 | 松耦合(二次開發) |
執行環境 | EVM | Docker |
平台語言 | Go | Go |
部署難度 | 相對簡單 | 相對複雜 |
拓展性 | 差(設計缺陷) | 好 |
資料存儲 | 鍊下完整,鍊上hash | 鍊下完整,鍊上hash |
代币 | 借助币獎勵礦工和防止攻擊 | 不需要 |
Spv | 支援 | 不需要,需要自行實作,同區塊看本身有關 |
企業級應用 | 相對較好 | 不太好 |
出塊時間 | 不可控,會越來越長,和區塊高度相關 | 通過實踐和交易控制 |
分叉 | 硬分叉,需要修複大量bug | 暫無 |
安全漏洞 | Solidity語言設計漏洞DAO | 暫無 |
币機制模型 | 賬戶模型+分片機制 | 暫無 |
開源協定 | LGPL3.0 | Apache2.0 |
合約調用 | 可以 | 可以 |
合約語言 | Solidity | Go |
合約終止方式 | 計步Gas | 計時Docker環境 |
合約對比
以太坊 | 超級賬本 | |
---|---|---|
合約互相調用 | 可以,需要将被調用的源代碼置于調用者合約的頂部,編譯器會将最後一個合約作為部署者的合約,調用時給出被調用合約的位址。 | 可以,在合約中調用其他合約算作一個交易,最終以調用這合約交易執行狀态作為整個執行的狀态并将調用者合約的參數記錄在鍊上。 |
庫函數 | 少量庫函數 | Go語言庫 |
合約更新 | 不能更新 | 可更新更新 |
外部系統互動 | EVM無法與外部系統互動 | 可以,但需要保證互動的統一性 |
合約部署 | 當做交易釋出(編譯成字元串釋出,合約大小有限制),需要礦工挖礦才能部署(所有節點) | 直接在所有節點部署 |
合約交易執行 | 所有節點都需要執行驗證 | 所有節點都需要執行驗證 |
合約複雜度 | 不能複雜,合約編譯成字元串釋出,需全網同步 | 可更新複雜 |
合約部署過程
以太坊
- 搭建以太坊私鍊環境,生成私鍊的創世區塊;
- 啟動私鍊,生成一個初始的以太币賬戶,開始挖礦(挖礦需要一個賬戶接受以太币)
- 編寫智能合約,solidity和mix語言
- 編譯智能合約,單個檔案的簡單合約可以線上編譯。多個檔案需要借助solc(編譯成字元串,全網同步)
- 部署,合約部署當作一筆交易記錄再鍊上,需要支付一定以太币,并且運作需要gas
超級賬本
- 搭建hyperledger環境
- 更改配置檔案,啟動大于四個節點
- 編寫合約,編譯成二進制檔案
- 把二進制檔案放在每個節點中
- 在各個節點部署智能合約
- 初始化智能合約
FISCO BCOS
- 搭建fisco bcos環境
- 更改配置檔案并啟動群組
- 編寫智能合約,編譯成預編譯合約
- 根據合約位址擷取到預編譯合約的對象後執行預編譯合約
- 每個預編譯合約對象都會實作call接口,預編譯合約的具體邏輯在該接口中實作
- call根據交易的abi編碼,擷取Function Selector和參數,然後執行對應的邏輯
主流區塊鍊架構對比
特性 | 以太坊 | Hyperledger Fabric | FISCO BCOS |
---|---|---|---|
平台描述 | 通用區塊鍊平台 | 子產品化區塊鍊平台 | 安全可控企業級金融聯盟鍊底層平台 |
管理方 | 以太坊開發者 | Linux基金會 | 金鍊盟開源工作組 |
運作模式 | 無授權,可公開,可私有 | 有授權,私有 | 有授權,私有 |
共識 | POW/POS,賬本層面 | 運作多種共識機制,交易層面 | PBFT/Raft,賬本層面 |
智能合約 | 智能合約代碼即Solidity | 智能合約代碼GO/JAVA | 智能合約代碼即Solidity |
貨币 | 以太币,由智能合約産生代筆 | 沒有 | 沒有 |
公鍊與聯盟鍊
公鍊
定義
- 任何人都可以讀取的,任何人都能發送交易且交易能獲得有效确認的,任何人都能參與其中共識過程的區塊鍊。
- 通常被認為是”完全去中心化“的,因為沒有任何個人或者機構可以控制或篡改其中資料的讀寫。
- 公鍊一般會通過代币機制來鼓勵參與者競争記賬來確定資料的安全性。比特币、以太坊都是典型的公有鍊。
特性
發展現狀
困境
聯盟鍊
定義
- 有若幹個機構共同參與管理的區塊鍊,每個機構都運作着一個或多個節點,其中的資料隻允許系統内不同的機構機型讀寫和發送交易,并且共同來記錄交易資料。
- 對于共識或驗證節點的配置和網絡環境有一定的要求
- 各個節點通常由域指對應的實體機構組織,通過授權後才能加入與退出網絡。各機構組織組成力以相關的聯盟共同維護區塊鍊的監控運轉。