本文转载自迅雷官方微信群

传统意义上的、甚至是消费者端熟知的迅雷,是那家唯一在美国上市的中国下载服务商,主营业务还是在线广告、游戏和会员。迅雷从2015年开始对分布式计算和区块链领域的布局。这几年,迅雷布局了CDN,推出了C端的赚钱宝和玩客云,商业模式上,完成了用C端硬件节点为表现形式的,对「共享计算」、「分布式CDN」和「区块链技术」方向的探索。

如今的新迅雷,已经转型成为了一个“共享计算”服务和互联网基础技术的提供商。如果说此前的星域CDN和共享云计算业务只是在模式上做了些铺垫的话,那么迅雷链则代表着迅雷向着技术平台化的转变——过去迅雷拥有的下载/上载的能力,现在组成了一个新品的产品链路,迅雷链上拥有了平台级的能力,主要依托的是迅雷已经拥有的巨大算力,以及广阔的节点。

迅雷链,按照官方的说法,就是迅雷“脱虚向实”,让开发者形成技术社区,让区块链赋能实体经济的答案。一方面,它具备强大的并发处理能力,具备划分时代的硬实力。另一方面,高性能的区块链技术方案,助力开发者降低成本,快速部署智能合约,更加便捷地开发区块链应用。特别是在传统实体经济领域,迅雷超级区块链具备了超强赋能能力。

同时,InfoQ也和迅雷联合主办了“2018迅雷全球区块链应用大赛”,并以高达百万元奖金,支持国内外高校人员、科研院所等研究机构、企业从业人员及有志于区块链技术的开发者与研究人员,以个人或团队形式参加大赛并贡献出优秀区块链作品。有意向的伙伴,可以保存以下图片,扫码了解详情并进行报名:https://t.cn/R3wBGRQ

今天我们邀请到迅雷链总工程师来鑫,详细介绍迅雷链的同构多链框架。分享后有答疑环节,欢迎大家进行互动!

1.关于本期分享,大家如果有和主题相关的问题,现在可以在群内@ 主持人提出,我们将先行收集一部分针对性强的问题,待老师分享结束后的问答环节给大家进行解答。

2.分享结束后的问答环节,大家可以进行第二轮,老师会对之前收集的问题进行阐述,也会再次选择现场问题进行解答。注意!!!因为时间关系,有些问题老师可能来不及回答,答案会整理在回顾文当中,下周发给大家。

大家好,很高兴能跟大家一起探讨区块链技术,今天会跟大家介绍迅雷链的同构多链框架,介绍框架之前会先从整体介绍迅雷链的模块组成、迅雷链的整体架构,方便大家理解,也为我们后面几期的分享做铺垫。

下面,我们直奔主题。

首先我们先从整体看下迅雷区块链的技术栈,了解各模块的分工和协作。

最底层我们称为基础层,是构成区块链的最核心组成部分。最上层的应用层,是ToC端的用户直接接触到产品和服务。中间的服务层作为应用和链之间的桥梁,提供应用层需要的接口和服务。下面依次从上到下介绍各层各模块的功能和概要技术原理。

应用层:

1.     账户客户端,主要指迅雷链的链克口袋,负责管理链上资产。链克的查询、兑换请求通过服务层的“数据请求服务”提供的接口完成,链上资产如果是依托于某个智能合约,这部分资产的查询和信息修改是通过服务层提供的合约调用接口转发到基础层的链上执行。

2.     第三方客户端,主要指接入链克兑换的产品和服务,比如迅雷直播。用户在这些应用中使用链克兑换产品和服务,会调起链克口袋扣除相应链克,如果是pc、电视端等会弹出二维码。服务层的“数据请求服务”会跟第三方客户端的后台服务交互,通知兑换信息是否入链成功。

3.     合约应用,指基于迅雷链开发的DAPP。应用中使用的合约通过服务层的“合约部署”服务部署到区块链上。DAPP中的合约调用通过服务层的“合约调用”模块进行校验,合法的才会转到链上处理。

服务层:

1.     安全控制:这一层类似我们做互联网架构的接入层,在这里一个核心的功能就是做好鉴权、合法性校验等安全相关的工作,将问题挡在最外层。

