区块链之旅以太坊超级账本公链联盟链

Posted 小生凡一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链之旅以太坊超级账本公链联盟链相关的知识,希望对你有一定的参考价值。

以太坊与超级账本

以太坊与超级账本的对比

以太坊超级账本
设计原理紧耦合松耦合(二次开发)
执行环境EVMDocker
平台语言GoGo
部署难度相对简单相对复杂
拓展性差(设计缺陷)
数据存储链下完整,链上hash链下完整,链上hash
代币借助币奖励矿工和防止攻击不需要
Spv支持不需要,需要自行实现,同区块看本身有关
企业级应用相对较好不太好
出块时间不可控,会越来越长,和区块高度相关通过实践和交易控制
分叉硬分叉,需要修复大量bug暂无
安全漏洞Solidity语言设计漏洞DAO暂无
币机制模型账户模型+分片机制暂无
开源协议LGPL3.0Apache2.0
合约调用可以可以
合约语言SolidityGo
合约终止方式计步Gas计时Docker环境

合约对比

以太坊超级账本
合约相互调用可以,需要将被调用的源代码置于调用者合约的顶部,编译器会将最后一个合约作为部署者的合约,调用时给出被调用合约的地址。可以,在合约中调用其他合约算作一个交易,最终以调用这合约交易执行状态作为整个执行的状态并将调用者合约的参数记录在链上。
库函数少量库函数Go语言库
合约更新不能更新可更新升级
外部系统交互EVM无法与外部系统交互可以,但需要保证交互的统一性
合约部署当做交易发布(编译成字符串发布,合约大小有限制),需要矿工挖矿才能部署(所有节点)直接在所有节点部署
合约交易执行所有节点都需要执行验证所有节点都需要执行验证
合约复杂度不能复杂,合约编译成字符串发布,需全网同步可更新复杂

合约部署过程

以太坊

  1. 搭建以太坊私链环境,生成私链的创世区块;
  2. 启动私链,生成一个初始的以太币账户,开始挖矿(挖矿需要一个账户接受以太币)
  3. 编写智能合约,solidity和mix语言
  4. 编译智能合约,单个文件的简单合约可以在线编译。多个文件需要借助solc(编译成字符串,全网同步)
  5. 部署,合约部署当作一笔交易记录再链上,需要支付一定以太币,并且运行需要gas

超级账本

  1. 搭建hyperledger环境
  2. 更改配置文件,启动大于四个节点
  3. 编写合约,编译成二进制文件
  4. 把二进制文件放在每个节点中
  5. 在各个节点部署智能合约
  6. 初始化智能合约

FISCO BCOS

  1. 搭建fisco bcos环境
  2. 更改配置文件并启动群组
  3. 编写智能合约,编译成预编译合约
  4. 根据合约地址获取到预编译合约的对象后执行预编译合约
  5. 每个预编译合约对象都会实现call接口,预编译合约的具体逻辑在该接口中实现
  6. call根据交易的abi编码,获取Function Selector和参数,然后执行对应的逻辑

主流区块链架构对比

特性以太坊Hyperledger FabricFISCO BCOS
平台描述通用区块链平台模块化区块链平台安全可控企业级金融联盟链底层平台
管理方以太坊开发者Linux基金会金链盟开源工作组
运行模式无授权,可公开,可私有有授权,私有有授权,私有
共识POW/POS,账本层面运行多种共识机制,交易层面PBFT/Raft,账本层面
智能合约只能和与代码即Solidity智能合约代码GO/JAVA智能合约代码即Solidity
货币以太币,由智能合约产生代笔没有没有

公链与联盟链

公链

定义

  • 任何人都可以读取的,任何人都能发送交易且交易能获得有效确认的,任何人都能参与其中共识过程的区块链。

  • 通常被认为是”完全去中心化“的,因为没有任何个人或者机构可以控制或篡改其中数据的读写。

  • 公链一般会通过代币机制来鼓励参与者竞争记账来确保数据的安全性。比特币、以太坊都是典型的公有链。

特性

在这里插入图片描述

发展现状

在这里插入图片描述

困境

在这里插入图片描述

联盟链

定义

  • 有若干个机构共同参与管理的区块链,每个机构都运行着一个或多个节点,其中的数据只允许系统内不同的机构机型读写和发送交易,并且共同来记录交易数据。
  • 对于共识或验证节点的配置和网络环境有一定的要求
  • 各个节点通常由域指对应的实体机构组织,通过授权后才能加入与退出网络。各机构组织组成力以相关的联盟共同维护区块链的监控运转。

特性

在这里插入图片描述

发展现状

在这里插入图片描述

应用场景

在这里插入图片描述

以上是关于区块链之旅以太坊超级账本公链联盟链的主要内容,如果未能解决你的问题,请参考以下文章

区块链组织-超级账本(Hyperledger)的简介

区块链技术的比较

2区块链底层技术-逻辑架构

蜗牛讲-Fabric入门之架构

公链or联盟链?XFS到底是什么?

学习区块链开发是学习go语言、hyper ledger fabric比较好、还是以太坊智能合约比较好或者公链开发?