区块链平台分析——Ethereum & BCOS

此文是FISCO-BCOS项目的一篇报告,阅读笔记
原文链接:点击

概述

09年比特币诞生后区块链技术的迅速发展和受重视程度。在金融方向的领域,具有简化和变革业务流程、保护数据完整性以及转变商业模式的潜力。

企业在应用区块链技术时,主要在身份认证、共识机制、秘钥管理、隐私保护、监管要求等方面进行不同的个性化配置,来满足不同业务的需要。

开源公有链技术平台:比特币、以太坊
联盟链技术平台:Fabric、R3 Corda、BCOS区块链平台

不同的企业或组织应根据自身业务特点进行选择平台开发,进行量化定制

  1. 研究目标

    本报告将通过分析部分有代表性的区块链技术平台,从架构分析、核心技术组件、应用功能、技术能力、安全机制、平台适用性、开发及工具、维护支持能力等方面进行对比。明确不同平台的特点和适用范围,提供教总和的信息参考。

  2. 研究平台范围

    选择以太坊、Fabric、Corda和BCOS

    本笔记将选择性的了解以太坊和BCOS的特性

  3. 内容和方法

    8个维度关注区块链平台的技术、应用、安全、支持等重点领域

    维度分析——分析——总结

  4. 一些术语和缩略词

    共识机制 区块链系统中实现不同节点之间建立信任、获取权益的数学算法
    区块 一个区块是一个数据包,其中包含0个或多个交易,前块的散列地址以及其他可选数据
    图灵完备 一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的
    PoW 工作量证明
    POS 权益证明 Proof of Stake
    PBFT 实用拜占庭容错
    幽灵 协议。通过该协议,区块可以包含不只是他们父区块的散列值,也散列父区块的其他子块(叔区块)的陈腐区块。这确保了陈腐区块仍然有助于区块链的安全性,并减轻了大型矿工在快速区块链上的有优势的问题,因为他们能够立即得知自己的区块,因此不太可能产生陈腐区块

架构分析

系统架构决定了应用的使用范围、跨链及链上链下的数据整合和可行性,甚至商业变革的方向。具体的区块链平台架构存在差异,传统的区块链平台习惯将数据分为数据层、网络层、共识层、激励层、合约层、应用层。一种可能的架构如下图:

  • 数据层:封装底层区块数据的链式结构,以及数字签名、哈希和非对称加密技术等多种密码学算法和技术。主要实现数据存储、账户和交易实现与安全两个功能
  • 网络层:包括P2P网络机制、数据传播机制和数据验证机制等,主要实现网络节点的连接和通讯
  • 共识层:封装网络节点的各类共识机制算法,实现全网所有节点对交易和数据达成一致,防拜占庭攻击、女巫攻击和51%攻击等共识共识攻击。
  • 激励层:实现区块链代币的发型和分配机制,该层主要出现在公有链中,用以激励遵守规则参与记账的结点
  • 合约层:封装各类脚本、算法和智能合约,赋予账本可编程的特性,通过虚拟机运行代码实现智能合约
  • 应用层:封装区块链各类应用场景和案例,如以太坊上的DAPP;某些平台架构也将应用层和合约层划分为一个逻辑层
  1. 架构灵活性

    • 以太坊计划通过分片机制提高整个网络的灵活性,分片之前整个网络的处理取决于单个节点的处理;分片后,只有同一片内的处理是同步的、一致的
    • BCOS共识算法模块采用插件化设计实现,通过修改系统配置,实现在多个联盟链里使用不同的共识机制,参与到同一个联盟链的所有节点必须采用同一种共识配置
  2. 节点分类
    • 以太坊从PoW共识机制逐步向PoS共识机制,节点间将依据资产的多寡分配相应的记账权重,这样可以更好地利用计算资源。
    • BCOS将节点分为共识节点和观察节点,共识节点参与共识算法,成为链上的记账者;观察节点则不参与共识,只同步数据

核心技术组件

