比特币 是什么(下)
大家好,我是王可乐。在上一个视频中,我们了解到在 比特币 系统中,交易记录存储在所有网络节点上。并且我们还了解如何使用数字签名技术来制作合法的交易记录,然后我们可以将交易广播给网络中的所有参与者。
同时,我们在最后一个视频的最后留下了一个问题。如果我们用一笔钱创建一个交易来买房子并发送到网络的一部分,并用同样的钱创建另一个交易来购买一辆豪车并将其发送到网络的另一部分节点中间,会有什么结果?
首先,一些节点首先收到你的第一笔交易,他们会记录下来并传播出去;
另一组节点收到你的第二个版本的交易,他们也记录下来并传播出去。随着时间的推移,一些节点会一个接一个地收到你的两笔交易。怎么做?很简单,他们先记录下收到的交易,然后认为后面收到的交易是非法的,就扔掉了。
此时网络中的节点不一致:有的节点批准你的第一笔交易,另一部分批准你的第二笔交易。作为一个货币系统,比特币 当然只会承认其中之一。怎么做?比特币系统引入了竞争,节点相互竞争,最终达成协议。
话虽如此,有必要给大家介绍一下比特币区块链底层技术是如何工作的。
在 比特币 系统中,节点以这种方式组织交易:将发生在相似时间的交易放在一起形成一个“区块”,然后每个区块按时间顺序首尾相连,下一个区块前一个区块的编号将写入其中,所有区块形成链状。这条链从第一个区块(即创世区块)开始,到最后一个区块结束,记录了比特币历史上所有已确认的交易记录。
回到上一个问题。网络中的一些节点批准您的第一笔交易并将其放入新生成的块中;另一部分节点批准您的第二笔交易并将其放入新生成的块中。那么,谁说了算?
画外音:有多少人说了算?
嗯,在某种程度上确实如此,但是比特币系统有点复杂。事实上,它也被设计成很难将一个块打包到区块链中。
当一个节点收集到一批交易信息并出块时,还需要对该块进行合法化,才能将其加入区块链并被全网识别。中本聪设计比特币系统时,区块必须满足非常严格的条件才能被认为是区块链中的合法区块。
简单来说,所有新生成的区块,除了交易记录、前一个区块的地址等数据外,还必须添加一小块数据(称为nonce),使整个区块通过一个(称为a哈希)。经过数学运算,得到的结果满足规定条件。至少对于当今计算机的计算能力而言,找到满足这种条件的小块数字(随机数)是一件非常困难的事情。
这里,对区块进行的比特币数学运算称为哈希计算。在计算机科学中,哈希计算是一系列计算的总称,可以将一段数据映射成一小串固定长度的数字,我们称之为哈希值。
哈希计算有几个特点:
首先,给定输入数据,可以快速计算出其哈希值;否则,如果只给出哈希值,几乎不可能计算出原始数据;
其次,即使输入数据有一点变化,计算出来的哈希值也会发生巨大的变化。
也就是说,通过哈希计算,我们的区块(包含交易记录,前一个区块的地址,以及额外的一小块数据)将被计算为一个固定长度的哈希值。比特币系统要求合法区块计算的哈希值小于一定阈值。因此,比特币 中的计算节点需要不断尝试不同的数字来生成整个区块的哈希值。值满足条件。
由于计算和生成新区块非常困难比特币 手续费,为了鼓励网络中的节点参与区块链建设,比特币系统协议允许生成合法新区块的节点获得两个好处。
一个好处是交易费用。还记得在您的购房交易中有 0.001 比特币 费用吗?这笔费用将奖励给将您的交易打包到区块链中的节点。此费用是可选的,但包括适度的费用可以使您的交易更快地打包到区块链中。
另一个好处来自所谓的事务,它是比特币系统中的一种特殊类型的事务,也是唯一不需要包含输入而只包含输出的事务。比特币系统中的所有节点都认可这个规则,计算出合法区块的节点可以将这样的交易包含在区块中,写入自己的钱包地址,奖励自己一些比特币。最初,奖励金额为 50比特币,奖励金额大约每四年减半。根据系统设计,奖励将在2140年消失,目前奖励约为12.5比特币。
由于交易“无中生有”地创建了 比特币,它也是发出 比特币 的唯一方式。
参与比特币记账的节点必须通过复杂而费力的计算工作添加新的区块,从而获得交易费用和系统奖励。因此,这种工作也被人们称为“挖矿”。参与挖矿 矿场的计算机节点称为“矿工”,控制机器的人称自己为“矿工”。
在 比特币 系统中,并非所有参与者都会选择成为矿工。事实上,大多数参与比特币事务的普通人只需要读取数据或发起事务即可。
在经济利益的诱惑下,所有参与记账的矿工节点,在形成一个新区块后,开始不停地计算,寻找这个可以让整个区块合法化的数字。所有节点都参与竞争。每当一个节点首先计算出一个合法区块时,它就会兴奋地通知周围的节点,并将新区块广播给所有人。
当节点收到别人发来的合法区块时,首先会检查该区块是否符合合法条件。如果验证通过,就说明它刚刚在竞争中失败了,所以它会放弃自己正在做的计算,把别人发来的区块加入到自己的区块链中,然后重新组合,参与下一轮的计算。堵塞。
回到之前的情况,当你将同款买房和买车的交易发送到网络时:有的节点可能已经先收到了买房的交易,所以他们尝试将这个交易添加到他们的 In下一个区块,当这些节点稍后收到购车交易时,他们就直接忽略它;而其他节点可能正好相反,他们试图将购车交易添加到他们的下一个区块中。在块中。在绝大多数情况下,只有一方首先获胜。假设买房交易先胜出,那么当包含该交易的区块被网络上所有节点快速识别时,买车交易将永远没有机会被接受。
此外,由于生成新区块非常困难,因此也很难篡改区块链(分叉)中的交易记录。假设你给房主D付款后,你的交易被打包到最新的区块X中,而X的前一个区块是W。如果你想默认并擦除交易,那么你需要取出区块X中的交易,移除你的交易比特币 手续费,并重新计算一个新的区块 X_1。如果你成功了,说明你在 w 之后创建了一个区块链的分叉。
此时 比特币 系统有一个简单的策略来弥补分叉的不一致性。即:比特币 网络中的所有节点只计算当前最长的区块链分叉上的新块,忽略较短的分叉。
此时网络中的所有其他节点都在尝试在X之后构建一个新的区块Y,你必须在它们之前构建一个区块X_1,然后在X_1之后计算一个新的区块Y_1,然后其他人才能计算出Y,这会让大家信服放弃 X 并切换到分支 X_1 和 Y_1。除非你的计算能力超过全网计算能力的 50%,否则这几乎是不可能完成的任务。
如果你想篡改的交易 X 已经为几个新区块计算过了怎么办?你得从 X 开始一一重新计算,试图做一个更长的区块链分支来说服所有人。这不仅几乎是不可能的,而且试图做这样的事情的人会损失巨大的能量和计算机节点资源。有了这个能力,你就可以成为一个普通的矿工,赚取每个区块产生的收益。因此,您的交易在区块链中的时间越长,未来生成的新区块越多,您的交易就越安全。
虽然伪造造成的分叉在实践中并不经常发生,但由于不同节点接收交易的顺序和选择策略不同,而且网络并不总是可靠的,比特币偶尔会发生交叉。
生成区块的过程称为工作量证明方法,这使得篡改和伪造区块链的成本很高,从而确保在没有中央权威的情况下,系统中的所有参与方都可以保护自己的经济利益遵守和维护系统规则的目的。这会创建对系统的信任,给出 比特币价值。
怎么样,是不是很精致很神奇?其实今天可口可乐要告诉大家的是比特币及其背后的区块链系统的知识,以及更有趣的技术背后的知识。可口可乐将在以后的视频中为您解释。好了,今天就到这里,别忘了关注可口可乐公众号“可口可乐编程”,如果你觉得视频有趣,请把视频分享给你的朋友,可口可乐感谢你的支持,下次再见。
/r/(二维码自动识别)
,