FIBOS 與 Ethereum 技術對比

共識機制

Ethereum 使用的是 PoW 共識機制,將來幾年裏將會換成 PoS 共識機制。Ethereum 區塊是由礦工計算哈希產生,在 PoW 共識機制中區塊須要獲得全網絡超過51%的節點確認纔可以正式被區塊鏈承認。在 Ethereum 網路中,任何人均可以成爲礦工。javascript

FIBOS 使用的是 DPoS 共識機制。FIBOS 區塊的產生是由21個 BP 輪流出塊,產生的區塊須要2/3以上的 BP 確認纔可以被區塊鏈承認。21個 BP 是由 FO 通證持有者投票選舉出。java

帳戶/地址

Ethereum 的用戶使用的是地址,一個長達40位的的16進制數。編程

FIBOS 使用的是帳戶管理,帳戶名採用12位數字與字母組合,可自定義,方便用戶記憶。網絡

權限

Ethereum 的權限是由地址惟一對應的私鑰管理,而且這個私鑰是隨機生成的,在須要使用的權限的時候用戶只能經過私鑰受權。app

FIBOS 帳戶默認有2種原生權限: owner、active,一個帳戶必須「關聯」 owner、active 權限。框架

  • owner 擁有超級權限,表明着帳戶的歸屬者,由於擁有此權限者能夠用於操做其餘權限配置,該權限經常使用事務中(轉帳、合約 action 等)通常不會使用。
  • active 經常使用業務的權限,好比:轉帳、投票等。

另外還能夠根據本身需求自定義權限。編程語言

手續費/資源

Ethereum gas

在 Ethereum 中使用區塊鏈上的資源須要消耗 gas,消耗的 gas 做爲區塊打包的費用支付給礦工。函數

FIBOS 資源

FIBOS的資源分爲兩種類型:工具

  • 抵押型資源,包括 CPU 和 NET;
  • 消耗性資源,叫作 RAM,也稱存儲。

開發者發佈一個合約必須擁有足夠的資源,包括 RAM、CPU 和 NET。區塊鏈

智能合約

編程語言的區別

Ethereum 上開發智能合約使用的語言爲 Solidity,這是一門專爲 EVM 而開發的語言,對於通常沒有接觸過 Ethereum 或智能合約的開發者來講,該語言的研發門檻很高。

Ethereum 合約示例:

pragma solidity ^0.4.0;

contract hello {
    function hello(uint i){

    }
}
複製代碼

FIBOS 使用 JavaScript 編寫智能合約,開發成本極低。這讓開發智能合約的門檻下降了許多。

FIBOS 合約示例:

exports.hi = user => console.error('in contract:', user);
複製代碼

合約的發佈和更新

Ethereum 合約發佈成功後會獲得一個合約地址。合約地址格式長而且沒有規律記憶起來十分困難。Ethereum 合約發佈後沒法更改。

在 Ethereum 中若是合約發佈後發現問題,現有兩種解決方案:

  • 一個是在合約中預先設置銷燬函數,並設置權限只有合約發佈者能夠調用,在須要的時候調用銷燬函數銷燬合約。
  • 另外一個方法是在合約中預先設置 delegatecall,因爲 delegatecall 保留了函數調用的狀態,所以能夠更新目標合約的邏輯,而且狀態將保留在代理合約中以供更新後的目標合約的邏輯使用。

這兩種方法都須要預先的設置,以及發佈合約的帳號丟失後,也將失去對合約的控制權。

FIBOS 合約帳戶名就是發佈帳戶的帳戶名。發佈合約時須要發佈帳號的資源,包括足夠的 RAM、CPU 和 NET。

在 FIBOS 中開發者可使用發佈帳戶隨時更新合約代碼。相較於以太坊的合約,FIBOS 的合約後期的維護和更新在技術上容易不少,在成本上低了不少。

生態支持

Ethereum:

  1. 開發框架: Truffle 具備如下功能:

    • 內置的智能合約編譯,連接,部署和二進制文件的管理。
    • 快速開發下的自動合約測試。
    • 腳本化的,可擴展的部署與發佈框架。
    • 部署到公網或私網的網絡環境管理功能
    • 使用 EthPM&NPM 提供的包管理,使用 ERC190 標準。
    • 與合約直接通訊的直接交互控制檯(寫完合約就能夠命令行裏驗證了)。
    • 可配的構建流程,支持緊密集成。
    • 在 Truffle 環境裏支持執行外部的腳本。

    在 Truffle 框架中,能夠根據須要編譯、部署合約,Truffle 也提供一鍵啓動測試鏈的工具。

  2. 託管節點: Infura Ethereum 的合約能夠經過使用 Infura 提供的節點發布合約。

FIBOS:

  1. fibos.js 是 FIBOS 區塊鏈的通用庫,具備如下功能:
    • 使用 NPM 提供的包管理。
    • 快速開發下的自動合約測試。
    • 提供合約與客戶端交互接口。
    • 提供合約內部所需的 API 接口。
  2. 節點: FIBOS 提供一鍵腳本發佈十分簡單易用。
  3. FIBOS-tracker 是一個 FIBOS 區塊鏈數據 API 服務框架,基於 fib-app 框架實現。
    • 提供對 FIBOS 區塊數據的 emitter 監聽事件。
    • 提供 http 服務,支持 GraphQL 調用。
    • 支持使用 ORM 定製本身的數據模型 model,自定義數據表以及自定義 hook 監聽數據。
相關文章
相關標籤/搜索