比特币交易如何运作?

2024-03-17分类:比特币市场 阅读(

比特币交易涉及用户按下“发送”按钮后在幕后发生的多个步骤。这些步骤包括创建一个新的唯一比特币地址、提交付款、验证交易、在新区块中编码信息以及仅使用未使用的交易输出(UTXO)作为输入来验证付款。每分钟和每小时的比特币交易速度可能会根据网络条件而变化。

比特币交易过程的幕后

我们通过以下场景介绍一下比特币交易流程:

在线商人鲍勃决定接受比特币作为付款方式。

买家爱丽丝拥有比特币,想要从鲍勃那里购买商品。

钱包是提供对多个比特币地址的访问的文件。地址是一串字母和数字,例如:1HULMwZEPkjEPech43BeKJL1ybLCWrfDpN。每个地址都有自己的比特币余额,用户可以创建任意数量的地址。将这些地址想象成银行账户,其运作方式略有不同。

创建新地址

比特币客户端软件为用户生成比特币地址。当鲍勃创建一个新地址时,他真正做的是生成一个“加密密钥对”,由私钥(只有用户知道)和公钥(任何人都知道)组成。

当使用私钥对消息进行签名时,可以使用匹配的公钥对其进行验证。Bob的新比特币地址代表一个唯一的公钥,相应的私钥存储在他的钱包中。公钥允许任何人验证使用私钥签名的消息是否有效。

提交付款

爱丽丝的钱包保存着她每个地址的私钥。她告诉她的比特币客户,她想将比特币转移到鲍勃的地址。然后,比特币客户端使用她要转移比特币的地址的私钥签署她的交易请求。网络上的任何人现在都可以使用公钥来验证交易请求实际上来自合法帐户所有者。

换句话说:

公钥用于接收比特币。

私钥用于签署交易以花费这些比特币。

当花费比特币时,当前所有者在比特币交易中提供他们的公钥和数字签名。该交易由私钥进行数字签名,表明授权使用该交易引用的资金。

有了公钥和数字签名,比特币网络中的每个人都可以验证并接受交易的有效性,从而确认转移比特币的人在转移时拥有比特币。

矿工如何赚钱:验证交易的矿工奖励

假设加里、格伦和乔治是比特币矿工。他们的计算机将过去 10 分钟的交易捆绑到一个新的交易块中。每个区块都包含一个“coinbase”交易,该交易向获胜矿工(在本例中为加里)支付 50 个比特币。加里的钱包中创建了一个新地址,其中包含新铸造的比特币余额。

此外,矿工还可以获得发送交易的用户支付的费用。该费用是对矿工将交易包含在其区块中的激励。

交易顺序

  • 交易在比特币网络上广播,每个参与者验证并传播交易,直到它到达网络中的几乎每个节点。
  • 该交易由挖掘节点验证并包含在记录在区块链上的交易块中。
  • 一旦记录在区块链上并被足够的后续区块确认,该交易就成为比特币开放分布式账本的永久部分,并被所有参与者视为有效。
  • 新所有者在交易中收到的比特币可以用于新的交易。

比特币每秒交易有多快?

现在,这一切需要多长时间?

比特币的平均交易吞吐量为每秒 7 笔交易 (tps),​​即每分钟 420 笔比特币交易;每小时 25,200 笔交易;每天超过 600,000 笔比特币交易。虽然这听起来可能很多,但与 Visa 等更成熟的交易系统(可以处理数千次每秒)相比,这个数字仍然很低。

对块中的信息进行编码:加密哈希

正是加密编码使区块链如此安全,其中加密哈希函数将数据集合转换为固定长度的字母数字字符串,称为哈希值。 

即使原始数据发生微小的变化,也会极大地改变生成的哈希值。基本上不可能预测哪个初始数据集将创建特定的哈希值。

例如:

随机数

为了从相同的数据创建不同的哈希值,比特币使用随机数。更改随机数会产生截然不同的哈希值。

挖矿计算机根据先前的哈希值、新的交易块和随机数的组合来计算新的哈希值。创建哈希值在计算上是微不足道的,但比特币系统要求新的哈希值具有特定的形式——具体来说,它必须以一定数量的零开头。

矿工无法预测哪个随机数将产生具有所需数量的前导零的哈希值。因此,他们被迫生成许多具有不同随机数的哈希值,直到找到有效的哈希值为止。

但是爱丽丝未经确认的交易在 Nonce 中在哪里呢?

与此同时,爱丽丝向鲍勃的转账被隐藏在其他更新的交易之下。虽然它还没有写入区块链,但它已经排队等待确认,并且该信息无法再更改。对于任何人来说,要修改细节,他们都需要重做加里所做的工作——因为任何改变都需要完全不同的获胜随机数——然后重做所有后续矿工的工作,这几乎是不可能的。

未花费的交易输出(UTXO)

在介绍未花费交易输出(UTXO)之前,我们需要了解比特币交易的输入和输出。

输入

输入是对先前交易的输出的引用。所有新交易的输入值(新交易输入引用的先前输出的总币值)都会被加起来,并且总计(减去任何交易费用)完全被新交易的输出使用。

通常,一笔交易包含多个输入。

输出

输出包含发送比特币的指令。交易输出包括该输出在被认领时的价值。

未花费的交易输出(UTXO)

由于特定交易的每个输出只能花费一次,因此区块链中包含的所有交易的输出可以分为未花费的交易输出(UTXO)或已花费的交易输出。为了使支付有效,它必须仅使用 UTXO 作为输入。

上图显示了比特币交易的主要部分。每笔交易至少有一个输入和一个输出,每个输入都会花费支付给前一个输出的聪。然后,每个输出作为 UTXO 等待,直到稍后的输入使用它。当用户的比特币钱包显示余额为 10,000 聪时,实际上意味着他们有 10,000 聪在一个或多个 UTXO 中等待。

交易期间的UTXO

想象一下,有人使用地址1HULMwZEPkjEPech43BeKJL1ybLCWrfDpN两次接收比特币。2019年2月5日的交易包含4,000聪,2019年3月9日的交易包含6,000聪。比特币的区块链不会帮助他们添加余额,从而存在1HULMwZEPkjEPech43BeKJL1ybLCWrfDpN: 10,000 的记录。相反,每次用户想要花费他们的比特币时,他们必须一一解锁属于他们的交易(将比特币发送到他们的公钥)。

例如,要发送 3,000 satoshis,只需解锁日期为 2019 年 2 月 5 日的交易或日期为 2019 年 3 月 9 日的交易,因为它们都包含超过 3,000 satoshis 。 

但要发送 8,000 聪,两笔交易都需要解锁才能在新交易中花费所有比特币,因为不允许部分支出;用户必须使用他们已解锁的所有比特币。如果他们打算只发送 8,000 聪,他们仍然需要在新交易中花费 10,000 聪,然后将 2,000 聪发送回属于他们的地址。

最后的话——用比特币支付

虽然比特币交易可以无缝进行,但现实生活中使用比特币进行的零售支付仍然受到交易速度缓慢的阻碍。然而,用比特币进行实际支付是中本聪在比特币白皮书中设想的 BTC 的关键功能之一。比特币的第 2 层(称为闪电网络)目前为这一可扩展性问题提供了解决方案。 

Tags: 比特币交易