区块链技术

华为为啥下载不了imtoken 2023-04-18 05:25:11

联客,为开发者而生,答疑解惑!

本文来自区块链技术社区,未经许可拒绝转载。

在这里插入图片描述

应用技术

算法加密1

比特币使用椭圆曲线密码术 (ECC) 生成公钥和私钥对。 钱包地址为公钥,私钥由用户保管。

比特币还使用了一种哈希算法Hash,它是一种通过哈希算法将任意长度的输入转化为固定长度的数据信息摘要的函数。

区块链系统一般采用哈希算法来快速验证用户身份。 如果用户声称拥有一个钱包,想要更改钱包对应的信息(在比特币中,使用钱包中的余额),则必须提交请求,请求包括三部分:钱包地址、明文请求、明文请求由钱包对应的私钥散列的签名。 该请求将被发送到区块链网络。

与非对称加密相比,哈希算法一般要快几个数量级,这样验证过程就可以非常快。 常用的Hash算法有MD5、SHA1、SHA256、SHA512、HMAC等。

点对点通信技术(Peer to Peer)

1、所有节点参与提供资源,包括带宽、存储空间和算力; 2、网络的分布式增加了系统对故障的鲁棒性,消除了单点故障;

分布式共识技术

要理解分布式共识算法,需要理解以下两个名词,即“异步”和“共识”。

异步:这里的异步不同于通常技术术语中的异步调用,而是指在分布式系统中,不对消息的处理速度或消息的传递时间做任何假设。 这就是著名的 FLP 不可能性定理。

(FLP Impossibility:(FLP Impossibility)是分布式领域非常著名的一个定理,该定理的论文由Fischer、Lynch和Patterson三位作者于1985年发表,之后该论文无疑获得了Dijkstra奖。FLP给出了一个惊人的结论:在异步通信场景下,即使只有一个进程失败,也没有算法可以保证非失败进程的一致性!)

共识:当多台主机通过异步通信组成网络集群时,网络默认是不可靠的,因此需要一种机制来复制这些不可靠主机之间的状态,以保证每台主机的状态最终达到相同的共识性状态,即是,共识。

共识共识算法

帕克索斯

Paxos是最原始最简单的分布式共识算法。 是Leslie Lamport(也是LaTeX的实现者)于1990年提出的一种基于消息传递的共识算法,通过节点间来回两次实现状态复制。

Paxos算法解决的问题是分布式系统如何对某个值(分辨率)达成共识。

Raft的提出正是因为Paxos算法不易理解和实现。 Raft 通过在系统中引入强领导者来解决相互系统之间的协调问题。 Raft 是 Paxos 的简化版本。 Paxos和Raft的区别在于选举的具体过程。

在 Raft 中,一台服务器在任何时候都可以扮演以下角色之一: a) Leader:处理所有的客户端交互,日志复制等,一般一次只有一个 Leader; b) Follower:类似于选民,完全被动; c) Candidate candidate : Similar to a Proposer lawyer, who can be elected as a new leader.

Raft阶段分为两个阶段。 首先是选举过程,然后是在选出的leader的带领下进行日志复制等正常操作。

拜占庭容错

PBFT 也称为拜占庭攻击容错算法。 这里拜占庭攻击的学术名称也叫主动攻击,即不是被动攻击,也不是简单的数据窃取或数据窃听。 拜占庭攻击达到窃听消息的目的,同时恶意修改消息。

它是第一个相对广泛的 BFT 算法。 在PBFT算法中,最多可以容忍三分之一的拜占庭节点不超过系统中所有节点的数量。 也就是说,如果有超过三分之二的正常节点,系统就可以正常运行。

PBFT采用三阶段协议工作,包括预准备、准备和提交三个阶段。

战俘

POW,全称Proof of work,即POW证明机制以工作量为基础,通过工作量的证明来实现系统的数据共识。

POW机制在比特币系统出现之前就已经被研究人员使用,主要是为了反垃圾邮件。

在比特币系统中,POW证明机制决定了系统数据共识的来源,即比特币系统中区块链记账方的争夺。 它只需要向系统证明该节点能够快速提供相应的工作量,并且该节点具有将数据写入区块链的权利。

POW证明机制是基于数学上难度大、计算速度快的问题,包括Hash碰撞问题、大数分解问题、椭圆曲线问题等。

由于这些数学上“难”的问题的计算没有捷径可走,每个节点只能通过大量的穷举来找到对应的答案。 这是POW证明机制的优点,也是POW证明机制的缺点。 由于 POW 是赢者通吃的模式,容易造成系统中的弱势参与者起到切磋的作用,同时也浪费了系统中大量的资源,是一种非绿色机制。

POW 的主要实现系统是比特币系统和以太坊系统。

收银机

POS,全称Proof of Stake,由量子力学于2011年在bitcointalk论坛上提出。

POS需要在系统中运行一种代币,用这种代币来代表系统中各个节点的权利。 如果一个节点拥有更多的代币,它就有更多的话语权、更多的责任和更多的回报。 收入。 POS证明机制称为权益证明机制。 黑客需要获得足够的系统令牌才能攻击系统。 这与计算能力无关。 POS机制比POW机制更环保。 这是它的优势,也是它的劣势。

