比特币系统(专业解读比特币和数字货币交易系统是如何运行的)

关于比特币等数字货币是如何运行的问题,本文整理了几个关键的问题来分开描述。

  • 数字货币定义。

  • 如何将一个数字货币进行分割成多个数字货币。

  • 如何将多个数字货币进行整合成一个电子货币。

  • 如何表示一个没有被花费数字货币。

  • 数字货币的交易流程是什么。

定义

有一些关键词,翻译成中文后,完全失去了原来的意思了。本文约定关键词如下:

  • inputs: 交易输入的集合,由一个或多个 input 组成

  • input: 一个交易输入。一个交易输入通常是由一个 UTXO 和数字签名等信息组成

  • outputs: 交易输出的集合

  • output: 交易输出的新的电子货币。通常是由电子货币的值和验证数字签名的脚本组成

  • double-spend: 双花。一枚电子货币可能被两次或多次

  • UTXO: Unspent Transaction Output 的缩写。通常引用一个 output

  • tx: Bitcoin transaction 的缩写。交易。

  • txid: Transaction id 的缩写。指的是交易的 hash 值。

  • satoshi: 1 BTC = 100,000,000 satoshi

数字货币

比特币白皮书中对数字货币进行了定义:

将一枚数字货币定义为**数字签名链**( a chain of digital signatures)。数字货币从所有者转移给下一个人是通过,所有者使用私钥,对交易 Transactions 和下一个人的公钥进行数字签名,并将数字签名附在这枚数字货币(数字签名链)的后面。收款人对数字签名进行检验,就能校验自己是否收到了数字货币。

一枚数字货币,从被创造出来开始,在不断地被交易,被附上数字签名。我们可以等价的认为一枚数字货币,就是一条数字签名链。如:

  1. Owner 0's 将他的数字签名和 Owner 1's 的公钥附在了第一笔交易的尾端(从左到右)

  2. 比特币系统验证无误后,这枚电子货币就属于了 Owner 1's。

  3. Owner 1's 将他的数字签名和 Owner 2's 的公钥附在了第二笔交易的尾端

  4. 比特币系统验证无误后,这枚电子货币就属于了 Owner 2's。

  5. 第三笔交易也是类似...

专业解读比特币和数字货币交易系统是如何运行的

比特币白皮书框图

比特币交易输入和输出

首先,关于比特币交易必须记住下面四个原则:

  • 我们发送的任何比特币金额总是被发送到一个地址。

  • 我们收到的任何比特币金额都被锁定到接收地址 - 通常与我们的钱包相关联。

  • 如果需要消费比特币,我们花的比特币金额总是来自之前收到的钱(存储在用户的wallet中)

  • 接收地址收到比特币,但他们不发送比特币 - 比特币是在wallet中来打包交易并发送。

我们的钱包的比特币金额是通过钱包的地址来进行关联:

例如:用户创建一个全新的钱包,它收到3,0.01,0.2三个不同数额的比特币:您发送3比特币到与钱包相关的地址和两个付款由alice另一个地址。 钱包报告有3.21BTC余额,但如果分析钱包的内部组织,你会发现他们的金额不是简单的加权在一起(不是321 mil satoshi),虽然他们的起源交易是0.01,0.2和3 BTC。但收到的比特币金额内部不会混合,而是作为发送到钱包的确切金额分开。上面例子中的三个金额被称为他们原始交易的输出。

专业解读比特币和数字货币交易系统是如何运行的

比特币地址交易

专业解读比特币和数字货币交易系统是如何运行的

比特币钱包区别

注意比特币钱包内部结构与物理钱包的机理的差别

使用电子货币进行交易

在比特币中,一枚电子货币的价值由 value 来衡量,单位是 satoshi。1 BTC = 100,000,000 satoshi。一笔交易本质就是价值的转移,即所有者对他的一枚或多枚电子货币进行数字签名,即 inputs。比特币系统验证后,创建一枚或多枚属于收款人的电子货币,即 outputs。注意一枚电子货币,就像一张人民币一样,不能撕开成两半用,但是可以将其兑换成若干个等值的电子货币。

举个例子:Alice 支付 Bob 价值 0.2 BTC 的电子货币,Bob 收到一个 0.15 BTC 的电子货币,并且找零给 Alice 一个 0.05 BTC 的电子货币。

  1. Alice 创建一次交易。

  2. Alice 选择一枚价值 0.2 BTC 的电子货币作为本次交易的 inputs。

  3. Alice 付给 Bob 一枚价值 0.15 BTC 的电子货币,并找零给自己 0.05 BTC 的电子货币,这部分是本次交易的 outputs。

  4. 比特币系统验证通过后,Bob 就收到了一枚 0.15 BTC 的电子货币。

专业解读比特币和数字货币交易系统是如何运行的

交易

