迅雷链(Thunder Chain)是由迅雷旗下网心科技打造的超级区块链平台,是全球最大规模ToC区块链商业生态,赋能实体经济,致力于成为ToC现象级区块链应用的摇篮。迅雷链具备全球领先的百万TPS高并发、秒级确认的处理能力。

迅雷链使用创新性的同构多链框架,支持水平扩展,每条链运行相同的程序,负载均衡算法负责路由,提高系统整体吞吐量和处理能力。

同时迅雷链底层实现是自主研发的区块链开发框架,其中实现了区块链相关的通用功能,共包含11个模块:路由模块、跨链模块、订阅通知模块、共识、账户管理、请求池、智能合约、数据存储、密码学、网络通信、通用模块。框架在设计与实现中,对系统功能的扩展做了充分的考虑,因此迅雷链很容易做功能上的扩展。如支持多种特殊交易格式、支持扩展数据资产类型等。这使得迅雷链拥有持续交付能力,不断对区块链的性能、存储、虚拟机、业务支持等方面存在的问题进行优化和创新,领跑和推动全球区块链技术和行业的发展。

迅雷链区块链框架为区块链行业提供了一套比较完善的区块链解决方案,同样作为区块链框架,业内比较早期的石墨烯框架当时也引起了广泛的关注(石墨烯是Dan Larimer用C++实现的一个开源的区块链开发框架)。

石墨烯框架中设计和实现了区块链的基本功能,如DPOS共识、P2P,对象模型、存储、插件机制等多方面的内容。在石墨烯框架上,结合业务进行二次开发,可以实现满足特定业务功能的区块链。bitshares、steemit和EOS都是基于石墨烯框架实现的。下面介绍石墨烯框架的区块结构、存储、共识算法方面的内容。

区块结构

链式区块的基本数据结构都是一棵树(考虑有分叉的情况),石墨烯的区块链也不例外,一个区块中包含上一个区块的id,每个区块的id为区块内容的MAC。

石墨烯的区块链中,每个block由block header和transaction list构成。block header中包含previous、block_num、digest、witness和transaction_merkle_root等主要内容。其中previous为前一个块的id,digest为块id,witness为出块者。transaction list为本块打包的交易集合,transaction list的结构与其他区块链不一样。石墨烯的transaction list中的每个transaction并不只是一个交易的操作,而是支持多个operation的集合。一个operation是一个基本操作的定义,如转账、投票等。一个transaction里可以包含多个operation。但是这些在一个transaction里的operations依然保持事务的特性,也就是在同一个transaction里的operation要么都执行,要么都不执行。石墨烯区块链没有独立的虚拟机,不支持智能合约。所有操作都由operation来定义,如gas计算、撮单等。如果需要扩展operation,只需要实现相应的接口即可。

存储

石墨烯中的存储使用的是文件存储。也就是说石墨烯中所有数据都以文件的形式进行组织和管理,并没有使用数据库。这样的存储选择有着明显的特点,框架需要实现数据的管理功能,石墨烯框架在启动和运行时,需要将大部分数据加载到内存,因此对内存的要求非常之高。石墨烯框架中定义了对象模型和索引模型,所有的对象实例都有一个全局唯一的id编号,如图2所示。

一个对象编号包括三部分内容,space_id、type_id和id。space_id标识是否协议对象,正常都为1,type_id表示对象类型,id为此类型是第几个创建的实例。space id 占最高 8 位, type id 占中间 8 位, 最低 48 位是 id。如一个账户的对象id为1.2.12376。石墨烯的对象索引实现其实使用的是vector和map,由于所有的索引数据都会加载到内存,所以B+树无法发挥减少IO的优势。

共识

石墨烯的共识算法使用的是Dpos,系统中最重要的角色是witness和committee。 witness是通过投票产生的,系统有个witness维护时间周期,没到周期进行一次witness、committee等的更新。Committee由得票最多的11个人组成,Committee的职责是修改系统参数,无法左右出块。Witness负责出块。

其中投票统计和洗牌过程决定了出块的witness。

在收到一个new block时,如果new block前一个block不是当前块,并且块高高于当前块高会进行分叉判断和处理:

1)找到两个叉的LCA。

2)回滚到LCA。

3)沿最长链,依次push_block()。

石墨烯通过记录每一步的undo日志,实现了操作的回滚。每出现切换分支时,先找到最近公共祖先进行回滚操作,然后执行新的block的操作。

石墨烯的共识中,并没有对数据状态进行共识,只对操作序列进行共识。也就是说,如果出现某个节点的数据状态不一致,只有事务还能正常执行,那么这些不一致并不会被发现,也不影响整个链的运行。

迅雷链与石墨烯

