最近在吃晚饭时,我被要求解释比特币挖掘,而我挣扎着,因为它与许多其他概念纠缠在一起。这是我的尝试,把它分解成一口大小的小块。
采矿是将比特币交易的页面(块)写入比特币账本中的过程,称为“比特币区块链”,并获得新创造的比特币奖励。
为了更详细地理解这一点,这篇文章的其余部分描述了:
如果您是比特币新手,可能需要快速阅读“ 比特币的温柔介绍 ”。
该过程是:
1.付款。当您进行比特币支付时,交易信息将被发送到网络并传递给所有网络参与者(称为“节点”),并保持“未确认”状态。这意味着节点已经看到支付已经开始,并且已经根据特定的技术和业务逻辑规则进行了验证,但是它尚未写入任何人的比特币区块链分类账中。
未确认的交易=有效的已知交易,但尚未包含在分类账中。
2.等待它在一个块中开采(平均10分钟)。矿工拿到未经证实的交易清单(特别是那些他们知道的交易清单),然后将它们捆绑到一个块中,这只是交易清单和其他一些数据。
然后他们开始“挖掘”这个块,这意味着玩猜谜游戏以找到一个随机数(稍后)。
如果他们猜对了,那么该块将发布到网络的其余部分。网络上的计算机验证该块是否符合条件,然后忽略它或将其存储到它们的区块链中。然后竞赛再次以未经证实的交易再次开始。
网络将猜测游戏的难度调整为针对每隔10分钟左右创建的区块,而不考虑网络中计算能力的数量。
3.等待更多块被开采(平均每块10分钟)。下一个与您的交易一起开采的区块将引用前一个区块(因此称为“区块链”)。与交易相比,建立在区块链之上的区块越多,区块链就越“融入”区块链,因此通过区块重组攻击(更晚些时候)就更难以放松。
未确认的交易 - >已确认的交易(1个区块) - >已确认的交易(多个区块)
目前的建议表明,在6个街区之后,由于竞争较长的连锁店替代您的街区而导致交易被解除的可能性非常小。如果您正在收到付款,那么您的付款价值越高,您可能希望等待的时间越长,以减少您的付款被解除的机会。
这有两个部分。首先,您需要一种方法将交易记入分类帐,其次,您需要一种方法来让不法分子添加不诚实的分块的成本更高。
总帐添加。 交易以块的形式添加到分类帐中,以便为交易创建某种时间顺序。在比特币中,你不能相信任何特定参与者的时间戳,并且没有“主时钟”来信任,所以阻止顺序相当于时间顺序。
金融威慑。 这是关于猜谜游戏,称为“工作证明”。您实际上并不需要猜谜游戏来将区块添加到区块链中。然而,猜谜游戏使得它在计算上花费很高(因此在经济上昂贵)以添加块。这笔费用对于那些本来想要增加不诚实障碍的歹徒起到了威慑作用。只要大多数网络是“诚实的”,那么不诚实的团体就会在创建流氓模块方面遇到困难。
“为什么要证明工作?”有三种行为:
第1法
第2法
第3法
终曲
采矿奖励=自愿交易费+块奖励(目前每块25比特币)
当您挖掘一个区块时,您可以从您所包含的交易中收集任何自愿交易费用。你还可以写一笔交易给自己一些BTC(目前是25 BTC,在2016年中减少到12.5 BTC)。这被称为“块奖励”或“coinbase交易”(不要与在英国法人实体“Coinbase UK,Ltd”下运营的名为“Coinbase”的美国公司混淆)。
这是'造币过程'即比特币是如何创建的。奖励随着时间而减少,理论上交易费用将取代块奖励。
交易费用不是强制性的(因此“比特币交易是免费的”口号),但矿工将寻找包含费用的交易,并优先将其添加到他们正在创建的区块中。如果还有更多的未经证实的交易超过了合适的数量,那么合理的矿工将首先挖掘交易费用最高的交易。
矿工们花费大量的计算能力试图猜测一个数字,当添加到一个块并通过一个算法时,输出一个符合某些标准的“散列”。
散列是数据的指纹。从一些数据做出散列很容易,但在计算上不可能从散列创建数据。与输入的数据相比,哈希看起来是随机的。您可以在此处使用哈希处理:转至http://www.xorbin.com/tools/sha256-hash-calculator并在大方框中输入一些数据。你会在小框中看到散列。我输入“这个样子的散列是什么?”:
从一些文本生成散列很容易,但不可能从散列重新生成文本。
如果只更改一部分数据,则哈希看起来完全不同。我添加了一个问号:
添加或更改一个字符会导致看起来完全不同的散列。
通过稍微改变数据,尝试找到一个从0000000开始的散列。Tricky呃?
通过在句子中加入“-17”,我发现了一个以零开头的散列值:
这个样子的哈希值是什么?-17 = 0fd82107e6e73b6f369853da3b53d4a93e8be1e5b3a4dd7da2b4ea644774bc80
我继续前进,并且发现了一个以双零开始的散列,它花了272次尝试:
这个样子的哈希值是什么?-272 = 00629a604a7ec6b1f05e7703c57197ed6119a6282e9b5f750e14a1500578d3fd
比特币块挖掘。 比特币挖掘本质上是相同的游戏,您可以在其中调整输入数据(块头),以便获得与当时网络所需要的匹配的输出哈希值。
最近一个比特币区块#372910被“解决”了,因为哈希值为000000000000000000b037a61e47df14b035199b5a2d464691b9456394bc07da - 这个值有足够的零来满足现在的网络*。
*更准确地说(对于书呆子),使用SHA-256哈希算法对包含随机数的块头进行两次散列,并且必须满足小于网络难度54,256,630,327.89(块#372910)所确定的目标数量的数字。
更有趣。如果你需要一些简单的编程,那么在Alex Gorale的博客上用Python进行猜谜游戏是一个很好的指导。
比特币的提议者Satoshi Nakamoto认识到,如果你想让很多人花费硬件和能源创造这个网络,你需要激励他们:即你需要付钱。白皮书在这里,非常值得一读。
你如何给匿名参与者付钱,而不创造某种权力结构?某些实体提供的任何资金来源(例如,如果公司或政府支付矿工)会给予该实体审查权利和对开采人员的一些控制权,以及开采的内容。
Satoshi意识到,内在的资金来源是由系统支付,而不是由任何外部方支付,这就是答案。这就是为什么矿工由系统支付的价值与系统的规模和安全有关的代币。从理论上讲,代币越有价值,挖矿开支就越多,导致安全性增加和网络价值增加。
任何人都可以“参与”采矿活动。你只需要下载一些软件并运行它。然后,您的计算机将开始接收通过比特币网络收到的交易,并将其捆绑成块,并开始挖掘该块。挖掘块的机会与您投入的计算能力成正比,因为挖掘是一种猜测游戏,更快的计算机猜测速度更快。这也与你的互联网连接速度有关,因为一旦你创建了一个有效的区块,你想要确保其他人在其他有更快的互联网连接的人之前合并它,从而更快地分配他自己的区块。
在实践中,成功的矿工组成团队或池,并结合他们的处理能力。如果他们赢得一个街区,奖励将在参与者之间分享。这与组建彩票联合组织相似,所以你赢得的次数更少,但更多的时候,你的收入变得不稳定。
目前,前10大矿业集团一直创造大约90%的区块,而中国的大型集团则创造了60%以上的大块。池通常由“池操作员”控制,该操作员是一个人或几个人。因此,尽管比特币分散化的言辞,它是由中国少数人控制的。看到这个金融时报文章进一步阅读:比特币欧佩克
采矿主要由中国的水池完成。资料来源:http://www.blockchain.info,于2015年9月初开采4天
比特币的分散化虽然理论上是浪漫的,但在实践中似乎并没有正常运作。
2009年,起初人们可以在他们的笔记本电脑和家用电脑上成功开展工作,使用CPU(中央处理器)进行计算。似乎有一位绅士同意不使用功能更强大的GPU(图形卡,使屏幕工作的芯片)在运行此特定计算时更高效,更快速,但难以设置。然而,这位先生的协议似乎已经破裂,GPU采矿使得CPU采矿已经过时,并导致2010-12年间采矿难度大幅增加。
然后,随着比特币的价格以及奖励的价值增加,人们开始投资采矿设备,并开始制造称为ASIC(专用集成电路)的芯片,除了哈希/采矿之外毫无用处(所以采取流行用一小撮盐与全球超级计算机进行比较)。这是2013年开始的哈希权的下一次革命。
来源:https : //blockchain.info/charts/difficulty
我推荐这篇文章,它比我能更好地描述采矿的历史:VICE主板比特币开采指南。
不诚实的矿工可以:
他不能:
那是一种解脱。
*他可以,但只有他的账本版本才会有这笔交易。其他节点会拒绝这一点,这就是为什么跨多个节点确认事务非常重要的原因。
通过交易,不诚实的影响可能非常有限。如果网络的其他部分是诚实的,他们会拒绝来自baddie的任何无效交易,并且他们会听到来自其他诚实节点的有效交易,即使这个歹徒拒绝通过它们。
如果歹徒拥有足够的街区创造能力(这一切都依赖于这些),他可以通过拒绝将街区列入街区来延迟交易。但是,您的交易仍然会被其他诚实的节点认为是“未经确认的交易”,并且它最终将被包含在其中一个块中。
更糟糕的是,如果歹徒能够创建比网络其他部分更长的街区链,并且可以调用“最长链规则”来踢出更短的街道。这让他放松了一笔交易。就是这样:
如何加倍支出。
这被称为“ 双重支出 ”,因为相同的比特币花了两次 - 但第二个是成为最终区块链的一部分。
总而言之,比特币挖掘是理论上分散的过程,任何人都可以在比特币区块链中添加一块交易,而无需获得任何权威机构的许可,并以比特币支付比特币。这是故意困难的,使用工作证明作为防御Sybil攻击的防御。采矿难度随着网络哈希功率的增加而增加,因此整个网络处理能力越强,需要更多的权力来控制网络。
它可以很好地工作,直到任何实体或协调组控制了太多的哈希能力,在这一点上,他们可以控制系统的各个方面。目前,90%的区块是由已知的矿池或矿商联合开采的,如果有几个水池联合在一起,它们可能会影响变化并维护对网络的控制。