主页 > 以太坊钱包imtoken安装 > 数字货币发展专题(精通比特币使用区块链技术原理)

数字货币发展专题(精通比特币使用区块链技术原理)

以太坊钱包imtoken安装 2023-07-30 05:17:56

与传统的银行和支付系统不同,区块链系统基于去中心化的信任。 与中央信任权限体系不同,在区块链中,信任是区块链系统中不同参与者之间通过交互作用实现的一种自然属性。 在本章中,我们将从高层次审视区块链,通过跟踪区块链系统中的单个交易,看看它是如何在区块链的分布式共识机制中变得“可信”和可信的。 接受,并最终成功存储在区块链中(区块链是一种分布式公共账本,包含区块链系统中发生的所有交易)。

书中的每个示例都是发生在区块链网络中的真实交易,通过将资金从一个钱包发送到另一个钱包来模拟用户(Joe、Alice 和 Bob)之间的交互。 当我们通过区块链网络和区块链追踪一笔交易时,我们会使用一些区块链数据库查询网站,这样每个步骤都可以方便地直接呈现在网页上。 一个提供区块链数据查询的网站就像一个区块链搜索引擎,你可以在这里搜索区块链的地址、交易和区块,还可以看到它们与资金流向的关系。

常见的区块链数据查询网站包括:

上述各查询网站均具有搜索功能,可通过地址、交易哈希值或区块号等方式搜索到区块链网络和区块链中对应的等价数据。 我们将为每个示例提供一个链接,可将您直接带到相关文章以进行详细研究。

2.1.1 区块链概述

图 2-1 区块链概述

在图2-1所示的概览图中,我们可以看到区块链系统由用户(用户通过密钥控制钱包)、交易(每笔交易都会广播到整个区块链网络)和矿工(到达的区块链通过竞争计算在每个节点产生共识,区块链是一个分布式公开的权威账本,记录了区块链网络中发生的所有交易)。 在本章中,我们将从整个区块链系统的角度通过跟踪跨网络传输的交易来检查各个部分之间的交互。 后续章节将详细介绍钱包、挖矿和商家系统背后的技术细节。

2.1.2 购买咖啡

在前面的章节中,Alice 是一个刚刚获得她的第一个区块链的新用户。 在“1.4.2 获得你的第一个区块链”一节中,Alice 和她的朋友 Joe 见面并用现金交换了区块链。 Joe 生成的交易使 Alice 的钱包拥有区块链的 0.10。 现在爱丽丝将首次使用区块链在加利福尼亚州帕洛阿尔托的鲍勃咖啡店购买一杯咖啡。 Bob's Cafe 在他的销售点系统中添加了区块链支付选项。 价目表以当地货币(美元)列出,但在收银台,客户可以选择以美元或区块链支付。 此时,Alice点了一杯咖啡,然后Bob将交易录入收银机,然后销售系统会根据当前市场汇率将美元总价换算到区块链中,然后显示同时显示两种货币的价格,并显示一个交易支付请求二维码(如图2-2所示):

当前支付请求不是仅包含目标区块链地址的 QR 码,而是一个 QR 编码的 URL,其中包含目标地址、支付金额和“Bob's Coffee”描述的交易。 这使得区块链钱包应用程序可以在发送支付请求时预先填写特定的支付信息,并向用户显示友好易懂的描述。 你可以用区块链钱包应用程序扫描这个二维码,看看爱丽丝可能会看到什么信息。

鲍勃说,“总计 1.50 美元,或 15 毫区块链”

爱丽丝用她的智能手机扫描显示的条形码。 她的智能手机显示向 Bob 的咖啡支付 0.0150 区块链的请求,她按下发送以授权支付。 几秒钟后(大约与信用卡授权时间相同),Bob 将在收银机上看到交易并完成交易。

在接下来的章节中,我们将更详细地研究这笔交易,观察 Alice 的钱包如何构建交易,交易如何在网络中广播,如何验证,以及 Bob 如何在后续交易中花费这笔钱。

从第 1000 个区块链(毫区块链)到第 100 万个区块链(称为 satoshi 区块链),区块链网络可以处理任何规模的交易。 在本书中,我们将使用术语“区块链”来指代任意数量的区块链货币,从最小单位(1聪)到所有区块链可开采的总数(21,000,000)。

币币交易ae怎么兑换成btc_比特币btc_比特币中国btc充值de

2.2 区块链交易

