区块链流程的简单认识

大概了解了一下,可能有问题。

主要来自ppt(github)

有一些内容来自网络

另外可以到知乎搜索相关内容

https://blog.csdn.net/kaihuiguoji/article/details/91974530

https://www.jianshu.com/p/7d86785496c6

https://blog.csdn.net/jsjwk/article/details/81671619

中本聪的区块链算法。

每个user有一对公匙私匙(多对,一人多身份)-->问题,某节点被截获则可能会被冒充

重要的概念是交易,块

挖矿:

随机数+HASH->256位前10位是0.(这是一个难问题),找到随机数就是解开了这个问题,会被奖励比特币

问题:

双重支付问题,拜占庭将军问题。

双重支付问题:比如同一付款码在不同地点同时支付。(微信限制了此时不能截屏,同时短时间内就会改变图案)

过程

两个对象做交易时将交易广播,验证(比如A给B支付比特币,其他节点根据记录验证A是否有足够的比特币),其他节点验证成功会将交易记录到自己的块(非区块链中的块,是临时的一个记录一段时间的交易的块),然后对该块做算法(区块+nonce)(上面说的HASH),成功后广播全网,其他节点验证这个块和该节点算出来的随机数是否正确,若正确(多数节点验证正确),则将该块加入区块链。

例子:

A->B的交易,A在支票上用B的公匙加密,然后用A的私匙签名,这是一条交易,这样所有节点都可以知道是A发送的交易,就可以验证A的余额是否充足,是否存在重复支付,但是只有B可以获得货币。

当交易被A广播,大部分节点认为没问题,则整体上认为该交易没问题,则每个节点写入自己的记录的块。

这样每个节点都有块,记录着还没有加入区块链的很多交易。

而先做出来算法的节点的块,广播全网(包括块和一些信息用于验证),验证后会被加入区块链,该节点被认为拥有该块。然后所有的节点都保存了这个被认为是正确的块,相当于这一段时间被记录的交易被保存到区块链中(所有节点都保存该块,都保存了相关交易记录)。

块的结构:

prev block  区块链上前一块的hash值

merkle root 当前块交易信息的hash值

Nonce,算出随机数的节点,将随机数记录到Nonce

timestamp 时间戳

....

Txh Txh Txh...   (该块记录的交易)

验证时根据根据区块链中该块的merkle root 和该块中交易的hash值相等即可。

猜你喜欢

转载自www.cnblogs.com/lqerio/p/12098792.html