上面介绍了石墨烯的主要部分的实现细节,同样作为区块链开发框架,下面从多个方面来比较两个框架。

1)共识

迅雷链的共识算法是优化过的PBFT算法,只有通过超过2/3的验证节点的投票,才达成新块的共识,不会出现分叉的情况。相比于石墨烯而言,迅雷链有最终确定状态。只有交易被打包上链,那么这个交易就是一个最终被确定的交易,不会出现回滚或分叉的情况。比特币的6个块的确认时间或石墨烯的最长链,从理论上都不是最终被确定的,与迅雷链在这点上有着本质的区别。与此同时,迅雷链的共识机制也是交易秒级确认的基础。

2)智能合约

石墨烯框架作为一个底层框架,封装了区块链底层功能,也提供功能的扩展机制,但其并不是一个可编码、图灵完备的区块链,不支持智能合约。实现一个DAPP,需要在石墨烯框架上做二次开发,但是开发和维护成本都比较高。迅雷链底层实现了可编码、图灵完备的VM,同时迅雷链的智能合约兼容EVM,支持Solidity。在迅雷链上做DAPP的开发和部署非常简单,只需要编写相关的业务代码即可,不需要深入了解底层区块链的实现。迅雷链正在不断完善VM,优化智能合约的安全、审计、开发工具等功能。

3)性能

石墨烯的共识采用的是Dpos,从算法层面性能要优于PBFT,是牺牲了一定的一致性得到性能的提升。石墨烯框架作为底层框架,本身没有水平扩展的能力,要做到水平扩展需要进行二次开发。迅雷链是同构多链框架,可根据需求进行水平扩展。比如迅雷链有1024条链,路由规则使用的是简单取模,将地址空间平均映射到1024条链上,当需要从1024条链扩展到2048条链时,我们将原来的每条链扩展成为2条,如1号链扩展后为1号链和1025号链。地址空间的映射规则将原本映射到1号链的地址平均映射到1号链和1025号链上。这样的设计支持无限次扩展,并且对链的变动非常小。迅雷链的同构多链框架使得迅雷链可达百万TPS,并且支持弹性扩展。

4)功能扩展

作为区块链底层框架,支持功能方面的扩展非常重要。区块链最终是要服务于各行各业,就会有各自的特×××需求,这也要求底层框架要有强扩展性。石墨烯框架是比较早期的区块链框架,当时的区块链技术更多的是解决数据资产相关问题,所以在功能扩展性上面支持得不够。目前有一些项目是基于石墨烯实现的,如bitshares、steemit和EOS。基于石墨烯框架进行功能扩展,必须深入了解石墨烯框架的代码实现,虽然石墨烯框架中提供了插件机制,但插件能支持的功能非常有限,只适合做监控、数据上报等周边功能。另外石墨烯框架不支持智能合约,也就是不可编程的、非图灵完备的。这决定了基于石墨烯框架的区块链,面对版本升级、功能迭代都非常困难。迅雷的区块链框架充分考虑了功能性扩展,同时支持智能合约,实现了可编程的、图灵完备的VM,还支持交易格式的扩展。传统区块链的交易格式只支持资产转移相关功能,迅雷链将来会对交易格式进行扩展,以支持更多类型的交易。

5)生态

区块链的发展需要一个健全、良性的区块链生态,石墨烯是比较早期,目前一些项目是基于石墨烯框架实现,如之前提到的bitshares、steemit和EOS。这些项目是为了解决某个特定领域问题,对框架进行了二次开发,虽然使用同一个底层框架,但应用之间依然是孤岛的存在。迅雷链正在引领区块链3.0时代,建设一个区块链生态,解决行业难题,积极推动中国区块链事业。迅雷在区块链生态建设上有着天然的优势,迅雷星域云的共享经济和区块链技术高效利用普通用户闲置的带宽、存储、计算等资源,降低计算与存储的成本。

6)应用落地

区块链技术最终还要支撑实际业务,迅雷链采用独创的同构多链框架,请求秒级确认,达到百万TPS,这为支撑应用落地提供性能上的保障,同时迅雷的共享经济生态为充分利用c端闲置资源,降低了计算和存储的成本。极大的有助于解决区块链行业费用昂贵、性能与存储瓶颈的技术难题,实现企业级应用的落地。迅雷还举办了“2018迅雷全球区块链应用大赛”,赛题涉及区块链+公益、医疗、教育、社交、交通出行、商品鉴伪、版权等领域。目标是寻找国内外区块链领域具备创新能力的优秀人才以及项目。大赛向所有参赛者开放迅雷链,企业和个人开发者可以轻松上链,使自己的产品和服务具备可信、公开、透明、可追溯的特性,开发成本、迁移及维护工作量大幅降低,并提升业务效率,从而可以自主构建多种新型区块链应用,实现场景铺展。

