最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

跨链“战事升级”:迅雷链如何更好地跨链、打造信任协作?

  • 2019-08-23
  • 本文字数:3940 字

    阅读完需:约 13 分钟

跨链“战事升级”:迅雷链如何更好地跨链、打造信任协作?

数据孤岛、信息孤岛,对于区块链行业而言已不再是新鲜名词。正如大家所知道的,目前大部分链与链之间采用的是“烟囱式”的建设模式,每条链都是独立、垂直、封闭的体系,数据本身蕴藏的信息和价值无法自由快速流通,生态无法对接,严重制约了区块链行业的整体发展。


因此,打破不同区块链间通信壁垒的需求层出不穷,解决区块链网络互通问题成为了区块链技术发展的的新趋势。


2019 年 6 月 30 日,“链间通信,链接未来”迅雷链技术沙龙在深圳举办,来自迅雷链开放平台研发负责人张慧勇、迅雷链底层研发工程师李海友、中山大学数据科学与计算机学院教授郑子彬、迅雷链开放平台产品负责人马双阳,以区块链在通信领域的技术突破为基础,解读如何利用 P2P 网络构建互联、互通、互信的通信网络,迅雷链如何利用跨链架构实现 TPS 拓展,并结合迅雷链的平台与生态,为开发者提供高可用的实践经验。

跨链架构的设计与思考

当下,全球正在跑步进入“区块链 3.0”时代,区块链越来越偏向服务于实体行业,注重在各行各业的落地应用,提供低成本的信任基础设施。


但是,TPS 低、交易确认不及时、链间价值无法传递以及安全性存疑等问题一直是区块链落地的“拦路虎” 。对此,迅雷链的“同构多链”框架应运而生。


所谓同构多链框架,顾名思义就是有多条链,每条链上运行的程序是一样的。不同用户的请求会发到不同的链上进行处理。单个节点只需负责单一链上的相关数据,不仅对存储的需求变小,同时性能得到了极大提升。而为保证系统的安全稳定,迅雷链利用 PBFT 的确定性特性完成链间通信。并支持动态扩链,为以后的扩展提供良好的基础。


如下图所示,为多链架构示意图。左边不同的交易进来,通过接入层手心把它做一个链的分配,相当于是做链的路由。不同的交易会进入不同的链,首先看这笔交易的 From 账号在哪一条链, 若有跨链处理需求 ,则通过 Zone 拷贝链间信息 。其中,MetaChain 支持动态扩链,解决下发新的路由配置更新到接入层上,在不同的链之间同步链间信息以及每条链的信息。



那么,在此架构上,如何进行跨链通信呢?


如下图所示,迅雷链会对交易进行分组,确定这条链上的交易。通过 Merkel 证明,将发往每条链的信息生成交易证明 。通 Relay node 把信息发到链里,这不仅是利用流程把跨链信息转移过去,仍然还需要利用共识算法。



PBFT 达成共识的过程分为三个阶段:准备前,准备和提交。共识过程是:


1.准备前阶段:节点为从客户端收到的请求分配提议编号,然后发出预准备消息以广播给其他节点;


2.准备阶段:其他节点收到预准备消息后,检查消息的有效性。如果检查通过,它会向其他节点发送准备消息,并带来自己的 ID 信息,并从其他节点接收准备信息。接收准备消息的节点也检查消息的有效性,并且在整个网络中验证的节点中至少有 2/3 实际上将进入就绪状态;


3.提交阶段:向整个网络的所有节点广播进入就绪状态的消息,然后所有节点投票,并且在投票数达到 2/3 后消息通过。


另外,在算法里很多地方要求三分之二的节点投票。假如三分之一以上的节点不在线或者产生恶意的行为,这会导致 PBFT 整体算法陷入停滞的状态。因此迅雷链引入了 DPoA 避免 PBFT 的停滞可能性。


首先从 150 万个节点中选择具有稳定在线,平滑传输和良好性能的高质量节点,并集中到另一个池中。然后使用 DPoA 算法从候选池中选择一定数量的节点,以形成整个链的计费网络。这些节点定期轮换并重新选举,以防止会计节点被外界暴露和攻击。


迅雷链通过创新多链架构达到百万级 TPS ,为将来区块链应用落地打下良好的基础,同时提供低成本上链环境,通过开放平台提供丰富的业务组件,方便商业用户接入。

P2P 网络的原理与应用

P2P 网络是去中心化系统的基础组件,应用在多个去中心化系统中,包括 eMule、ethereum、迅雷链文件系统 TCFS 等。典型的区块链分为基础层、核心层和应用层,P2P 网络正是位于区块链的基础层,为区块链服务。