2.     合约部署:合约部署的触发主要是迅雷链内部的审核系统触发,只有企业资质审核通过、产品内容合法合规的才会部署到迅雷链上;同时,迅雷链是同构多链框架,合约会有自己所属的链,合约创建会在这个链完成,而普通链上的用户发起合约调用时,用户所在链请求入块后,需要知道将该请求和区块路由到哪个链上,所以合约部署的时候还需要将合约的路由信息通知到所有链。

3.     合约调用:检查合约调用接口中参数的合法性,比如合约地址是否存在等,对于不合法的请求直接返回失败,合法的会转发给基础层。

4.     数据请求服务:这个模块涵盖了跟链克相关的所有请求,包括查询余额、查询兑换记录、执行兑换。余额、兑换记录请求量很大,所以会在所有接入节点上做缓存,每个节点通过基础层的“订阅及通知服务”,订阅区块信息,当有区块产生得到通知的时候,解析区块内的信息,并修改缓存中的余额和兑换记录。对于执行兑换的请求,会校验合法性,包括签名是否正确等,合法的请求转到基础层。

基础层:

1.     先讲路由模块:当请求到达的时候,路由模块会根据请求中的from地址也就是发起方地址,将请求路由到该用户所属的链;另一方面,当请求入块,需要链间通信将请求和区块信息同步到目的链的时候,也需要路由模块的信息。

2.     链间通信模块:将已入链的区块中,需要跨链的请求、证明信息、区块信息同步到对应链,具体同构多链框架会在后面。

3.     订阅通知模块:刚才服务层也有提到,一些外围的服务,需要及时拿到新入链的区块数据,比如监控服务、余额查询等服务。

4.     共识:这是区块链等分布式存储服务共同的核心模块,区块链的共识比普通的分布式存储服务比如日志服务多了一些安全上的校验,所有参与共识的节点需要对要达成一致的数据也就是区块,校验内部数据的合法性。如何算怎样才是达成了共识,这跟共识算法有关,共识算法由很多,迅雷链采用了pbft,具体算法的原理和选择理由这里先暂不展开介绍了。

5.     账户管理:账户管理主要是账户的密钥对生成,这部分会做成库,给账户客户端使用,另一方面是做账户的权限管理。

6.     请求池:一方面收到请求后先放在这个队列里等待校验合法性,另一方面校验合法性通过后放入等待入块的队列。

7.     智能合约:迅雷链上之后会有越来越多的应用接入,这些应用的业务逻辑代码其实就是智能合约,智能合约代码是独立于区块链程序的,是在区块链程序执行过程中调起的,所以需要在区块链程序中运行虚拟机来解释和执行这段代码,而且因为智能合约里面需要读取和修改区块链上的数据,所以虚拟机还要提供方法来与区块链交互。

8.     数据存储:相比于以比特币为代表的UTXO模型,迅雷链选择了基于账户模型,方便支持智能合约,本地存储系统我们也是选择了leveldb,在数据存储的结构上借鉴了以太坊的精髓,包括交易树、账户树、事件树。每种树都是一个merkletree,在区块头部只存储树的root的hash。

9.     密码学:这也是区块链非常核心和独特的模块,区块链的不可篡改、隐私保护等特点都是源于此,涉及签名、摘要计算、公私钥对的生成等等。

10.     网络通信:区块链中所有参与的记账节点都是对等的,记账节点之间包括请求、区块等信息都需要网络送达,当然要做一个健壮的区块链网络,在网络通信模块还是有很多可做的优化

11.     通用模块:因为账户模型里要存储的数据信息相对较多,而且随着时间推移,链的长度也越来越大,所以数据落盘前需要压缩。事件机制主要是为外围系统提供链上执行合约、链上区块产生等底层支持

了解完迅雷链的系统构成后,我们看一个上链请求的执行过程,方便大家理解迅雷链的同构多链框架。

以用户在客户端应用中发起链克兑换为例。

1.     链克口袋将请求发到链的服务层,服务层从架构角度看的最外层就是接入层;

2.     接入层会根据from(发起方)地址将请求路由到对应链的链,接入层也会判断请求的合法性,针对非法的请求直接返回失败;

3.     外层验证ok后,会进入服务层从架构角度看的内层,会验证请求是否为重放、余额是否不足等;

4.     服务层验证通过的请求到达基础层,基础层从架构上看就是我们的记账节点,也叫验证人;

5.     记账节点之间转发请求,记账节点中本轮的proposer负责发起区块,区块数据在几个记账节点之间也相互转发,收到区块的节点进行投票,并把投票信息广播,根据我们的pbft共识算法记账节点达成共识,区块入链;

