比特币:Bitcoin(BTC),A Peer-to-Peer Electronic Cash System,点对点电子现金体统
1、起源
- 中本聪在2009年初挖出第一批比特币
- 总量不超过2100万枚
2、底层机制
- 去中心化,P2P分布式数字货币系统
- 共识机制-POW工作量证明
- 非对称加密算法-数字签名
- 区块链账本技术
3、特性
- 硬通货-跨境交易
- 易携带-只需一个私钥
- 隐秘性-只暴露钱包地址
- 无货币超发
4、钱包
- 钱包就是P2P里的P(节点),主要是用来管理私钥和比特币转账地址
- 钱包分类
- 轻钱包——只存储维护跟你自己交易相关的数据
- 中心化钱包——数字货币交易所
- 钱包下载地址
https://bitcoin.org/zh_CN/downlo
5、比特币产生
- 比特币由矿工挖矿产生
- 生成的比特币被记录在矿工的名下
- 比特币通过矿工的公钥哈希值锁定
- 比特币通过交易(UTXO)在节点之间转移
- UTXO-未花费的交易
6、UTXO
-
UTXO(unspent transaction output):未花费交易输出
- 比特币拥有者的公钥锁定(加密)的一个数字
- UTXO就是比特币,比特币系统中只有UTXO,没有比特币
- 新的UTXO由挖矿或交易产生
-
UTXO存在全节点的数据库里
-
转账交易消耗自己的UTXO,同时生产新的UTXO,并用接收者的公钥锁定
-
比特币系统中用户的“余额”实际上并不直接存在,而是通过计算得来
7、交易模型
-
交易输出(UTXO)
- 锁定的比特币数量
- 锁定脚本(用接受者的公钥哈希)
-
交易输入(UTXO + 解锁脚本)
- 解锁脚本(发送者的签名和公钥)
-
签名:对发送者和接受者的公钥哈希以及整个交易签名
8、交易全流程
-
1、起初,第一个挖出的区块里面包含了一个coinbase交易,在coinbase交易中,没有输入,所以也就不需要签名,coinbase交易的输出包含了一个哈希过的公钥(使用的是RIPEMD16(SHA256(PubKey))算法)
-
2、当一个人发送比特币时,就会创建一笔交易,这笔交易的输入会引用之前交易的输出,每个输入会存储一个公钥(没有被哈希)和整个交易的一个签名
-
3、比特币网络中接收到交易的其他节点会对该交易进行验证——在一个输入中,公钥哈希与所引用的输出哈希相匹配(这保证了发送发只能花费属于自己的币);签名是正确的(这保证了交易是由币的实际拥有者所创建的)
-
4、当一个矿工准备挖一个新块时,他会将交易放到块中,然后开始挖矿
-
5、当新矿被挖出来以后,网络中的所有其他节点会受到一条消息,告诉其他人这个块已经被挖出并被加入到区块链
-
6、当一个块被加入到区块链以后,交易就算完成,他的输出就可以在新的交易中被引用
9、区块链:分布式账本系统
image.png- 共识机制—POW工作量证明
- 通过挖矿证明自己的善意节点,并获得生成区块和在该区块记账的权利
- 基于P2P网络,每个全节点都存储着最全的比特币交易记录
- 新区块通过包含前一个区块头部的哈希值(区块的唯一标识)建立链接关系
- 区块里装的就是所有的比特币交易记录(UTXO)
10、区块链网络
区块链网络中有三种区块链节点:
- 矿工:运行于强大或专用的硬件(比如ASIC)之上,主要目的是挖矿;
- 全节点:这些节点验证挖出来的块的有效性,并对交易进行确认;
- SPV节点:简单支付验证,如钱包节点
11、挖矿
- 在全网中和其他节点竞争计算(解一个难题)的过程
- 证明自己是非恶意节点
- 获得的权利和义务
- 记账权:把交易写入区块里
- 广播义务:把区块在全网广播
- 获得的奖励
- 挖矿奖励:12.5BTC
- 收取交易手续费
12、共识机制
- 拜占庭将军问题—共识机制之一
- POW(Proof of Work)——工作量证明
- 通过付出大量工作代价证明自己是非恶意节点(理性人都是逐利的,POW抑制了节点的恶意动机)
- 计算一个随机数(nonce),算出的正确随机数即POW
- 获取记账权利
- 打包交易并通知其他节点
13、交易确认
- 当一项交易被链上的区块收录以后,就是交易确认
- 在此区块之后每产生一个区块,此现交易的确认数相应加1
- 经过6个以上区块确认的交易才是安全的,因为篡改成本巨大
- 比特币钱包可以设置交易确认数
14、区块生成
image.png- 矿工在挖矿前要组建区块
- 将coinbase交易打包进区块
- 将交易池中高优先级的交易打包进区块
- 创建区块头部
- 挖矿成功后,将计算出来的随机数nonce(POW)填入区块头部,并向临近节点传播
15、区块验证
相邻节点收到新区块后,立即做以下验证
- 验证POW的nonce值是否符合难度值
- 检查时间戳是否小于当前时间两小时
- 检查merkle树根是否正确
- 检查区块size要小于区块size的上限
- 第一笔交易必须是coinbase交易
- 验证每个交易
16、区块链分类
- 公有链
- 任何人都可以参与使用和维护,信息公开,比如比特币,以太坊等
- 联盟链
- 若干组织共同维护,使用有权限限制,信息受保护,如银联组织
- 私有链
- 集中管理者进行限制,内部少数人可以使用,信息不公开
16、区块链——篡改账本
- 双花问题:同一笔比特币被支付多次
17、P2P
- 交易广播
- 区块广播
- 钱包广播—主要是广播钱包的公钥
网友评论