P2P 网络协议有很多种,传统 BT 下载类应用常用分布式哈希表(DHT)算法,具体的就是 Chord,Kademlia 算法。

Chord 算法

Chord 算法是最为经典的实现。网络中每个节点分配一个唯一 ID,可以通过机器的 MAC 地址做 Sha1,是网络发现的基础。



假设整个网络有 N 个节点,并且网络是呈环状。两个节点间的距离定义为每个节点会存储一张路由表(Finger 表),表内顺时针按照离本节点 2、4、8、16、32.……2i 的距离选定 log2N 个其他节点的 IP 信息来记录。


存储方面:数据被按一定规则切割,每一份数据也有一个独立 ID (查询 Key),并且和节点 ID 的值域是一样的。然后查找节点,如果存在和数据 ID 一样的节点 ID ,则将这份数据存在该节点上;如果不存在,则存储到离该数据 ID 距离最近的节点上。同时,为了保证数据的可靠性,会顺时针往下找 K 个冗余节点,存储这份数据。


查询方面:先从自己的路由表中,找一个和数据 ID 距离最近、并且存活在网络中的节点 Next。如果该节点的 ID 巧合和数据 ID 相等,则查询成功。如果不相等,则到 Next 进行递归查找。一般或需要经过多次查询才能找到数据所在的节点,而这个次数是可以被证明小于等于 log2N 的。

Kademlia 算法

Kademlia 算法其实是在 Chord 上做的优化。主要是两个点:


1、用二进制(32/64/128)表示一个节点的 ID,两节点的 ID 异或运算得到节点间的距离。


2、 每个节点保持的路由信息更丰富,同样是将整个网络按照划分成 log2N 份,在 Chord 中,是保持 log2N 个路由节点,但在 Kademlia 里面,是保存了 log2N 个队列。每个队列长度为配置值 K,记录网络中对应节点区域的多个节点,并且根据活跃时间对这些节点进行换入换出。



与 Chard 相比,Kademlia 算法一方面方便进行网络划分,节点按照二进制中每一 bit 的 0 或 1 建成一棵二叉树。另一方面可以使得节点查询更迅速。从分割情况可以得知,最坏情况不会差于 Chord,但保存更多的节点使得命中概率更高。另外队列中根据活跃时间进行换入换出,更有利于在 P2P 这种节点变更频繁的网络中快速找到有效的节点。


在 P2P 网络应用上,最典型的例子是比特币以及以太坊。


比特币是没有层次、无结构的去中心化网络。Bootstrap 使用 dns-seed 和硬编码 seed;有 upnp,但没做打洞;交易泛洪传播,也就是病毒式传播;节点不断向其他节点寻找更近的节点并记录。而值得一提的是,比特币为提高区块及交易的传播速度,使用了加速网络,并且不止一个。通过一定中心化的节点协助区块的传播。


相比之下,以太坊则不太一样,使用了结构化的去中心化网络,用 Kademlia 优化网络的拓扑结构。其交易以及区块的传递仍然是泛洪传播,系统中每个节点都要存区块数据。同样只有 upnp,没有做打洞。Kademlia 做了一定的优化,节点加入时,find_node 对象不是自己,而是随机目标 ID。而因为使用了 Uncle Block 的策略,区块的浪费程度更低,以太坊没有加速网络。


而相对于比特币和以太坊没有做打洞,迅雷链 TCFS 在 P2P 网络中进行了不同的探索。TCFS 是为区块链而生的高可用网络存储系统。可以有效避免其他基于区块链的文件系统,在存储文件后,文件的有效性要通过数据提供方时刻关注,去检查数据保存是否靠谱,以及网络过程中安全性是否足够的问题,保障迅雷链文件系统的安全性。



TCFS 设置了冗余编码切片存储和文件自愈机制,以实现高效率和高可用性;采用 Merkle-DAG 管理文件信息,建立信任机制,保证存储高可靠;建立权益保护和授予机制,仅文件拥有者和被授权者通过令牌才可下载。


此外,迅雷链文件系统 TCFS 结合了打洞穿透和中转 Relay 结合的方案,普通的用户节点、边缘节点和骨干节点组成强大的 Relay Network。连通性达到 99%以上的同时,还达到了性能和成本的最佳平衡。

区块链通信产品设计的 4 个核心模块及 5 大特性

区块链通信网络主要面对并需要解决的是用户隐私、数据丢失、数据所有权、价值归还四个问题。而对于这几个方面,区块链通信网络产品该如何设计?


区块链通讯产品设计的核心模块分为四部分:


第一, 分布式存储。文件通过非对称加密算法加密,加密后单个文件被切分为几块分布式地存储在不同节点服务器中,只能通过特定私钥重新组合。


