摘要:跳跃链表的概念 跳跃链表是有序链表的一个变种,在一个有序链表中,查找一个链表中的元素需要进行一次遍历,时间复杂度为O(n),为了加快查找的过程,能够跳过某些元素呢?一个思路就是牺牲一定的空间换时间,对有序链表建立类似索引的结构加快查找过程,跳跃链表基本上就是通过维护一个多层次的链表,每一层链表中的元 阅读全文
posted @ 2020-06-23 10:43 让我思考一下 阅读(52) 评论(0) 推荐(0) 编辑
摘要:Raft共识算法在分布式系统中是常用的共识算法之一,论文原文In Search of an Understandable Consensus Algorithm ,作者在论文中指出Poxas共识算法的两大问题,其一是难懂,其二是应用到实际系统存在困难。针对Paxos存在的问题,作者的目的是提出一个易 阅读全文
posted @ 2020-06-22 11:10 让我思考一下 阅读(185) 评论(0) 推荐(0) 编辑
摘要:一、Fabric网络组织 Fabric网络组织按如下结构组成:Fabric网络-->Channel通道-->组织(成员)-->节点。即整个网络由数个通道组成,每个通道都由多个组织构成,而每个组织内部由数个节点组成(可能由功能或其他划分方式分为多个节点)。如下图所示: 二、主节点(leader pee 阅读全文
posted @ 2020-06-18 15:57 让我思考一下 阅读(78) 评论(0) 推荐(0) 编辑
摘要:一个新节点通过已知的节点加入到网络中,此时,它所知的网络节点信息是非常有限的,需要通过节点发现获知更多的节点,建立起足够的连接。另外,当一个新节点加入到网络时,原有网络节点也需要通过节点发现感知到新节点的加入。 分布在各地的网络节点总是会有上线离线的变化,有这就需要Fabric网络必须动态维护一个节 阅读全文
posted @ 2020-06-13 22:05 让我思考一下 阅读(103) 评论(0) 推荐(0) 编辑
摘要:本档前部分翻译自以太坊定义的节点发现协议(版本4),后半部分给出了源码实现的大致流程,以帮助理解。 以太坊节点信息的存储采用的是Kademlia分布式哈希表。理解节点发现协议主要是理解分布式哈希表的原理,再加上定义的节点间通信的报文格式,节点ID的定义,距离的计算,加在一起就是以太坊的节点发现协议了 阅读全文
posted @ 2020-06-12 09:25 让我思考一下 阅读(198) 评论(0) 推荐(0) 编辑
摘要:闪电网络属于状态通道技术范畴,是区块链技术的一个发展方向之一,其核心思想是将本来在链上结算的交易在链下通过状态通道维护中间态,并且在发生纠纷时回到链上仲裁。链上仲裁的公平性和安全性在博弈论上保证了链下交易的对手不会作恶。通过这种方式实现扩容。下面是闪电网络技术概要。 一、闪电网络——链下扩容方案 【 阅读全文
posted @ 2020-06-11 15:56 让我思考一下 阅读(64) 评论(0) 推荐(0) 编辑
摘要:拜占庭将军问题 我们已知的共识算法,Paxos、Raft解决的都是非拜占庭问题,也就是可以容忍节点故障,消息丢失、延时、乱序等,但节点不能有恶意节点。但如何在有恶意节点存在的情况下达成共识呢?BFT共识算法就是解决这一问题的。即不但能容忍节点故障,还能容忍一定的恶意节点或者说拜占庭节点的存在。我们下 阅读全文
posted @ 2020-06-10 09:33 让我思考一下 阅读(324) 评论(2) 推荐(1) 编辑
摘要:对异步的学习,我们先从Future开始,学习异步的实现原理。等理解了异步是怎么实现的后,再学习Rust异步编程涉及的2个库(futures、tokio)的时候就容易理解多了。 Future rust中Future的定义如下,一个Future可以理解为一段供将来调度执行的代码。我们为什么需要异步呢,异 阅读全文
posted @ 2020-06-09 14:43 让我思考一下 阅读(480) 评论(0) 推荐(3) 编辑
摘要:一、关联类型(associated types) 我们阅读Rust程序的时候,有时候会出现如下的代码: trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>; } 下面是上面代码的注解:Iterator trait 阅读全文
posted @ 2020-06-08 09:53 让我思考一下 阅读(213) 评论(0) 推荐(0) 编辑
摘要:前言 堆是十分重要的数据结构,我们常用的优先队列就是基于堆实现的数据结构,堆排序也是基于堆实现的,所以,我们要理解堆的实现,之前自己根据堆的原理自己实现了堆,现在来分析一下STL中堆的实现代码,STL的堆实现相比自己实现的代码肯定要多很多,但原理是一样的,我们下面看一下。 堆的实现 STL中提供了堆 阅读全文
posted @ 2020-06-07 22:27 让我思考一下 阅读(41) 评论(0) 推荐(0) 编辑