6.     新区块产生后,记账节点中链间通信的模块会针对新区块中涉及跨链的请求,依次根据请求的目的链,将跟该目的链有关的请求原始数据、本链的区块头信息、本链的交易证明信息等转发给目的链的记账节点

7.     目的链的记账节点将收到的信息转发,并达成共识,将请求写入目的链区块的同时也完成了目的链对应地址的余额增加。

看完一个请求的基本处理过程,我们再从更上一层的角度看迅雷链的同构多链框架。

所谓同构多链框架,顾名思义就是有多条链,每条链上运行的程序是一样的。不同用户的请求会发到不同的链上进行处理。

当A、B、C、D同时发起请求,比如有 A->B,A->C,A->D , ​同时有B->C, C->D,D->E。A、B、C、D根据路由规则落到不同的链上,四条链可以并行进行处理,如果一条链每秒的打包请求并落区块的速度是1000,那么上千条链,就可以达到百万TPS。

对于普通请求,手续费是固定的,这种链间的处理是相对容易的,而支持智能合约,需要一些额外的处理。

因为要防止恶意的合约或者合约本身的bug导致占用大量资源,所以需要根据合约执行情况收取相应的手续费。

手续费是需要从请求发起方的账户里扣除的,而真正执行合约的是在合约所在的另一条链,所以最终需要的手续费具体值,在发起请求方所在链入链这笔请求的时候尚未可知,这怎么办呢?

我们想到的解决办法是在发起方所在链扣除请求中传入的gasLimit值,也就是用户指定的手续费的上限值,这个请求入块后同步到合约所在链,合约执行后请求入块能知道这笔请求真正扣掉的手续费,再通过链间通信将链里面入块的合约调用的请求同步到发起方所在链,发起方确认合约链的区块数据,并把多扣掉的手续费加回给发起方。

这些对账户余额的操作在链上都有相应的操作记录写入,方便对账。

最后要讲的是,整个体系如何水平扩展,也就是整体性能怎么实现想提高就提高。

通过上面的介绍我们知道整体吞吐的提升,主要通过增加新链的方式,那怎么能做到轻量地增加新链呢?

路由规则目前我们选择的是最简单直接的针对地址取模,比如针对1024取模,因为地址是根据公钥经过hash运算出来的,整体是随机分布的,所以基本上所有用户会平均分布到这些链上。

以当前有1024条链举例,编号为0-1023,地址取模结果是1、1025、2049、3073、……会落到1号链。 ​那么当我们想扩容到2048条链的时候,实际上是原来每条链上的一半用户迁移到新链。新链启动时区块数据来自原来的链,比如1025号链的数据来自原来的1 号链,原来在1号链上地址取模为1025、3073、……的用户数据之后会都落在1025这条链;而原来在1号链上地址取模为1、2049、……的用户数据之后还在1号这条链上。

通过这样的方式让扩链的整体变动最小化。

今天更多的从架构和设计的角度给大家做的分享,更多具体的细节我们会在下面几期针对大家感兴趣的点展开来谈。

迅雷将在5月16日在北京召开“迅雷区块链生态及新品发布会”,会上将发布星域云新品及迅雷区块链生态并揭秘迅雷链。感兴趣的同学可以扫描二维码报名,现场还有豪华开发者大礼包赠送!欢迎大家到现场交流!

报名链接: http://www.huodongxing.com/event/2438574522700​​​

