区块链:挖掘比特币

区块链技术是加密货币的核心,包括最着名的一种 - 比特币。最简单的形式是区块链由信息块组成。每个块包含:事务(在比特币的情况下,正在传输的金额),创建的时间,其内容唯一的数字签名,以及将其链接到前一个块的代码。因此,简而言之,区块链是一系列连接在一起的区块,创建了一系列区块。

建筑模块

整体而言,区块链包含自比特币开始以来发生的每一笔交易,从第一块称为Genesis开始。

如上面的示例所示(已经简化为每个块仅包含一个事务),如果Alice想要将1比特币发送给Bob,则将创建新块以记录相关信息。块号(在这种情况下为15)将被分配给事务本身,以及到前一个块的链接(0000abxf6h12gh)和对块的整个内容唯一的数字签名(00008cnj21lxt3jh)。

电子签名

数字签名是数学函数(或加密散列算法)的结果,称为SHA-256或双SHA-256,更精确(更多细节,请阅读比特币密钥和地址文章)。SHA-256接受数据文件,对此数据运行加密算法,并生成64个字母数字字符的输出,称为数字签名。无论接收的数据文件的长度是多少,此代码的长度始终为64个字母数字字符。

有趣的是,如果数据中只更改了一个字母或数字,那么SHA-256算法将产生完全不同的签名。另请注意,每个数字签名都以4个零开头。

现在,如果Bob试图通过将他从Alice收到的比特币数量从1改为100来“欺骗”系统,那么相应的数字签名也会改变,包括自开始时间以来的所有先前签名。换句话说,鲍勃不可能这样做:

块头的内容
最新版本的区块链,例如:v20000000
上一个块头的哈希值 前一个块的链接 - 例如:0000abxf6h12gh
Merkle Root的哈希 以加密形式的块中所有事务的摘要
时间戳 创建块的时间
目标 一个256位的数字
杜撰 一个数字,用于计算块头的正确数字签名

一旦交易由节点(即比特币网络中的计算机)验证,就选择(或确认)它们以包含在块中并且开始采矿过程。这是一场与时间赛跑,最适合和最幸运的节点将赢得胜利。

比特币采矿

为了挖掘比特币,您需要下载软件并购买专用计算机。在软件方面,有许多选项,最受欢迎的是:CGminer,BFGminer,BitMinter和BTCMiner。矿工或矿工组的目标是计算等于或小于指定目标的块的散列。只要块头中的所有信息保持不变,SHA-256的结果将始终相同。这就是包含nonce的原因(在加密中,nonce是一个只能使用一次的任意数字)。每次计算的块头的散列未能满足目标范围时,此数量都会增加,并且会重新计算散列,直到达到指定目标。

配备最强大和最快的计算设备的矿工将首先达到目标。虽然动力和速度在采矿中很重要,但另一个决定性因素是运气!由于在计算中奖哈希时没有逻辑,因此应遵循最长的蛮力路线。蛮力是一种详尽的搜索技术,它列举了所有可能的答案,直到达到正确的答案。要计算的答案数接近10 77,这需要大量的计算能力和速度。

一旦计算出获胜的目标散列,该块就被包括在区块链中,并且奖励(在写入时,12.5比特币)被授予胜利的矿工。目前,区块链每10分钟左右包含一个块,单个块可能包含大约1,000个事务。

结论

一旦区块链中包含一个区块,它就会变成永久性且不可逆转的。网络中的所有节点(计算机)都保留此分散分类帐的副本。当新节点加入网络时,会下载区块链或分类帐的另一个副本。如果有人试图改变一个块中的一条信息,即使它只有1位,那么他或她将不可避免地重新计算自创世以来的所有块哈希。使用当今的技术,这几乎是不可能的。即使为了论证而这种可能性,只要大多数节点是诚实的,这个新的欺诈链就会被拒绝。大多数节点接受的区块链总是拥有来自其他节点的大部分批准(即工作量证明)。