交易,区块,采矿和区块链

与传统的银行和支付系统不同,比特币系统基于分散的信任。

在比特币中,代替中央信任机构的是信任,它是通过比特币系统中不同参与者的交互而形成的紧急属性。

在本章中,我们将通过跟踪通过比特币系统进行的单个交易从更高层次上检查比特币,并观察它成为“信任”并被分布式共识的比特币机制接受,并最终记录在区块链中,即比特币的分布式账本。所有交易。随后的章节将深入研究交易,网络和挖掘背后的技术。

比特币概述

在比特币概述中显示的概述图中,我们看到比特币系统由以下用户组成:其钱包包含密钥,在网络上传播的交易,以及通过竞争性计算生成共识区块链的矿工(通过竞争计算),该共识区块链是所有交易。

本章中的每个示例均基于在比特币网络上进行的实际交易,通过将资金从一个钱包发送到另一个钱包来模拟用户(Joe,Alice,Bob和Gopesh)之间的交互。在跟踪通过比特币网络到区块链的交易时,我们将使用区块链浏览器站点来可视化每个步骤。

区块链浏览器是一个网络应用程序,可充当比特币搜索引擎,因为它允许您搜索地址,交易和区块,并查看它们之间的关系和流程。

  • Figure 1. Bitcoin overview

Figure 1. Bitcoin overview

流行的区块链浏览器包括:

BlockCypher Explorer

blockchain.info

BitPay Insight

Blockstream Explorer

它们中的每一个都具有搜索功能,该功能可以获取比特币地址,交易哈希,区块编号或区块哈希,并从比特币网络中检索相应的信息。

对于每个事务或块示例,我们将提供一个URL,以便您可以自己查找并进行详细研究。

买一杯咖啡

在上一章中介绍过的爱丽丝(Alice)是新用户,刚刚获得了她的第一个比特币。

在[getting_first_bitcoin]中,爱丽丝与朋友乔会面,用现金兑换了比特币。

乔创建的交易为爱丽丝的钱包提供了0.10 BTC的资金。

现在,爱丽丝将进行她的第一笔零售交易,即在加利福尼亚帕洛阿尔托的鲍勃(Bob’s)咖啡店购买一杯咖啡。

Bob’s Cafe最近通过在其销售点系统中添加比特币选项开始接受比特币付款。

Bob’s Cafe的价格以当地货币(美元)列出,但在收银机中,客户可以选择以美元或比特币付款。

爱丽丝下了一杯咖啡的订单,鲍勃像所有交易一样将其输入到收银机中。

销售点系统会自动按照当时的市场汇率将总价格从美元转换为比特币,并以两种货币显示价格:

Total:
$1.50 USD
0.015 BTC

鲍勃说:“那等于一五十美元,即十五毫巴。”

Bob的销售点系统还将自动创建包含付款请求的特殊QR码(请参阅付款请求QR码)。

与仅包含目标比特币地址的QR码不同,付款请求是QR编码的URL,其中包含目标地址,付款金额和通用说明,例如“鲍勃的咖啡馆”。

这允许比特币钱包应用程序预填充用于发送付款的信息,同时向用户显示人类可读的描述。

您可以使用比特币钱包应用程序扫描QR码,看看Alice会看到什么。

付款请求QR码对BIP-21中定义的以下URL进行编码:

bitcoin:1GdK9UzpHBzqzX2A9JFP3Di4weBwqgmoQA?
amount=0.015&
label=Bob%27s%20Cafe&
message=Purchase%20at%20Bob%27s%20Cafe

Components of the URL

A bitcoin address: "1GdK9UzpHBzqzX2A9JFP3Di4weBwqgmoQA"
The payment amount: "0.015"
A label for the recipient address: "Bob's Cafe"
A description for the payment: "Purchase at Bob's Cafe"

爱丽丝使用她的智能手机扫描显示屏上的条形码。

她的智能手机显示向Bob’s Cafe支付了0.0150 BTC的付款,并且她选择了“发送”以授权付款。

