1. Overview
比特币利用了区块链技术,从发展和技术角度来理解比特币
2. 发展过程
2.1. 1 账本
基本规则
- 每个人都能向账本添加信息
- 月底统一结算
问题:添加信息时无法保证信息准确
2.2. 2 加密账本
使用数字加密技术,利用公钥+密钥,解决信用问题
- 产生的256位签名是根据内容和私钥,签名的验证是根据内容、签名和公钥
$$
Sign (Message, sk) = Signature
$$
$$
Verify (Message, Signature, pk) =\mathrm{T} / \mathrm{F}
$$
所以要伪造签名是很难的
问题:虽然签名很难伪造,但是可以将同一个信息复制好几遍,这样就能达到修改账本又不需要私钥的效果
解决:对每笔交易进行编号,就是把编号信息加入到信息中,这样每次都会要求新的签名
2.3. 3 有启动金的加密账本
为了防止有的人只花钱不还钱,所以再加上一条规则
- 每个人都能向账本添加信息
- 月底统一结算
- 不允许会产生欠款的交易
2.4. 4 去中心的有启动金的加密账本
之前的加密账本只有一个,可能在一个网站上,那么要怎么信任这个网站呢?
- 每个人都有这个账本
- 在修改账单时向周围广播这个新的交易
问题:顺序很重要,如何保证其他人以相同的顺序获取新的信息
解决:选择信任消耗最多计算资源的那份账本
主要工具:加密哈希方程SHA256,使得伪造信息所需要的计算资源大到无法承受
:star:对账本的设计:
- 将账单分成多个区块,包含了一系列交易信息和工作量证明
- 工作量证明就是一个特别数字满足其哈希值以一系列0开头
- 为了保证账单是正确顺序的,规定前一区块的哈希值要加入到当前区块的头部信息中
- 这样的话,如果要改变某一区块的信息,就要重新寻找工作量证明
- 如果交易者收取到两个完全不同的账单,选取工作量证明较大的那个
- 如果有两份长不多的,就都保留,直到一条区块链相比另一条要短得多
- 除非伪造者拥有多余全部计算资源的$50%$,不然很难长时间伪造数据
使用步骤
某人广播了一笔账单
矿工听到了账单,开始寻找一个数,加到账本末尾,计算整个账本的SHA256值,使得其满足以一系列0开头的要求
- 因为有很多人同时在找,所以要比谁算的快
- 广播新的区块
- 矿工获得奖励,普通交易者将听到的新区块加入到现存的账单上
使用书记