LI HAOPENG (CN)
MA HUAJUN (CN)
WANG HAN (CN)
LI KEDAN (CN)
YANG XIN (CN)
SAISIPENG SCIENCE TECH DEVELOPMENT SHENZHEN CO LTD (CN)
CN106357405A | 2017-01-25 | |||
CN105740440A | 2016-07-06 | |||
CN106534317A | 2017-03-22 | |||
US20160299918A1 | 2016-10-13 |
LAKSSHMI ET AL.: "Survey of Consensus Protocols on Blockchain Applications", 2017 4TH INTERNATIONAL CONFERENCE ON ADVANCED COMPUTING AND COMMUNICATION SYSTEMS (ICACCS, 31 January 2017 (2017-01-31), pages 1 - 5, XP033144744
权利要求书 一种多层级区块链系统之间索引与链拓扑结构的维护方法, 其特征在 于, 所述维护方法包括以下步骤: A、 顶层区块链通过在区块的交易记录中记录下一个种子节点索引下 层区块链; B、 维护一个分布式监控集群定期对顶级区块链中记录的种子节点列 表下对应 IP地址与端口的可用性进行定期检测; C、 下层区块链的每个节点需要维护一个共同的全局路由表结构来存 储整个区块链集群的拓扑结构, 通过基于 Gossip的协议传播方式来维 护全局路由表的最终一致性。 根据权利要求 1所述的维护方法, 其特征在于, 所述步骤 B中还包括 以下步骤: Bl、 在发现种子节点失效对下层区块链管理者进行通知并对种子节 点进行维护或修改。 根据权利要求 2所述的维护方法, 其特征在于, 所述步骤 C中链上的 任意一个节点通过获取任意一个可用节点的 IP地址与端口获取对应的 数据与服务。 根据权利要求 3所述的维护方法, 其特征在于, 所述顶级区块链使用 交易中的 Coinbase字段来记录对应的种子节点。 根据权利要求 4所述的维护方法, 其特征在于, 所述顶级区块链中的 节点可以通过缓存种子节点列表从监控节点获取种子节点的负载信息 根据权利要求 5所述的维护方法, 其特征在于, 所述下层区块链的服 务者确保种子节点有效性并通过区块链的记账流程更新种子节点的列 [权利要求 7] 根据权利要求 6所述的维护方法, 其特征在于, 所述顶层区块链中客 户端索弓 I下层区块链获取对应的数据与服务。 [权利要求 8] 根据权利要求 7所述的维护方法, 其特征在于, 所述客户端连接任意 下层区块链的节点均可以获取自己需要的服务或数据。 [权利要求 9] 根据权利要求 8所述的维护方法, 其特征在于, 所述顶层区块链通过 定期査询监控集群获取种子节点的负载情况 |
技术领域
[0001] 本发明属于互联网技术改进领域, 尤其涉及一种多层级区块链系统之间索引与 链拓扑结构的维护方法。
背景技术
[0002] 2008年 11月 1日, 一个自称中本聪 (Satoshi Nakamoto)的人在一个隐秘的密码学 讨论组上贴出了一篇研究报告, 报告阐述了他对电子货币的新构想一比特币 就此问世。 而剥离比特币的经济属性, 其依托的区块链技术, 具有非常好的应 用前景。 起源自比特币的区块链是用分布式数据库识别 、 传播和记载信息的智 能化对等网络, 它是一串使用密码学方法相关联产生的数据块 , 每一个数据块 中包含了若干次比特币网络交易的信息, 用于验证其信息的有效性 (防伪) 和 生成下一个区块。 在区块链网络中, 没有核心节点, 所有节点的功能、 权益都 是一样, 所有节点使用一种共识的算法争做下一轮的记 账人。
[0003] 在这种网络中, 所有的节点都遵循既定的规则, 所有的结果都要经过多数节点 确认。 通过这样的架构形式, 确保了分布式系统在拜占庭将军问题下依旧能 够 达成最终一致性。 基于这种技术思想, 我们希望能够通过多层级的区块链串联 的方式, 实现一个高内聚, 低耦合的服务系统。 而其中核心的问题在与如何将 多条区块链的连接, 同吋怎样去维护区块链的拓扑架构, 让提供的服务具有高 效性, 可用性与健壮性。
[0004] 目前基于比特币延伸出的楔入式侧链技术 (pegged sidechains) , 就像英镑 挂钩到金条一样。 侧链是以融合的方式实现加密货币金融生态的 目标, 而不是 像其它加密货币一样排斥现有的系统。 它将实现比特币和其他数字资产在多个 区块链间的转移, 这就意味着用户们在使用他们已有资产的情况 下, 就可以访 问新的加密货币系统。 可以存在多个链接到比特币上的侧链, 特性和目的各不 相同, 所有这些侧链依赖于比特币主区块链保障的弹 性和稀缺性。 在这基础上 , 侧链技术进一步扩展了区块链技术的应用范围 和创新空间, 使传统区块链可 以支持多种资产类型, 以及小微支付、 智能合约、 安全处理机制、 真实世界财 产注册等, 并可以增强区块链的隐私保护。
技术问题
[0005] 现有的楔入式侧链技术存在着一些缺陷。
[0006] a. 过度耦合: 过度依赖比特币的主区块链, 将一切安全性与一致性的保障依 托于比特币的主区块链, 但由于比特币设计之初并没有考量楔入式侧链 的存在
, 导致跨链的流程复杂且耦合度极高。
[0007] b. 功能局限: 沿用了比特币通过密码货币的设计, 功能点集中于资产运作, 账户管理, 过于局限了区块链本身能够提供的服务。 并没有发挥区块链本身模 块化, 功能可定制化的特性。
[0008] c 管理混乱: 各个侧链对于下层区块链定义与执行逻辑各不 相同, 没有统一 定位的标准接口, 并没有统一的维护的方式。
问题的解决方案
技术解决方案
[0009] 本发明的目的在于提供一种多层级区块链系统 之间索引与链拓扑结构的维护方 法, 旨在解决的问题。
[0010] 本发明是这样实现的, 一种多层级区块链系统之间索引与链拓扑结构 的维护方 法, 所述维护方法包括以下步骤:
[0011] A、 顶层区块链通过在区块的交易记录中记录下一 个种子节点索引下层区块链
[0012] B、 维护一个分布式监控集群定期对顶级区块链中 记录的种子节点列表下对应 I
P地址与端口的可用性进行定期检测;
[0013] C、 下层区块链的每个节点需要维护一个共同的全 局路由表结构来存储整个区 块链集群的拓扑结构, 通过基于 Gossip的协议传播方式来维护全局路由表的最终 一致性。
[0014] 本发明的进一步技术方案是: 所述步骤 B中还包括以下步骤:
[0015] Bl、 在发现种子节点失效对下层区块链管理者进行 通知并对种子节点进行维护 或修改。
[0016] 本发明的进一步技术方案是: 所述步骤 C中链上的任意一个节点通过获取任意 一个可用节点的 IP地址与端口获取对应的数据与服务。
[0017] 本发明的进一步技术方案是: 所述顶级区块链使用交易中的 Coinbase字段来记 录对应的种子节点。
[0018] 本发明的进一步技术方案是: 所述顶级区块链中的节点可以通过缓存种子节 点 列表从监控节点获取种子节点的负载信息。
[0019] 本发明的进一步技术方案是: 所述下层区块链的服务者确保种子节点有效性 并 通过区块链的记账流程更新种子节点的列表。
[0020] 本发明的进一步技术方案是: 所述顶层区块链中客户端索引下层区块链获取 对 应的数据与服务。
[0021] 本发明的进一步技术方案是: 所述客户端连接任意下层区块链的节点均可以 获 取自己需要的服务或数据。
[0022] 本发明的进一步技术方案是: 所述顶层区块链通过定期査询监控集群获取种 子 节点的负载情况。
发明的有益效果
有益效果
[0023] 本发明的有益效果是: 多层级的区块链可以快速通过区块链中的记录 索引到下 层级的区块链; 由于种子节点之上维护了一个完整区块链的拓 扑结构, 所以任 意客户端可以通过种子节点获取完整区块链的 可响应节点; 通过分布式监控集 群可以维系种子节点的活性, 同吋可以通过监控集群让种子节点实现负载均 衡 ; 同吋使用了分布式账本技术, 避免了因单点故障导致的系统失效; 通过节点 的路由表维护, 可以实现区块链全局拓扑结构的维护与各个节 点的负载均衡。 对附图的简要说明
附图说明
[0024] 图 1是本发明实施例提供的多层级区块链系统之 索引与链拓扑结构的维护方 法;
[0025] 图 2是本发明实施例提供的整体系统架构图。 [0026] 图 3是本发明实施例提供的 Coinbase的数据结构。
[0027] 图 4是本发明实施例提供的 seed的数据类型示意图。
[0028] 图 5是本发明实施例提供的下层区块链的拓扑结 的维护的示意图。
[0029] 图 6是本发明实施例提供的客户端响应请求的流 图。
实施该发明的最佳实施例
本发明的最佳实施方式
[0030] 在此处键入本发明的最佳实施方式描述段落。
本发明的实施方式
[0031] 本发明提出一种多层级区块链系统之间索引与 链拓扑结构的维护方法, 提出了 一套基于多层级区块链系统之间的跨链索引与 链拓扑结构维护统一的方式, 同 吋很大程度上提高了索引的效率与扩展性, 利用区块链的分布式性质来实现负 载均衡, 可以很容易的组织起一个低耦合的多层级区块 链系统, 同吋减少系统 的维护成本。
[0032] 一种多层级区块链系统之间索引与链拓扑结构 的维护方法满足下面 3个特点
: ( 1) 通过层级结构来组织整个区块链系统, 由顶层区块链索引下层的区块链 , 来实现不同功能分层与定制。 下层链可以实现不同的处理实现逻辑, 来实现 不同的功能, 通过这样降低了系统的耦合度, 同吋实现了更加多样性的服务定 制。 (2) 由于上层链索引到下层链的节点并不能保证稳 定 (故障或退出) , 必 须设计一套索引机制来确保系统具有足够的健 壮性, 透过顶层链记录的种子节 点可以正确的索引到下层链。 (3) 客户端并不用知道链的分布组织结构以及链 节点的负载情况, 需要通过多层级区块链的索引来定位对应所提 供数据的服务 器, 要求整个索引过程对用户完全透明。
[0033] 使用一种基于多层级区块链组建一个的区块链 服务网络, 该网络由多条区 块链共同组成维护, 顶层区块链通过区块链中记录的信息来索弓 I到下层区块链
。 但由于下层区块链链节点数目不确定, 所以下层区块链的拓扑结构由多个节 点构成并且不断变化, 所以由上层节点来存储下层链的拓扑结构并不 可取。 所 以我们通过记录一个种子节点列表来维系上层 区块链到下层区块链的索引, 同 吋使用一个第三方的分布式监控集群来确保种 子节点的可用性与负载均衡, 而 下层区块链通过全局可见的路由表来维护区块 链本身的拓扑结构, 并且对于由 顶层索引下来的来自客户端服务请求实现负载 平衡。
[0034] 图 1示出了本发明提供的多层级区块链系统之间 引与链拓扑结构的维护方法 的流程图, 其详述如下:
[0035] 步骤 S 1, 顶层区块链通过在区块的交易记录中记录下一 个种子节点索弓 I下层区 块链; 顶层区块链通过在区块的交易记录中记录下一 个种子节点列表来索引下 层区块链。
[0036] 在顶层区块链中, 使用区块链中交易中的 Coinbase字段来记录对应的种子节点 , 这个字段记录之中至少要存在一个可用的种子 节点, 让接下来的客户端可以 索引到下层区块链来获取对应的数据与服务。 在下层的区块链的环境中, 节点 中断或失效是常态性的事件。 所以下层区块链的服务者需要确保种子节点有 效 性, 同吋可以通过区块链的记账流程, 来更新种子节点的列表。 客户端通过顶 级链获取 Coinbase字段来解析对应的数据类型来获取对应 子节点的位置。 顶级 链中的节点可以通过缓存种子节点列表并且同 吋可以从监控节点获取种子节点 的负载信息, 通过负载由小到大排序对应的种子节点, 所以客户端优先连接的 总是下层区块链中负载较低的节点。
[0037] 步骤 S2, 维护一个分布式监控集群定期对顶级区块链中 记录的种子节点列表下 对应 IP地址与端口的可用性进行定期检测; 维护一个分布式监控集群定期对顶级 区块链中记录的种子节点列表下对应 IP地址与端口的可用性进行定期检测。 一旦 发现种子节点失效, 需要对下层区块链管理者进行通知, 要求对种子节点进行 维护或修改 (通过修改顶层区块链的记录) 。
[0038] 分布式监控集群由奇数个服务器搭建而成, 通过类 paxos的协议全盘监控对应 种子节点的活性, 由于分布式监控集群使用了类 paxos的一致性协议, 所以当且 仅当半数以上集群节点失效的情况下, 分布式监控集群才会失效。 种子节点会 主动向监控集群发起健康度的心跳检测, 定期汇报自己的运行状态和区块链的 运行状态。 而监控集群也会通过顶层区块链索引的种子节 点的列表与连接上的 种子节点的列表进行比对。 若种子节点失效, 监控集群可以通知下层区块链的 运维人员, 进行种子节点的修复工作。 同吋监控集群也记录下每个种子节点的 负载情况, 顶层的区块链节点可通过定期査询监控集群的 方式, 获取种子节点 的负载情况。
[0039] 步骤 S3, 下层区块链的每个节点需要维护一个共同的全 局路由表结构来存储整 个区块链集群的拓扑结构, 通过基于 Gossip的协议传播方式来维护全局路由表的 最终一致性。
[0040] 下层区块链中每个节点维护一个共同的全局路 由表结构来记录整个区块链集群 的拓扑结构, 也就是说下层区块链中的任意节点都可以充当 2.2.1中提及的种子 节点。
[0041] 路由表格需要记录下层区块链中其余节点的 IP地址, 端口号, 节点的 ID, 节点 对应的负载情况, 通过这样一个全局或局部性质的路由表, 从下层区块链的任 意一个节点可以索引出整个区块链的拓扑结构 , 同吋由于区块链本身是一个分 布式的全局账本, 客户端只要连接任意下层区块链的节点, 都可以获取自己所 需的服务或数据。 同吋路由表中需要标识下层区块链的唯一全局 区块链 ID, 路 由表的创建吋间, 路由表最后一次的修改吋间。 下层区块链的节点, 需要间隔 性的将路由表的内容写入节点本地的持久性存 储。 若节点从失效状态恢复工作 , 会优先从本地的持久性存储之中还原区块链的 路由表, 同吋比对节点本地吋 间与路由表上最后修改的吋间, 若表格修改吋间与本地吋间相近, 则认为该路 由表合法, 通过路由表中的记录连接上其余节点, 通过 Gossip协议恢复到路由表 最新的状态。 若表格过期过久, 节点可尝试索引顶层区块链记录的种子节点, 之后也通过 Gossip协议获取种子节点上的路由表。 每个节点需要自行维护节点的 路由表, 同吋该表格通过基于 Gossip的协议来传播节点的变动, 每个节点每间隔 一秒随机选择随机的对等节点, 两个节点有效地协调他们对应路由表记录的节 点情况, 来维持各个节点路由表的最终一致性。 若下层区块链为私有链, 则要 求这张路由表记录全局节点的信息。 若为公有链, 节点数目过于庞大, 则可利 用 p2p的路由协议 Chord, Chord协议中每个结点维护 O(logN)大小的路由表, 在 0( logN)跳之内可以跳转到需要访问的结点。
[0042] 当客户端要获取下层区块链中数据。 首先客户端可连接顶层区块链中的节点, 获取顶层区块链中记录下层区块链的种子节点 列表。 客户端会按照返回种子节 点列表的顺序, 尝试性地依次访问到首个可用的种子节点。 下层区块链中节点 收到客户端的访问请求会有两种处理逻辑: (1) 当前区块链的节点的负载量没 有超出预先设计的阀值, 则査询对应区块链上的数据, 响应客户端的请求。 (2
) 若当前区块链节点负载量超出预先设计的阀值 , 则査询节点本地的路由表, 通过节点 IP地址与负载量的关系, 返回给客户端可访问的区块链节点列表。 客户 端收到当前节点返回区块链节点列表, 会先记录下当前节点负载量过载。 同吋 将当前节点返回的区块链节点列表替换本地缓 存中的区块链节点列表, 按照节 点列表顺序, 重复访问动作, 同吋在访问的数据包中附带一个列表。 列表中记 录下客户端之前访问的失效节点, 过载节点与对应的访问吋间。 被访问节点也 会通过客户端提供的信息动态的更新这些信息 到自己的路由表之中, 并且通过 G ossip协议, 将最新的路由信息扩散到全网中的其他区块链 节点。
[0043] 在一种多层级区块链系统之间索引与链拓扑结 构的维护方法中, 解决了多 层级区块链系统存在的主要问题: (1) 多层级的区块链可以快速通过区块链中 的记录索引到下层级的区块链。 (2) 由于种子节点之上维护了一个完整区块链 的拓扑结构, 所以任意客户端可以通过种子节点获取完整区 块链的可响应节点 。 (3) 通过分布式监控集群可以维系种子节点的活性 , 同吋可以通过监控集群 让种子节点实现负载均衡。 (4) 同吋使用了分布式账本技术, 避免了因单点故 障导致的系统失效。 (5) 通过节点的路由表维护, 可以实现区块链全局拓扑结 构的维护与各个节点的负载均衡。
[0044] 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的 精神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保 护范围之内。
工业实用性
[0045] 在此处键入工业实用性描述段落。
序列表自由内容
[0046] 在此处键入序列表自由内容描述段落。