POS 机制的权利自然是由代币固定在系统中,使得 POS 系统运行产生的区块成本低于 POW,因此 POS 代币的内在价值没有POW 精简,所以人们对 POS 产生的代币数量更感兴趣 不信任。

POS机制一般与POW结合使用。 POW 工作量证明的难度是通过 POS 来控制的,纯 POS 机制更难实现。

基于这些技术比特币系统接收区块链流程,区块链实现了去中心化的本质特征。

通过非对称加密技术,实现区块链的历史可信度;

通过点对点通信,区块链网络势不可挡;

通过共识机制,实现了区块链网络链的唯一性和数据的唯一性,保障了系统的正常运行。

共识

第一个概念叫做共识,中文叫做consensus,意思是大家对一个事件达成共识,不仅仅是事件A和B发生的时间,还有事件A先于事件B的先后顺序。

第二个概念,叫做consensus finality,就是最终的共识,就是说在我们做出下一个决定之前,当前的决定必须是最终的,不能改变。

比特币采用的pow原理就是进行哈希碰撞,所以在这个过程中,基本上会同时出现几个人,达到哈希碰撞的结果。 那么 pow 实际上并没有结束共识。 一旦出现共识分叉,比特币的原则就是最长链获胜。 这么短的叉子将被丢弃。 但理论上,如果一群人决定继续这个短分叉,那么真正的两条链就会分开。 当然,事实上,大家并没有这样做。

软硬分叉涉及的问题是去中心化的节点软件、协议、版本升级(硬分叉和软分叉都是软件升级引起的,不是共识差异)。

一开始,所有节点运行相同的软件,遵循相同的共识协议,维护相同的链(区块链)。 此时,部分节点已经升级到新版本的软件,有了新的共识协议。 此时会出现以下四种情况: 新节点认为老节点发送的区块/交易是合法的; 新节点认为老节点发送的区块/交易是非法的; 旧节点认为新节点发送的块/交易是合法的(不知道变化); 旧节点认为新节点发送的块/交易是非法的(通知更改);

注:非法分为全部交易非法和部分交易非法。 这里为了简化模型,将一些不合法的交易归类为非法交易。实际情况是以上四种情况的综合。 此外,我们还需要增加一个维度,就是新节点与老节点的算力比值,分为以下两种:新节点算力>50%; 新节点算力

请注意,我们在网站上看到的所有关于硬分叉和软分叉的信息都是基于新节点算力>50%的情况。 这里我们也只讨论新节点算力>50%。需要注意的是另一种情况,即新节点算力

软分叉是后来出现的词,以前没有。 先说说什么是硬分叉(hard-fork)。

硬分叉(hard-fork)

硬分叉是指:当系统中出现新版本的软件(或协议),与之前版本的软件不兼容时,旧节点不能接受新节点挖出的全部或部分区块(被认为是非法的) ), 导致两条链同时出现。 虽然新节点的算力比较大,比如99%的算力都是新节点,1%的老节点还是会维护一条不同的链,因为新节点产生的区块实在是让人难以接受旧节点(即使他们知道网络被上面 99% 的节点接受),这被称为硬分叉。 注:以上情况以新节点算力>50%为准。

当需要硬分叉时,我们需要要求所有节点同时升级软件,没有升级的节点将无法正常工作。 如果更多的老节点不愿意升级,他们将在另一条完全不同的链上工作。

硬分叉的原因:新节点要求比旧节点宽松很多。

软分叉

软分叉是指:当系统中出现新版本的软件(或协议),与之前的版本不兼容时,新节点不能接受旧节点挖出的全部或部分区块(被认为是非法的)。 因为新节点的算力更大,老节点挖出的区块将没有机会被识别,新老节点自始至终都在同一条链上工作,称为软叉。 注:以上情况以新节点算力>50%为准。

软分叉原因:新节点的要求比老节点严格很多。

软分叉和硬分叉的优缺点

从上面的定义可以看出,软分叉和硬分叉各有优缺点。 首先,与硬分叉相比,软分叉有以下优点:软分叉始终只有一条链,不存在分裂成两条链的风险; 软分叉 分叉不需要所有节点同时升级,允许逐步升级,软分叉过程中不影响系统稳定性和有效性; 但是软分叉也有缺点:软分叉的前提是老节点总能接受新节点的Block,这就需要系统设计向前兼容; 软分叉总是建立在欺骗老节点的基础上,使得老节点不知道实际发生的变化比特币系统接收区块链流程,某种程度上违背了单点完全验证的原则;

向前兼容

向前兼容是一个很有趣的术语,它不同于我们通常在软件设计中谈论向后兼容的方式。 它需要预先判断新的可能的区块形式和共识机制,并在旧系统中留下空间或后门。 当部署新节点时,旧节点可以接受新节点产生的区块。

那么,比特币是如何实现前向兼容性的呢?

答案是:非标准交易。

比特币中设置了如下规则: 将所有交易分为标准交易、非标准交易和无效(invalid)三种类型; 如果发现任何非法交易,将被拒绝,如果非法交易在某个区块中,将拒绝整个区块; 在标准配置下,所有节点对非标准交易采取以下态度: 请勿转发; b. 不要接受; 区块中的所有交易,包括非标准交易,均按照既有规则进行验证;