当这笔交易结束后,Alice 那一枚 0.2 BTC 的电子货币,就被比特币系统这个“造币厂”作废了,而“造币厂”同时发行两枚新的电子货币,一枚 0.15 BTC 的电子货币给了 Bob,一枚 0.05 BTC 的电子货币找零给了 Alice。只有不被“造币厂”作废的电子货币,才能用于交易,这样就能够防止 double-spend。“造币厂”发行的电子货币称为 output,其中,没有作废的电子货币称为 Unspent Transaction Output,缩写为 UTXO。个人认为UTXO是比特币最伟大的设计!

TX : Transaction(交易)

TXO : TX output(交易输出):包含一个value值和一段脚本,该脚本规定了谁有权使用这笔交易(比如需要私钥签名)。

UTXO: Unspent TXO(未花费的交易输出):只有对“尚未使用过”的交易签名才能是有效签名

比特币区块链不维护每个比特币地址的个人余额。然而,个人比特币钱包应用程序可以扫描区块链数据库内容以及特定比特币地址的总UTXO的总量(即特定比特币地址的余额总和被列为比特币“接收者”的所有UTXO输出)。

只有UTXO的概念才能产生下一个问题:谁可以从UTXO中花费比特币,答案是:谁可以证明他们是位于比特币地址后面的{'sk','pk'}密钥对的合法所有者,谁就可以进行实际交易。

交易的数据格式

下图这是一笔比特币交易:

专业解读比特币和数字货币交易系统是如何运行的

交易数据举例

主要包含四个独立的部分:

  • 黄色部分表示的是:hash - txid(Transaction ID)

  • 蓝色大括号表示的是:交易的描述信息和元数据

  • 粉红色部分表示的是:inputs

  • 绿色部分表示的是:outputs

专业解读比特币和数字货币交易系统是如何运行的

比特币交易验证

让我们用经典的bob和alice的例子来解释挖掘节点如何验证鲍勃有权利用艾丽斯先前向他发送(即传送给)比特币。我会忽略支付“矿工费”,以保持下面的描述尽可能简单。

让我们假设在过去的某个时候,Alice在一些早期的交易中总共拥有1.6 BTC(比特币)。为了使图表尽可能清晰,该交易没有显示在图表上。

在某一时刻,Alice提交比特币交易信息(在下图中显示为Alice的交易信息),其中她将先前分配的1.6 BTC分成两个交易输出:输出#0向Bob的比特币地址和输出#1发送0.8 BTC发送0.8比特币到她自己的比特币地址(被认为是一个简单的“改变”等价物)。Alice事务的两个输出都包含单独的锁定脚本。输出#0锁定脚本指定了bob的消费条件,输出#1锁定脚本指定了alice的消费条件。

专业解读比特币和数字货币交易系统是如何运行的

交易数据流

在网络矿工接受Alice的交易并将其置于一个区块之后,其输出将被自动视为新的总UTXO的一部分。这就是为什么Alice的交易被标记为“之前” - 它已经是区块链内容的一部分。

现在,如果鲍勃想“花”并将那些0.8比特币(由爱丽斯分配给他)发送给佐伊的比特币地址,他必须准备自己的比特币交易消息,有1个输入和1个输出(对不起,鲍勃在这里没有任何变化案件)。

Bob的事务输入#0引用Alice事务的输出#0并且还包含“解锁脚本”。Bob的输入#0的解锁脚本包含:

  1. 从Alice和Bob的交易消息中结合一些选定的标准交易数据的数字签名(由Bob的'sk'产生)

  2. 鲍勃的'PK',可以用来验证数字签名

验证节点将如何确保提交“当前”事务的“Bob”是真正拥有Alice的事务输出#0的锁定脚本中列出的比特币地址的“真正的Bob”?这就是比特币脚本作为自动化工具派上用场的地方。验证挖掘节点只需从Bob的事务输入#0执行解锁脚本,紧接着从Alice的事务输出#0执行锁定脚本。如果两个脚本的组合顺序执行的最终结果返回TRUE,则Bob证明他有权从Alice的输出#0中花费比特币,否则该交易被废弃为无效。

在执行脚本命令的过程中,我不会详细讨论比特币脚本虚拟机如何操作堆栈。这已经在许多文章中得到了解释。相反,我将尝试描述执行脚本的主要目标。基本上,Bob的解锁脚本和Alice的锁定脚本的组合顺序执行必须证明两件事情,以便Bob的比特币交易被接受为有效的:

  1. Bob的'pk'是什么时候'双重哈希'(先用SHA-256,然后用RIPEMD-160)产生一个160位的输出,它完全匹配Alice的事务输出中指定的比特币地址值#0锁定脚本

  2. 可以使用Bob提供的'pk'(在Bob的交易输入#0中提供)适当地验证从Alice和Bob的交易中选择的标准交易数据提供的数字签名(在Bob的交易输入#0内)。

如果步骤1和步骤2都成立,则Bob有权使用这些0.8 BTC,并且可以将交易添加到下一个区块链中。

一句话总结:比特币协议功能的核心就是以前交易输出被重新用作新交易的输入的机制

比特币系统(专业解读比特币和数字货币交易系统是如何运行的)文档下载: PDF DOC TXT
文章来源: 理财天下网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2384272385@qq.com举报,一经查实,本站将立刻删除。