在几秒钟内(大约与信用卡授权相同的时间),Bob看到交易记录在寄存器上,从而完成了交易。

在以下各节中,我们将更详细地研究此事务。

我们将看到爱丽丝的钱包是如何构造的,如何在网络上传播,如何进行验证以及最后鲍勃如何在后续交易中花费这笔钱。

比特币网络可以按分数值进行交易,例如从毫比特币(比特币的1/1000)到比特币的1 / 100,000,000,这被称为聪。

在本书中,我们将使用“比特币”一词来指代任何数量的比特币,从最小的单位(1个聪)到将要开采的所有比特币的总数(21,000,000)。

您可以使用区块浏览器网站检查Alice在区块链上与Bob’s Cafe的交易(在blockchain.info上查看Alice的交易):

例子1.在blockchain.info上查看爱丽丝的交易

https://blockchain.info/tx/0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2

比特币交易

简而言之,交易告诉网络某个比特币价值的所有者已经授权将该价值转让给另一个所有者。现在,新所有者可以通过创建另一项交易来授权比特币所有权中的另一项交易,从而花费比特币,依此类推,在所有权链中。

交易输入和输出

交易就像是重复输入簿记分类帐中的行。每笔交易都包含一个或多个“输入”,就像对比特币账户的借记。在交易的另一边,有一个或多个“输出”,就像添加到比特币帐户中的信用一样。投入和产出(借方和贷方)不一定总和相同。取而代之的是,输出的总和要比输入的总和少,差额代表隐含的交易费,这是矿工收取的一小笔款项,该矿工将交易包括在分类帐中。比特币交易在“交易”中显示为簿记分类帐条目,作为两次入账簿记。

交易还包含所有者花费的数字签名形式的,花费了其价值的每笔比特币(输入)的所有权证明,任何人都可以独立地对其进行验证。用比特币的术语来说,“支出”是指将一笔交易从先前的交易转移到由比特币地址标识的新所有者的交易。

  • Figure 3. Transaction as double-entry bookkeeping

Transaction as double-entry bookkeeping

交易链

爱丽丝向鲍勃·卡夫(Bob’s Cafe)支付的款项使用之前交易的输出作为输入。在上一章中,爱丽丝从朋友乔那里得到了比特币,以换取现金。

那笔交易创造了一个被爱丽丝的钥匙锁定的比特币价值。她到Bob’s Cafe的新交易将以前的交易作为输入,并创建新的输出以支付一杯咖啡并接收零钱。

交易形成一条链,其中来自最新交易的输入对应于来自先前交易的输出。爱丽丝的钥匙提供了一个签名,可以解锁那些先前的交易输出,从而向她拥有资金的比特币网络证明。

她将咖啡付款附加到鲍勃的地址上,从而“妨碍”了输出,并要求鲍勃出示签名以花费这笔款项。这代表了爱丽丝和鲍勃之间的价值转移。从乔到爱丽丝再到鲍勃的交易链在“交易链”中进行了说明,其中一个交易的输出是下一个交易的输入。

  • Figure 4. A chain of transactions, where the output of one transaction is the input of the next transaction

A chain of transactions, where the output of one transaction is the input of the next transaction

做出改变

许多比特币交易都将包含同时引用新所有者的地址和当前所有者的地址(称为更改地址)的输出。

这是因为无法对交易输入(如纸币)进行分割。如果您在商店中购买了5美元的商品,但使用20美元的钞票付款,那么您会期望获得15美元的找零。相同的概念适用于比特币交易输入。

如果您购买的商品成本为5比特币,但只能使用20比特币输入,那么您的钱包将创建一个单一交易,该交易发送两个输出,一个向商店所有者输出5比特币,一个向您自己输出15比特币。更改(减去任何适用的交易费用)。

重要的是,更改地址不必与输入的地址相同,出于隐私原因,更改地址通常是所有者钱包中的新地址。

当汇总输入以进行用户请求的付款时,不同的钱包可能会使用不同的策略。他们可能会汇总许多小的投入,或者使用等于或大于所需付款的投入。除非钱包能够以与所需付款和交易费用完全匹配的方式汇总输入,否则钱包将需要进行一些更改。这与人们处理现金的方式非常相似。如果您始终使用口袋里最大的钞票,那末您的口袋里会有零钱。如果您只使用零用钱,那么总会有大笔账单。人们在潜意识中找到了这两种极端之间的平衡,而比特币钱包开发人员正在努力实现这一平衡。

总之,交易将价值从交易输入转移到交易输出。输入是对先前交易输出的参考,显示了交易的价值来源。交易通常包括将特定值定向到新所有者的比特币地址的输出,以及将更改输出定向回原始所有者的输出。一项交易的输出可以用作新交易的输入,从而在值从所有者转移到所有者时创建所有权链(请参阅交易链,其中一项交易的输出是下一项交易的输入) 。

普通交易表单

最常见的交易形式是从一个地址到另一个地址的简单付款,其中通常包括一些退还给原始所有者的“更改”。

这种类型的交易有一个输入和两个输出,在“最常见的交易”中显示。

  • Figure 5. Most common transaction

Most common transaction

另一种常见的交易形式是将多个输入汇总到一个输出中的交易形式(请参阅交易汇总资金)。

这表示在现实世界中相当于将一堆硬币和纸币兑换为一个较大的纸币。

此类交易有时是由钱包应用程序生成的,以清理许多较小的金额,这些金额是作为付款更改而收到的。

  • Figure 6. Transaction aggregating funds

Transaction aggregating funds

最后,经常在比特币分类账上看到的另一种交易形式是分批交易,该交易将一个输入分配给代表多个接收者的多个输出,这是一种称为“交易分批”的技术(请参阅交易分配资金)。

由于这种类型的交易有助于节省交易费用,因此商业实体通常将其用于分配资金,例如当公司正在处理多名员工的工资支付时,或者当比特币交易所正在一次处理多个客户的提款时 交易。

  • Figure 7. Transaction distributing funds

Transaction distributing funds

构建交易

爱丽丝的钱包应用程序包含用于选择适当的输入和输出以构建符合爱丽丝规格的交易的所有逻辑。

爱丽丝只需要指定目的地和金额,其余的发生在钱包应用程序中而她没有看到详细信息。

重要的是,即使钱包应用程序完全脱机,它也可以构造交易。

就像在家里写一张支票然后再用信封将其发送到银行一样,在连接到比特币网络时无需构造和签名交易。

获取正确的输入

爱丽丝的钱包应用程序首先必须找到可以支付她想要发送给鲍勃的金额的输入。大多数钱包会跟踪属于该钱包中地址的所有可用输出。

因此,爱丽丝的钱包将包含乔的交易输出的交易副本,该副本的创建是为了换取现金(请参阅[getting_first_bitcoin])。

作为全节点客户端运行的比特币钱包应用程序实际上包含了区块链中每笔交易的所有未花费输出的副本。这允许钱包构造交易输入,并快速验证传入交易是否具有正确的输入。但是,由于全节点客户端会占用大量磁盘空间,因此大多数用户钱包都运行“轻量级”客户端,这些客户端仅跟踪用户自己未使用的输出。

如果钱包应用程序不维护未用交易输出的副本,则可以使用不同提供商提供的各种API或通过使用应用程序编程接口(API)调用询问全节点,来查询比特币网络以检索此信息。查找所有未使用的输出,以查找Alice的比特币地址,其中显示了API请求,该请求被构造为针对特定URL的HTTP GET命令。

该URL将返回一个地址的所有未花费的交易输出,从而为任何应用程序提供构造交易输入以进行支出所需的信息。我们使用简单的命令行HTTP客户端cURL来检索响应。

  • 例子2. 查找所有未使用的输出以查找爱丽丝的比特币地址
$ curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK

{

	"unspent_outputs":[

		{
			"tx_hash":"186f9f998a5...2836dd734d2804fe65fa35779",
			"tx_index":104810202,
			"tx_output_n": 0,
			"script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac",
			"value": 10000000,
			"value_hex": "00989680",
			"confirmations":0
		}

	]
}

在“查找爱丽丝的比特币地址的所有未使用输出中”的响应显示,在爱丽丝的地址1Cdid9KFAaaaaczczBwBttQcwXYCpvK8h7FK的所有权下,有一个未使用的输出(尚未赎回)。

响应包括对包含未使用的输出(来自Joe的付款)的交易的引用及其在satoshis中的价值,即1000万,相当于0.10比特币。

有了这些信息,爱丽丝的钱包应用程序就可以构建交易,以将该值转移到新的所有者地址。

如您所见,爱丽丝的钱包在一个未使用的输出中包含足够的比特币,可以用来支付一杯咖啡的费用。

如果不是这种情况,爱丽丝的钱包应用程序可能必须通过大量未使用的较小输出来“翻找”,例如从钱包里捡硬币直到找到足够的钱来支付咖啡。

在这两种情况下,当钱包应用程序创建交易输出(付款)时,可能都需要找回零钱,我们将在下一部分中看到。

创建输出

事务输出以脚本的形式创建,该脚本创建了对值的负担,并且只能通过为脚本引入解决方案来兑现。

简而言之,爱丽丝的交易输出将包含一个脚本,内容如下:“该输出应支付给可以从与鲍勃的地址相对应的密钥出示签名的任何人。”

由于只有鲍勃(Bob)的钱包具有与该地址对应的密钥,因此只有鲍勃(Bob)的钱包可以出示这种签名来兑现此输出。因此,Alice将“要求” Bob签名以“阻碍”输出值。

此交易还将包括第二次输出,因为Alice的资金采用0.10 BTC输出的形式,对于0.015 BTC一杯咖啡来说,这笔钱太多了。爱丽丝将需要更改0.085 BTC。

爱丽丝的零钱是由爱丽丝的钱包创建的,作为与鲍勃付款相同的交易中的输出。

本质上,爱丽丝的钱包将她的资金分为两笔款项:一笔给鲍勃,另一笔还给她自己。然后,她可以在后续事务中使用(花费)更改输出。

最后,为了使交易及时由网络处理,爱丽丝的钱包应用程序将收取少量费用。这在交易中并不明确;输入和输出之间的差异暗示了这一点。

如果Alice代替0.085进行更改,而是仅创建0.0845作为第二个输出,则将剩余0.0005 BTC(半毫比特币)。

输入的0.10 BTC不能完全用在两个输出上,因为它们的总和少于0.10。所产生的差额是矿工收取的交易费用,作为验证费用并将交易包括在要记录在区块链上的区块中的费用。

可以使用区块链浏览器网络应用程序查看最终的交易,如Alice与Bob’s Cafe的交易中所示。

  • Figure 8. Alice’s transaction to Bob’s Cafe

Alice’s transaction to Bob’s Cafe

将交易添加到分类帐

爱丽丝的钱包应用程序创建的交易长258个字节,其中包含确认资金所有权和分配新所有者所需的一切。

现在,交易必须被传输到比特币网络,它将成为区块链的一部分。

在下一节中,我们将看到事务如何成为新块的一部分以及如何“挖掘”该块。

最后,我们将看到新块一旦添加到区块链中,将如何随着更多块的添加而越来越受到网络的信任。

传输交易

由于交易包含处理所需的所有信息,因此无论如何或在何处将其传输到比特币网络都无关紧要。比特币网络是一个点对点网络,每个比特币客户端都通过连接到其他几个比特币客户端来参与。比特币网络的目的是将交易和区块传播给所有参与者。

它如何传播

通过“说”比特币协议来参与比特币网络的任何系统,例如服务器,桌面应用程序或钱包,都称为比特币节点。