第二,经济激励。Token 直接同用户会员等级挂钩,有更多 Token 的用户会被允许来解锁高级功能、升级会员等。


第三,会话加密。会话唯一 Hash 保证通讯的隐私,安全协议的传输是由地址的私钥进行。进入通信网络,则需要持有钱包地址的公钥,同时对私钥签名,对所有对话进行非对称加密。


第四,共识算法。随着链上数据越来越多,而在通讯网络的场景,会有极其庞大的数据传输,如:会话、照片、语音、视频等,会造成区块交易的延迟。此时可以采用迅雷链 DPoA+PBFT 的共识算法,以此来提高速度。


同时,区块链通信产品设计还要满足以下特性:


第一, 绝对匿名:免注册、无需电话和邮件、不收集通讯录位置、不暴露 IP ;


第二,运用 DPoA+PBFT 共识算法;


第三,开源可信,区块链通信产品公开特性时所有代码是公开的,并且提供 SDK、API 接入的方式;


第四,支付体系,如在会话内支付,产生系统费用和付费消息;


第五,去中心化存储,主要满足可靠存储和区块链验证消息传输的环节。


以版权中心搭建解决方案为例。迅雷为中国版权中心推出 DCI 体系标准联盟链提供区块链技术支持,本质是信息传送的过程,主要是对普通 IP 创作者上传作品,在他的平台上进行验证,生成 DCI 码,迅雷链把 DCI 码通过平台地址进行交易的执行,生成独有的哈希,通过哈希的方式查看功能信息的,并可以通过哈希分析在云存储里的加密,形成完整的阅读。



区块链通信网络应用,目前来说在国内最大的问题是如何拥抱监管。点对点的存储方式主要是中间没有中心化机构的管控,假如发送一些非法的信息,还是比较难以受到监管。这种环境在国内需要研究如何把应用跟监管合作,用相对合适的方式打通,使应用得到很好的推广和普及。


2019-08-23 18:122433
用户头像
孙春鹭 InfoQ 编辑

发布了 27 篇内容, 共 10.4 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

系统化服务构建-软件工程分层

图南日晟

微服务 软件工程 架构设计

世界那么大,你有偏见吗?

谢锐 | Frozen

创业 技术管理

怎么控制老板不断加需求?

kimmking

要和竞争对手做比较吗?

邓瑞恒Ryan

创业 战略管理

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

我的时间管理之路(附工具集合及使用心得)

YoungZY

App 时间管理

ARTS打卡 第1周

引花眠

ARTS 打卡计划

ARTS week 1

丽子

阿里的OceanBase上天了,但你还不会用Explain看SQL的查询计划吗?

Super~琪琪

MySQL 数据库 后台开发 后端

Java开发工具与HelloWorld

编号94530

Java eclipse Hello World ! IDEA 开发工具

技术工作中的颜值

N维空间的尘埃

Flink 完美搭档:数据存储层上的 Pravega

Apache Flink

大数据 flink 流计算 实时计算

df 和 ls 命令执行夯主

首富手记

生产力

【转载】如何在团队中做好Code Review?

北纬32°

docker19.03读取NVIDIA显卡

首富手记

Docker Dockerfile

Java运算符实际运用

凌轩

Java 编程语言

重新开始,被自己搞砸的生活

小天同学

个人感想 日常思考

这个名字,你不能再读错了

小天同学

历史 科普

美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养

神经星星

人工智能 程序员 李飞飞 硅谷 AI 伦理

如何在团队中做好Code Review

Ken

团队协作 代码审查 Code Review 代码质量

C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

Python名人堂

C# .net 算法 LeetCode

孩子,我们在睡前一起来阅读 15 分钟的好书,让彼此都带着好的故事入眠。

叶小鍵

正确阅读 托马斯·奥本 Doug Antin 蒂·泰德罗克

我们都可能陷入经济困境

董一凡

生活

不要抱怨,也别憋屈

孙苏勇

职场 随笔杂谈

写给产品经理的信(2):产品设计能力怎样进阶

punkboy

产品 个人成长 产品经理 产品设计 进阶

字符与编码

引花眠

计算机基础 utf-8

自制操作系统

贾献华

谈谈控制感(10):怎么做一个靠谱的人

史方远

职场 心理 成长

实战 Java8-CompletableFuture

子路无倦

Java 多线程 java8 CompletableFuture

已发表的技术文章-大数据方面

绝影-大数据

关于用户体验的一些思考

AR7

android 产品开发

跨链“战事升级”:迅雷链如何更好地跨链、打造信任协作?_区块链_孙春鹭_InfoQ精选文章