区块链技术是加密货币的核心,包括最着名的一种 - 比特币。最简单的形式是区块链由信息块组成。每个块包含:事务(在比特币的情况下,正在传输的金额),创建的时间,其内容唯一的数字签名,以及将其链接到前一个块的代码。因此,简而言之,区块链是一系列连接在一起的区块,创建了一系列区块。
整体而言,区块链包含自比特币开始以来发生的每一笔交易,从第一块称为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位,那么他或她将不可避免地重新计算自创世以来的所有块哈希。使用当今的技术,这几乎是不可能的。即使为了论证而这种可能性,只要大多数节点是诚实的,这个新的欺诈链就会被拒绝。大多数节点接受的区块链总是拥有来自其他节点的大部分批准(即工作量证明)。