比特币交易是描述比特币从发送者转移到接收者的消息。交易使用密码学进行数字签名,并发送到整个比特币网络进行验证。交易信息是公开的,可以在称为“区块链”的数字账本上找到。每一笔比特币交易的历史都可以追溯到比特币最初生产或“挖矿”的时候。
概述
如果你想给朋友汇款,在传统银行系统中,你可能会使用银行应用或网站来转账,银行会在幕后处理一切。然而,你可以在没有银行等中央机构的情况下发送比特币。比特币交易过程确保交易是合法、安全和透明的。以下是比特币交易概述:
1、创建交易:当你发送比特币时,你需要从你的数字钱包创建一个交易。这个交易包括发送者地址(公钥)、接收者地址(公钥)、要发送的比特币数量以及你愿意支付给矿工的交易费用。
2、数字签名:为了证明你拥有要发送的比特币,交易必须通过一个加密过程使用你的私钥签名。这被称为数字签名。因为私钥就像是你的数字密码,所以务必保密。
3、广播和确认:签名完成后,交易会被广播到比特币网络,并进入一个类似于等待确认交易的“候车室”的mempool。矿工可以从mempool中挑选交易来形成新的区块。第一个解决难题的矿工可以制造下一个区块。获胜的矿工会广播其新块,并被网络的其余部分确认。
4、交易完成:一旦确认,新块会被添加到每个网络参与者的区块链副本中。新块中的交易被认为是确认的。然而,通常会等待至少六次确认(在包含你的交易的块之后再添加六个块)来将交易视为最终。这是为了确保交易不会因为区块链的临时分叉而被撤销或双重支付。
比特币作为比特币交易记录而存在
我们将比特币定义为数字签名的链条。每个持有人通过对前一个交易的哈希和下一个持有人公钥进行数字签名,并将这些添加到硬币末尾来将比特币转让给下一个持有人。收款人可以通过验证签名来验证所有权链。
-- 中本聪,比特币白皮书
比特币本身并不存在。没有实体比特币,比特币持有人也没有“账户”。相反,有一个“区块链”,你可以将其视为一个账本,记录了所有比特币地址之间的交易。这些交易记录由比特币网络参与者(节点)更新,并在每个节点之间共享,以显示余额的增加和减少。如果你想查看任何给定比特币地址的历史记录及当前余额,可以使用区块浏览器。
公钥和私钥
要发送比特币,你必须能够访问与要发送的比特币数量相关的公钥和私钥。当我们谈论某人“拥有”比特币时,实际上是指那个人拥有一个由以下组成的“密钥对”:
1、一个公钥(地址),之前有一定数量的比特币被发送到该地址
2、一个对应的唯一私钥(密码),授权之前发送到上述公钥(地址)的比特币被发送到其他地方。
公钥,也称为比特币地址,是随机生成的字母和数字序列,类似于电子邮件地址或社交媒体用户名。顾名思义,它们是公开的,因此安全地分享给他人。事实上,当你想让别人给你发送比特币时,你必须提供你的比特币地址。私钥是另一串随机生成的字母和数字。然而,私钥就像电子邮件或其他账户的密码,必须保密。绝不要与任何你不完全信任的人分享你的私钥,以免被盗。
可以将你的比特币地址视为一个透明的保险箱。其他人可以看到里面有什么,但只有持有私钥的人才能解锁保险箱以访问其中的资金。
交易输入和输出
虽然可以单独处理硬币,但为每一分钱进行单独交易是很不方便的。为了允许价值分割和组合,交易包含多个输入和输出。通常会有来自较大先前交易的单个输入或结合较小金额的多个输入,最多两个输出:一个用于付款,另一个返回找零(如果有的话)给发送者。
--中本聪,比特币白皮书
让我们通过查看实际交易来解析比特币白皮书的这一部分:
马克想要发送1 BTC给杰西卡。为此,他使用他的私钥“签署”一条包含交易细节的消息。这个消息必须被广播到网络,并将包含以下内容:
输入。这包含关于之前发送给马克地址的比特币的信息。例如,假设马克之前从爱丽丝收到了0.6 BTC,从鲍勃收到了0.6 BTC。现在,为了发送1 BTC给杰西卡,可能会有两个输入:一个是之前来自爱丽丝的0.6 BTC,另一个是之前来自鲍勃的0.6 BTC。
金额。在这种情况下,马克想要发送的金额是1 BTC。
输出。有两个输出。第一个是1 BTC到杰西卡的地址。第二个是0.2 BTC作为“找零”返回给马克。第二个输出被计算为输入总和[0.6 + 0.6 = 1.2],减去马克想发送的金额[1 BTC]。
这可能看起来很复杂,但这样做是为了提高效率--好消息是,了解比特币交易的幕后细节并不是发送或接收比特币的必要条件。你的比特币钱包会处理这些!
广播和确认
在上述例子中,马克(通过他的钱包软件)会将他提议的交易广播到比特币网络。网络中一个被称为“矿工”的特殊群体会验证马克的密钥是否能够访问他声称控制的输入(即地址)。矿工还会将大约同时广播到网络的其他交易列表收集在一起并形成一个区块。任何完成“工作量证明”的矿工都可以提议一个新块,并通过引用最后一个块将其添加或“附加”到链上。然后,该新块被广播到网络。如果其他网络参与者(节点)同意这是一个有效块(即它包含的交易符合协议的所有规则,并且正确引用了前一个块),他们会将其传递出去。最终,另一个矿工会在其上构建,通过引用它作为前一个块来提议下一个块。任何在前一个块中的交易现在将被下一个矿工“确认”。随着块被添加到链中,马克交易的确认数量增加。
为什么某些比特币交易确认需要很长时间?
每个块只能包含一定数量的交易,这个数量主要由每个块的可用空间或“块大小”决定,块大小为1MB。有限的空间引发了费用市场,矿工收取费用,只选择包含那些支付足够高费用的交易。因此更高的费用作为激励让矿工优先处理你的交易。
请注意,块大小是一个任意限制,但比特币社区选择将块大小保持尽可能小,以便让人们更容易操作比特币节点。比特币现金是比特币的一个分叉,拥有更大的块大小,因此交易费用更低。
比特币交易费用是多少?
发送比特币的费用可能从几美分到100美元不等。费用差异大的原因是比特币费用取决于供需(即某个时间点网络的拥堵情况)和交易的“大小”。大小主要受输入影响,因此如果你的交易有很多输入,它会占用更多的块空间,需要更高的费用。例如,如果你想发送10 BTC,很可能你的交易需要比发送1 BTC更多的输入。10 BTC的交易可能由5+2+1+1+1组成(总共5个输入),而1 BTC的交易可能只有两个输入,如我们之前的马克/杰西卡例子。
许多钱包允许用户手动设置交易费用。这有助于你避免支付过高费用。例如,如果你不急于交易,你可以将费用设置得较低,以便在网络不太拥堵时被矿工处理。你也可以通过增加费用来确保你的交易立即被处理。