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