区块链学习一(比特币)
发布于 3 年前 作者 jomeswang 662 次浏览 来自 7*24快讯

逐渐打开区块链的神秘的大门

一: 比特币的密码学原理

1.1 哈希函数

1.1.1 哈希碰撞

选取的哈希函数需要 有 collision resistance 即 在常理认为 哈希之后的数不会重复。

1.1.2 哈希单向性

即 x-> f(x) 是 单向性的,即f(x) 不可能 得出 x的 (条件: 输入的值范围要足够大,足够随机)所以阔以在源数据之中拼接一个 nounce 值。

1.1.3 puzzle friendly

知道输出,无法主导输入的值的大致范围,需要一个个 的进行计算,计算出NONCE, 在 block header 中有nonce,我们就需要算出这一个 nonce 值满足以下条件。 难以解决,容易验证。

1.1.4 哈希函数的算法

比特币 使用 SHA-256 哈徐算法

1.2 电子签名

1.2.1 非对称加密

使用公私钥对方式对信息进行加密和解密。

公钥加密,私钥解密。

因此r如果用私钥来 签名,相当于电子签名。

1.2.2 公私钥生成

生成的时候随机,那么随机 选取的随机源要good

二: 比特币的数据结构

2.1 哈希指针

有 指针域和哈希域

哈希域存上一个节点的哈希值。

2.3 莫克尔树

使用莫克尔树,阔以对区块记录下来的交易记录进行错误勘察(查看数据源中有哪一些是被篡改过的)

2.3 莫克尔 证明

需要去验证当前记录已经被打包在了区块中了

节点分轻节点和全节点。 轻节点只储存 block header 部分,一般运用在手机上。u。全节点需要去储存block header 部分和 block body 部分。

当轻节点想要去查找莫一交易记录是否已经记录在区块链中的时候。

那么需要全节点提供 红色部分的哈希值,然后 用要验证的交易记录来取一次哈希,接着用红色部分的哈希再来取一次哈希,不断重复这一个步骤。 最后 验证出来的 根哈希值和轻节点拥有的根哈希值比对 看是否对的上来验证交易记录是否存在区块链中。

2.4 区块结构

三: 比特币的共识算法

3.1 攻击方式

3.1.1 双花攻击

一个货币使用两次

解决方案:

  1. (中心化 是由央行发行 央行确认)
  2. (去中心化 使用 区块链方式 双向哈希指针,指向币的 来源和去向。

3.1.2 分叉攻击

六节点确认,一小时确认时间

3.2 分布式共识

FLP: 在一个异步的系统里,网络延迟没有上限,那么只要有一个错误,那么就无法达到共识。

CAP: Consistyncy, Availability, Partiton tolerance 三角形模型,无法满足三者完美。

3.2.1 挖矿

记录账本 -> 矿工 -> 计算nonce -> POW

四: 比特币系统的实现

4.1 激励机制

打包-> 小费 and 出块奖励

4.2 出块

4 年出块奖励减半(挖出21万比特币的时间为4年左右 ) 由一开始的 50个 4年之后变到 25,以及类推 最终比特币的总量为2100个。

transaction-based ledger 维护一个结构 维护 totaloutputs

account-based ledger 账户机制

4.3 挖矿

进行伯努利试验,并且无记忆性 保证了算力与概率之间的比例关系。

四: 比特币挖矿难度调整

欢迎使用OKX交易所
1 回复

我看过这个课程,谢谢你的总结,应该可以成为精品贴

回到顶部