主页 > imtoken苹果下载不了 > 比特币等数字货币的核心运行原理和案例

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

imtoken苹果下载不了 2023-03-14 07:38:24

比特币病毒勒索案例_比特币案例分析_比特币原始源码分析

关于比特币等数字货币是如何运作的,本文梳理出几个关键问题分别进行说明。

定义

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

数字货币

比特币白皮书中对数字货币的定义是:

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

一种数字货币,从被创造开始,就不断地被交易和数字签名。 我们可以等价地将数字货币视为一串数字签名。 如:

所有者 0 将他的数字签名和所有者 1 的公钥附加到第一笔交易的末尾(从左到右)

比特币系统验证无误后,该电子货币归所有者1所有。

所有者 1 将他的数字签名和所有者 2 的公钥附加到第二笔交易的末尾

比特币病毒勒索案例_比特币案例分析_比特币原始源码分析

经比特币系统验证无误后,该电子货币归所有者2所有。

第三笔交易也类似……

比特币病毒勒索案例_比特币案例分析_比特币原始源码分析

比特币交易输入和输出

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

我们钱包的比特币数量与钱包地址相关联:

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

比特币案例分析_比特币病毒勒索案例_比特币原始源码分析

比特币病毒勒索案例_比特币原始源码分析_比特币案例分析

比特币病毒勒索案例_比特币案例分析_比特币原始源码分析

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

使用电子货币进行交易

在比特币中,电子货币的价值是以价值来衡量的,单位是聪。 1 BTC = 100,000,000 聪。 交易的本质是价值的转移,即所有者对一种或多种电子货币进行数字签名,即输入。 比特币系统通过验证后,产生一种或多种属于收款人的电子货币,即输出。 需要注意的是,像人民币这样的电子货币,是不能撕成两半的,但是可以兑换成几种等值的电子货币。

例如:Alice 支付给 Bob 0.2 BTC 的电子货币,Bob 收到 0.15 BTC 的电子货币,并给 Alice 0.05 BTC 的电子货币找零。

爱丽丝创建了一个交易。

爱丽丝选择一种价值 0.2 BTC 的电子货币作为本次交易的输入。

Alice 付给 Bob 一个价值 0.15 BTC 的电子货币,并给自己零钱 0.05 BTC 的电子货币,这就是本次交易的输出。

比特币系统验证通过后,Bob 收到 0.15 BTC 的电子货币。

比特币病毒勒索案例_比特币案例分析_比特币原始源码分析

比特币病毒勒索案例_比特币原始源码分析_比特币案例分析

当交易结束时,Alice 的 0.2 BTC 电子货币被比特币系统的“铸币厂”作废,“铸币厂”同时发行了两种新的电子货币,一种是 0.15 BTC,另一种是 0.05 BTC 的电子货币给了 Bob , 0.05 BTC 的电子货币零钱给 Alice。 只有没有被“铸币厂”作废的电子货币才能进行交易,可以防止双花。 “铸币厂”发行的电子货币称为output,未作废的电子货币称为Unspent Transaction Output,简称UTXO。 我个人认为UTXO是比特币最伟大的设计!

TX:交易

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

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

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

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

交易数据格式

下图是一笔比特币交易:

比特币原始源码分析_比特币案例分析_比特币病毒勒索案例

比特币原始源码分析_比特币病毒勒索案例_比特币案例分析

它主要由四个独立的部分组成:

比特币原始源码分析_比特币案例分析_比特币病毒勒索案例

比特币交易验证

让我们用鲍勃和爱丽丝的经典例子来解释一个挖矿节点如何验证鲍勃有权拿走(即转移到)爱丽丝之前发给他的比特币。 为了让下面的描述尽可能简单,我将忽略支付“汽油费”。

假设在过去的某个时间点,爱丽丝在之前的某笔交易中总共拥有 1.6 BTC(比特币)。 为了使图表尽可能清楚,该交易未显示在图表上。

在某个时候,Alice 提交了一笔比特币交易(下图中显示为 Alice 的交易),其中她将之前分配的 1.6 BTC 分成两个交易输出:output #0 to Bob's bitcoin address and output #1 Sending 0.8 BTC send 0.8 BTC 到她自己的比特币地址(被认为是一个简单的“找零”等价物)。 Alice 交易的两个输出都包含单独的锁定脚本。 output #0 locking script指定了bob的消费条件,output #1 locking script指定了alice的消费条件。

比特币原始源码分析_比特币案例分析_比特币病毒勒索案例

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

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

比特币案例分析_比特币病毒勒索案例_比特币原始源码分析

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

数字签名(由 Bob 的“sk”生成)结合了 Alice 和 Bob 的交易消息中的一些选定的标准交易数据

Bob 的“PK”,可用于验证数字签名

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

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

Bob 的“pk”是“双重哈希”(首先使用 SHA-256比特币案例分析,然后使用 RIPEMD-160)产生一个 160 位输出,该输出与 Alice 的交易输出锁定脚本中指定的比特币地址值 #0 完全匹配

从 Alice 和 Bob 的交易(在 Bob 的交易输入 #0 内)中选择的标准交易数据提供的数字签名可以使用 Bob 提供的“pk”(在 Bob 的交易输入 #0 中提供)进行正确验证。

如果第 1 步和第 2 步都为真,Bob 有权花费这 0.8 BTC,并可以将交易添加到下一个区块链。

一句话总结:比特币协议功能的核心是将上一笔交易的输出重新用作新交易的输入的机制。

微信公众号“iotbanks”是国内最大的专注区块链、物联网芯片、NB-IOT、设备安全等行业产品和趋势的新媒体平台:区块链、NB-IOT、物联网芯片、物联网安全。加入微信相关行业交流群,请加微信seciot申请,申请中请注明:XX行业+公司名称+职位

比特币原始源码分析_比特币病毒勒索案例_比特币案例分析