This article has been translated from English to Simplified Chinese.

比特币交易是如何进行的?

比特币交易是指将一定数量的比特币从一个地址转移到另一个地址并记录在区块链上

但是,这种“转移”过程是如何实际进行的呢?

在本课中,我将向您展示比特币交易从开始到结束的过程。

首先,我们将从用户的角度了解比特币交易是如何进行的。然后,我们将从全局的角度了解比特币交易是如何进行的。

这将帮助你记住之前课程中学习的所有新概念。

准备好了吗?

Start Bitcoin Transaction

假设钢铁侠有一枚比特币,她想把它送给蝙蝠侠。

Ironman sends 1 BTC to Batman

从钢铁侠的角度来看

钢铁侠首先要做的是打开他的比特币钱包。

可以是任何类型的钱包,但在这个例子中,他使用的是安装在笔记本电脑上的软件钱包。

Ironman initiates Bitcoin transaction

接下来,他会询问蝙蝠侠的比特币地址

这是蝙蝠侠希望接收比特币的地方。蝙蝠侠通过电子邮件向他发送了一个比特币地址,钢铁侠复制并粘贴了该地址。

Ironman asks for Batman's address

然后,钢铁侠输入了要发送给蝙蝠侠的比特币数量

Batman enters 1 BTC

由于他巨大的金钛合金手指容易打错字,所以他仔细检查了输入的数字是否正确。

然后点击发送

Batman sends 1 BTC

钱包软件随后要求输入密码以确认交易。

要发送比特币,钢铁侠需要向比特币网络证明,这笔钱确实是他发送的,而且他拥有比特币的所有权。

这时就需要用到他的私钥(保存在钱包中)。