简单来说,交易通知整个网络,区块链的持有者已经授权将区块链转移给他人。 并且新的持有者可以重新授权,转移给区块链所有权链中的其他人,产生另一笔交易来花费这些区块链,后续持有者以类似的方式花费区块链。

交易就像复式记账簿中的行。 简单来说,每笔交易都包含一个或多个“输入”,即对区块链账户的负债。 在交易的另一端,有一个或多个“输出”作为信用记入区块链账户。 这些投入和产出(负债和贷方)的总和不必相等。 相反,当输出总和略低于输入时,差额代表隐含的“矿工费”,这是矿工收取的一笔小额付款,他们将交易记录在账本上。 如图2-3所示,是记账本的区块链交易。

图 2-3

交易还包含每个转移的区块链(输入)的所有权证明,以所有者的数字签名的形式,任何人都可以独立验证。 在区块链术语中,“消费”是指签署交易:将先前交易的区块链转移给由区块链地址标识的新所有者。

交易是货币从交易输入到输出的移动。 输入是硬币的来源,通常是先前交易的输出。 交易的输出是通过关联一个密钥将钱分配给新的所有者。 目标键称为 Encumbrance。 这对资金提出了要求:需要签名才能在以后的交易中赎回资金。 一个交易的输出可以用作另一个新交易的输入,从而形成一个所有权链,因为钱从一个地址转移到另一个地址(图 2-4)。

图 2-4

Alice 在向 Bob 支付咖啡费用时使用先前的交易作为输入。 在上一章中,爱丽丝用现金从她的朋友乔那里换取了一些区块链积分。 该交易有一些区块链被 Alice 的密钥锁定(阻止)。 她向 Bob 的咖啡店付款的新交易使用之前的交易作为输入,并为咖啡和零钱付款作为新的输出。 交易形成一条链,最近交易的输入对应于先前交易的输出。 爱丽丝的密钥提供了一个签名,可以解锁之前交易的输出,从而向区块链网络证明她拥有这笔钱。 她将咖啡的付款附加到 Bob 的地址,同时“阻止”该输出,指定需要 Bob 的签名才能花这笔钱。 这描述了爱丽丝和鲍勃之间的资金转移。 上图显示了从乔到爱丽丝再到鲍勃的交易链。

2.2.1 常见交易形式

最常见的交易形式是从一个地址到另一个地址的简单付款,通常还包括向付款人“找零”。 一般的交易有一个输入和两个输出,如图2-5所示:

图 2-5

另一种常见的交易形式是将多个输入聚合为一个输出的模式(见图 2-6)。 这相当于用许多硬币和零钱换取一张大面额纸币的现实生活。 此类交易有时由钱包应用程序生成,以清除在支付过程中收到的许多小额零钱。

比特币btc_币币交易ae怎么兑换成btc_比特币中国btc充值de

图 2-6

最后,区块链账本中常见的另一种交易形式是将一个输入分配给多个输出的交易,即多个接收者(见图 2-7)。 商业实体有时会使用此类交易来分配资金,例如在向多名员工支付薪水的情况下。

图 2-7

2.3 交易构建

Alice 的钱包应用程序知道如何选择适当的输入和输出来创建 Alice 想要的交易。 Alice 只需指定目标地址和金额,其余细节将由钱包应用程序在后台自动完成。 重要的是,钱包应用程序甚至可以完全离线建立交易。 就像在家写一张支票,然后用信封寄给银行一样,区块链交易是在不连接到区块链网络的情况下创建和签署的。 交易只有在执行时才需要发送到网络。

2.3.1 获得正确的输入

Alice 的钱包应用程序首先必须找到一些足以支付给 Bob 所需金额的输入。 大多数钱包应用程序都维护着一个用钱包自己的密钥锁定的“未花费交易输出”的小型数据库。 因此,Alice 的钱包将包含她用现金从 Joe 那里购买的区块链交易输出的副本(请参阅“1.4.2 获取您的第一个区块链”部分)。 一个完整的客户端包含整个区块链中所有交易的所有未花费输出的副本。 这使得钱包既可以根据这些输出构建交易,又可以在收到新交易时快速验证其输入是否正确。 然而,完整的客户端占用太多硬盘空间,因此大多数钱包使用轻量级客户端,只保存用户自己未花费的输出。

如果钱包客户端没有未消费的交易输出,则可以通过不同服务商提供的各种API或完整索引节点的JSON PRC API从区块链网络中获取该交易信息。 示例 2-1 显示了如何使用 HTTP GET 命令向特定 URL 发出 RESTful API 请求。 此 URL 返回地址的所有未花费交易输出,任何需要此信息作为输入以创建新交易的应用程序都可以使用这些输出。 我们使用 cURL(一个简单的 HTTP 命令行客户端)来获取此响应数据。