区块链框架:迅雷链VS石墨烯相关推荐

  1. Substrate区块链框架学习小组

    Substrate框架是什么 Substrate是一个由Rust语言写的区块链开发框架,是目前业界最强大,特性最丰富的区块链框架之一.使用Substrate,你可以很方便地搭建出一条链(solo链). ...

  2. 阿里、中兴、中国联通打造物联网区块链框架

    3月22日讯,据Bitcoins Channel报道,中国电商巨头阿里巴巴集团.跨国电信公司中兴.中国联通以及中国工业和信息化部即将联合起来共同打造一个物联网区块链框架. 这些公司已经接触了联合国负责 ...

  3. 工信部与阿里牵头即将联合打造物联网区块链框架

    据Bitcoins Channel报道,中国电商巨头阿里巴巴集团.跨国电信公司中兴.中国联通以及中国工业和信息化部即将联合起来共同打造一个物联网区块链框架. 这些公司已经接触了联合国负责国际电信事务的 ...

  4. substrate 区块链框架 (1)概述

    1. 定义 Substrate是一个具备区块链核心要素(例如数据存储,p2p通讯,共识算法,密码学组件等).可用于构建开源.模块化和可扩展区块链的基础技术框架. Substrate把一个区块链运行所需 ...

  5. python区块链框架_20分钟,我用Python实现区块链架构!

    文章目录区块链到底多神奇 一起动手创建一个极简的区块链 为"瘦小的"区块链"增肥" 添加POW共识算法 开采新的区块测试 零基础Python实现区块链架构视频观 ...

  6. python区块链框架_从零开始创建一个区块链应用(Python版)

    2018年什么最火?非区块链莫属! 一时间网上各种介绍区块链的文章层出不穷,但大多数都是从概念层面进行解释的,本文则从技术层面讲解,如何从零开始创建一个区块链应用. 本文使用Python开发,读者需要 ...

  7. 以太坊DPOS私链搭建--使用gttc,搭建一个可用于性能测试的区块链框架(1)

    遇到的一些坑 bootnode 一直不起作用,所以决定不用它,改用static-nodes.json 在阿里云机器上编译gttc 系统Ubuntu16.04 想把eth服务部署到docker中方便移植 ...

  8. Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念

    企业选型的区块链底层技术 Hyperledger Fabric 概念 2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术. Hyperledger Fabric ...

  9. 多代理区块链框架客户端的操作

    客户端执行计算.计算状态.构造迭代的框架.压缩并将它们报告给背书者.我们假设存在背书人分配策略.由于利普希茨的连续性,所以会有如下公式: 因此,迭代之间的状态更新(差异)被限制在前一次迭代的偏差的一个 ...

最新文章

  1. 【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本
  2. java二级下拉菜单_航菜单栏中的二级下拉菜单
  3. Linux环境下查PG库的慢sql,postgresql慢SQL
  4. php如何防止超发,PHP+redis实现的限制抢购防止商品超发功能详解
  5. linux下wget的用法
  6. 飞康CEO:敢于向传统的灾备法则说“不”
  7. JSON——入门语法、对象、数组
  8. spring boot ---- jpa连接和操作mysql数据库
  9. js隐藏和显示div
  10. matlabeig函数根据什么原理_vue3.0 源码解析二 :响应式原理(下)
  11. python file operate example - 2
  12. 攻防比赛_猿人学攻防比赛第一题记录
  13. Socket Tools的使用
  14. java给视频添加水印_javaCV视频添加水印
  15. 安装oracle提示javaw,为什么oracle 9i 安装时,setup exe javaw exe进程消失
  16. 【2019年5月6日】指数估值排名
  17. 花了一年时间开发的YBC管型三维预览控件
  18. 关于 ‘cosylocal‘ 进程占满内存的问题
  19. Matlab快捷键等总结
  20. 两个单词之间的编辑距离

热门文章

  1. 年轻人钟爱的手机APP软件 你跟上时代潮流了吗
  2. DEH系统服务器,东汽DEH服务器配置
  3. 大厂与小厂招人的区别,看完多少有点不敢相信。
  4. C#--深拷贝和浅拷贝
  5. 3D草图的绘制-放样曲面·
  6. STM32F407——SPI笔记
  7. 尚筹网(众筹项目实战)
  8. UVALive4374 Drive through MegaCity
  9. 创龙Xilinx Zynq-7000系列SoC高性能处理器开发板的RTC座、SMA端子
  10. python中.find函数的使用方法及实例_Python3.6find()方法使用及示例