比特币概述
- 比特币是第一个成功的区块链应用
- 比特币底层涉及到许多严密复杂的逻辑,基本脉络如下:
- 哈希是一种基于数学运算的加密算法
- 在非对称加密的基础上,验证身份需要使用数字签名
- UTXO是未花费的交易输出
- 多笔交易打包在一起就是一个区块
- 多个区块链接在一起就是区块链
- 每个区块想要生效都需要挖矿
哈希
- 哈希算法是区块链数据不可篡改的基础
非对称加密
- 对称加密中加密和解密用的是同一把钥匙
- 非对称加密中有两把钥匙,一把叫公钥,由接收端生成后公开,发送端用公钥生成密文发送到接收端,接收端用仅自己持有的私钥来解密密文
数字签名
- 数字签名用在非对称加密中的接收端来验证发送端身份
- 数字签名是发送端对密文使用哈希算法得到的哈希值进行加密得到的
- 接收端用发送端公开的公钥对数字签名进行解密得到哈希值,然后再对接收到的密文使用哈希算法得到哈希值,若两个哈希值若一致,则可以证明发送端的身份
UTXO
- UTXO:未花费的交易输出,对应"余额"这一概念
- 比特币系统中的钱包只记录交易记录,而不记录余额
- 比如:
- 当前钱包内的UTXO
- 1 BTC(这是一笔获得1BTC的交易记录)
- 2 BTC
- 5 BTC
- 现在要消费4 BTC
- 将5 BTC消费,转账交易给收款方
- 系统找零1 BTC
- 收款方收到4 BTC
- 当前钱包内的UTXO
- 比特币仅仅在钱包地址中保存“交易记录” ,不存储余额
- 交易输入
- 交易输出
- 未花费交易输出
- 好处
- 性能:比特币运行至今全部交易记录只有几百G
- 避免双重支付:任何一个钱包中的所有交易记录都写入了整个区块链网络,无法篡改,不容抵赖
付款方如何生成交易数据
- 将上次交易记录与收款方公匙打包作为输入数据,通过哈希算法得到哈希值,再用付款方自己的私钥对该哈希值加密得到数字签名
收款方验证交易
- 收款方用付款方的公钥对数字签名解密得到哈希值,然后再对接收到的密文使用哈希算法得到哈希值,若两个哈希值若一致,则可以证明发送端的身份,认可该笔交易
交易记录打包成区块
- 每一笔交易中的所有数据作为输入数据算出一个哈希值
- 最终的区块默克尔树根与该树中所有交易数据都有联系
比特币网络节点之间的信任约定
- 多笔交易打包成一个区块,该区块与一个神秘数字放在一块做哈希运算,要求得到的哈希值要小于一个固定数值的哈希值,该数值具体体现为哈希值前面有足够多的0,所谓挖矿就是为了找到这个神秘数字
- 假设当前有一个区块想要写入区块链网络中,就把该区块公布给一定数量的矿工(有挖矿能力的服务器)
- 假设有一个矿工算出了该神秘数字,会交给周围的矿工来验证,若验证通过,则全网广播,该区块就可以写入到区块链网络中;该矿工也可以得到记账权
- 拥有记账权的矿工可以得到挖矿奖励,同时也可以得到该区块中的所有转账手续费
手续费给的越高,该笔交易优先级越高,处理的越快
将区块写入区块链
- 每个区块中有多笔交易记录
- 每个区块对应一个哈希值,该哈希值与上一个区块的哈希值一个做哈希运算得到哈希值串成链
区块链的意义
- 比特币开创了区块链时代:BTC、ETH、 EOS 、LTC
- 去中心化不是万能的,但是在特定领域确实能够很好的解决中心化解决不了的问题,所以区块链肯定不是一时热的昙花一现
- 区块链必将成为未来互联网的基础设施
- 区块链的应用领域:金融、医疗、政务、内容分发、版权确认、游戏
- 数字资产:由于写入区块链的数据不可更改,所以每个资产都是独一无二的