核心技术组件值区块链系统所依赖的基础组件、协议和算法,进一步可细分为通信、存储、安全机制、共识机制。

  1. 共识机制

    共识机制是区块链系统中各个节点达成一致的策略和方法。目前主流的共识机制有PoW、PoS、DPoS、Raft、PBFT。对比如下:

    • 以太坊当前使用PoW的共识机制,需要全网具备大规模算力支撑来保证网络安全性。目前可能正在向PoS过渡或使用混合机制
    • BCOS采用PBFT、Raft作为联盟链的共识算法,系统共识机制采用插件化实现,通过修改系统配置,即可设定使用不同的共识机制,但参与同一联盟链的所有节点必须采用同一种共识配置
  2. 通信/P2P技术

    区块链通常采用P2P技术组织各个网络节点,每个节点通过多播实现路由、新节点识别和数据传播等功能。

    以太坊客户端P2P协议是一个标准的加密货币协议,能够容易地为其他加密货币使用,仅有的改动是引入“幽灵”协议。以太坊采用了幽灵协议的最基础部分,即废块必须以下一个区块的叔区块的身份纳入计算。

  3. 存储

    区块的数据结构通常只增加而不进行删改,存储开销将会越发增大。

    以太坊使用Merkle树存放交易散列,在面临不断增长的数据时,一旦需要回收硬盘空间,可选择性将老旧的交易从树中剔除,具体如何操作尚有争议。

    BCOS支持分组多副本方式存储文件,并在区块链中保存文件的哈希值和相关寻址信息,提高区块链的存储和网络同步效率。也支持分布式数据存储的方案,在综合考虑数据的容量、可维护性、安全性等方面的基础上,企业可使用现有分布式存储方法如数据仓库、数据库集群等存储区块链数据

  4. 计算效率

    以太坊中交易理想中可以通过分区解决智能合约状态持久化问题,从而使得交易可以被并行验证,但该功能尚未实现。

    BCOS利用集群化、分片机制,使交易按一定的规则互相割离,并可被并行处理,且数据量可以通过垂直切分的方式,分布存储在不同的存储设备上,以满足性能和容量平行扩容的需求。

  5. 数据结构

    区块链技术中,数据以区块的方式永久存储。区块按时间顺序逐个先后生成并连接成链,每一区块记录创建期间发生的所有交易信息。

    区块的数据结构一般分为区块头和区块体。前者用于连接到前一个区块并且通过时间戳特性保证历史数据的完整性;后者则包含了经过验证的、区块创建过程中所产生的所有交易信息

    不同的区块链平台的头部信息稍微差异

应用功能

区块链平台为进行用户身份管理、实现上层应用所需的基础功能组件,应用功能是在核心技术组件的基础上,提供针对区块链应用场景的基础管理功能。

  1. 身份认证

    • 以太坊采取匿名身份认证体系,对线上线下的身份匹配无强制要求
    • BCOS使用CA证书的准入机制,支持用户账户管理功能,采用角色和权限模型实现联盟参与者管理,底层平台还预置了控制交易和部署合约的权限和接口
  2. 账户设计

    • 以太坊采用了余额账户机制
  3. 私钥保护

    • 以太坊:无人操作的挖矿、记账节点上不存储私钥,随同这些节点部署的智能合约也不使用私钥,所有私钥均部署于“端”,由用户本地存储。
    • BCOS加密数据的秘钥采用加密机,独立秘钥服务器等方式进行维护,和节点分离存储,报站秘钥的安全性
  4. 支持智能合约

    • 以太坊可实现“图灵完备”的智能合约功能,采取合约和共识相连
    • BCOS运用Solidity合约开发语言,和以太坊的主要合约开发语言一样
  5. 监管相关功能

    • 以太坊:公有链,监管可随时接入;由于匿名身份性,监管意义不大
    • BCOS:支持监管部门和审计部门作为特殊节点的接入,即实时同步数据,并对数据完整性、有效性、过程和流程的合规性进行即时监控。还提供监控、审计数据接口
  6. 特权机制的实现

    特权机制,一类是暂停、回滚或取消交易;二是改正数据

    以太坊在受到智能合约DAO攻击时,只能进行硬分叉,无法进行特权。

    BCOS可以针对特定的业务场景,制定特殊的权限集合。

技术能力

