比特币区块链系统解决这两个问题时有一个核心思想和一个基本假设,核心思想是,让每一次记账权的获取都需要付出一定的成本,使操纵记账权所需付出的成本远高于可能获得的利益,从而让每个节点出于对自身利益最大化的考虑,自发、诚实地遵守协议中预先设定的规则;假设则是,大多数节点们能够理性判断承担成本和风险去做坏并不如遵守规则可获得的经济效益大,所以区块链上的所有节点中,不存在高达51%的坏节点,无法颠覆现行的规则。
也就是大多数节点都是基于“获得一次记账权不容易,我需要真实客观的记账,跟在一个不存在做坏嫌疑的区块后面,也让我后面的区块们认可我的区块,从而保证我的区块在最长的链条上延续,也才能保证我创建区块获得的比特币奖励有效”这样的思想在履行记账义务。那么即使有个别坏节点获得了某次记账权后没有认真履行记账义务,后面的好节点也会基于“相信大多数节点都是好节点,好节点们都会支持我这个好节点而不是之前的坏节点”从而推翻上一个区块建立新的区块!
实际运行中为记账权获取所设置的成本是,区块记录者需要通过大量数学运算得到一个很难被算出来的“随机数”(现在平均要进行约2^ 32次不同随机数的代入运算才可能得到一个符合要求的随机数)!随机数找到后,记账者将填写了随机数的区块广播给其他节点,其他节点收到后则迅速验证随机数是否符合要求(随机数很难算出来但很容易验证)以及该区块记录的交易信息是否存在重复支付等。如果验证通过则判断其获得当前区块的记账权,那么就会停止自己这一轮的运算,转为争取下一个区块的记账权。也可能不很幸运的,两个距离较远的区块几乎同时算出随机数,并且都已经得到了部分节点的验证认可——距离自己较近的节点会先听到自己的广播,那么这两个区块哪一个最终成功进入区块链,则取决于之后获得记账权的区块选择了在哪个区块后面延续自己的区块,没有被选中的那个区块则成为一个废弃的孤块。
这是一种工作量证明的共识机制,即通过承担一定的算力成本(电费和服务器费用等),完成了大量的计算工作而通过验证获取记账权。其中隐含的条件是,某一个节点成功完成运算获得记账权的概率与其服务器的运算能力占全网络运算能力的比例正相关,这也就解释了为什么,要想操纵记账权是需要付出难以想象的高昂成本的。
4. 要是之前记录的交易找不到了或者被篡改了怎么办?
现行中心化系统中,一般来说,中心单位所记录的所有用户的账户信息和历史交易信息都保存在他们进行了强安全防护的服务器上,并且进行了备份,以保证不丢失不损坏。那么区块链上记录的信息如何来实现这些的?
之前我们提到的,其他节点验证某个区块之后则表示认可——同意跟在这个区块后面延续自己的下一个区块(可以叫做这个区块成为下一个区块的父区块),这里具体的操作涉及到一个叫做哈希(Hash)算法的概念。
哈希算法,是一种能将任意长短的字符信息轻松转化成一段固定长度的字符串(哈希值)的算法,哈希算法的主要特点是:1. 原始信息与输出的哈希值具有唯一的匹配关系,改动原始信息中哪怕一个标点其哈希值都会产生明显的变化;2. 无法凭借哈希值破解其原始信息;3. 在人类现有的计算能力范围内,不存在重复的哈希值。