在“钢铁侠”输入正确的密码后,钱包软件使用“蝙蝠侠”的私钥交易进行“签名”,生成一个单独的数据,即“数字签名”。(这一切都是在后台完成的。

Bitcoin wallet signs transaction

比特币交易幕后

至此,蝙蝠侠的参与已经结束。

钱包软件连接到比特币节点,发送交易信息以及“数字签名”公钥

节点检查交易是否有效

  • 发送者是否拥有与其地址绑定的足够比特币来执行交易?
  • 发送者是否有权发送比特币?

例如,它会检查确认蝙蝠侠确实有1个BTC可以发送。如果交易通过了所有检查,节点会将交易传递给其他节点。

默认情况下,节点之间互不信任,因此它们会再次自行验证交易。

只有当他们认为交易有效时,才会将其共享给与之相连的节点。

Bitcoin transaction sent to nodes

如果交易被视为有效,则将其存储在临时存储区,即“内存池”或“mempool”。

此时,交易被视为“未确认”或“待定”。

Bitconi transaction stored in mempool

被称为“矿工”的特殊节点会将该交易与其内存池中的其他有效交易打包成一个“区块”。

Bitcoin miners bundle transactions into a block

然后,矿工们将竞争成为第一个“开采”区块的人。这需要尝试找到一个以特定数量零开头的数字。

找到这个数字的唯一方法就是反复尝试。换句话说,就是尽可能多地猜测

Bitcoin miners compete

第一个猜中正确数字的矿工意味着他是第一个“开采”区块的人。

矿工猜对的那一刻,就会将区块和“中奖号码”共享给比特币网络中的其他节点。

First Bitcoin miner to guess correct nonce wins

比特币网络上的节点会验证矿工是否猜对了数字,如果正确,就会将获胜矿工的区块添加到区块链副本中。然后,节点还会将此区块发送给其他节点。

由于包含交易的区块已被添加到区块链的“官方”版本中,交易现在被视为“确认”

一旦该区块创建完毕,新交易被验证并包含在该区块中,则该交易被视为“一次确认”。

Bitcoin nodes validate new block

从蝙蝠侠的角度来看

蝙蝠侠看到交易已经确认,并查看他的比特币钱包,确认比特币是否已经转账。

Bitcoin transaction confirmed

在钢铁侠交易的基础上建立的区块越多,交易在区块链上的“确认”程度就越高。

基本上,每个区块的增加都被视为“额外确认”。目前,大多数交易需要等待六次确认才能被视为安全。

三个就足够了!

现在,一个比特币已从“钢铁侠”的地址转移到“蝙蝠侠”的新地址。

除非钢铁侠或蝙蝠侠公开他们的比特币钱包地址,否则没人会知道两位著名超级英雄参与了比特币交易。

人们只会看到1个比特币从一个地址发送到另一个地址,但不会知道地址背后是谁。

正如你所见,比特币交易中的许多步骤都是在幕后完成的。

当蝙蝠侠与钢铁侠共享地址,钢铁侠使用比特币钱包发起交易后,剩下的工作就由计算机和软件代码来完成。

比特币交易的概览

现在让我们来鸟瞰一下比特币交易是如何进行的。

假设钢铁侠已经输入了蝙蝠侠的地址和要发送的比特币金额。

Bitcoin has been sent

钢铁侠的钱包连接到一个节点,该节点向所有运行最新数据库(“比特币区块链”)副本的计算机(“比特币网络”)广播一条消息,大意是“我想向蝙蝠侠发送1比特币”。

钢铁侠拥有一组独特的字母和数字,称为“私钥”。通过这个私钥,蝙蝠侠的钱包软件会生成一个“数字签名”,确保信息来自他本人而非其他人。

比特币网络中的计算机(“全节点”)可以使用Ironman提供的另一串字母和数字(称为“公钥”)来验证“数字签名”,从而轻松确认是否是Ironman本人发送了消息。

他们还可以轻松确认Ironman有1个比特币可以发送,因为他们都有当前数据库的副本。

所有节点都会不断更新彼此之间的最新信息(“交易”),这些信息被添加到比特币网络中。

一笔交易就是一笔比特币从一个地址转移到另一个地址的记录。交易不会单独记录在区块链上,而是首先被分组为区块。

重要的是,此时交易只是被提议。还没有 计算机更新 其分类账(“区块链”)副本。

交易最初被放入一个等待区(“内存池”),等待确认。

内存池(mempool)是每个节点保存的未确认(待定)交易的小型数据库。内存池中的所有交易都是待定的,在它们被纳入区块之前不应被信任。

由于交易只是提议,尚未结算,系统可以快速传递消息,确保每个参与者都了解。

在下图中,Ironman和Batman分别用紫色钱包表示。

灰色圆圈代表计算机(“全节点”),它们是点对点(P2P)比特币网络的一部分。

黑色方块代表“区块链”,即账本的顺序更新副本,在钢铁侠向网络提出交易时。

如您所见,区块链的相同副本存储在世界各地运行比特币软件的计算机上(“全节点”)。这种设计确保没有任何实体能够控制账本,并使比特币能够抵御任何政府或中央机构的控制(或关闭)。

所有保存区块链完整副本的节点被称为“全节点”,要想删除账本,必须摧毁所有全节点。只要账本至少存在于一个全节点上,那么历史上所有的比特币交易记录就都存在。

Ironman and Batman as purple wallets

当然,创造交易的人不止钢铁侠一个。复仇者联盟的其他成员也在向其他接收者发送比特币。例如,美国队长可能会向冬日战士发送一些比特币。

这时,网络中一个特殊的参与者就出现了:“矿工”。

矿工是指分散在世界各地的计算机,它们是比特币网络的重要组成部分。矿工的工作是将新的有效交易(如钢铁侠的交易)捆绑或组合在一起,并提议进行结算。

这些交易组被称为“区块”,这也是“区块链”中“区块”一词的来源。

一个区块交易集合。区块按时间顺序链接在一起,形成“区块链”或区块链

在任何特定时间,成千上万台计算机都在相互竞争,争夺创建下一个区块的权利。竞争的过程就像解谜,只有解决了当前的谜题,矿工才能创建新的区块。

这个“谜题”基本上就是猜一个正确的数字。猜中正确数字的概率约为六万亿分之一。

因此,要想成为第一个找到“中奖”号码的人,诀窍就是尽可能多地猜数字。这需要强大的计算能力,而计算能力需要消耗大量能源。

谁先找到解决方案,谁就有资格获得奖励,即“区块奖励”。

区块奖励旨在激励节点参与挖矿。否则,矿工们将无法收回高昂的电脑成本和运行电脑的电力成本,也就没有矿工了。

区块奖励由两部分组成:

  1. 新铸造的比特币
  2. 交易费用(由发起交易的人支付,如Ironman

矿工“赢得”的新铸造比特币被称为“区块补贴”,占奖励的最大部分。目前,每个新区块奖励为6.25个新铸造比特币

每个区块包含多个交易,而所有交易都包含一笔费用,由矿工收取。

总结如下:

区块奖励 = 区块补贴 + 交易手续费

区块奖励是激励矿工完成验证交易和维护数据库所需工作的动力

每21万个区块(大约每四年),“区块补贴”就会减半,被称为“减半”。这个过程将持续到“区块补贴”为零。届时,矿工只能收取交易费

比特币网络大约每10分钟结算一个新区块,但具体时间取决于“谜题”的解决速度。

如今,大多数挖矿活动都是由“矿池”完成的,即由一群矿工联合起来,共享处理能力并分享区块奖励。

下图显示了这一过程。

Bitcoin Network with Miners

矿工们现在用橙色圆圈表示。

蓝色方块显示的是更新后的分类账,其中包含一些新交易,包括Ironman的

目前,只有一位网络参与者(提出新交易区块的矿工)可以看到完全更新的分类账。

其他参与者仍然只能看到较早的区块,这些区块以黑色显示。

由于奖励丰厚,许多矿工争相解决每个交易区块。

根据设计,解决“难题”是一项耗资巨大的工作,因为它需要强大的计算能力和大量的电力。而且,我们无法知道成千上万的矿工中究竟是谁先解决了“难题”。

一旦矿工解决了“难题”(猜对了数字),他就可以将解决方案发布到网络上,并提交其交易区块。

这种方法的巧妙之处在于,虽然解谜过程既困难又昂贵,但检查结果却非常容易。当矿工发布解决方案及其交易块时,网络中的其他成员会检查其工作。

如果交易有效且“谜题”的解决方案正确,网络参与者将更新其数据库副本,以反映新的交易

此时,Ironman的交易被视为已结算或 “确认”。1比特币已从Ironman的地址转移到Batman的地址,并正式记录在区块链上。

这种“共识机制”决定了哪些交易会被永久记录并“确认”,这是比特币区块链设计的核心。

这个过程如下图所示。

Bitcoin Network syncs blockchain

现在,所有网络参与者都接受了提议的新交易区块(蓝色方块)。因此,他们的分类账被更新并同步。

重要的是,下一个交易区块的结算取决于是否包含前一个区块的信息,这促使矿工快速更新其数据库副本,并确保对已结算区块的篡改非常困难。

这种“区块链接”正是该数据库架构被称为“区块链”的原因。

比特币区块链包含自诞生以来的所有区块,最早可追溯到被称为“创世区块”的第一个区块。

如果提交区块的未知比特币矿工是个不怀好意的人,提出一个无效的交易区块,从而以某种方式从中获利,该怎么办?

或者,如果“钢铁侠”恶意操作,试图在无人察觉的情况下同时向“蜘蛛侠”和“神奇女侠”发送同一笔1比特币的交易呢?

网络参与者会检查每个区块中的每笔交易,并拒绝包含无效交易的区块。如今,有超过10万个节点正在独立验证每笔比特币交易!

因为对网络参与者来说,验证交易 并确保仅结算有效交易是轻而易举的事情,而尝试结算交易的成本却很高,因此,试图欺骗系统的动机微乎其微。

总结

让我们总结一下比特币网络上的所有交互:

  • 如果您想向他人发送比特币,您只需提供对方的比特币地址,您的钱包就会连接到节点,发起交易。
  • 节点将验证交易,确认无误后,将有效交易广播并转发给其他节点和矿工。如果交易违反了比特币的规则,节点将自动拒绝。
  • 矿工将这些交易分批放入“候选区块”(临时区块),并竞争成为第一个正确猜出数学“谜题”答案的人,从而在区块链上发布自己的区块。
  • “获胜”的矿工可以将这个临时区块作为永久区块发布到区块链上,从而确认交易(以及批次中的其他交易)。
  • 节点接收该区块并验证矿工是否遵守网络规则。(如果该区块违反了比特币的规则,节点将自动拒绝它。)
  • 每当节点收到一个新区块并认为其有效时,就会将其转发给其他节点,以便所有节点(包括矿工)保持同步并维护相同的区块链。
  • 其他矿工会删除他们正在处理的临时区块,并开始处理新的“候选区块”,其中包含新的数学“难题”。
  • 一旦接收者的钱包连接的节点接收到新的区块,接收者的钱包就会显示新收到的比特币的更新余额。