主页 > imtoken新版app > 科普 | 比特币交易的过程

科普 | 比特币交易的过程

imtoken新版app 2023-04-10 06:38:24

近日,博主正在整理一本通俗易懂的挖矿科普相册,希望能全面介绍一下从最初的加密货币交易到挖矿确认交易的挖矿过程中发生了什么。哪些环节产生挖矿收益,我们常说的算力是什么,为什么要这样分配挖矿收益等等。

以比特币为例,我们知道在比特币网络中设计挖矿的目的是为了打包交易,维护比特币网络,所以交易实际上是与挖矿密切相关的第一环节。比特币网络中的交易过程使用了非对称加密技术、数字摘要技术、区块链技术等,其中不乏大神明珠,博主不会丑。这篇文章的主要目的是用比较通俗的语言展示比特币的交易过程,让更多像作者这样的技术外行能够了解比特币。

在开始说明之前,先有几个安利的概念:

非对称加密:又称公钥加密,它通过密码算法生成一对公钥和私钥,公钥向公众公开,私钥由人保管。它有两个目的:首先,其他人可以用公钥加密数据并将其传输给公钥持有者。公钥持有者使用对应的私钥解密数据并读取信息。这样,可以保证信息传输的安全;其次,公钥持有者可以使用私钥对信息进行签名(签名过程与加密过程类似),然后将信息和签名发送给其他人,其他人可以通过公钥验证信息签名(验证过程类似于解密过程),如果验证签名信息与发送的信息一致,则证明该信息是由公钥持有者发布的,可以在不暴露公钥持有者身份和私钥的情况下保证信息来源的可靠性。性别。(参考链接:) 散列算法:也称为散列函数,它可以通过计算一条消息或具有大量数据的数据来计算出具有固定格式和少量数据的数字摘要。一个好的哈希算法应该是不可逆的(无法从数字摘要中推导出原始信息或数据)、敏感(原始数据的任何微小变化都会使数字摘要发生巨大变化)和防冲突(很难找到具有相同数字摘要的两条不同消息)。(参考链接:每个 UTXO 都由一个公钥(钱包地址)锁定,只有持有公钥对应的私钥的人才能通过私钥签名(解锁)和使用 UTXO。UTXO可以理解为一种抽象的纸币,但它的面值是不固定的(不只是5元、10元,可以是任意数字)。(参考链接:)

除了代码,让我们看一下比特币交易的样子:

如下图,有A、B、C、D四个人,他们都有比特币钱包,钱包的私钥是自己持有的。钱包地址(由其各自的钱包公钥生成)发布在比特币网络上,用于 UTXO 锁定和验证。

最初,A to C0.7BTC,比特币网络中的记录是UTXO(1): A to C0.7BTC; B to C0.5BTC,在记录中在比特币网络中是UTXO(2): B to C0.5BTC。此时C的比特币钱包的账户余额就是这两个UTXO的总和,C的比特币总数= UTXO(1)+UTXO(2)=1.2BTC。如下图:

这一天,C从丁那里买了一批货,需要付丁0.8BTC。C通过比特币网络向D转账,但是C现有的两个UTXO小于0.8BTC,需要两个UTXO一起使用,类似于现金交易:支付丁1.2BTC,丁找到给 C0.4BTC。但在比特币网络中,这个换工作是由C自己发起的。

整个交易流程如下:

C 通过比特币钱包准备交易信息。交易信息包括两部分:输入和输出。输入为UTXO(1)和UTXO(2),以及C的钱包私钥签名(因为UTXO(1)和UTXO(2)都被C的钱包公钥锁定, 使用前需要通过 C 的私钥签名解锁) 交易的输出是一个未确认的 UTXO (3): C 给 Ding 0.8BTC,这个新的 UTXO 指向 Ding 的钱包公钥,交易确认后,由丁的钱包公钥锁定。

这时候还有0.4BTC需要改成C,所以还需要输出一个未确认的UTXO(4):C to C0.3999BTC,这个新UTXO指向C的钱包公钥,交易确认后,将被C的钱包公钥锁定。

为什么找零的数量不是0.4BTC?由于比特币网络的要求,交易转账需要向比特币网络支付交易费用。剩余的 0.0001BTC 不指向任何钱包公钥,将作为转账费用支付给打包交易的矿工(如果不做任何更改,所有剩余未指定的比特币将支付给打包交易的矿工)将交易打包为手续费,但目前找零工作是由钱包自动完成的,不用担心)。

交易信息准备好后,C的钱包验证交易合法(UTXO合法,签名有效,输入输出金额有效等),交易广播到比特币网络,挖矿节点验证交易。交易记录在比特币区块中),广播到比特币网络,交易完成。旧的 UTXO 被消耗,新的 UTXO 生效。此时,Ding 的钱包里有一个未使用的 UTXO(3):C 给了 Ding 0.8BTC比特币流程中的关键技术,C 的钱包里有一个未使用的 UTXO)。UTXO(4): C to C0.3999BTC。

以上是一个比较抽象的比特币交易流程,关于比特币交易的结构、签名验证、节点验证、交易广播、加入挖矿节点内存池、矿工构建准备区块、最终区块确认过程,后面会讲到。它们是单独介绍的,本文不再展开。

从这个抽象的交易过程中,我们可以发现,一笔比特币交易本质上就是一堆UTXO的输入输出过程。随着旧的 UTXO 被消耗,新的 UTXO 被生成,一次又一次地完成比特币交易。交易过程受到非对称加密和散列算法的双重保护。比特币持有者可以放心地完成交易比特币流程中的关键技术,而不必担心身份被泄露。交易过程中也会消耗一部分比特币,用于奖励打包交易的矿工。矿工们很乐意做他们维护比特币网络的工作。

这篇文章的链接: