Java教程

了解区块链

本文主要是介绍了解区块链,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

pow 作为典型共识算法,如何保持各个节点的一致性?

比如全世界共有100个节点在争夺记账权,那么初始状态假设为区块链P,之后两个节点a,b分别同时计算出了合法的区块A,B,并广播。此时可能存在的情况是一些节点区块链为P->A,另外为P->B。此时就发生了不一致。假设之后的某时刻又有一个节点(P->B)c,产生了区块C,那么此时其区块链变为P->B->C,c节点广播区块时候就会将节点区块来呢为P->A 的节点转为 P->B->C,即选取最长链作为共识链。注意这里你可能有个疑问怎么P->A 的节点怎么会有B 的 信息呢?其实每个抢先计算成功的节点都会将区块广播给其他节点,所以同时发现区块导致的分叉会传遍全网络,只不过在c节点发现新区快C的时候,回抛弃P->A ,而选择P->B->C 。总结一句话就是最长链共识。

区块链技术最核心的就是共识机制和加密算法,对于加密算法你了解?

哈希算法

数学函数算法,表达一种数据映射关系。h = hash(X|z)主要具有如下特征
1、原像不可逆 即无法通过h=>z(除了暴力试错 即在值集合中一个个试)
2、发散性。即 即使z做了微小改动,其的到的h也是差别巨大的。

SHA-2 算法就是典型的哈哈希算法
区块链的结构如下其中父区块hash值 和 Merkle root 均为 hash算法的应用。
在这里插入图片描述
Merkle root
在这里插入图片描述

非对称加密算法

对称加密算法需要提前分享密钥,而非对称加密需要一对密钥,分为公钥和私钥,私钥由一个随机数生成,比特币中私钥产生的范围非常大,2的256次方,如果我们有了私钥,则
在这里插入图片描述

UXTO 与普通账户模型

在这里插入图片描述
上图中,所有的交易都可以找到前向交易,例如TX5的前向交易是TX2,TX2中的Output1作为TX5中的Input0。

意思就是TX2中的付款人使用了Output1中指向的比特币转移给 TX5 中的收款人,接着TX5中的人又把收到的比特币转移给了TX6中的收款人,成为了TX6中 Output0。

我们也可以发现,TX6中的收款人还没有产生TX7交易,也就是说Output0还没有被花费,这时候我们终于得到了UTXO的真正语义:Unspent Transaction Output,未花费的交易输出。

我们这时候可以发现UTXO也同样能表示余额,不过是重演计算的方式,它用不同的方式表达了余额,我们把一个地址上所有的UTXO全部找出来,就是这个地址总的余额了。

我们还可以发现,无论是TX5还是TX2,都已经成为历史交易,它们都忠实客观地记录了两笔交易,这两笔交易代表的是事件,而不是余额状态转移,这是我们看到的最直观的区别。

这篇关于了解区块链的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!