爱丽丝的钱包应用程序可以通过任何类型的连接将新交易发送到它所连接的任何比特币节点:有线,WiFi,移动等。

她的比特币钱包不必直接连接到鲍勃的比特币钱包,并且她不必使用咖啡馆提供的互联网连接,尽管这两种选择也是可能的。

接收到之前从未见过的有效交易的任何比特币节点都将立即将其转发到与其连接的所有其他节点,这种传播技术称为泛洪。

因此,事务在对等网络中迅速传播出去,在几秒钟内到达了很大比例的节点。

鲍勃的视图

如果Bob的比特币钱包应用程序直接连接到Alice的钱包应用程序,则Bob的钱包应用程序可能是接收交易的第一个节点。

但是,即使Alice的钱包通过其他节点发送了交易,它也将在几秒钟内到达Bob的钱包。鲍勃的钱包会立即将爱丽丝的交易标识为收款,因为其中包含可以用鲍勃的钥匙兑换的输出。

鲍勃的钱包应用程序还可以独立验证交易的格式是否正确,是否使用了之前未使用的输出以及是否包含足够的交易费用以包含在下一个区块中。

此时,Bob可以假设交易很快就会被包含在区块中并得到确认,而风险很小。

关于比特币交易的一个普遍误解是必须通过等待10分钟等待一个新区块,或者等待60分钟进行一次完整的六次确认来“确认”这些交易。

尽管通过确认可以确保整个网络都接受了该交易,但是对于小额商品(例如一杯咖啡)而言,这种延迟是不必要的。

商户可以接受没有确认的有效小额交易,而没有商户今天通常接受的无ID或签名的信用卡付款所承担的风险不多。

比特币挖矿

爱丽丝的交易现在在比特币网络上传播。直到它被称为挖掘的过程验证并包含在区块中后,它才成为区块链的一部分。

信任的比特币系统是基于计算的。事务被捆绑到块中,这需要大量的计算来证明,但是仅需少量的计算来证明是经过证明的。

挖矿过程在比特币中有两个用途:

(1)挖矿节点通过参考比特币的共识规则来验证所有交易。因此,采矿通过拒绝无效或格式错误的交易来为比特币交易提供安全性。

(2)采矿在每个区块中都会创建新的比特币,就像中央银行在印刷新钱一样。按照固定的发行时间表,每个区块创建的比特币数量是有限的,并且会随着时间的流逝而减少。

采矿在成本和报酬之间达成了良好的平衡。

采矿使用电力来解决数学问题。成功的矿工将以新的比特币和交易费的形式收集奖励。但是,只有在矿工正确地验证了所有交易并达到共识规则的情况下,才会收集奖励。

这种微妙的平衡在没有中央授权的情况下为比特币提供了安全性。

描述挖矿的好方法就像一个巨大的数独游戏,每当有人找到解决方案时,数独都会重置,并且难度会自动调整,因此大约需要10分钟才能找到解决方案。

想象一个巨大的数独难题,大小为数千行和数列。如果我向您展示完整的拼图,您可以很快地对其进行验证。但是,如果拼图上有几个正方形,而其余的都是空的,则需要大量的工作来解决!数独的难度可以通过更改其大小(增加或减少行和列)来调整,但是即使很大,也仍然可以很容易地对其进行验证。

比特币中使用的“拼图”基于密码哈希,并具有类似的特征:它不对称地难以解决,但易于验证,并且可以调整其难度

在[用户故事]中,我们介绍了上海的企业家Jing。

Jing经营着一个采矿场,该场经营着数千台专门的采矿计算机,争夺回报。在全球竞赛中,每10分钟左右,Jing的采矿计算机就会与成千上万个类似的系统进行竞争,以找到针对大量交易的解决方案。要找到这样的解决方案,即所谓的工作量证明(PoW),需要在整个比特币网络中每秒进行数百万次的哈希运算。用于工作量证明的算法涉及使用SHA256密码算法对哈希块的标题和随机数进行重复哈希处理,直到出现与预定模式匹配的解决方案。第一个找到这种解决方案的矿工赢得了竞争,并将其发布到了区块链中。

