区块链核心技术简介

链客,专为开发者而生,有问必答!

此文章来自https://www.liankexing.com/notetwo/8143,未经允许,拒绝转载

运用技术
算法加密
比特币选用椭圆曲线加密算法(ECC)来发作公钥和私钥对,钱包地址就是公钥,私钥由用户保存。

比特币还用到哈希算法,Hash,就是把恣意长度的输入通过散列算法变换成固定长度的数据信息摘要的函数。

区块链系统一般选用Hash算法来快速验证用户的身份。假定用户声称对某个钱包具有全部权而且要改动钱包对应的信息(在比特币中,就是运用钱包中的余额),他有必要提交一个央求,这个央求包含三个部分:钱包地址、明文央求、明文央求由钱包对应的私钥Hash过的签名。这个央求将被发送要区块链网络中。

比较非对称加密,Hash算法一般快几个数量级以上,然后使得验证的进程可以非常快速。常用Hash算法有MD5、SHA1、SHA256、SHA512、HMAC等。

点对点通讯技术(Peer to Peer)
1、全部节点参加供应资源,包含带宽,存储空间和核算才干;
2、网络的分布式,添加了系统的防缺点的健壮性,消除了单点缺点;

分布式一同技术
了解分布式一同算法,需求了解下面两个名词,分别是“异步”和“一同”。

异步:此处的异步不同于一般技术术语中的异步调用的异步,而是指在一个分布式系统中,对消息的处理速度或许消息送达时刻不做任何假定。此就是知名的FLP不可能性定理。

(FLP不可能性:(FLP Impossibility)是分布式范畴中一个非常知名的定理。该定理的论文是由Fischer, Lynch and Patterson三位作者于1985年宣布,之后该论文毫无疑问得获得了Dijkstra奖。FLP给出了一个令人吃惊的定论:在异步通讯场景,即使只需一个进程失利,也没有任何算法能保证非失利进程抵达一同性!)

一同:当多个主机通过异步通讯办法组成网络集群时,这个网络默许是不可靠的,那么在这些不可靠主机之间复制情况需求选用一种机制,以保证每个主机的情况毕竟抵达相同一同性情况,即获得一同。

一同一同性算法
Paxos

Paxos是开端、最简略的分布式一同算法,是Leslie Lamport(也是LaTeX的完毕者)于1990年提出的一种依据消息传递的一同性算法,是通过节点之间来回两次完毕情况复制。

Paxos 算法处理的问题是一个分布式系统怎样就某个值(选择)抵达一同。

Raft

Raft正是因为Paxos算法不简略了解和完毕而提出的,Raft通过在系统中引入强势领导者来处理彼此系统之间的调和问题,Raft是Paxos的简化版别。Paxos和Raft的差异在于推举的具体进程不同。

在Raft中,任何时候一个服务器可以扮演下面人物之一:
a) Leader: 处理全部客户端交互、日志复制等,一般一次只需一个Leader;
b) Follower: 类似选民,彻底被逼;
c) Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。

Raft阶段分为两个,首要是推举进程,然后在推举出来的领导人带领进行正常操作,比如日志复制等。

PBFT

PBFT也称为拜占庭侵犯容错算法。这儿的拜占庭侵犯,学术称谓也称为自动型侵犯,即它不是被逼型侵犯,不是简略的数据盗取和数据偷听,拜占庭侵犯完毕的是对消息的偷听,一同对消息进行恶意修改的意图。

是第一个比较广泛的BFT算法,在PBFT算法中至多可以忍耐不跨过系统全部节点的数量的三分之一拜占庭节点,即假定有跨过三分之二的正常节点,系统就可以正常作业。

PBFT选用三阶段协议进行作业,包含pre-prepare、prepare和commit三个阶段。

POW

POW,全称为Proof of work,也即POW证明机制是依据作业量的,通过作业量的证明来完毕系统的数据一同。

POW机制在比特币系统出现之前现已有研究人员在运用,首要是用在防垃圾邮件方面。

在比特币系统中POW证明机制决议了系统数据一同的来历方,也就是比特币系统中区块链的记账方的抢夺,只需求向系统证明节点可以快速供应相应的作业量,节点就有向区块链中写入数据的权利。

POW证明机制依据的是数学上难以快速核算的问题,包含Hash磕碰问题、大数分化问题、椭圆曲线问题等。

因为这些数学上“难”的问题没有核算的捷径,每个节点只能通过许多的穷举才华找到对应的答案,这是POW证明机制的利益,一同也是POW证明机制的缺点。因为POW是一种赢者通吃的方式,就简略导致系统中细小的参加方只是陪练的人物,一同也浪费了系统许多的资源,是一种不“绿色”的机制。

POW现在的首要完毕系统是比特币系统和以太坊系统。

POS

POS,全称为Proof of Stake,由Quantum Mechanic于2011年在bitcointalk论坛上面提出。

POS需求系统中作业一种代币,运用这种代币来标明系统中各个节点的权利,节点具有更多的代币就具有更多的发言权、更多的职责,一同也获得更多的收益。POS证明机制称为股权证明机制,黑客要侵犯系统需求获得足够多的系统代币,这和算力无关,POS机制比POW机制环保,这是它的利益,一同也是它的缺点地点。

POS机制的权利是由代币天然固定在系统中,使得POS系统作业发作的区块本钱比POW低,所以POS代币的内在价值没有POW凝聚的价值大,所以人们对POS发作的代币多少持不信任心境。

