如何用架构师思维解读区块链技术?
作者:网友投稿 时间:2018-03-14 01:11

很多童鞋反馈,区块链技术有点绕,有点晦涩,大都是一知半解,理解不够通彻。但在阿里技术专家郑吉看来,区块链特别是比特币本身,并没有使用高大上复杂的新技术,只是对现有技术的组合。其天才的地方体现在系统的架构上,体现在把金融学,货币学,博弈学,甚至是哲学思想体现在比特币的系统架构上。如果单纯从系统中的技术点着手学习研究,那么往往就会觉得有点绕,有点晦涩。这就像我们在平时工作中了解某个系统,如果首先搞清楚业务本身,了解清楚系统架构的设计,再去看具体的实现技术,从大局到面到点,那么就有豁然开朗的感觉。
今天,郑吉将试着帮助大家转换视角,从架构的思维分析去解析比特币,从而对区块链技术有一个更深入的理解。
准备工作
区块链不是一种技术实现,而是一个系统的架构设计,使用一系列的技术组合用于完成去中心化的数据存储。比特币在区块链之上融入了金融学,货币学,博弈学,甚至一定程度的哲学思想,用于电子货币的发行,运行和交易。在学习区块链之前有一些基础知识需要提前掌握好,后面将不再对具体技术展开描述,而是从这个技术解决了什么问题,为什么要用这个技术这个角度去描述。
P2P
不可逆算法
不对称加密算法
Merkle树
CAP理论
最终一致性算法
比特币要做什么?
如果你是一个架构师,做一个系统的架构,你首先要搞清楚这个系统要做什么?要解决一个什么问题?带着这个问题进行分析,设计系统整体的架构。对于比特币也一样,首先搞清楚比特币是要做什么,要解决什么问题?然后带着这些问题去解析比特币的技术实现。
如果用一句话来描述比特币要做什么,那么可以这样描述:做一个去中心化电子货币发行交易系统。这里有三个关键词:
1. 去中心化
2. 电子货币发行
3. 电子货币交易
分析和设计
本章针对上述比特币的三个关键词,去中心化,电子货币发行,货币交易,进行分析和设计。
去中心化
当今世界的所有货币交易都是有一个第三方可信任的金融机构提供服务处理,任何人不能访问由这个第三方机构中心化存储的数据,理论上来说如果这个金融机构发生了欺诈或倒闭,那么存储在这个机构中的货币,以及所做的交易就会存在风险。 当然比特币的去中心化,不是因为担心这种风险,而是根本就不需要这个第三方机构了。这也是区块链的强大颠覆性之一,凡是需要某个第三方可信任的机构需要安全保存处理的数据,都可以去中心化安全存储,所有人都可以访问。
从技术角度分析,如何做到去中心化?
中心化对应的就是分布式,去中心化就是分布式。把原先存储在某个第三方机构,中心化存储的数据,进行分布式存储。
分布式存储要解决的3个基本问题
1. 网络结构
2. 数据不可篡改性
3. 最终一致性
网络结构
去中心化的分布式存储是指整个发行的电子货币,以及货币交易数据由不同机构,不通个人的成千上万的计算机共同存储,共同维护了同一份相同的数据,只有共同维护的这份相同的数据才是认为最终正确的数据,任何个人篡改自己的数据都没有意义,并且存储的数据所有人都可访问。
如果做为架构师,你会选择什么样的网络结构去实现这个分布式存储?一种方式是可采用类似Hadoop中HDFS的方式,由某个中心节点NameNode进行协调访问,但这种方式就会带来单点风险,破坏了中心节点,整个体系都将不可访问。或者采用Cassandra无中心化投票机制维护整个集群状态,但是这种方式在全球化开放式部署中会导致根本无法收敛。
所以比特币采用了一种更加简单直接的方式,利用P2P协议维护整个比特币网络集群,不需要某个中心节点协调节点之间的通信,不需要所有机器投票维护集群状态。而是通过P2P协议进行节点之间的数据传输,任何节点都可以随时加入或者离开比特币网络集群,而不会对比特币网络集群产生影响,也不需要特意去修复这个集群中的故障机器。
利用P2P协议进行节点之间数据传输主要有两个功能点:
a. 把需要存储的数据广播到所有节点上进行储存。
b. 查询整个网络集群中所有节点的最新数据,如果自己节点的数据与大部分节点的数据不一致,则更新自身的数据与大部分节点存储的数据一致。