Jing从2010年开始使用一台非常快的台式计算机进行挖掘,以找到适合新区块的工作量证明。随着越来越多的矿工开始加入比特币网络,问题的难度迅速增加。

不久,Jing和其他矿工将其升级为更加专业的硬件,并配备了高端专用图形处理单元(GPU),这些图形处理单元通常用于游戏台式机或游戏机。在撰写本文时,难度是如此之高,以至于仅使用专用集成电路(ASIC)进行挖矿是有利可图的,ASIC是在单个硅芯片上并行运行的,基本上以硬件印刷的数百种挖矿算法。

Jing的公司还参加了一个采矿池,就像一个彩票池一样,它允许多个参与者共享他们的努力和回报。 Jing的公司现在经营着一个仓库,其中包含成千上万的ASIC矿工,每天24小时开采比特币。该公司通过出售能够从采矿中产生的比特币来支付电费,并从利润中获得一些收入。

区块交易

新交易不断从用户钱包和其他应用程序流入网络。正如比特币网络节点所看到的那样,它们被添加到每个节点维护的未验证交易的临时池中。

当矿工构造一个新区块时,他们将未验证的交易从该池中添加到新区块,然后尝试使用挖掘算法(工作量证明)证明该新区块的有效性。挖掘的过程在[挖掘]中进行了详细说明。

交易被添加到新的区块中,首先按照费用最高的交易和其他一些条件确定优先级。当每个矿工从网络中接收到前一个交易块后,就知道他们已经失去了前一轮的竞争,就开始挖掘新的交易块的过程。他们立即创建一个新块,在其中填充交易和上一个块的指纹,然后开始计算新块的工作量证明。每个矿工在自己的区块中包含一项特殊交易,该交易向区块链支付自己的比特币地址(当前为6.25新创建的比特币)加上区块中包含的所有交易的交易费用总和。如果他们找到使该区块有效的解决方案,则他们“赢得”该奖励,因为成功的区块已添加到全球区块链中,并且他们包含的奖励交易变得可花费。参与采矿池的Jing已安装了自己的软件,以创建将奖励分配给池地址的新区块。从那里开始,奖励的份额将根据他们在上一轮工作中贡献的数量按比例分配给Jing和其他矿工。

爱丽丝的交易已被网络接收,并包含在未经验证的交易池中。经采矿软件验证后,它会包含在由Jing的采矿池生成的新区块(称为候选区块)中。参与该采矿池的所有矿工都立即开始为候选区块计算工作量证明。在交易首次通过Alice的钱包进行传输后大约五分钟,Jing的ASIC矿工之一找到了针对该候选区块的解决方案,并向网络发布了该解决方案。一旦其他矿工验证了获胜区块,他们便开始比赛以生成下一个区块。

Jing的获胜区块成为#277316区块链的一部分,包含419笔交易,其中包括Alice的交易。包含爱丽丝交易的区块被视为该交易的“确认”。

大约20分钟后,另一个矿工开采了一个新的区块#277317。

由于此新块是在包含爱丽丝交易的块#277316的基础上构建的,因此它向区块链添加了更多计算,从而增强了对这些交易的信任。在包含交易的区块之上挖掘的每个区块都将作为对Alice交易的额外确认。

随着这些块彼此重叠,逆向交易变得越来越困难,从而使它越来越受到网络的信任。

在包含在#277316区块中的Alice交易的图中,我们可以看到包含包含Alice交易的#277316区块。

在它的下方是277,316个块(包括第0个块),它们以块链(块链)的形式相互链接,一直回到第0个块,即创世块。随着时间的流逝,随着块中“高度”的增加,每个块以及整个链的计算难度也随之增加。

在包含Alice交易的数据块之后挖掘的数据块可作为进一步的保证,因为它们在越来越长的链中堆积了更多的计算量。