示例 2-2 查找返回的响应数据

{ "unspent_outputs": [ { "tx_hash":"186f9f998a5...2836dd734d2804fe65fa35779", "tx_index":104810202, "tx_output_n":0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value":10000000, "value_hex":" 00989680", "确认":0 } ]}

示例 2-2 中的响应数据显示 Alice 的地址 1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK 有未花费的输出(尚未赎回)。 此响应包含事务索引。 Joe 转出的未消费输入包含在本次交易中,其价值为 1000 万聪(satoshi),即 0.10 个区块链。 有了这些信息,爱丽丝的钱包应用程序就可以创建一个新的交易来将钱转移到新地址。

点击查看Joe和Alice的交易信息

比特币btc_币币交易ae怎么兑换成btc_比特币中国btc充值de

如您所见,Alice 的钱包在单个未花费的输出中有足够的区块链来支付一杯咖啡的费用。 如果没有,爱丽丝的钱包应用程序必须搜索少量未花费的输出,就像在存钱罐中寻找硬币一样,直到找到足够的钱来支付咖啡费用。 在这两种情况下,都可能需要更改,这些更改也将成为钱包创建的交易输出的一部分。 我们将在下一节中描述它。

2.3.2 创建交易输出

交易的输出将以包含此金额的脚本形式创建,只有在引入此脚本的解决方案后才能赎回。 简而言之,爱丽丝的交易输出将包含一个脚本,上面写着“谁能在这个输出上产生一个与鲍勃的公共地址相匹配的签名,谁就会向谁付款”。 由于只有 Bob 的钱包私钥可以匹配这个地址,所以只有 Bob 的钱包可以提供这个签名来兑换这个输出。 因此币币交易ae怎么兑换成btc,Alice 将用需要 Bob 的签名包装输出。

该交易还将包含第二个输出。 因为Alice的数量是0.10区块链的输出形式,在0.015区块链上一杯咖啡太多了,你需要在0.085区块链上找Alice找零。 Alice 的钱包在支付给 Bob 的同一笔交易中为她的零钱创建付款。 假设爱丽丝的钱包将她的金额分成两笔付款:一笔给鲍勃,一笔给她自己。 她可以在未来的交易中使用这个找零输出。

最后,为了交易尽快被网络处理,爱丽丝的钱包将支付少量费用。 这没有明确包含在交易中; 它由输入和输出之间的差异暗示。 如果爱丽丝在创建零钱时只寻找 0.0845 区块链,而不是 0.085 区块链,那么就会剩下 0.0005 区块链(500,000 聪)。 因为总和小到0.10,所以这个0.10区块链的输入还没有完全消耗完。 这笔差价会被矿工作为交易手续费放入区块的交易中,最后放入区块链账本中。

本次交易的结果信息可在区块链数据查询站点查看,如图2-8所示。

图 2-8

点击查看Alice向Bob支付咖啡费用的交易信息

2.3.3 将交易放入账本

Alice 钱包应用程序创建的交易大小为 258 字节,包含未来拥有该金额所需的所有信息。 现在,这笔交易必须传输到区块链网络,成为分布式账本(区块链)的一部分。 在下一节中,我们将了解下一笔交易如何成为新区块的一部分,以及如何挖掘区块来构建它们。 最后,我们将了解随着新块被添加到区块链中,随着更多块的添加,可信度如何增加。

2.3.3.1 交易的传输

由于交易包含处理所需的所有信息,因此交易如何或在何处传输到区块链网络并不重要。 区块链网络是由连接到其他几个区块链客户端的参与区块链客户端组成的 P2P 网络。 区块链网络的目的是将交易和区块传播给所有参与者。

币币交易ae怎么兑换成btc_比特币btc_比特币中国btc充值de

2.3.3.2 如何传播

Alice 的钱包应用程序可以将新交易发送到任何其他连接到互联网的区块链客户端,无论是通过有线网络、WiFi 还是通过手机连接。 她的钱包不必直接连接到 Bob 的区块链钱包,也不必使用咖啡店提供的互联网连接,尽管两者都是可能的。 任何区块链网络节点(其他客户端)收到之前未见过的有效交易后,会立即将其转发给与其相连的其他节点。 结果,交易从 P2P 网络迅速传播,在几秒钟内到达大多数节点。

2.3.3.3 Bob 的视角

如果 Bob 的区块链钱包应用程序直接连接到 Alice 的钱包应用程序,则 Bob 的钱包应用程序可能是第一个收到此交易的节点。 然而,即使 Alice 的交易是从另一个节点发送的,它也可以在几秒钟内到达 Bob 的钱包应用程序。 Bob 的钱包会立即确认 Alice 的交易是收入支付,因为它包含可以用 Bob 的私钥兑换的输出。 Bob 的钱包应用程序还可以独立使用以前未花费的输入来确认交易是否正确构建,并将包含在下一个区块中,因为它包含足够的交易费用。 这时,Bob 可以冒着很小的风险假设交易很快就会被加入区块并得到确认。

关于区块链交易的一个常见误解是,它们必须等待 10 分钟才能确认添加到新区块,或者等待 60 分钟才能获得 6 次确认才有效。 虽然这些确认确保交易已被整个网络接受,但没有必要为一杯咖啡等小物品等待那么久。 商家可以在未经确认的情况下接受区块链小额支付。 这样做的风险并不比接受一张没有有效身份证件或没有签名的信用卡风险更大,而这正是目前商家所做的。

2.4 区块链挖矿

此交易现在在区块链网络上广播。 但是只有在通过称为挖掘的过程验证并添加到块后,交易才会成为共享分类帐(区块链)的一部分。 有关挖矿的详细说明,请参阅第 8 章。

区块链系统的信任是基于计算的。 当交易被组合成一个块时,需要大量的计算来证明它们,但只需要少量的计算来验证它们是否已被证明。 挖矿在区块链系统中扮演两个角色:

▷ 挖矿在构建区块时会创建一个新的区块链,类似于中央银行发行新钞票。 每个区块创建的区块链数量是固定的,并且会随着时间的推移逐渐减少。

▷ 挖矿创造信任。 挖矿确保交易在为包含它们的块贡献足够的计算之前不会被确认。 块越多,花费的计算量越大,这意味着更多的信任。

将挖矿描述为大型多人数独益智游戏的一个好方法。 一旦有人找到正确的解决方案,数独游戏就会自动调整难度,使游戏一次解决大约需要 10 分钟。 想象一个拥有数千行和几列的巨大数独游戏。 给定一个完整的数独,您可以非常快速地验证它。 但是,如果数独只有几个方格有数字,其余的方格都是空的,则需要很长时间才能解出。 这个数独的难度可以通过改变它的大小(更多或更少的行和列)来调整,但即使它非常大也很容易验证。 区块链中的“谜题”基于哈希加密算法,表现出类似的特点:非对称性,难解易验证,难度可调。

在“1.3 区块链应用、用户和他们的故事”一节中,我们提到了一个在上海读书的计算机工程专业的学生 Jing。 Jing 在区块链网络中扮演矿工的角色。 大约每 10 分钟,Jing 就会与数千名其他矿工一起参加全球竞赛,为一个交易块寻找正确的解决方案。 为了找到这个解决方案,也称为工作量证明,整个网络需要能够每秒处理数十亿次哈希。 这种工作量证明算法是指使用SHA256加密算法对区块头和一个随机数不断进行哈希计算,直到出现与预设值匹配的解。 第一个找到这个解决方案的矿工赢得了比赛并将区块发布到区块链。

币币交易ae怎么兑换成btc_比特币中国btc充值de_比特币btc

Jing 于 2010 年开始挖矿,当时他使用速度非常快的台式电脑为新区块寻找正解。 随着越来越多的矿工加入区块链网络,找到正确解决难题的难度迅速增加。 很快,Jng 和其他矿工升级到更专业的硬件,例如用于游戏台式电脑或游戏机的高端专用图形处理单元芯片(又名显卡 GPU)。 在写这本书的时候,解决这个问题已经变得异常困难,只有使用集成了数百种挖矿专用算法硬件并能在单芯片上并行工作的专用集成电路(ASIC)挖矿才有利可图同时 。 Jing 还加入了一个类似于彩票奖池的矿池,允许多个矿工共享算力和奖励。 Jing 现在运行着两台通过 USB 连接的 ASIC 机器,每天 24 小时挖矿。 他出售部分挖矿获得的区块链来支付电费,可以通过利润赚取一些收入。 作为专用挖矿软件的后台,他的电脑里安装了一个名为bitcoind的区块链索引客户端。

2.5 区块挖矿交易记录

在网络中生成的交易在成为整个区块链账本——区块链的一部分之前不会被确认为有效。 矿工平均每 10 分钟生成一个新区块,其中包含自上一个区块以来发生的所有交易。 新的交易不断从用户钱包和应用程序流入区块链网络。 当区块链网络上的节点看到这些交易时,它们首先被放入由各自节点维护的临时未验证交易池中。 当矿工构建一个新区块时,他们会将这些交易从交易池中取出并放入这个新区块中,然后尝试解决一个非常困难的问题(也称为工作量证明)来证明这个新区块的合法性。 挖矿过程的细节将在“8.1 介绍”部分详细描述。

当这些交易被添加到新区块时,它们将根据交易费用的优先级和其他规则进行排序。 一旦矿工从网络收到一个新区块,他就会意识到自己已经输掉了这个区块的解题竞赛,并会立即开始挖掘下一个新区块。 它会立即将一些交易和这个新区块的数字指纹放在一起,开始构建下一个新区块,并开始计算它的工作量证明。 每个矿工都会在他的区块中包含一个特殊的交易币币交易ae怎么兑换成btc,将新生成的区块链(目前每个区块有 25 个区块链)支付到他自己的区块链地址作为支付。 如果他找到使新区块有效的解决方案,他将获得这个奖励,并且由于这个新区块被添加到通用区块链中,他添加的奖励交易也将变得可花费。 参与矿池的Jing在他的软件中设置,在构建新区块时,奖励地址将设置为矿池地址。 然后根据上一轮贡献的工作量,将奖励分配给Jing和其他参与矿池的矿工。

Alice 的交易被网络取走并放入未验证的交易池中。 因为它包含了足够的交易费用,所以它被包含在 Jing 的矿池生成的新区块中。 在 Alice 的钱包首次发送交易后大约五分钟,Jing 的 ASIC 矿工找到了新区块的正确解决方案并将其发布为区块 277,316,其中包含 419 笔其他交易。 一旦 Jing 的 ASIC 矿工将这个新区块发布到网络上,其他矿工就会对其进行验证并加入到构建新区块的竞赛中。

您可以查看有关包含爱丽丝交易的区块的信息。

几分钟后,另一个挖矿节点产生了一个新的区块编号277,317。 因为这个新区块是基于包含爱丽丝交易的区块 277,316,所以在这个区块中加入了更多的计算,从而加强了这些交易的可信度。 包含爱丽丝交易的区块算作该交易的“证明”。 每次基于这个区块产生一个新的区块,都会在这个交易中添加一个“证明”。 随着块的堆积,交易变得更难推翻,因此它获得了对网络的更多信任。

图 2-9

在图 2-9 中,我们可以看到包含 Alice 交易的区块 277,316。 在它下面有377,361个区块(包括区块0),像链条一样一个一个(区块链)连接起来,一直到区块0,也就是创世区块。 随着时间的推移,这个区块链的高度越来越大,每个区块和整条链的计算复杂度也越来越高。 在包含 Alice 的交易的区块之后形成的新区块进一步增加了信任,因为它们为越来越长的链增加了更多的计算。 按照惯例,当一个区块被“证明”超过六次时,它就被认为是不可撤销的,因为逆转和重建六个区块需要大量的计算。 在第 8 章中,我们将详细描述挖矿和信任建立的过程。

2.6 花费交易

现在 Alice 的交易已经作为区块的一部分嵌入到区块链中,它成为整个分布式区块链账本的一部分,并且对所有区块链客户端应用程序可见。 每个区块链客户端都可以独立验证交易是否有效且可花费。 全索引客户端可以追溯资金的来源,从区块链第一次在区块中产生的那一刻开始,根据交易之间的关系,直到Bob的交易地址。 轻量级客户端通过确认交易在区块链中几个新区块之后来验证支付。 这种方法称为简单支付验证(参见“6.7 简单支付验证(SPV)节点”)。

Bob 现在可以将有关此交易和其他交易的结果的信息作为输入,创建一个所有权属于他人的新交易。 这样就实现了这笔交易的消费。 例如,鲍勃可以使用爱丽丝通过区块链向承包商或供应商支付咖啡费用。 在大多数情况下,Bob 使用的区块链商家端会将多笔小额支付聚合成一笔大额支付,也许一整天的区块链收入会聚合到一笔交易中。 这会将多次付款合并到咖啡店财务帐户的一个地址。 图 2-6 是一个交易集的例子。

比特币btc_币币交易ae怎么兑换成btc_比特币中国btc充值de

#欧易OKEx##比特币[超话]#