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 监听数据。
相关文章
相关标签/搜索