按照惯例,具有超过六个确认的任何块都被认为是不可撤消的,因为它需要大量的计算才能使六个块无效并重新计算。

我们将在[挖掘]中更详细地研究挖掘过程及其建立信任的方式。

  • Figure 9. Alice’s transaction included in block #277316

Alice’s transaction included in block #277316

交易支出

现在,爱丽丝的交易已作为一个块的一部分嵌入到区块链中,它已成为比特币分布式分类帐的一部分,并且对所有比特币应用程序都是可见的。每个比特币客户都可以独立验证交易的有效性和可支配性。

全节点客户可以跟踪从最初在一个区块中生成比特币的那一刻开始的资金来源,从交易到交易逐个递增,直到到达Bob的地址为止。

轻量级客户可以通过确认交易在区块链中并在其后开采了几个区块来进行所谓的简化支付验证(请参阅[spv_nodes]),从而确保矿工将其视为有效。

现在,Bob可以花费此交易和其他交易的输出。例如,鲍勃可以通​​过将爱丽丝的咖啡杯付款中的价值转移给这些新主人来向承包商或供应商付款。

鲍勃的比特币软件很可能会将许多小额付款汇总为一笔大笔付款,也许将整天的比特币收入集中在一笔交易中。

这会将各种付款汇总到一个输出(和一个地址)中。有关汇总交易的图表,请参阅交易汇总资金。

当Bob花费从Alice和其他客户那里收到的付款时,他扩展了交易链。假设Bob支付了他在班加罗尔的网络设计师Gopesh的新网页费用。

现在,交易链看起来就像爱丽丝的交易一样,是从乔到戈佩什的交易链的一部分,其中一笔交易的输出被用作下一笔交易的输入。

  • 图10. Alice的交易是从Joe到Gopesh的交易链的一部分,其中一笔交易的输出被用作下一笔交易的输入

图10

在本章中,我们看到了交易如何建立一个将价值从所有者转移到所有者的链。

我们还跟踪了爱丽丝的交易,从在钱包中创建交易的那一刻开始,通过比特币网络以及将其记录在区块链上的矿工。

在本书的其余部分,我们将研究钱包,地址,签名,交易,网络以及最终挖掘背后的特定技术。

骑劫挖矿 cryptojacking

骑劫挖矿(英语:cryptojacking)是一种僵尸电脑形态的不当应用电子技术的行为,利用被入侵的电子装置(被僵尸化)擅自执行加密货币的挖矿程序并将计算结果自动发还给入侵者牟利,被入侵的电子设备因为执行挖矿程序而过度消耗中央处理器、图像处理器、电力或网络流量等。

入侵的途径一般是受害者不慎执行了附有骑劫挖矿脚本或恶意程式的媒体如网页、应用程序或电子游戏等,入侵的对象装置囊括台式电脑至移动设备如手机等。

采用这种手段收集的加密货币以隐匿交易记录的门罗币为主,而非比特币或以太币这些更主流但公开交易记录的加密货币。

进行门罗币的骑劫挖矿主要源自一款名为Coinhive的JavaScript,本来其应用目的是让网页的拥有人征询浏览者的同意下自愿挖矿,以此代替网页广告获取收益,但很快出现了不告知浏览者而擅自执行Coinhive或类似脚本的网页,其中更揭发了北韩金日成综合大学曾利用骑劫挖矿脚本牟利。

自从2018年至2019年间防毒软件和主流网页浏览器如Firefox针对侦测骑劫挖矿脚本而对其网站进行拦截以来,骑劫挖矿有走向式微的趋势。

2018年8月,游戏网络商城Steam撤下了一款名为《Abstractism》的游戏并封禁其开发商,理由是该游戏被证实在启动游戏后自动执行骑劫挖矿程序,并且会产出与《绝地要塞2》鱼目混珠的道具被放上Steam商城贩卖。

参考资料

https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch02.asciidoc

https://zh.wikipedia.org/wiki/%E9%A8%8E%E5%8A%AB%E6%8C%96%E7%A4%A6