POS机制一般和POW结合来运用,通过POS来控制POW作业量证明的难度,朴实的POS机制完毕比较困难。

以这些技术为基础,区块链完毕了它去中心化的本质特征。

通过非对称暗码技术,完毕了区块链的前史可信;

通过点对点通讯,完毕了区块链网络的不可间断;

通过一同机制,完毕了区块链网络链条的仅有、数据的仅有,保证了系统的正常作业。

一同

第一个概念,叫做 consensus,中文叫做一同,就是我们对一个作业,都 附和,不光是发作了作业 A 和 B,而且作业 A 先于作业 B 的次序,都一同认同。

第二个概念,叫做 consensus finality,就是终极一同,意思就是我们在做 下一个决议之前,现有这个决议有必要是终极的,不能改动的。

分叉
比特币选用的 pow,原理就是在进行哈希磕碰, 那么在这个进程中,根本上会出现几个人同一时刻,抵达哈希磕碰的作用。那么 pow 其实是没有完毕一同的,一旦出现一同分叉,比特币准则是最长链取胜。 那么短的分叉,就会被扔掉。但是在理论上,假定有一帮人,决议就是将这个短 分叉继续下去,那么真实的两条链就分出来了,当然事实上我们没有这样做。

软硬分叉涉及到的问题是去中心的化的节点软件、协议、版别晋级的问题(软硬分叉都是因为软件晋级导致的问题,而不是一同不合导致的)。

一开端,全部的节点作业相同的软件,遵从着相同的一同协议,维护着相同的一条链(blockchain)。这时,一部分节点晋级到了新版其他软件,具有了新的一同协议,这时会出现下面四种情况:
新节点认为老节点宣告的区块/生意合法;
新节点认为老节点宣告的区块/生意不合法;
老节点认为新节点宣告的区块/生意合法(没发觉改动);
老节点认为新节点宣告的区块/生意不合法(发觉出了改动);

留心:不合法会分为全部生意都不合法和部分生意不合法。这儿为了简化模型,把有部分生意不合法的都归为生意不合法。
实践情况是上面4种情况的组合,除此以外,我们还要添加一个维度,就是新节点和老节点的算力比,又分为下面两种类型:
新节点算力>50%;
新节点算力<50%;

留心,我们现在在网站上看到的各种关于软硬分叉的资料,都是依据新节点算力>50%的情况下议论的。这儿我们也只议论新节点算力>50%。要留心,另一种情况下,即新节点算力<50%,情况会彻底不一样。

软分叉是一个后来才出现的词,之前并没有。我们首要来讲一下什么是硬分叉(hard-fork)。

硬分叉(hard-fork)

硬分叉是指:当系统中出现了新版其他软件(或称协议),而且和前版别软件不能兼容,老节点无法接受新节点挖出的全部或部分区块(认为不合法),导致一同出现两条链。尽管新节点算力较大,比如99%的算力为新节点,1%的老节点仍然会维护着不同的一条链,因为新节点发作的区块老节点实在是无法接受(尽管它知道网络上99%的节点都接受了),这称为硬分叉。
留心:以上情况依据新节点算力>50%。

当有必要硬分叉时,我们需求要求全部节点一同晋级软件,未晋级的节点将不能正常作业。假定有较多老节点不愿意晋级,他们将作业在其他一条彻底不一样的链上。

硬分叉发作的原因:新的节点要求比老的节点要宽松许多。

软分叉

软分叉是指:当系统中出现了新版其他软件(或称协议),而且和前版别软件不能兼容,新节点无法接受老节点挖出的全部或部分区块(认为不合法)。因为新节点算力较大,老节点挖出的区块将没有机会得到认可,新老两头从始至终都作业在同一条链上,这称为软分叉。
留心:以上情况依据新节点算力>50%。

软分叉发作的原因:新的节点要求比老的节点要严峻许多。

软硬分叉的优缺点

上面的界说可以看出软硬分叉有各自的优缺点,首要软分叉和硬分叉比较具有下面的利益:
软分叉总是只需一条链,没有分红两条链的风险;
软分叉不要求全部节点同一时刻晋级,答应逐步晋级,且并不影响软分叉进程中的系统稳定性和有效性;
但软分叉也有缺点:
软分叉的条件是老的节点总是可以接受新节点的区块,这就要求把系统规划成向前兼容(forward compatible);
软分叉总是树立在对老节点进行欺诈的基础上,它让老节点没有发觉实践上现已发作的改动,某种程度上违反了单点无缺验证的准则;

向前兼容(forward compatible)

向前兼容是非常有意思的术语,它不同于我们一般说的软件规划中向后兼容(backward compatible)的办法。它要求关于新或许出现的区块形状、一同机制有个预先的判别,并在老的系统中留有余地或后门。当新的节点被布置时,老的节点可以接受新节点所发作的区块。

那么,比特币里是怎样完毕向前兼容的?

答案是:非标准生意(non-standard transaction)。

比特币中设定了如下规矩:
将全部生意分类为:标准生意、非标准生意和不合法(invalid)三种;
假定发现不合法生意,一概拒绝,假定该不合法生意在某个区块中,则拒绝整个区块;
在标准装备下,全部节点对非标准生意选用以下心境:
a. 不转发
b. 不接受
c.不打包
关于现已进入区块的非标准生意选用以下心境:
接受该区块;
对区块中的全部生意,包含该非标准生意按既有规矩进行验证;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44172023/article/details/90052911