近日,加密货币在经历了“混乱期”后,区块链再度走红,引起各方高度关注,成为资本市场和各领域关注的焦点。就连朋友圈里的讨论和分享也令人目不暇接。那么,区块链到底是什么?区块链的核心算法是什么?
区块链的第一个核心算法:拜占庭协议
拜占庭的故事大概是这样的:拜占庭帝国拥有巨大的财富,它的10个邻国已经庆祝生日很久了,但是拜占庭高墙巍然屹立,固若金汤,没有一个邻国能够成功入侵。任何单个邻居入侵都会失败,也有可能被其他9个邻居入侵。拜占庭帝国的防御能力如此之强,十个邻国中至少要有一半同时进攻才能被攻破。但是,如果一个或多个邻居答应一起进攻,但实际过程背叛了,那么入侵者可能全部被歼灭。所以每一方都小心翼翼,不敢轻易相信邻居。这是拜占庭将军问题。
在这个分布式网络中:每个将军都有一个与其他将军实时同步的消息账本。账本上每个将军的签名都可以核实。如果有任何消息不一致,我们就可以知道哪些将军不一致。虽然消息不一致,但只要半数以上同意攻击,少数服从多数,达成共识。
于是,在分布式系统中,虽然有坏人,但是坏人什么都干得出来(不受协议限制),比如不响应,发送错误消息,向不同的节点发送不同的决策,不同的错误节点联合起来干坏事。但是,只要大多数人是好人,就完全有可能达成一种集中的共识。
区块链的第二个核心算法:非对称加密技术
在上面提到的拜占庭协议中,如果10个将军中的几个同时发动消息,必然会造成系统混乱,导致攻击时间计划不同,行动难以达成一致。任何人都可以发起攻击的消息,但是谁来发呢?其实这只需要增加一个成本,即一段时间内只有一个节点可以传播信息。当一个节点发出统一的攻击消息时,每个节点都必须对来自发起者的消息进行签名和盖章,以确认各自的身份。
现在的非对称加密技术完全可以解决这个签名问题。非对称加密算法使用两种不同的密钥进行加密和解密。这两个密钥就是我们经常听到的“公钥”和“私钥”。公钥和私钥通常成对出现。如果消息是用公钥加密的,那么需要对应于公钥的私钥来解密。类似地,如果消息是用私钥加密的,则需要对应于私钥的公钥来解密它。
区块链核心算法三:容错
我们假设在这个网络中,消息可能会丢失、损坏、延迟和重复发送,并且接收的顺序与发送的顺序不一致。此外,节点的行为可以是任意的:它们可以随时加入或退出网络,它们可以丢弃消息、伪造消息、停止工作等。并且可能发生各种人为或非人为的故障。我们的算法为由共识节点组成的共识系统提供了容错性,包括安全性和可用性,并且适用于任何网络环境。
区块链核心算法4: Paxos算法(一致性算法)
Paxos算法解决了分布式系统如何在某个值(分辨率)上达成一致的问题。一个典型的场景是,在分布式数据库系统中,如果每个节点的初始状态是一致的,并且每个节点执行相同的操作序列,那么它们最终可以获得一致的状态。为了保证每个节点执行相同的命令序列,需要对每个指令执行一个“一致性算法”,以保证每个节点看到的指令是一致的。通用一致性算法可应用于多种场景,是分布式计算中的一个重要问题。节点通信有两种模式:共享内存和消息传递。Paxos算法是一种基于消息传递模型的一致性算法。
区块链核心算法五:共识机制
区块链共识算法主要是工作量证明和权限证明。以比特币为例。其实从技术角度来说,PoW可以看作是一个可重用的Hashcash,生成工作负载被证明是一个概率上的随机过程。挖掘一个新的秘密货币,生成一个区块时,必须得到所有参与者的同意,挖掘者必须获得区块内所有数据的PoW工作证书。同时矿工要时刻观察和调整这项工作的难度,因为对网络的要求是平均每10分钟生成一个块。
区块链核心算法6:分布式存储
分布式存储是一种数据存储技术,通过网络利用每台机器上的磁盘空间,用这些分散的存储资源形成一个虚拟的存储设备,数据分散在网络的各个角落。所以分布式存储技术并不是把完整的数据存储在每一台计算机中,而是把数据切割后存储在不同的计算机中。就像把100个鸡蛋,不放在同一个篮子里,而是放在不同的地方,加起来就是100个。
(作者:BYEX,内容来自链家的内容开放平台“德豪”;本文仅代表作者观点,不代表链家官方立场)