简单来说,区块链是一个分布式数据库,提供拜占庭容错,保证最终的一致性;从数据结构上看,是基于时间序列的链式数据块结构;从节点拓扑来看,其所有节点都是冗余备份;在操作上,它提供了一个基于加密技术的公钥和私钥管理系统来管理帐户。
也许以上概念太抽象了。让我给你举个例子,以便你能更好地理解它。
你可以想象有100台电脑分布在世界各地。这100台电脑之间的网络是一个广域网,这100台电脑的主人互不信任。
那么,我们可以采用什么样的算法(共识机制)来为它提供一个可信的环境,使得:
节点之间的数据交换过程不可篡改,生成的历史记录不可篡改;
各节点的数据将与最新数据同步,并验证最新数据的有效性;
基于少数服从多数的原则,全节点维护的数据能够客观反映交换历史。
区块链是解决上述问题的技术方案。
结合我们过去讲过的和将要讲的,我们先来提炼一下区块链的七个技术特征。请记住我们会慢慢跟进:
区块链的存储尚力财经小编2022基于分布式数据库;
数据库是区块链的数据载体,区块链是交易的业务逻辑载体;
区块链将区块数据按时间序列化,整个网络有一个最终确定的状态;
区块链只对添加有效,对其他操作无效;
交易基于公钥和私钥验证的非对称加密;
区块链网络要求拜占庭将军容错;
共识算法可以“解决”双花问题。
无论是公链还是联盟链,至少需要四个模块:P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户和存储模型。
1。P2P网络协议
P2P网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播,节点发现和维护。
通常我们用的是比特币P2P网络协议模块,遵循一定的交互原理。比如第一次连接到其他节点时,会要求按照握手协议确认状态,握手结束后开始请求对等节点的地址数据和块数据。
这个P2P交互协议也有自己的一套指令,具体体现在消息头的命令字段中。这些命令为上层提供诸如节点发现、节点获取、块头获取、块获取等功能。这些功能是非常低级和基本的。如果想了解更多,可以参考《比特币开发者指南》中的对等体发现一章。
2。分布式一致性算法
在经典分布式计算领域,我们有以Raft和Paxos算法族为代表的非拜占庭容错算法,以及具有拜占庭容错特性的PBFT共识算法。
如果从技术进化的角度来看,可以画出区块链技术对原有分布式算法进行经济扩展的示意图。
尚力财经小编2022
在图中我们可以看到,计算机应用一开始多为单点应用,为了高可用性和方便性,采用了冷容灾。后来发展到异地多活动。这些在不同地方的多活动可能采用负载均衡和路由技术。随着分布式系统技术的发展,我们已经过渡到以Paxos和Raft为主导的分布式系统。并且在区块链领域中,PoW工作量证明算法、PoS权限证明算法和DPoS代理权限证明算法使用得最多。以上三种是业界主流的共识算法。与经典的分布式一致性算法不同,这些算法融入了经济博弈的概念。这里我将分别简单介绍这三种共识算法。PoW:通常指在给定的约束条件下,解决一个特定难度的数学问题。谁能解决 这个求解过程往往会变成一个计算问题,所以在比拼速度的情况下,就变成了谁的计算方法更好,谁的设备性能更好。PoS:这是一种股权认证机制。它的基本概念是,你生成区块的难度应该和你在网络中的股权(所有权比例)成正比。其实现的核心思想是:使用您的锁定令牌的硬币和一个小工作量证书来计算一个目标值。当达到目标值时,你可能会正确记账。DPoS:简单来说,就是将PoS共识算法中的记账人转化为由指定数量的节点组成的小圈子,而不是所有人都参与记账。这个圆可能是21个节点,也可能是101个节点,这取决于设计。只有这个圈子里的节点才能把记账做对。这将大大提高系统的吞吐量,因为节点越少意味着网络和节点是可控的。3。密码签名算法由于我不是密码学专业的,所以重点介绍这部分。在区块链领域,哈希算法应用最为广泛。哈希算法具有防碰撞、原始图像不可逆、问题友好等特点。其中,谜题友好是很多PoW币赖以存在的基础。在比特币中,使用SHA256尚力财经小编2022算法作为工作量证明的计算方法,也就是我们所说的挖掘算法。而在Litecoin上,我们还会看到Scrypt算法,与SHA256不同的是,它需要大内存支持。在其他币种中,我们也可以看到基于SHA3算法的挖掘算法。以太坊使用的是Dagger-Hashimoto算法的改进版本,命名为Ethash,这是一种IO困难算法。当然,除了挖掘算法,我们还会用到RIPEMD160算法,主要用来生成地址。在众多的比特币衍生代码中,大部分都采用了比特币的地址设计。除了地址,我们还将使用核心,这也是区块链令牌系统的基石:公钥-私钥加密算法。比特币的代码中,基本都用ECDSA。ECDSA是ECC和DSA的结合。整个签名过程和DSA类似,只是签名采用的算法是ECC(椭圆曲线函数)。技术上,我们先生成私钥,然后从私钥生成公钥,最后从公钥生成地址。以上每一步都是不可逆的过程,也就是说,我们无法从地址推导出公钥,也无法从公钥推导出私钥。4。账户和交易模型从一开始的定义,我们就知道,仅从技术角度来看,区块链可以看作是一个分布式数据库。那么,在大多数区块链使用什么样的数据库呢?我在设计元区块链的时候参考了多种数据库,包括NoSQL的BerkelyDB和LevelDB,还有一些货币采用了基于SQL的SQLite。作为底层存储设施,这些存储技术主要是轻量级嵌入式数据库。由于不涉及区块链的总账特征,这些存储技术与其他场合使用的存储技术并无不同。区块链的分类账特征通常分为UTXO结构和基于帐户-余额结构的分类账结构。我们也称之为分类账模型。UTXO是“未用事务输入/输出”的缩写,翻译过来就是“未使用的事务输入和输出”。此区块链中令牌转移的记账模式。每次转移都以输入和输出的形式出现;在平衡结构中,没有这种模式。[x]