本文共计约2.6k字,阅读全文预计花费7分钟。
本文纯属个人观点,不能作为投资依据,因此造成的投资收益及损失均不负责。合格投资人要为自己所有投资行为承担责任。
(续上)
2.3 双重支付问题的解决方案
比特币为了实现每一笔真实可信的交易都按照时间顺序被准确记账且不可篡改的功能,并且尽可能地使整个系统安全可靠,采用了一系列的技术:时间戳、哈希算法、工作量证明、奖励机制、非对称加密、分布式数据库。
看到那么多没见过的名词感觉眼睛都花了,没关系,这些技术后面会有文章进行解释,每篇文章对应一个技术,到时我会用大白话把这些技术说明白的,现在大家只要理解运用了这些技术后达成的效果即可:
比特币平均每10分钟记账一次,记录这10分钟内发生的交易,这些交易记录会被打包在一个区块里,然后每一个新区块都与前一个区块相连,形成了一个链条,在链条上区块之间两两相连且有明确的时间先后关系。这就是为什么这项技术被称为“区块链”。
记账是一个很容易的事情,而且比特币系统理论上允许所有人参与记账,如果每个人记得不一样怎么统筹呢?
比特币系统的解决方法是让所有参与者竞争,竞争获胜者可以获得该区块的记账权,正确使用记账权完成记账可以获得这个区块里产生的比特币(上一篇文章说过每个区块都能产生比特币)。竞争的具体方式是进行数学运算解谜,这种运算没有特定的技巧和方法,只能不断用随机数尝试,相对而言比较公平。此外,这种运算和数独有类似之处:解谜需要相当的时间,而验证起来很容易,解密成功时其他人验证的时间会很短。
每个区块里率先解谜成功的人获得记账权,能把新的区块打包到链上向他人广播,其他人验证无误后将生效,解谜竞争者们会继续投入到下一个区块的解谜中。
这样就能保证账本记录的交易真实可信,为什么?若是我解谜成功,但是我记录的交易有误,其他人验证不通过,我的努力(耗费的计算成本)就会付之东流,区块新产生的比特币会被正确解谜并记账的人拿走。为了保证自己的付出有所收获,所有获得记账权的人都会认认真真地记账,保证了交易的真实可信。
对于上面的解谜和记账过程,你可以理解成往一根绳子里串珠子,通过前文所提及的各项技术使得每一个要串进去的珠子须符合一定的要求:①珠子的长度是前一颗珠子长度和珠子里的内容的函数,它们之间存在一定数学关系;②珠子的长度对应数字的某几位数必须是0,通过这样的设计使得运算量很大。
参与解谜的竞争者要算出来才有往绳子上串珠子的权力,率先解谜成功者有奖励,若是奖励足够丰厚则促使参与者不断增加,系统的计算能力不断增强,竞争更为激烈,进一步促使串珠子时需要进行更为大量的计算,保证了系统的安全。
若是你想要改变绳子上的某颗珠子(即篡改记账内容),那意味着你需要把这颗珠子之后的所有珠子都扒下来,然后重新开始计算每一颗窜进去的珠子,这是因为珠子的内容发生改变,会引发后面所有珠子的一系列变化。这样的计算过程要直到和原来绳子上的珠子数相等为止。其他人依然在竞争,在不断延伸绳子后的珠子,系统里的算力越大,想要篡改的可能性越低。
在这样的设计机制下想要修改系统的账本,你手里握有的算力占系统算力的比例要超过51%才有绝对的把握,而且越久远的账本内容越难以篡改,因为要逐步从最后往前改。这样一来可以说账本在理论上很难被修改,即便成功修改代价也非常的高昂,比你修改账本所产生的收益多的多,所以没有人会愿意花这样的代价去篡改账本。通过这样的方法基本实现了每一笔钱都按照时间顺序被准确记账且不可篡改,这就解决了双重支付问题。
3. 解决中心化记账的问题
中心化记账存在数据可能被损坏和中央权威作恶的隐患。去中心化的记账方式能够完美地解决这两个问题。
如果所有参与系统的节点里都有一份记账的账本,那么账本的丢失将几乎成为不可能事件,因为参与系统的节点有多少,那么备份的数量就有多少。
如果所有参与系统的电脑里都有一份记账的账本,那么某一个单一节点篡改账本将没有任何的意义,因为交易是需要对账的,只要一对账就露馅了,别人就不玩了。
比如说我把自己电脑里的比特币账本进行修改,给自己的地址增加了100个比特币,这本身没有问题,可以做到。可一旦我想要把这100个比特币花出去的时候,大家都会对账,他们很容易发现我并没有这100个比特币,因为大家的账本都一样,很容易证明我是个穷光蛋在打肿脸充胖子。
除非我能够修改所有人的账本,给我自己加上100个比特币甚至更多。但是前文已经说明这样做的成本非常高昂,高昂到几乎不可能完成。这样的设计使得中央权威难以作恶,因为作恶成本太过高昂。
排除了中央权威作恶和数据可能损坏的隐患,去中心化的记账方式相比中心化的记账方式更能确保钱的安全,同时降低了交易成本和信用成本。
那去中心化记账有没有什么坏处呢?有!去中心化记账带来的问题就是记账效率的下降,所有的节点都需要及时记录最新的数据,这产生了大量的冗余,降低了系统的记账效率。然而系统的记账效率的降低换来的是系统更加可靠,更加值得信任,其结果是节点与节点之间价值传递的效率实际上提高了。整个过程其实是用记账效率的降低换取转账效率的提升,显然很划算。
去中心化的记账方式还有一个好处,使得数据愈发难以被篡改。前文讲了记账过程像是串珠子,本身就有巨大的计算量。去中心化记账,使得如果想要修改账本不仅仅是要把一串珠子重新算一遍,还要把重新算的结果串到成千上万的珠子上。这样的工作量是不可想象的大,更何况每10分钟左右每串珠子后还有其他竞争者串珠子,你要先不停地把别人新串的珠子扒拉下来,还要去计算,还要串很多串的新珠子……这种吃力不讨好的事情又有谁愿意做呢?
可是凭什么让人进行去中心化记账呢?为的是拿到新发行的比特币,就像是“淘金潮”里的矿工挖黄金一样,所以记账的人又被称为“矿工”。通过用自己手里的计算资源竞争区块账本数据的打包权,打包的数据获得全网认可的时候就能把这个区块发行的新币收入囊中。正是这样的奖励机制使得人们愿意记账,愿意去参与记账的竞争,使得比特币系统的算力不断增加,系统的安全性得以不断巩固。
到这里,基本上初步阐述了比特币如何解决①信用本位货币体系的问题②双重支付问题③中心化记账的问题,可能有助于大家理解这个系统的可靠性和优越性在哪里,大家也可以开始思考它的不足之处在哪里。
下一篇我们一起分析比特币有什么价值。
参考资料:
1.《精通比特币》
2.《区块链研修班》课程