技术能力是每个区块链技术平台的关键能力之一,也是区块链应用企业在选择区块链技术平台过程中的重要考量因素之一。该报告主要从平台业务吞吐量、区块或交易的确认时间、区块链平台可用性等方面进行分析。

  1. 吞吐量

    • 目前Ethereum网络受限于CPU单线程性能,早期测试网络已达25PTS(每秒交易数),优化后可达50或100PTS。真实应用程序负载下,可能会被限制到10tps或更低。
    • BCOS利用PBFT共识机制,在4节点环境下,转账交易的合约调用,性能可达数千TPS,通过平行扩展可满足更高服务要求。
  2. 确认时间
    • 当前Ethereum协议取决于节点根据在计算上开销很高的PoW算法选择用于最长链的下一区块,确认时间也是12秒左右。
    • BCOS支持动态配置确认时间,其所采用的共识算法均可支持1秒出块,出块即达成共识
  3. 可用性
    • 以太坊采用PoW提供了较高的灵活性和可用性。每个节点都独立构造区块而不需要其他节点的参与,节点可随时加入、退出网络。
    • BCOS可支持使用PBFT和Raft两种共识机制,使用PBFT时,系统少于等于1/3的节点故障不会影响共识进行;使用Raft算法时,系统大于等于1/2数量节点出现故障,网络将变得不可用

安全机制

区块链设计中采用了分布式数据存储、共识机制、数字签名、加密算法等多种安全手段和技术。保证数据完整性、不可篡改性和一致性,从而保证数据从交易、共识计算、区块确认、数据存储等生命周期的安全。

  1. 秘钥生成机制——用户账户秘钥层面,各平台均利用非对称加密算法生成公私钥

    • 以太坊生成秘钥机制:随机数发生器生成私钥,再经SECP256K1(一种椭圆曲线算法)生成公钥
  2. 秘钥存储

    • Ethereum秘钥生成后作为文件或字符串保存用户终端或托管到服务器,秘钥文件是一个JSON格式的文本文件
    • BCOS秘钥保存在与区块链节点隔离的服务器、加密文件、USBKey、加密机等。需要使用私钥时,通过安全的内部通信接口或通过用户密码授权访问私钥
  3. 秘钥使用和找回

    Ethereum和BCOS均无定期更换机制,且私钥丢失后无法找回

  4. 防“双花”——二重支付,指攻击者几乎将同一笔钱用于不同交易

    • Ethereum采用余额机制:每个账户都有一个状态,状态中记录了账户当前的余额,转账的逻辑即从一个账户中减去转账的金额,并在另一个账户中加上相应的金额,减去部分和加上的部分必须相等。
    • BCOS基于账户模型和区块高度,对交易生命周期进行检验和控制,避免交易被不正确或不合法的重放。同时,BCOS作为联盟链平台没有内置的原生代币,不存在币的双花问题。此外,BCOS上的数据及资产使用智能合约来定义和进行操作,智能合约图灵完备的特性,能让业务方进行有效性、合法性的判断和控制,从一定程度上保证资产交易的安全性
  5. 隐私保护

    • Ethereum 使用“状态旁路”方案,此策略下,分布式账本可见的只是粗粒度的“批发”,真正细粒度的双边或有限多边交易明细,则不作为“交易”记录在分布式账本上,如果需要更改旁路中资产比例,则将指令加密发送到相应智能合约之中,因此交易明细的变动对于不在合约中的其他用户而言就是不可见的,但“状态旁路”只能达到部分保护的效果。
    • BCOS可在部分业务场景中,引入可信的中央对手方提供信用倍数,交易参与方的交易数据明细对中央对手方为全部可见,但是对联盟链为不可见,由中央对手方对交易进行验证并提供面向全联盟链的证据。
      通过物理隔离、逻辑通道设计,交易明细仅发送给交易牵涉的节点以及可能存在的监管节点,从基础层面防止了隐私数据的扩散。
      BCOS在客户端和智能合约上实现加法同态加密算法。

平台适用性

