数字签名
- 只有转账人才能生成的一段防伪造的字符串。通过验证该字符串,一方面证明该交易转出方有本人发起的另一方面证明交易信息在传输过程中没有被更改
- 数字签名由:数字摘要和非对称加密技术组成
- 数字摘要吧交易信息hash成固定长度的字符串
- 再用私钥对hash后的交易进行加密形成数字签名
- 交易中,需要将完整的交易信息和数字签名一起广播给矿工
- 矿工节点用转账人公钥对签名进行验证,验证成功说明该交易确实由转账人发起
- 矿工节点将交易信息进行hash后与签名中的交易摘要进行比对,如果一致,则说明交易信息在传输中没有篡改
UTXO(unspent transaction outputs)
-
用户的余额是钱包中可用的UTXO总和,他们可能分布在数百个交易中
-
比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
这就是为什么有人说在这个世界上根本没有比特币,只有 UTXO,你的地址中的比特币是指没花掉的交易输出。
比特币交易验证
- 比特币规定,交易时,除了需要交易金额还需要转出一方
- 上一笔交易hash(你支付这笔交易的比特币从哪来)
- 本次交易双方的地址
- 支付方公钥,支付方私钥生成的数字签名
- 验证交易
- 找到上笔交易,确认支付方的比特币来源
- 算出支付方指纹,数字签名,确认与支付方地址一致,保证公钥属实
- 使用公钥解开数字签名,保证签名属实,私钥属实