比特币旨在用作点对点现金。当白皮书和节点软件发布时,系统创建了两种汇款方式。
比特币有两种汇款方式。 如果收件人在线,你可以输入他们的 IP 地址,它将直接连接并获得一个新的公钥并发送带有注释的交易。 如果收件人不在线,那么可以发送到他们的比特币地址,即他们给你的公钥的哈希。 他们在下次上线时获得包含该交易的区块。这种方法的缺点是没有办法发送注释信息,而且如果多次使用同一地址的话,可能会丢失一些隐私性。但如果两个用户都不能同时在线或收件人无法接收连接,它是一个有用的替代方案。--中本聪
本章介绍比特币的交易的构成,私钥、公钥和地址的对应关系,说明比特币交易签名和发送的过程,并简要介绍几种交易签名操作的使用场景。
比特币交易指的是什么
比特币中的交易是比特币系统中最重要的部分。系统中的其他部分,都是为了确保交易可以
被生成
通过比特币网络的验证,在网络中传播
最终被添加到记录全球比特币交易数据的总账簿(比特币区块链)中
比特币的交易,使用 复式记账法(复式簿记,double-entry bookkeeping)的形式,输入和输出比特币总量的差值,是隐含在这笔交易中的手续费。
对交易的双方:
付款方,需要提供证明和授权信息,证明自己拥有和授权支付这些比特币,是这笔交易的 输入
收款方,需要提供 “收款地址”,“接收” 比特币,是这笔交易的 输出
回忆一下 非对称加密的细节,使用公钥 pk ,去验证消息 msg 的签名 sig ,如果验签成功,
verify(pk, msg, sig) == true
我们可以说,持有这个公钥对应私钥的那个人, 认可 消息的内容。
可以把公钥,当作一种 身份标识 ,认可某个消息,就用私钥对消息签名。
可以把提供正确的消息签名,当作身份认证和授权的手段,因为只有持有了这个公钥对应的私钥,才能提供正确的签名。
这正是比特币交易的基本原理:
使用非对称加密的公钥,或者公钥的哈希(数据指纹),作为比特币的 “收款地址”(身份标识)
支付时,除非用对应私钥签名,证明拥有和授权支付这些比特币,否则无法支付
公钥和私钥一一对应只能单向计算,支付时,只有拥有对应的私钥,才能生成正确的证明和授权信息,无法伪造,不可抵赖。
交易链条
Alice 用现金从 Joe 那里换了点比特币,之后去 Bob 的咖啡店支付比特币购买咖啡。
比特币的每笔交易,都用一个哈希值来索引和标识。
交易 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18 中:
Joe 支付了 0.1 个币给 Alice
这笔交易没有手续费
Alice 在随后的交易 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2 中:
用之前的交易输出,作为输入
输出 0.015 个币给 Bob 购买咖啡
输出 0.0845 个币的找零(Change)
手续费为 0.0005 个币
从图中你能看到:
一笔交易的输入,是之前某笔交易的输出
交易输出 是构成比特币交易的基本元素
比特币的单位
像人民币可以用元、角、分表示一样,比特币最小可以被分割成八位小数的 聪 (satoshi)。
1 BSV = 100,000,000 satoshi
除了聪之外,常用的还有 mBSV 和 μBSV。
1 BSV = 1,000 mBSV
1 BSV = 1,000,000 μBSV
UTXO
比特币网络会 跟踪 所有可找到的和可使用的交易输出,称为 未花费的交易输出 (UTXO,Unspent Transaction Outputs)。
“未花费” 的意思是,这个交易输出,可以在之后的交易的中(作为输入)被花费。
所有 UTXO 的集合,被称为 UTXO 集(UTXO set)。
交易会消耗 UTXO(输入),同时创建新的 UTXO(输出),交易反映了 UTXO 集的变化。
UTXO 是 面值为 “聪” 的、离散不连续的、不可分割的价值单元 。
面值可以是 1 聪(satoshi)的任意整数倍
一旦被创建出来便不可分割,只能在之后的某笔交易中被 整体消耗 掉
你可以组合若干小额 UTXO,来满足支付需求,就像你凑零钱去买可乐一样。
如果你有两个 UTXO,一个面值为 1 比特币,一个面值为 2 比特币,需要支付 2.5 比特币(没有手续费):
这两个 UTXO 作为交易输入,都被整体消耗掉
产生两个新的 UTXO,一个面值为 2.5 比特币(支付),一个面值为 0.5 比特币(找零)
如果一个 UTXO 的面值比一笔交易的所需量大,你使用一个面值为 4 比特币的 UTXO 去买可乐(没有手续费):
这一个 4 比特币的 UTXO 作为交易输入,被整体消耗掉
产生两个新的 UTXO,一个面值为 2.5 比特币(支付),一个面值为 1.5 比特币(找零)
一个 UTXO 是一个不可分割的价值单元,就像你不能把一张人民币撕开后继续使用一样。
你可以通过组合 UTXO,来创建任意金额的比特币交易。
Coinbase 交易
一笔交易会消耗之前创建的 UTXO,并创建新的 UTXO 以备之后的交易消耗。
当交易链条一直向前回溯,是先有输入,还是先有输出呢?严格来说,是先产生输出。
这是一种被称为 Coinbase 交易(创币交易或币基交易)的特殊交易。Coinbase 交易没有输入,可以 “无中生有” 的产生输出,即发行新的比特币。
更多关于 Coinbase 交易的内容,会在介绍比特币区块和挖矿的文章中详述。
总结
交易的本质是一种 数据结构 ,记录了交易参与者 价值转移 的相关信息
UTXO 是构成交易的基本元素,一笔交易的输入,是之前某笔交易的输出
UTXO 一旦被创建出来,便是一个不可分割的价值单元,只能在之后的交易中被整体消耗
交易反映了 UTXO 集的变化
交易可以包含一个或多个输入,产生一个或多个输出
Coinbase 交易会发行新的比特币,是一种没有输入只有输出的特殊交易
交易是构成比特币区块的基本单位,区块按产生时间顺序依次相连,构成了区块链。
比特币的每笔交易都是在区块链上的一个公开记录。
比特币区块链是一本全球复式记账总账簿,这个总账簿是 公开的 , 私密的 , 不可篡改的 。通过区块链浏览器,可以检索从比特币诞生至今所有的交易数据。
另外,强烈建议你去看看普林斯顿大学的公开课 Bitcoin and Cryptocurrency Technologies。第一讲作为背景知识介绍,由浅入深涵盖了下列内容:
Cryptographic hash functions 1:51
Hash pointers and data structures 20:28
Digital signatures 29:25
Public keys as identities 39:04
A simple cryptocurrency 44:39
网友评论