区块链应用企业在选择技术平台的过程中,应考量企业自身的商业模式与平台应用适用性之间的契合度。目前,金融、互联网、能源、农牧、工业制造等各个行业均广泛探索区块链的应用布局。目前,“联盟链”、“私有链”是主要应用形态,其他应用暂不成熟,“比特币”是唯一较成熟的公有链。

  • Ethereum 是内置图灵完备编程语言的区块链,任何人都能够创建合约和多中心化应用,并在其中设立他们自由定义的所有权规则、交易方式和状态转换函数。
    Ethereum 通过Ethereum社区共治的公链,体现了以太坊平台对公链场景的适用性,但也可以利用它部署联盟链或私有链。
    Ethereum可利用图灵完备的智能合约,适应金融应用、物联网、供应链管理、社交网络、去中心化自治组织(DAO)、预测市场等场景
  • BCOS定位为企业级应用服务的区块链技术平台,其在多链、跨链、分布式存储及隐私保护等方面上的设计,满足其在金融、健康医疗、供应链、工业、物联网、能源服务等多个领域上的适用性。
    另外,BCOS可支持账号管理、资产管理、交易管理、安全控制等模块功能的配置,因此对于多种场景下所需的功能均能较好适用。

从区块链平台与外部数据对接的角度上看,各平台均在架构上预留了身份、策略、数据、过程等应用模块,提供了区块链与链外系统对接的通道,如链外的物联网设备、支付设备、分布式云存储系统、交易系统的对接和外部用户身份的绑定等

开发及工具

  1. 编程语言

    • Ethereum 的客户端主要通过Go语言、C++和Python语言编写,再通过编译器转成EVM语言。Java和Ruby的客户端也即将成熟。Ethereum使用Serpent、Solidity、Mutan和LLL四种语言进行合约编程,其中Solidity为首选。
    • BCOS业务层支持采用C++、Java、Python、JS、Go等语言进行开发,可使用Ethereum的Solidity作为合约开发语言
  2. 配套开发工具
    • 以太坊的社区文档仅次于比特币,在github发布;中文技术文档发布在ethfans.org中。Ethereum官方提供钱包客户端Mist,支持进行交易,同时支持直接编写和部署智能合约。
    • BCOS在Github中发布了源码及一系列的文档支持;提供SDK工具包,在此基础上开发者可开发面向最终用户的客户端程序,在客户端上可以保存链上部分或全部的数据,也可以作为轻客户端访问链上节点。
  3. 接口完备程度
    • RPC接口是Ethereum与其他IT系统交互的接口,Ethereum节点在8545端口提供了JSON RPC API接口,数据传输采用json格式,可以执行web3库的各种命令,可以向前端如Mist等图形化客户端提供区块链的信息。
    • BCOS支持通用API接口,满足跨技术和跨系统对接要求。对业务层提供接口服务,并通过接口和区块链节点进行交互、发送交易、数据查询等。平台提供HTTPS服务端口,采用json编码格式定义功能接口,包括用户数据查询、区块数据查询、合约部署和管理、发送交易、交易数据查询、进行节点之间的通信等。
      BCOS的SDK接口分为面向区块链底层功能和面向业务级别的接口。
  4. 智能合约的可编辑性
    • Ethereum 为用户提供了自主合约创建平台,合约内容可以包含货币转账在内的任意逻辑
    • BCOS合约开发支持solidity语言,具有图灵完备性。具有JVM支持的java开发语言版本正在成熟中

维护支持能力

  1. 版本升级维护与保障

    • Ethereum主要由Ethereum基金会负责
    • BCOS原则上保障向下兼容
  2. 开发者数量

总结

