Odaily星球日报|科普:比特币的交易过程

最近这段时间 , 博主在整理一份通俗易懂的挖矿科普专辑 , 希望从最初加密货币交易的发生到挖矿确认交易的各个环节 , 全面地介绍挖矿过程中 , 到底发生了什么 , 哪些环节产生了挖矿收益 , 而我们常说的算力又指的是什么 , 挖矿收益为何要这样分配等等 。
以比特币为例 , 我们知道比特币网络里设计挖矿的目的是打包交易 , 维护比特币网络 , 那么交易其实就是跟挖矿息息相关的第一个环节 。 在比特币网络中交易的过程使用了非对称加密技术 , 数字摘要技术 , 区块链技术等 , 其中的技术实现 , 已经有众多大神珠玉在前 , 博主就不献丑了 。 这篇文章的主要目的是将比特币的交易过程用较为浅显的语言展示出来 , 让更多跟笔者一样的技术门外汉了解比特币 。
Odaily星球日报|科普:比特币的交易过程
文章图片
在展开说明之前 , 需要先安利几个概念
非对称加密:也叫公开密钥加密 , 它是通过密码学的算法生成一对公私钥 , 公钥对外公开 , 私钥由本人保管 。 它有两个用途:一 , 他人可以将数据用公开的公钥加密后传输给公钥持有人 , 公钥持有人使用对应的私钥将数据解密 , 读取信息 , 通过这种方式 , 可以保证信息传输的安全性;二 , 公钥持有人可以使用私钥对信息签名(签名过程类似加密过程) , 然后将信息和签名一起发送给他人 , 他人可以通过公钥对信息签名进行验证(验证过程类似解密过程) , 验证签名信息与发送信息一致 , 则证明信息是由公钥持有人发出 , 可以在不暴露公钥持有人身份和私钥的情况下 , 确保信息来源的可靠性 。 (参考链接:https://en.wikipedia.org/wiki/Public-key_cryptography)
哈希算法:也叫散列函数 , 可以通过它将数据量较大的消息或者数据计算出一个格式固定 , 数据量较小的数字摘要 , 也叫指纹 , 散列值 , 或者哈希 。 好的哈希算法应该是不可逆的(无法通过数字摘要反推出原来的信息或者数据) , 敏感的(原来数据中任何一个微小的改动 , 都会使数字摘要发生巨大变化) , 防冲突的(很难找到两个不同的信息 , 它们的数字摘要相同) 。 (参考链接:https://en.wikipedia.org/wiki/Hash_function)
比特币里的公钥和私钥:比特币世界里 , 用来确定比特币归属的是按照比特币协议生成的一对对公钥和私钥 , 它们通过非对称加密算法(椭圆曲线算法)生成 , 公钥通过两次哈希算法(SHA256)运算得到一个散列值(也叫做哈希) , 再经过Base58Check编码生成了我们常见到的比特币的钱包地址 。 所以钱包地址经过解码后 , 就可以得到对应公钥的哈希 , 可以用于验证私钥签名 , 加密数据等等 。
UTXO:Unspenttransactionoutput , 未花费的交易输出 , 它是比特币世界里的抽象货币 , 每个UTXO都被一个公钥(钱包地址)锁定 , 只有持有该公钥对应私钥的人 , 可以通过私钥签名(解锁)并使用该UTXO 。 可以把UTXO理解为抽象的纸币 , 但它的面值不是固定的(不光有5块 , 10块 , 可以是任何数) 。 (参考链接:https://en.wikipedia.org/wiki/Unspent_transaction_output)
抛开代码 , 我们接下来看看比特币的交易是怎样的一个过程
如下图 , 有甲、乙、丙、丁四个人 , 他们都有比特币钱包 , 钱包私钥自己持有 , 钱包地址(由各自钱包公钥生成)在比特币网络公开 , 用于UTXO的锁定和验证 。
Odaily星球日报|科普:比特币的交易过程
文章图片
起始 , 甲给丙0.7BTC , 在比特币网络里的记录是UTXO(1):甲给丙0.7BTC;乙给丙0.5BTC , 在比特币网络里的记录是UTXO(2):乙给丙0.5BTC 。 此时 , 丙的比特币钱包的账户余额为这两个UTXO之和 , 丙的比特币总数=UTXO(1)+UTXO(2)=1.2BTC 。 如下图:


推荐阅读