Transactions
比特币交易只是一堆数据。
它包含有关发送金额、发送自哪个账户以及发送至哪个账户的信息。
这只是信息,因此很容易用单行数据表示:
当你“进行一笔交易”时,你只需将此交易数据发送到比特币网络中。
最终,网络上的某个节点会将你的交易开采进一个区块中,这个区块(连同你的交易)将被添加到永久的交易文件中(该文件被称为区块链)。
这就是比特币交易的全部——发送到比特币网络中的一单行简单数据,以便它可以被开采进区块链中。
比特币交易是如何工作的?¶
比特币地址就像一个存有比特币的账号。
然而,当你进行一笔交易时,并不像是从一个罐子里取出特定数量的硬币并放入另一个罐子。
相反,地址记录着它所收到的每一笔独立付款:
所以当你想给别人发送比特币时,你拿取已经收到的完整金额,并用它们向新地址发送一个新金额:
当那个别人又想把比特币发送给另一个人时,他们也会以同样的方式用完他们收到的完整金额:
所以实际上,你是一批一批地接收比特币,并且使用这些批次来创建新的批次发送给其他人。
这就是交易的工作原理。
如果接收批次的总和大于我想发送的金额怎么办?¶
好问题,先生/女士。
在这种情况下(通常也是如此),你只需向交易中添加另一个输出 (output),并将差额(找零)发回给自己:
我知道这开始看起来可能有点尴尬,但从编程的角度来看,这是一种精确的处理方式。
总结¶
- 你的钱包给你一个比特币地址。比特币以批次的形式到达该地址,这些批次被称为输出 (outputs)。
- 比特币交易就是使用这些输出(作为输入)来创建属于别人地址的新输出的过程。
- 所有这些都可以由单行数据来表示。
有关此输出系统如何运作的更多细节,请查看输出。
什么能防止其他人花费我的比特币?¶
换句话说……
问题:“如果进行交易只是向比特币网络中输送一行数据,为什么别人不能构建一笔包含我的地址的交易,并用它把比特币发送到他们的地址呢?”
答案:因为每个交易输出上都有一个锁:
如果你在构建一笔交易时不解锁这些输出,比特币网络上的节点就会拒绝这笔交易:
但对你来说幸运的是,每个地址都配有一个唯一的私钥:
所以,如果你想在一笔交易中发送比特币,你需要使用这个私钥来创建一个一次性的签名,该签名可以解锁你地址上的输出。
在解锁了所有你想使用的输出之后,这笔交易就会被节点接受,并在比特币网络中进行传播。
这就是比特币交易的工作原理。














