去中心化
当今世界的所有货币交易都是有一个第三方可信任的金融机构提供服务处理,任何人不能访问由这个第三方机构中心化存储的数据,理论上来说如果这个金融机构发生了欺诈或倒闭,那么存储在这个机构中的货币,以及所做的交易就会存在风险。 当然比特币的去中心化,不是因为担心这种风险,而是根本就不需要这个第三方机构了。这也是区块链的强大颠覆性之一,凡是需要某个第三方可信任的机构需要安全保存处理的数据,都可以去中心化安全存储,所有人都可以访问。
从技术角度分析,如何做到去中心化?
中心化对应的就是分布式,去中心化就是分布式。把原先存储在某个第三方机构,中心化存储的数据,进行分布式存储。
分布式存储要解决的3个基本问题
1. 网络结构
2. 数据不可篡改性
3. 最终一致性
网络结构
去中心化的分布式存储是指整个发行的电子货币,以及货币交易数据由不同机构,不通个人的成千上万的计算机共同存储,共同维护了同一份相同的数据,只有共同维护的这份相同的数据才是认为最终正确的数据,任何个人篡改自己的数据都没有意义,并且存储的数据所有人都可访问。
如果做为架构师,你会选择什么样的网络结构去实现这个分布式存储?一种方式是可采用类似Hadoop中HDFS的方式,由某个中心节点NameNode进行协调访问,但这种方式就会带来单点风险,破坏了中心节点,整个体系都将不可访问。或者采用Cassandra无中心化投票机制维护整个集群状态,但是这种方式在全球化开放式部署中会导致根本无法收敛。
所以比特币采用了一种更加简单直接的方式,利用P2P协议维护整个比特币网络集群,不需要某个中心节点协调节点之间的通信,不需要所有机器投票维护集群状态。而是通过P2P协议进行节点之间的数据传输,任何节点都可以随时加入或者离开比特币网络集群,而不会对比特币网络集群产生影响,也不需要特意去修复这个集群中的故障机器。
利用P2P协议进行节点之间数据传输主要有两个功能点:
a. 把需要存储的数据广播到所有节点上进行储存。
b. 查询整个网络集群中所有节点的最新数据,如果自己节点的数据与大部分节点的数据不一致,则更新自身的数据与大部分节点存储的数据一致。
比特币是去中心化存储,最大的风险是整个比特币网络集群被破坏,篡改了整个网络存储的数据。但是上述第二个功能点能够有效的防止这种风险,由于系统会自动更新为整个集群中大部分节点存储的相同数据,所以要篡改数据,必须要同时篡改整个网络一半以上的数据,这不是说做不到,但是比特币利用区块链的方式再加上利益博弈机制,当你拥有这种能力的时候,也不需要去做篡改这种投入产出比这么低的事了,在数据不可篡改性一节中再详细描述。