区块链平台调研与分析报告.md相关推荐

  1. 全球与中国区块链安全市场深度研究分析报告

    [报告篇幅]:140 [报告图表数]:174 本文研究全球及中国市场区块链安全现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美.欧洲.中国.日本.东南亚.印度等地区的现状及未来发展趋 ...

  2. 【问链-区块链基础知识系列】 第十二课 区块链产业落地现状分析

    摘要:结合鲸准研究院发布的2018区块链商业落地情况分析报告,然后加入了我参与和了解的区块链落地情况进行整理书写. 我们知道"2018年将是区块链真正与实体经济结合并爆发的一年." ...

  3. “陀螺财经产业区块链平台”上线,现正式开放入驻!

    随着各地产业区块链的深入推进,投资人.创业者.地方园区对产业区块链的相关资讯获取和产业对接服务需求也空前高涨,作为国内领先的区块链垂直媒体平台,陀螺财经接连推出了一系列产业区块链的重磅栏目.为区块链行 ...

  4. 中国区块链教育及人才发展报告(2020)

    报告摘要: 1.据零壹智库不完全统计,截至2020年11月底,已有32所国内高校开展区块链教学研究.其中,16所高校开展/预开展20门学分课程:27所高校设立了33个实验室. 2.与2019年10月相 ...

  5. 文献阅读(44)—— 基于眼底照的近视深度学习算法和区块链平台,以促进人工智能医学研究:回顾性多队列研究

    基于眼底照的近视深度学习算法和区块链平台,以促进人工智能医学研究:回顾性多队列研究 Retinal photograph-based deep learning algorithms for myop ...

  6. 香港珠宝零售商将使用区块链平台追踪钻石

    点击上方"蓝色字"可关注我们! 暴走时评:香港珠宝零售商周大福珠宝集团将开始使用区块链平台追踪钻石.据报道,周大福将部分钻石信息上传到由区块链初创公司Everledger开发.IB ...

  7. 以色列顶级货运公司Zim向所有客户开放区块链平台

    点击上方"蓝色字"可关注我们! 暴走时评:全球航运新闻媒体TradeWinds于1月14日报道,以色列最大的货运公司Zim已向选定行业的所有客户开放其电子提单(eB / Ls)区块 ...

  8. 14家泰国银行支持利用区块链平台将合同数字化

    点击上方 "蓝色字" 可关注我们! 暴走时评:泰国央行宣布,十四家泰国银行联合创建了"泰国区块链社区项目",在区块链平台上实现保函的数字化,利用公共的基础设施降 ...

  9. 区块链技术与应用行业分析报告

    1  区块链前言 1.1  区块链市场 (1)百度指数搜索热度一度与人工智能持平: (2)全球区块链相关公司融资近20亿美元: (3)区块链+日益深入,场景化技术成为新趋势: (4)中国区块链技术专利 ...

最新文章

  1. matlab 2010无法运行程序,matalb r2010a安装后打开出现一系列警告,无法运行,哪位大神帮...
  2. HTML学习笔记_002_如何学习HTML
  3. Java基础知识——类装载器与反射机制
  4. Python学习笔记011——内置函数exec()
  5. 计算机可以保研什么专业吗,【计算机专业推免】推免生是什么?成为推免生要达到那些要求?...
  6. 掌握Tiles框架 (二)-- Tiles布局和定义
  7. matlab读取心电txt数据画图,图解MIT-BIH数据库心电数据下载和Matlab读取程序
  8. 前端学习(1780):前端调试之快速转存站点的方法
  9. 链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表
  10. JavaWeb初学者session的使用
  11. 为什么这么多的广告呢
  12. centos安装python3、redis和虚拟环境
  13. 基于KNN的垃圾邮件分类实验
  14. 【爬虫工具】哔哩哔哩插件姬(bilibili-plugin)
  15. panel组件学习(1)常见属性学习
  16. node.js setup wizard ended prematurely 失败解决方法
  17. Mac系统查看端口占用的进程
  18. linux未编辑的文件,如果是linux没有vi,vim等编辑器如何操..._网络编辑_帮考网
  19. write-back与Write-through
  20. 接口练习(台灯案例)

热门文章

  1. java执行jar包
  2. R5 7520U性能怎么样 R5 7520U相当于什么水平级别
  3. 数据治理价值链模型与数据基础制度分析
  4. 阿拉的小闹闹智能闹钟另辟蹊径做智能音箱 但未来或许喜忧参半
  5. Vegas画面定格怎么制作?
  6. Android弹幕功能实现,模仿斗鱼直播的弹幕效果,跪了
  7. 清华大学梁宸计算机系,30名清华博士生对泉州社会实践总结 《清·泉》一捧 文都精彩...
  8. 现在如何注册台服服务器,《英雄联盟手游》台服怎么注册账号 台服注册账号方法...
  9. JavaScript Date对象时间处理
  10. iOS图片浏览器,控制器只支持竖屏,图片浏览器可横屏,缩放,下载 基于UICollectionView