作者丨LuLu
数据孤岛、信息孤岛,对于区块链行业而言已不再是新鲜名词。正如大家所知道的,目前大部分链与链之间采用的是“烟囱式”的建设模式,每条链都是独立、垂直、封闭的体系,数据本身蕴藏的信息和价值无法自由快速流通,生态无法对接,严重制约了区块链行业的整体发展。
因此,打破不同区块链间通信壁垒的需求层出不穷,解决区块链网络互通问题成为了区块链技术发展的的新趋势。
2019 年 6 月 30 日,“链间通信,链接未来”迅雷链技术沙龙在深圳举办,来自:
迅雷链开放平台研发负责人 张慧勇
迅雷链底层研发工程师 李海友
中山大学数据科学与计算机学院教授 郑子彬
迅雷链开放平台产品负责人 马双阳
以区块链在通信领域的技术突破为基础,解读如何利用 P2P 网络构建互联、互通、互信的通信网络,迅雷链如何利用跨链架构实现 TPS 拓展,并结合迅雷链的平台与生态,为开发者提供高可用的实践经验。
当下,全球正在跑步进入“区块链 3.0”时代,区块链越来越偏向服务于实体行业,注重在各行各业的落地应用,提供低成本的信任基础设施。
但是,TPS 低、交易确认不及时、链间价值无法传递以及安全性存疑等问题一直是区块链落地的“拦路虎” 。对此,迅雷链的“同构多链”框架应运而生。
所谓同构多链框架,顾名思义就是有多条链,每条链上运行的程序是一样的。不同用户的请求会发到不同的链上进行处理。单个节点只需负责单一链上的相关数据,不仅对存储的需求变小,同时性能得到了极大提升。而为保证系统的安全稳定,迅雷链利用 PBFT 的确定性特性完成链间通信。并支持动态扩链,为以后的扩展提供良好的基础。
如下图所示,为多链架构示意图。左边不同的交易进来,通过接入层手心把它做一个链的分配,相当于是做链的路由。不同的交易会进入不同的链,首先看这笔交易的 From 账号在哪一条链, 若有跨链处理需求 ,则通过 Zone 拷贝链间信息 。其中,MetaChain 支持动态扩链,解决下发新的路由配置更新到接入层上,在不同的链之间同步链间信息以及每条链的信息。
那么,在此架构上,如何进行跨链通信呢?
如下图所示,迅雷链会对交易进行分组,确定这条链上的交易。通过 Merkel 证明,将发往每条链的信息生成交易证明 。通 Relay node 把信息发到链里,这不仅是利用流程把跨链信息转移过去,仍然还需要利用共识算法。
PBFT 达成共识的过程分为三个阶段:准备前,准备和提交。共识过程是:
准备前阶段:节点为从客户端收到的请求分配提议编号,然后发出预准备消息以广播给其他节点 ;
准备阶段:其他节点收到预准备消息后,检查消息的有效性。如果检查通过,它会向其他节点发送准备消息,并带来自己的 ID 信息,并从其他节点接收准备信息。接收准备消息的节点也检查消息的有效性,并且在整个网络中验证的节点中至少有 2/3 实际上将进入就绪状态 ;
提交阶段:向整个网络的所有节点广播进入就绪状态的消息,然后所有节点投票,并且在投票数达到 2/3 后消息通过。
另外,在算法里很多地方要求三分之二的节点投票。假如三分之一以上的节点不在线或者产生恶意的行为,这会导致 PBFT 整体算法陷入停滞的状态。因此迅雷链引入了 DPoA 避免 PBFT 的停滞可能性。
首先从 150 万个节点中选择具有稳定在线,平滑传输和良好性能的高质量节点,并集中到另一个池中。然后使用 DPoA 算法从候选池中选择一定数量的节点,以形成整个链的计费网络。这些节点定期轮换并重新选举,以防止会计节点被外界暴露和攻击。
迅雷链通过创新多链架构达到百万级 TPS ,为将来区块链应用落地打下良好的基础,同时提供低成本上链环境,通过开放平台提供丰富的业务组件,方便商业用户接入。
P2P 网络是去中心化系统的基础组件,应用在多个去中心化系统中,包括 eMule、ethereum、迅雷链文件系统 TCFS 等。典型的区块链分为基础层、核心层和应用层,P2P 网络正是位于区块链的基础层,为区块链服务。
P2P 网络协议有很多种,传统 BT 下载类应用常用分布式哈希表 (DHT) 算法,具体的就是 Chord,Kademlia 算法。
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 算法其实是在 Chord 上做的优化。主要是两个点:
用二进制 (32/64/128) 表示一个节点的 ID,两节点的 ID 异或运算得到节点间的距离。
每个节点保持的路由信息更丰富,同样是将整个网络按照划分成 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% 以上的同时,还达到了性能和成本的最佳平衡。
区块链通信网络主要面对并需要解决的是用户隐私、数据丢失、数据所有权、价值归还四个问题。而对于这几个方面,区块链通信网络产品该如何设计?
区块链通讯产品设计的核心模块分为四部分:
分布式存储。文件通过非对称加密算法加密,加密后单个文件被切分为几块分布式地存储在不同节点服务器中,只能通过特定私钥重新组合。
经济激励。Token 直接同用户会员等级挂钩,有更多 Token 的用户会被允许来解锁高级功能、升级会员等。
会话加密。会话唯一 Hash 保证通讯的隐私,安全协议的传输是由地址的私钥进行。进入通信网络,则需要持有钱包地址的公钥,同时对私钥签名,对所有对话进行非对称加密。
共识算法。随着链上数据越来越多,而在通讯网络的场景,会有极其庞大的数据传输,如:会话、照片、语音、视频等,会造成区块交易的延迟。此时可以采用迅雷链 DPoA+PBFT 的共识算法,以此来提高速度。
同时,区块链通信产品设计还要满足以下特性:
绝对匿名:免注册、无需电话和邮件、不收集通讯录位置、不暴露 IP ;
运用 DPoA+PBFT 共识算法;
开源可信,区块链通信产品公开特性时所有代码是公开的,并且提供 SDK、API 接入的方式;
支付体系,如在会话内支付,产生系统费用和付费消息;
去中心化存储,主要满足可靠存储和区块链验证消息传输的环节。
以版权中心搭建解决方案为例。迅雷为中国版权中心推出 DCI 体系标准联盟链提供区块链技术支持,本质是信息传送的过程,主要是对普通 IP 创作者上传作品,在他的平台上进行验证,生成 DCI 码,迅雷链把 DCI 码通过平台地址进行交易的执行,生成独有的哈希,通过哈希的方式查看功能信息的,并可以通过哈希分析在云存储里的加密,形成完整的阅读。
区块链通信网络应用,目前来说在国内最大的问题是如何拥抱监管。点对点的存储方式主要是中间没有中心化机构的管控,假如发送一些非法的信息,还是比较难以受到监管。这种环境在国内需要研究如何把应用跟监管合作,用相对合适的方式打通,使应用得到很好的推广和普及。
点个在看少个 bug 👇