【区块链简单介绍(二)】什么是PoW共识机制
所谓PoW机制全称是proof of work,也就是工作量证明。最开始这个技术是被用来解决垃圾邮件的问题。不过后来中本聪发现这个技术能有效解决拜占庭将军问题,于是便把它引进了比特币区块链网络中,慢慢的PoW机制就变成当今区块链中的主流之一。
简单来说PoW机制主要是通过竞争记账的方式来解决区块链网络中各个节点的一致性问题,它的原理是这样的,我们都知道区块链中的每个节点都能自由地参与数据处理,也就是打包区块,为了保证网络中的各个节点能达成一致,PoW就规定当一笔交易产生后,每一个想要记账的节点都需要依靠自己的计算能力与他人竞争,争夺记账的权利,竞争的方式就是每过大约10分钟的时间就会进行一轮算力竞赛。
参与的节点通过算力不断寻找一个随机数Nonce,谁先找到满足一定条件的Nonce值,且通知全网,获得认可,谁就能获得记账权利,最终获得记账权的人,他所打包的区块会连接到区块链的链上,同时他处理的数据也会被全网的其他节点记入各自的小账本中,PoW机制在比特币网络中就是比特币的挖矿原理,他会给获得记账权的节点,一定的比特币作为奖励,从而激励更多的人加入进来,PoW机制的优势在于他让每个节点的算力都加入进了网络的交易认证中,使得网络的去中心化性更强,节点的作案成本更高,理论上除非有人能掌握全网51%以上的算力,否则整个网络的任何东西都是无法被篡改的。
所以加入的人越多,全网算力就越大,也就越难被人掌握,超过51%的算力,整个网络也就越安全。当然PoW机制不是完美的,他为了保证网络的强去中心化付出了很多的代价,比如被大家诟病的浪费大量资源,性能效率较低等等,但它也确实使去中心化的互联网落地成为可能。
什么是PoS共识机制
所谓PoS机制全称是proof of stake,也就是权益证明它是除PoW机之外的另一类主流共识机制。
PoS机制主要是通过权益记账的方式来解决网络的效率低下,资源浪费和各节点的一致性问题。
简单来说就是谁拥有的权益多谁说了算,它的原理是这样的,PoW之所以有种种问题,主要是因为人人都可以自由地成为节点,而每个节点又通过竞争的方式参与数据处理,一笔数据要经过这么多人的处理,肯定会造成资源浪费和效率低下。
PoS之所以能解决这个问题,是因为PoS提高了节点处理数据的门槛,它规定虽然每个人都可以自由的加入进来成为节点,但只有满足一定条件的节点,比如抵押一定数量的代币,才有资格成为验证节点,也就是候选人。成为候选人后,系统会通过算法选择一部分人作为出块节点,每隔一段时间会重新选择,选取过程中,算法会保证选取的结果不能被操纵,也不能被预测,从而避免网络被某一节点所控制,只有成为出块节点,也就是矿工才能参与数据的处理,争夺记账的权利,所以说PoW是人人都可以成为旷工,而PoS则是通过一系列筛选才能成为矿工。
PoS具体的竞争方式是,谁持有的代币多,谁就越容易获得出块的权利,然后通过全网广播,他打包的区块经其他矿工验证,确认没问题后,这个区块就会连接到链上,并同步在全网其他节点的小账本中,同时他获得相应的代币奖励,PoS机制的优势在于它解决了PoW中的资源浪费,效率低下的问题,但它同样也有很大的缺点,它很容易造成强者恒强的局面,谁的代币越多,谁就容易获得更多的代币,理论上谁能掌握51%的代币,谁就能掌控整个网络,所以它的去中心化程度要弱一些。
什么是智能合约
简单来说智能合约就是一种把我们生活中的合约数字化,当满足一定条件后可以由程序自动执行的技术。就好比你给我做了一个约定,我们定好奖惩措施,然后将约定通过代码的形式录入区块链中,一旦触发约定的条件,就会有程序来自动执行,这就是智能合约。
智能合约同样是区块链的核心技术之一,这个概念最开始是在1994年由知名密码学家尼克萨博提出的,可由于技术以及其他的一些原因一直没有落地,哪怕到了今天智能合约已经在互联网中有很多的应用,比如自动还款,无人售货等等,也都是局限在用户和机构之间的智能合约,用户和用户之间的智能合约却几乎没有,原因就在于信任问题,我们会发现只要谈起合约,大多数都是陌生人跟陌生人之间有这种需求,而且还跟钱有关系,如果在没有第三方做担保的情况下,我们之间做了个约定,我把钱打给你,结果你毁约了不承认怎么办?所以智能合约一直没办法在用户与用户之间普及。
后来随着区块链得出现,人们发现区块链与智能合约十分的契合,因为区块链的很多特点,比如去中心化、数据的不可篡改等,可以从技术的角度去解决陌生人间的信任问题,这才是智能合约的大规模的应用成为可能。
于是慢慢的智能合约就成了区块链的核心技术之一,智能合约有很多的优势,第一它去掉了中介,可以完全依托技术,让用户之间自主建立合约。
第二透明公平,智能合约会用代码将条件写得清清楚楚,并记录在区块链上,整个过程完全由程序执行,连包括编写这个代码的开发者都不能篡改。
第三灵活,让用户之间可以自由地签立合约,哪怕是与一个陌生的外国人,也可以通过智能合约建立联系。
总的来说智能合约是区块链的核心技术之一,不仅在区块链中起到了执行的作用,他更是区块链的一个应用发展方向,拓宽了区块链的使用场景。
四大核心技术的作用
简单来说区块链的四大核心技术,分布式账本、共识机制、密码学以及智能合约,分别在区块链中起到数据的存储、数据的处理,数据的安全以及数据的应用作用,具体它们的关系是这样的,首先分布式账本构建了区块链的框架,它的本质是一个分布式的数据库,当一笔数据产生后,经大家处理就会存储在这个数据库里面,所以它在区块链中起到了数据存储的作用。
其次分布式账本决定了区块链是一个分布式的网络结构,每个人都可以自由的加入其中,共同参与数据的记录,但与此同时就衍生出来令人头疼的拜占庭将军问题,即网络中参与的人数越多,全网也就越难以达成统一,于是就需要共识机制来制定一套规则,明确每个人通过争夺记账权的方式来处理数据,最后谁取得记账权,全网借用谁处理的数据,从而使区块链网络中各个节点的行为能达成统一,所以共识机制在区块链中起到了统筹节点行为,明确数据处理的作用。
此外数据进入分布式数据库中也不是单纯的打包进来就没事了,底层的数据架构则是由区块链密码学来决定的,打包好的数据块会通过密码学中的韩希函数处理成一个链式的结构,后一个区块包含前一个区块的哈希值,从而让上链的数据具备不可篡改、可追溯等特点,另外也会通过非对称加密的方式进行加密,从而保证了数据的安全,验证了数据的归属。
最后当我们想要解决一些信任问题,可以在分布式数据库的上方搭建应用层面的的智能合约,用户之间的约定可以通过代码来明确清楚,由程序执行区块链中的数据,也可以通过智能合约进行调用,从而完成数据的执行与应用的功能。
总的来说四大核心技术在区块链中各有各的作用,他们共同构建了区块链的基础。
什么是双花问题
所谓双花问题顾名思义就是一笔钱被重复花了两次,比如我们微信钱包里有100块钱,我们先去饭店吃了顿饭,结果微信出了bug,这一笔钱并没有被银行同步还留在钱包里,于是我们又能拿着同样的100块钱去看场电影,这就属于双花问题。
一般来说双花问题包含两个子问题,一种是同一笔钱,因为同步延迟的问题被多次使用,像我们刚才举的例子就是这种情况,另一种是一笔钱虽然只使用一次,但是通过黑客攻击或者造假钱的方式,把这笔钱又复制了一份,再次使用,双花问题目前主要是通过第三方机构来解决的。
像第一种情况,现实生活中我们的交易会交给银行,银行会按顺序一笔一笔进行处理,当银行处理完第一笔我们的钱包就已经没钱了,自然就不会发生双花问题。至于第二种情况,银行支付宝等机构的安全系统很难被攻破,另外现实中的货币信用卡等价值物品都有独一无二的标识,自然也就解决了双花问题。
但区块链不同,区块链因为去中心化的特点,没办法通过第三方机构的方式来解决双花问题。另外由于区块链分布式的特点,一笔交易从处理到全网的各个节点达成统一,整个过程需要一定的时间来进行确认。
所以在区块链网络中,攻击者就更容易利用这个时间间隙去制造双花问题。为了解决双花问题,区块链在共识机制的基础上引入了时间戳和UTXO模型,通过共识机制来解决第一个问题,由时间戳解决第二个问题.加上UTXO模型,进一步提高他们的安全性。
什么是UTXO账户模型
由于处理方同步不及时的问题,导致同一笔钱被反复花了两次。为了解决这个问题,一些区块链项目便在共识机制的基础上引进了UTXO的账户机制,简单来说UTXO是一种特殊的账户记账模型,它的中文意思叫做未花费交易输出。
它跟银行传统的账户模型有很大的区别,这种模型只记录交易本身,而不记录交易的结果,像传统的银行账户模型它是直接记录结果的,比如我账户里有1万块钱,我要转给你3000,就会从我的账户里扣除3000,你的账户里增加3000,但UTXO模型不是它的记录原理是这样的,还是假设我账户里有1万块钱,我要转给你3000,UTXO在记录的时候它会先记做这1万块钱全部转出来了,然后再记录有3000块转到了你的账户里,又有7000块从我的账户转到我自己的账户,他会把这个过程中的账户资金交易地址、转账资金来源等等信息全部记下,所以UTXO的本质其实是一种流水记账,会把交易的过程记录下来。
这种模型的好处在于它让每次交易过程都被记录的明明白白,并且可以追溯每笔资金的源头。也正是基于这个特点,UTXO可以和共识机制一起解决双方问题,区块链解决第一种类型的双花问题,也借鉴了传统银行的方式,会按照顺序一笔一笔处理交易,当节点在处理一笔交易的时候,会先通过UTXO模型检验交易资金存不存在,然后追溯这笔交易的源头确定没问题后,就会通过共识机制进行全网广播记录到链上。
如果有有人想要用同一笔钱支付两次,区块链网络只会确认先接收到的那一笔,之后那笔交易节点会在查询UTXO时发现这笔资金已经被支付出去,并不存在于你的账户中,从而拒绝交易,以此解决了第一种情况的双花问题。
总的来说UTXO不仅可以协助共识机制解决区块链中的第一类双花问题,更赋予了区块链可追源的特点,区块链也能以此为基础,保证每笔交易的真实与可靠。
什么是时间戳
双花问题还有另一种情况就是一笔钱虽然只使用了一次,但是如果有人通过黑客攻击或者造假钱的方式,把这笔钱又复制了一份,再次使用怎么办?区块链为了解决这个问题,就加入了时间戳的概念。
所谓时间戳按官方定义就是能表示其他的数据在某个特定时间之前已经完整存在,并且可以验证的一种数据,一般是一个字符序列,能唯一的标识某一刻的时间。简单来说时间戳就好比是数据的生产日期,能够证明某个数据在什么时间点就已经完整存在了。时间戳在区块链中与密码学有着非常紧密的关系,工作原理是这样的,节点会相对区块中的信息进行哈希加密,生成一个信息摘要,也就是哈希值,然后会通过相关的服务器提取该哈希值以及数据的时间信息。
服务器会对这些进行再次加密,打上时间烙印,也就是生成时间戳,最后返回到系统之中,这样的好处在于提高了区块链的不可篡改性,因为每一笔数据都在时间戳中进行了二次加密,有相关的时间记录,并且区块在连接时在哈希算法的基础上进行了时间的排序,如果有人想要篡改数据,不仅要攻破哈希算法,还要更改时间戳。
时间戳之所以能解决双花中的第二类问题,原因在于它起到了一个防伪的作用,一方面时间戳提高了区块链的安全性,黑客很难去篡改,另一方面系统会给每一个区块的交易信息都自动打上了时间烙印作为标识,你在什么时间花了多少钱都有记录,没有这个标识的一看就是假钱。
总的来说时间戳了在区块链中起到了非常重要的作用,它让每个区块按照时间顺序层层嵌套,进一步加强了区块链的安全系数,也正是因为他的存在才使区块链中的假钱问题不再是一个问题。
什么是侧链技术
我们都知道区块链是由四大核心技术构成,但还有一些问题是四大核心技术也没有办法完全解决的,比如被大家所诟病的效率问题,以及可扩展性问题,就是随着时间的推移,系统的很多功能没有办法得到与之相对应的提升。为了解决这些问题,区块链就引入了很多的新技术,其中一个比较主流的解决方案就是侧链技术。
所谓侧链技术是让链和链之间产生价值交互的一种技术,简单来说就是建立一条新的区块链,能够一对一的和原有的一条链产生联系,资产可以在两条链之间进行转移,进而弥补原来那条链中的某些不足,就好像共生一样,其中原有的那条链就叫做主链,而新产生的链就叫做侧链。
一般来说一条链上的资产只能在这条链当中进行流通,侧链之所以能让链与链之间实现资产的转移,是通过了双向锚定的方式才得以实现,就是一方要以另一方的行动为标准,他的工作原理是这样的,以比特币为例,当比特币想要转移到它的侧链上时,就会在比特币的主链上将相应数量的比特币进行锁定,然后再将等量价值的侧链代币进行释放,反之当比特币想要转回主链时,就锁定该数量的侧链代币,释放相应的比特币就好了,所以双向锚定的标准就是一方锁定时,另一方有没有释放相应的代币。
至于是如何管理资产的锁定与释放,一般有两种方式,一种是通过第三方机构进行单一托管,锁定与释放都有机构来确认,另一种就是找很多可靠的人进行联盟托管,每次锁定与释放都让很多人进行验证,只有确认的人数到达一定比例,才能将资产解锁,一次就实现了列与链间的资产转移。总的来说侧链技术确实能较理想的解决效率问题,可扩展性问题,比如主链上的交易处理不过来时,完全可以把部分资产转移到侧链,由侧链分摊进行处理。
再比如运用主链的人较多,不好去做大的改动,这时候就可以在侧链进行修改,对主链的功能进行补充,也正是基于这些优势侧链才是现在比较主流的解决方案之一。
什么是跨链技术
所谓跨链技术其实就是侧链技术的升级版,只不过由原来链链之间的一对一关系变成了一对多,简单来说跨链就是能让多条链之间产生价值流通的一种技术。既然跨链是侧链的升级版,那它就一定有比侧链更厉害的地方,这一点就是跨链除了能解决效率扩展性问题以外,更主要的是它可以解决不操作性问题。
所谓互操作性问题就是说区块链应用在各个地方的时候,因为应用的行业场景不同,以及参与的企业不同,导致一个场景都需要一条链甚至多条链,而且每条链都比较封闭,就好像一个个孤岛,彼此之间很难进行联系。
跨链目前主要有4种方式来解决这个问题,第一种是用公证的方式来实现跨链,它的原理是这样的,最开始瑞波实验室提出来了一个协议,这个协议适用于各个区块链的记账系统,并且能包容他们之间的差异,大家可以以此作为统一的支付标准,就好比春秋战国时期秦始皇统一各国语言一样,自然就能实现链与链接的价值转移。
第二种方式是中继,这种方法和侧链很像,是通过建立一条新的链,让这条新链和其他链产生联系,其他链可以和这条新链产生价值转移,好像是很多链有了共同的一条侧链,于是就能以这条链作为中介,间接的实现跨链功能,包括ok chain也是采用这个技术。
第三种则是分布式私钥控制的方式,这种方式就相当于建立了一个区块链式建立的银行,只不过这个银行不像现实里的那样由一个人说了算,而是通过分布式的技术让银行更加的去中心化,这样大家有了一个基础设施,便可以自由的在里面兑换各个链上的资产,也自然就做到了个链间的价值转移。
最后一种哈希锁定的方式。
总的来说跨链的方式虽然很多,但核心的目标只有一个,就是解决价值孤岛的问题。
什么是闪电网络
所谓闪电网络就是在2015年被提出来用来解决比特币交易拥堵的一项技术。因为比特币最开始设计的时候,一个区块只有1M大小,只能记录上千笔交易,后来随着使用的人越来越多,这个容量明显不够用了,于是就出现了比特币的交易拥堵问题。
为了解决这个问题,比特币社区提出了两种方案,一种就是扩大比特币的区块容量,另一种就是不扩容,闪电网络就属于不扩容这种方案,闪电网络的工作原理是这样的,比如我们要做交易,那就可以在我们之间以链下的方式建立一个支付通道,我们把资金先放到这个通道的钱包账户中,这个钱包只有经过我们双方的私钥确认后才能打开,它起到一个资产记录副本的作用。
之后我们间的每一笔交易都会通过类似智能合约的功能记录在副本里,直到什么时候我们之间不再做交易了,就关闭支付通道,把我们这一系列交易的最终结果全网广播记录到链上,这种方式就相当于给比特币搭建了一个侧链,主链就只用记录结果,一部分交易通过闪电网络的方式去处理,分担了主链交易的压力,自然就解决主链交易拥堵的问题。
另外因为所有在通道内的交易都是链下的,只需智能合约来执行,不要通过全网确认,所以大大提升了处理效率。除此之外,闪电网络也可以实现跨链的功能,就是哈希锁定它需要跨的两条链都支持闪电网络,两条链将资产都暂存到通道中的临时账户,然后通过哈希锁定技术,让不同链上的资产在兑换时能够同时的结算,以此实现不同链间的价值转移。
总的来说,闪电网络是目前用来解决可扩展性问题和互操性问题的主流方案,不仅只适用于比特币,也适用于其他项目。
什么是隔离见证技术
因为区块容量大小有限,导致比特币经常会发生交易拥堵的问题,其中通过链下去解决的方案就是的闪电网络,而通过链上解决的一种方案,就是隔离见证技术。
所谓隔离见证简单来说就是通过链上来解决区块链的效率可扩展性问题的一种技术。早期针对比特币交易拥堵的问题,比特币社区给出的链上解决方案是直接扩大区块容量,毕竟交易拥堵本身就是因为区块容量过小引起的,但区块容量一旦变大,可能会使普通的电脑无法完成验证工作,进而整个网络的算力也会下降。
于是扩容这个事就一直比较有争议,之后就有人提出能不能在不修改区块容量的前提下,通过链上来解决这个问题,所以就有了隔离见证技术,隔离见证解决拥堵问题的原理其实很简单,总结起来就是腾空间三个字,因为在比特币的交易记录中会包含两种信息,一种是交易信息,比如谁给谁转了多少钱。另一种就是非交易信息,比如谁的私钥签名等等等。而一个区块的空间就那么大,能记录的东西有限,所以隔离见证的工作原理把关于交易信息的数据留下,然后把非交易信息的数据剥离出来,转移到新的结构中。就好比我们平时整理衣柜,会把常穿的留下,把不常穿的转移到其他地方,进而节省空间,这样一来就能够记录更多的交易信息,提升比特币的处理效率。
除此之外,隔离见证还有一个非常大的意义是,为闪电网络打下基础,它让闪电网络更容易落地。通过链上隔离见证与链下闪电网络结合的方式,能更全面的解决效率和可扩展性问题。
总的来说扩容与隔离见证两者从理念上来说或许有冲突的地方,但归根到底他们的目标是一致的,都是解决区块链的效率问题,而这也就是区块链有意思的地方,包容不同理念。
什么是分片技术
简单来说分片技术和之前提到的侧链、闪电网络、隔离见证等技术一样,都是为了解决区块链的效率问题和可扩展性问题而诞生的一种技术,只不过它最开始想要解决的不是比特币的拥堵问题,而是以太坊的效率问题。
以太坊是一个区块链搭建的智能合约平台,就和我们手机的安卓系统一样,开发者可以在上面创建各种去中心化DAPP但因为区块链的效率问题,导致这些去中心化APP很难和我们日常用的APP相媲美。
于是为了解决这个问题,有人就提出了分片技术,分片技术之所以叫分片技术,是因为它背后的逻辑就是分而治之,它的原理是这样的。我们要知道区块链的数据库是一条链式结构,这条链要承担整个系统的全部功能,而且每笔交易要经过所有的节点处理后,才能确认,这种方式下处理效率自然快不起来。
分片技术就想办法将这条链化成一个个的区域,一个区域就叫做一个分片,每个分片承担专职的功能,而节点也会分散到各个分片上,处理相应的工作。这样一来处理时交易会划分到各个分片上同时进行处理,就好像各部门分工协作一样分摊下来,每个节点处理的只是网络中的一小部分交易,如此一来自然就能大大提升这条链的处理效率。
这又引发了一个新的问题,就是网络的安全性和去中心化性会下降,比如原来我想要在你网络中作恶,因为共识机制的原因,我需要搞定全网的大部分节点才行,但现在因为分片技术把节点分散到一个个小的区域中,我只用搞定你这个小区域的大部分节点就行。所以分片技术另外一个非常重要的机制就是随机分配的机制,它会专门有一个地方来负责生成随机数为其他分片分配节点等功能,把节点随机分配出去,这样的话想要作恶的人就很难知道一个小区域中的节点都有谁作恶成本会大幅提高,从而分片技术才能在保证安全与去中心化的同时,解决效率与可扩展性问题。
总的来说分片技术是目前区块链用来解决效率问题与可扩展性问题的主流技术之一,而且因为它的特性有可能会推进区块链技术被快速的大规模使用。
区块链技术带来了什么影响
区块链的核心技术主要有分布式账本、共识机制、密码学以及智能合约4个部分,它们分别在区块链中起到数据的存储、数据的处理、数据的安全以及数据的应用作用,共同构建了区块链的基础框架。
很多人不能理解为什么区块链有可能产生巨大的影响,甚至可以说是再一次的互联网革命,原因就在于它给我们现在互联网世界带来了另一种数据管理的思路,就是相对去中心化的管理数据。
目前这样一个大数据时代有一个很大的问题,就是数据都掌握在中心化巨头手里,而中心化巨头进行数据垄断,甚至数据作恶是没有办法解决的。如果数据不给这些第三方机构,用户间的交易就没有办法完成,因为信任问题你不可能在没有任何担保的情况下跟一个陌生人进行交易,但如果数据给了第三方机构,数据又不透明,你没办法知道这些机构如何使用你的数据,长久下来黑客帝国还真有可能成为现实。
区块链的本质是一个去中心化的数据库,有数据可追溯、不可篡改、去中心化等特点。这些特点总结起来可以解决两件事,一个是数据的不透明问题,另一个就是没有第三方情况下的信任问题,刚好对应上面说的这个时代问题。所以近期来看,区块链在供应链、医疗、慈善等对数据透明度要求较高,以及金融支付等对信任要求较高的行业已经带来巨大的改变。
从长远来说,可能未来不管是政府企业还是用户个人都会参与到区块链带来的数据变革之中。不过目前来说区块链仍面临一些挑战,比如效率问题、可扩展性问题以及价值孤岛的不操作性问题。区块链通过引入了侧链、跨链、闪电网络、隔离见证分片等技术来解决优化,虽然具体效果仍有待验证,但重要的是区块链已经为我们打开了一扇门。
推荐阅读
- 易懂|《斗破CPP》 第贰章(上) ---- 初识分支句
- 新手|《斗破CPP》 第壹章 ---- 初窥CPP
- 易懂|完全二叉树的权值(2019年蓝桥杯真题)
- 易懂|送给好朋友的圣诞树+带名字的爱心 圣诞特别版
- 易懂|C语言小游戏(一)----猜数游戏
- 易懂|动态内存分配浅论
- 笔记|C语言扫雷简化版(b站鹏哥)
- 第十二届蓝桥杯大赛软件赛省赛B组题解
- 数据结构之究竟什么是树