区块链的技术概要:
首先,我们先去看一下中心化和区中心的业务流是什么样的。
以银行为例,在下两图给出的对比
中心化结构(大家都将记账权交给银行)
![](https://img.haomeiwen.com/i11122441/041d2f4c1d7a44ba.jpeg)
去中心化的交易
![](https://img.haomeiwen.com/i11122441/743da09d129a7723.jpeg)
去中心的比特币交易处理流程如下:
首先,需要交易的用户把交易传到网络 。
然后,网络有些机器大叫记账节点,他们通过比拼计算力的方式竞争记账权。这也叫挖矿。
获得记账权的节点,会把待记账的交易进行计算打包,并向全网广播。收到新的记账包的节点会对其进行验证,验证通过后加入自己的区块。
注意,整个比特币的世界是没有服务器的,其完全是靠大家用自己的电脑拼出来的一个分布式系统,既然这些电脑都是大家的,所以这种P2P网络都有一个前提假设--
网络中的任何节点都是不能信任的,它们中的任何一个都可能会作恶。
基于这个前提假设,这个分布式的账本系统就需要有如下的设计:任何人都可以拿到所有的数据。所以,数据要能很容易的被验证是合法的没有被修改的。而且也要是很难被人修改的。
基于这个设计,比特币使用了两个比较大的技术:“区块链技术“和”工作量证明共识机制”。
区块链:
第一个技术就是区块链,区块链又叫blockchain,其中有一个一个的区块,每个区块中包括着一组交易信息,然后,每一个区块都有一个ID,这些区块通过记录前一个区块 ID来形成一个链条
下面的图有助于你形象的理解这一个概念。
![](https://img.haomeiwen.com/i11122441/137defa461876445.jpeg)
但需要注意下面这几个方面。
每个区块的ID都是通过其内容生成的,所以只要是内容有一丁点变化,这个ID都会完全不一样。而生成的ID的内容中还包括上一个块的ID,于是只要上一块的内容变了,其ID也要跟着变,那么后边指向这个块的ID要变,于是,后边指向这个块的ID也要重新计算。而变成另一个,这样就会形成一个连锁效应————一个块被修改,后续所有的块都要跟着一起改,于是导致修改成本的提升。这种一处改,处处改的方式,并不代表不能篡改,而只是让修改面比较大,让你的改动麻烦一点。越旧的区块的篡改会造成越大面积的修改,所以越旧的区块越安全,反之,新的区块越不安全。
而真正让区块链做到非常难篡改的是工作量证明的共识机制。
工作量证明共识机制
我们知道,分布式网络的数据一致性是最难的问题了,在这种去中心化的网络集群下就更难了,其中最大的本质差别是,一个公司内的分布式系统中的节点是被假设成可信任的,而在去中心化的网络下,节点要被假设成不可信任的,想象一下,在一堆不可信任的节点上做一致性是不是一件很难的事?
这里,需要解决几个与“数据一致性”相关的问题。
以谁的数据为准?任何节点都可以修改自己所下载的账本,也就是任何一个人都可以伪造账本。那么谁的数据才是对的?在去中心话的网络下,我们只能认为,大多数人认识的数据都是对的。只要我们控制了一半以上的节点,我让“大多数人” 伪造同一个账本,那么相当于整个账本都被我修改过来了,因为在没有服务器的去中心化的网络下,所谓的真理只不过是
大多数人同意的东西。
大多数人的问题,是人数多吗?在网络世界里,我可以用程序猿模拟出无数的人来投票,所以,用人数来解决去中心化的问题,在分不清是人还是狗,是生物还是程序的计算机世界里,是
一件很愚蠢的事。
意见分歧的问题。如果在同一个时刻,有多个人都在告诉其它人,这账应该这么记。比如说,有人说,张三转了10元给李四,有人数说张三转了20给李四,还有人说张三没转钱,是王五给的钱,而且,他们的数据都合法,那么,整个网络应该听谁的?
是的,这种没有人组织的玩法真是乱啊。
为了解决这几个问题。比特币使用了Proof-of-Work 工作量证明机制,也就是挖矿。所谓的挖矿其实就是用大规模的计算来找到一个符号系统要求的区块ID,要找到符合条件的区块ID只能通过暴力穷举的方式,所以都要付出大量的系统计算资源和电力。这样一来,我们用这种”极度消耗计算力”的方式来提高成本,从而有效的遏制或者解决下面几个问题。
1、修改几乎变的不可能。试想。如果生成一个区块需要大量的长时间的计算力。也就是是在世界上最好的电脑集群下计算10分钟才能打包一个区块,那么当我们去修改数据内容的时候,
这个过程也是一样的,前面说过,如果你要伪造一个块,那么你就要修改后边所有的块。修改一个块的成本如此之高,那么修改数据内容的时候,这个过程也是一样的。前面说过,如果你要
伪造一个块,那么你就要修改后面所有的块。修改一个块的成本如此之高,那么修改整个链的成本也就非常之高了。
2、控制51%算力的人也就变的几乎不可能。除了伪造一条链的成本很高,还要控制大多数的算力,这意味着,是一个非常大金钱投入,这两个难度加起来,几乎不可能。
3、解决分歧。一方面,这么大的工作量找出来的区块ID,已经有效地降低了大家有意见冲突的概率。另一方面,也算是出现了合法冲突的区块(同时出现多个合理的区块,即区块链出现分支
分叉)也就是多个合理的账本。而因为挖矿成本太高,导致要同事跟进多个账本是不能的,所以矿工们只能赌其中一个,大多数人所选择的那一个分支的链就会越来越多,于是
另外一边也就无人问津,从而作废了。
网友评论