07-比特币挖矿

节点分类

比特币中的节点分成全节点和轻节点

全节点:

1.一直在线

2.在本地硬盘上维护完整的区块链信息

2.在内存里维护UTXO集合,以便快速检验交易的正确性

4.监听比特币网络上的交易信息,验证每个交易的合法性

5.决定哪些交易会被打包到区块里

6.监听别的矿工挖出来的区块,验证其合法性

7.挖矿:

        决定沿着哪条链挖下去?缺省情况下,沿着最长合法链挖下去

        当出现等长的分叉的时候,选择哪个分叉?缺省情况下,选择最先听到的分叉

轻节点(SPV,simplified payment verification)(比特币中大部分都是轻节点):

1.不是一直在线

2.不用保存整个区块链,只要保存每个区块的块头

3.不用保存全部交易,只保存与自己有关的交易

4.无法检验大多数交易的合法性,只能检验与自己相关的那些交易的合法性(轻节点只能检测哪个是最长链,但不能检测哪个是最长合法链)

5.无法检测网上发布的区块的正确性

6.可以验证挖矿的难度

7.只能检测哪个是最长链,不知道哪个是最长合法链

安全性

比特币是怎么保证安全性?

1.密码学上的保证:别人没有你的私钥,就没有办法伪造你的签名,所以不能把你账上的钱转走(前提是系统拥有大多数算力的矿工是好的,是遵守协议的,不会接受那些没有合法签名的交易)

2.共识机制

挖矿

挖矿的一个性质是无记忆性,所以无论是继续挖原来的区块,还是停下来重新挖一个新组装的区块,成功的概率都是一样的

挖矿的设备

挖矿的设备越来越趋于专业化

第一代:CPU:性价比太低(通用计算)(少而精)

第二代:GPU:主要用于大规模的并行计算(通用并行计算)(多而专)

第三代:ASIC(Application Specific Integrated Circuit):是专门为了挖矿而设计的芯片,过时即作废,只能计算哈希值,不能干全节点的其他工作(专用挖矿)

"矿石"是数字资源的隐喻,代表可通过计算工作提取的数字资产或价值。

矿石的出现一个目的,就是为了解决收入不稳定,单个矿工的收入是不稳定的

08-比特币脚本(The BitCoin Scripting Language)

比特币脚本是一种基于栈的、图灵不完备的脚本语言,用于定义比特币交易的花费条件。它是比特币系统的“智能合约”层。

Proof of Burn(这个脚本是证明销毁比特币的一种方法)
> output script
RETURN

:       [zero or more ops or text]
 这种形式的output被称为:
 Provably Unspendable/Prunable Outputs
>脚本说明
假如有一个交易的input指向这个output,不论input里的input script如何设计,执行到RETURN命令之后都会直接返回false,不会执行RETURN后面的其他指令,所以这个
output无法再被花出去,其对应的UTXO也就可以被剪枝了,无需保存

更多推荐