迅雷链同构多链框架解析相关推荐

  1. 超级账本、微众银行与迅雷链同台论链 区块链将从技术共识走向应用共识

    文丨互链脉搏编辑部 未经授权,不得转载! 9月6日下午,由工信部电子五所指导,互链脉搏联合超级账本.FISCO BCOS开源社区.迅雷链.重庆区块链测试中心主办的2019全球开源区块链技术论坛在深圳举 ...

  2. 迅雷链DAPP插件:链克袋鼠Linker让链克持续爆发

    链克袋鼠Linker 是 Google Chrome 浏览器.360浏览器.火狐浏览器的扩展,将链克与 Google Chrome .360浏览器.火狐浏览器相互结合,在 Chrome 浏览器.360 ...

  3. 迅雷链技术沙龙第一站:百万级TPS是怎样炼成的

    9月15日下午,由迅雷集团主办的链创未来·迅雷链技术沙龙在北京举行,作为此系列技术沙龙的首期活动,本期邀请了来自迅雷链开放平台产品负责人.研发负责人.研发工程师.HGBC等企业的技术大咖,为区块链爱好 ...

  4. 迅雷链的百万级TPS是怎样炼成的

    9月15日下午,由迅雷集团主办的链创未来·迅雷链技术沙龙在北京举行,作为此系列技术沙龙的首期活动,本期邀请了来自迅雷链开放平台产品负责人.研发负责人.研发工程师.HGBC等企业的技术大咖,为区块链爱好 ...

  5. 区块链竞赛中国加速超越美国 迅雷链在自主创新上贡献了“4个第一”

    文丨互链脉搏·梁山花荣 未经授权,不得转载! 在区块链竞争的主赛道上,中国正在加速超越美国. "目前全球区块链版图分布中,已经形成了以中国和美国为首的竞争格局,在原创专利.创新技术方面,中国 ...

  6. 区块链框架:迅雷链VS石墨烯

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

  7. 迅雷链总工程师来鑫:区块链3.0需解决4大难题

    11月30日,多位行业专家齐聚2018国际区块链大会共识机制专题论坛,共同探讨区块链共识机制技术,迅雷链总工程师来鑫表示,迅雷自主研发的迅雷链已经攻克区块链3.0阶段的性能.效率.扩展和存储难题,为区 ...

  8. 区块链3.0谁为主链?EOS、迅雷链争冠亚——以太坊、EOS、迅雷链、小蚁、量子链最详评测

    蜂巢财经研究院出品 作者:乾元 :制图:叶梓 在所有区块链项目中,主链是市值最高的,就跟房地产行业,开发商市值最高,因为它承载着其他相关建设. 从海外团队建设的以太坊(EHT)到柚子(EOS),从国内 ...

  9. 《迅雷链精品课》第八课:迅雷链多链结构

    上一节课我们学习了以太坊数据存储的相关内容,今天我们深入学习迅雷链的多链结构.通过这节课我们将了解迅雷链和主流区块链的特性,了解单链和多链各自的优缺点. 主流区块链单链的缺陷 单节点数据量大 比特币. ...

最新文章

  1. mysql 函数返回表格_mysql 数据分析如何实现日报、周报、月报和年报?
  2. python 学习笔记(08)
  3. [20150409]只读表空间与延迟块清除.txt
  4. 前端性能优化之防抖-debounce
  5. 用Fidder实现IOS手机抓包
  6. [渝粤教育] 中国地质大学 C语言程序设计(新) 复习题
  7. Ubuntu16.04 UltraEdit 安装破解使用
  8. Logback.xml 文件    配置
  9. matlab求最大公约数和最小公倍数
  10. 计算机二级c语言编译题评分,计算机二级C语言题型和评分标准
  11. java学生成绩管理设计报告_Java 学生成绩管理系统(含论文,开题报告)源码
  12. 二级C语言考前学习资料(机试)及C语言程序二十四种大题题型
  13. Vue 当一个页面上,需要编辑,审核,查看详情的时候,隐藏和展示
  14. Questa-sim安装最后一步点了是之后,安装了hardlock.sys文件导致电脑无限蓝屏重启的解决方案
  15. 启用共享文件夹服务器,Windows Server 2008 启用公共文件夹共享
  16. 单元测试--学习大纲
  17. 【开讲啦】20150814 余秋雨:寻找远方的自己
  18. MSYS是什么,他与CYGWIN有什么区别?
  19. 算法【哈希】 | 哈希表
  20. AndroBench手机性能测试【转】

热门文章

  1. 安装hmc会依赖bios时间吗_VMWARE安装HMC
  2. 检测整数是否含有7 或 是7的倍数
  3. Win10的Wifi图标变成了小地球(WLAN被禁用)
  4. 【GXOI/GZOI2019】逼死强迫症(生成函数)
  5. .bxl 格式 转 adtium designer 格式
  6. Python爬虫进行接口测试
  7. php联图生成二维码浏览器扫可以到页面,但是QQ或微信扫直接显示链接
  8. 什么是OAuth2,微信登录前后端实现,Coding在线(十三)
  9. ChinaNet无线接入后,浏览器自动跳转到登陆界面的原理
  10. 微信JSAPI支付实现