主页 > imtoken官方安卓下载 > 比特币等数字货币的核心运行原理及案例

比特币等数字货币的核心运行原理及案例

imtoken官方安卓下载 2023-01-18 12:41:22

关于比特币等数字货币的工作原理,本文组织几个关键问题分别进行描述。

定义

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

数字货币

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

数字货币被定义为**数字A链的数字签名**。数字货币从所有者转移到下一个人。所有者使用私钥对交易交易和下一个人的公钥进行数字签名,并将数字签名附加到数字货币的背面(数字签名链)。 收款人可以通过验证数字签名来验证自己是否收到了数字货币。

自创建以来,数字货币一直在进行交易和数字签名。我们可以等效地认为,数字货币就是一个数字签名链。例如:

所有者 0 将他的数字签名和所有者 1 的公钥附加到第一笔交易的末尾(从左到右)。比特币系统验证无误后,该电子货币将属于 Owner 1's。所有者 1 将其数字签名和所有者 2 的公钥附加到第二次交易的末尾。比特币系统验证无误后,这个电子货币就属于Owner 2的了。第三笔交易类似……

比特币运行基本原理_比特币挖矿原理_电梯的基本构造,运行原理

比特币交易输入输出

首先,关于比特币交易一定要记住以下四个原则:

我们钱包中的比特币金额与钱包地址相关联:

例如:用户创建了一个全新的钱包比特币运行基本原理,它收到 3、0.01、0.2 三种不同数量的比特币:您将 3 个比特币发送到与钱包关联的地址,另外两个alice 向另一个地址付款。钱包报告余额为 3.21BTC,但如果你分析钱包的内部组织,你会发现它们的金额不是简单加权在一起的(不是 3.21 亿聪),尽管它们的原始交易是 0.01 ,0.2 和 3 比特币。但是收到的比特币金额并没有在内部混合,而是作为发送到钱包的确切金额分开。上例中的三个金额称为其原始交易的输出。

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

比特币运行基本原理_电梯的基本构造,运行原理_比特币挖矿原理

电子货币交易

在比特币中,一种电子货币的价值是用价值来衡量的,单位是聪。 1 BTC = 100,000,000 聪。交易的本质是价值的转移,即所有者对自己的一种或多种电子货币进行数字签名,即投入。比特币系统经过验证后,会创建一种或多种属于接收方的电子货币,即输出。请注意,一种电子货币,比如人民币,不能被撕成两半,但可以兑换成几种等值的电子货币。

例如:Alice 支付给 Bob 价值 0.2 BTC 的电子货币,Bob 收到 0.15 BTC 的电子货币,并给 Alice 一个 0.05 的电子货币比特币。

Alice 创建了一个交易。 Alice 选择一个价值 0.2 BTC 的电子货币作为本次交易的输入。 Alice 支付给 Bob 一个价值 0.15 BTC 的电子货币,并给自己找零 0.05 BTC 的电子货币,这是该交易的输出。比特币系统验证通过后,Bob收到电子货币0.15 BTC。

交易结束后,Alice 的电子货币0.2 BTC 将由比特币系统铸造。 Factory”过时,“Mint”同时发行了两种新的电子货币,一种0.15 BTC的电子货币给了Bob,另一种电子货币0.05 BTC被换了给爱丽丝。只有没有被“造币厂”作废的电子货币才能用于交易,从而防止了双花。 “铸币厂”发行的电子货币称为输出,未作废的电子货币称为未使用的交易输出,简称UTXO。个人认为UTXO是比特币最伟大的设计!

TX:交易(交易)

比特币运行基本原理_电梯的基本构造,运行原理_比特币挖矿原理

TXO : TX 输出(交易输出):包含一个值和一个脚本,指定谁有权使用该交易(如需要私钥签名)。

UTXO:未使用的 TXO(未使用的交易输出):只有“未使用”交易的签名才是有效的签名

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

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

交易数据格式

下图是比特币交易:

电梯的基本构造,运行原理_比特币挖矿原理_比特币运行基本原理

它主要包含四个单独的部分:

比特币交易验证

让我们使用经典的 bob 和 alice 示例来解释挖矿节点的工作原理 验证 Bob 是否有权利用 Alice 之前向他发送(即传送)比特币。我将忽略支付“矿工费”以使下面的描述尽可能简单。

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

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

比特币运行基本原理_比特币挖矿原理_电梯的基本构造,运行原理

在网络矿工接受 Alice 的交易并将其放入一个区块后比特币运行基本原理,其输出将自动被视为新总 UTXO 的一部分。这就是为什么 Alice 的交易被标记为“之前”——它已经是区块链内容的一部分。

现在,如果 Bob 想要“花费”并将那些 0.8 个比特币(由 Alice 分配给他)发送到 Zoe 的比特币地址,他必须准备自己的 Coin 交易消息,1 个输入和 1 个输出(抱歉,Bob 没有任何变更案例)。

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

来自 Alice 和 Bob 的交易消息的数字签名(由 Bob 的 'sk' 生成)结合一些选定的标准交易数据(由 Bob 的 'sk' 生成)Bob 的 'PK' ',可用于验证数字签名

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

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

Bob 的 'pk''Double hash' 是什么时候(首先是 SHA-256,然后是 RIPEMD-16 0) 产生一个 160 位的输出,它与 Alice 的交易输出中指定的比特币地址值完全匹配 #0 锁脚本可以使用 Bob 提供。“pk”(在 Bob 的交易输入 #0 中提供)正确验证了从 Alice 和 Bob 的交易中选择的标准交易数据提供的数字签名(在 Bob 的交易输入 #0 中)。

如果第 1 步和第 2 步都成立,Bob 可以访问这些 0.8 BTC 并可以将交易添加到下一个区块链。

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