发布网友 发布时间:2024-10-01 15:49
共1个回答
热心网友 时间:2024-10-13 11:03
号称“区块链的灵魂”的共识机制是什么?我们知道区块链是去中心化分布式记账技术,在区块链系统当中,没有一个像银行一样的中心化记账机构,如何保证每一笔交易在所有记账节点上的一致性呢?共识机制解决的就是这个问题,因此也可以说共识机制是区块链的灵魂。
目前比较常见的共识机制有:工作量证明PoW(ProofofWork)、权益证明(ProofofStake)以及委托权益证明(DelegatedProofofStake):
?01?
PoW(Proof-of-Work)
工作量证明机制
POW的全称为ProofofWork,翻译过来即“工作证明”或者“工作量证明”。挖矿获得多少货币奖励,取决于挖矿贡献的有效工作,也就是说矿机的性能越好、挖矿的时间越长,所获得的货币奖励就越多。
BTC就是POW机制下最成功的加密货币。POW机制虽然已经成功证明了其长期稳定和相对公平,但在现有框架下,采用POW的“挖矿”形式,将消耗大量的能源。其消耗的能源只是不停的去做SHA256的运算来保证工作量公平,并没有其他的存在意义。而目前BTC所能达到的交易效率为约5TPS(5笔/秒),以太坊目前受到单区块GAS总额的上限,所能达到的交易频率大约是25TPS,与平均千次每秒、峰值能达到万次每秒处理效率的VISA和MASTERCARD相差甚远。
?02?
PoS(Proof-of-Stake)
权益证明机制
POS即权益证明或者股权证明,全称为ProofofStake。权益证明模式就是根据所持有货币的量和时间,来发利息的的一个模式。
POS机制,相比于POW,POS机制节省了能源,引入了“币龄”这个概念来参与随机运算。POS机制能够让更多的持币人参与到记账这个工作中去,而不需要额外购买设备(矿机、显卡等)。每个单位代币的运算能力与其持有的时间长成正相关,即持有人持有的代币数量越多、时间越长,其所能签署、生产下一个区块的概率越大。一旦其签署了下一个区块,持币人持有的“币龄”即清零,重新进入新的循环。
在POS机制下,因为区块的签署人由随机产生,则一些持币人会长期、大额持有代币以获得更大概率地产生区块,尽可能多的去清零他的“币天”。因此整个网络中的流通代币会减少,从而不利于代币在链上的流通,价格也更易受到波动。由于可能会存在少量大户持有整个网络中大多数代币的情况,整个网络有可能会随着运行时间的增长而越来越趋向于中心化。相对于PoW而言,PoS机制下作恶的成本很低,因此对于分叉或是双重支付的攻击,需要更多的机制来保证共识。稳定情况下,每秒大约能产生12笔交易,但因为网络延迟及共识问题,需要约60秒才能完整广播共识区块。长期来看,生成区块(即清零“币龄”)的速度远低于网络传播和广播的速度,因此在PoS机制下需要对生成区块进行“限速”,来保证主网的稳定运行。
?03?
DPoS
委托权益证明机制
DPOS即授权股权证明(delegatedproofofstake)。
DPoS机制要求在产生下一个区块之前,必须验证上一个区块已经被受信任节点所签署。相比于PoS的“全民挖矿”,DPoS则是利用类似“代表大会”的制度来直接选取可信任节点,由这些可信任节点(即见证人)来代替其他持币人行使权力,见证人节点要求长期在线,从而解决了因为PoS签署区块人不是经常在线而可能导致的产块延误等一系列问题。DPoS机制通常能达到万次每秒的交易速度,在网络延迟低的情况下可以达到十万秒级别,非常适合企业级的应用。
?04?其他共识机制
区块链系统中还有其它共识机制比如联盟链常用的PBFT,新经币(NEM)用的POI等。这些共识机制是为了解决现有共识机制的一些缺点而被提出的。但目前使用的系统不如POW,POS和DPOS多。
共识机制是区块链系统的核心,它决定了一个区块链系统的去中心化程度,性能和安全性。因此公链的开发中,共识机制的设计是核心和关键。
工作量证明机制你真的都了解吗?工作量证明机制你真的都了解吗?
工作量证明(ProofOfWork,简称POW),简单理解就是一份证明,感觉就是老板用来确认你干多少活?
我们都知道直接监测工作的整个过程通常是很低效的,而直接对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。
比如我们现实生活中的毕业证等等,也是通过毕业设计或者毕业论文,当然,也是主要看你修没修够学分。
学校通过检验结果的方式(或者通过相关的考试)所取得的证明。
而工作量证明(POW)这个名词,则是MarkusJakobsson和AriJuels在1999的文章中提出。
工作量证明系统(或者说协议、函数),它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。
PoW被认为是一种多劳多得的模式,算力高,花费的时间多,我们能够获得的数字货币也就越多。
PoW有点像是把钱存进银行或者是余额宝。
它是通过持币而产生利息,对节点进行奖励,持币越多,收益越多。
于是人们说:PoW是按劳分配,PoS就是按资分配。
工作量证明机制就是对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时,必须解出比特币网络出的工作量证明的迷题。
而这道题关键的三个要素是工作量证明函数、区块及难度值。
工作量证明机制构建的区块链网络中,节点通过计算随机哈希散列的数值争夺记账权。
求得正确的数值解来争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。
工作量证明机制优点
工作量证明机制的优点是具有完全去中心化,在以工作量证明机制为共识的区块链中,节点可以自由进出。
比特币网络就是应用工作量证明机制来生产新的货币。
工作量证明(PoW)有啥缺点呢?
一是在私有网络中挖矿获得共识有没有意义的可能
二是处理能源中心化的担忧,尤其是在私有或者联盟链
三是挖矿费电还要使用非常昂贵的硬件
四是节点总是能够带来外部处理能力,反而在私有链中会有更高的价值转账
双花
我们之前也有分享过如何避免支付包交易中出现的双花问题。
“双花”的意思是这份钱只够买苹果,而你却不仅拿着买了苹果还买香蕉。
“双花”意味着有一边非法得到了你的钱,而你失去了这份钱。
那么,骗子怎么的搞手脚呢?
那我们就继续在区块链摆摊卖水果,这天,小B和我说,看我们家水果老新鲜了,想要买5斤苹果和5斤香蕉。
我说好啊,我给了他地址,他给我转来50块人民币(这是我瞎编的,你别信啊!)
但是,我还是太傻太天真了,小B使用的是化名。接着,他就毫无人性地清空了自已钱包。
然后,他又在别家买了同样价钱的水果,也把钱给了别人。
而我也没有等到这次转账完成并永久保存在区块链上。
我就直接把水果给了小B,小B当然就走人了。
一般情况下,我们需要等待至少有12个区块都有这次的转账信息,才不会害怕出现被链重组分叉影响。
也就是说小B给别人转的钱将会先被承认,并且交易信息会永久在区块链上保存下来。
而给我的钱就会由于链分叉而被拒绝掉,心好塞!
好了,以上就是今天分享的有关区块链工作量证明的小知识,希望对你有些许帮助!
想要了解更多有关区块链小知识,记得留意我们的最新动态!
FileCoin:有用的工作量证明
有用的工作量证明(ProofofUsefulWork)是由著名的去中心化存储项目FileCoin在它的*里提出来的一个概念。工作量证明,ProofofWork,POW是实现区块链的一个重要共识方式,FileCoin要实现一个基于区块链的存储平台。所以它也要做共识,它选择的就是工作量证明共识。
首先我们来解释一下常规的工作量证明。它是区块链实现共识的一种方式。是比特币采用的方式,所以,工作量证明就是俗称的“挖矿”。比特币做为一个去中心化的点对点交易系统,要在不同的节点上维护一个共同的完全相同的帐本,来记录所有的交易,而且确保交易不会重复,不会一笔钱多花,就需要一个维护这个账本一致性的规则。大家一起遵守这个规则,就是共识。区块链常用的方法是,把这个账本分成很多页,每个页就是一个区块。每个区块由一个节点来记账,然后分发给其他节点复制,这样所有节点上的账本都是一样的。但是每个区块都由哪个节点来记录,就需要一个大家都能遵守的规则。比特币采用的方法,是让所有的节点做一道简单的数学题,题目很简单,但是计算量很大,一般要10分钟左右才能做出答案来。得到答案虽然很费时间,但是验证答案是否正确很容易。然后所有的节点同时做题,第一个做出来的节点,就得到下一个区块的记账权。因为每个区块都只有唯一一个最早做出题的节点,所以,每个区块的记账权是唯一的,而且也是很容易被其他节点验证的。节点一旦验证到其他节点得到了区块记账权,就必须复制区块,加到本地区块链中,同时开始下一个区块记账权的竞争。通过这种方式,比特币就能确保所有节点的区块链是一致的。
节点通过大量计算竞争区块记账权的的过程,就是工作量证明。所以,工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这个概念由CynthiaDwork和MoniNaor1993年在学术论文中首次提出。而工作量证明(POW)这个名词,则是在1999年MarkusJakobsson和AriJuels的文章中才被真正提出。
实现区块链共识的方式还有很多,如POS,DPOS,POA,PBFT等等,但是工作量证明是唯一被时间验证过(11年)的在公链上运行的区块链共识机制。
工作量证明存在一个什么样的问题呢?还是用比特币为例。比特币节点为了获取出块权做得那个数学题,叫哈希运算。计算量非常大,每一台参与比特币挖矿的矿机都要时刻进行这个计算,耗费大量的电力。这个计算不像其他的如大数据处理的计算,可以产生一些价值,它的唯一目的,就是竞争出一个节点,成为下一区块的出块者。目前比特币每年消耗电量约25.5亿瓦,这相当于全球电量的0.5%,是爱尔兰一年的耗电量。反对POW的人纷纷指责挖矿将电力资源浪费在虚无缥缈的数字货币上,还称之为自由主义的“泔水”。
但是,认为POW是浪费的电的人不知道,正是能源和算力打造了比特币安全不可攻破的体系。
一张100元的现金不只是你我认为他值100,而是整个社会群体都认为他值100,价值就是来自于共识。比特币是社区行为,来自不同国家的人聚集到社区,用互联网来建立秩序,它的意义也是来自于群体共识,只要大家都相信比特币有价值,只共识存在,那么他就有价值,和法币一模一样。所以产生价值认同并不一定需要国家来驱动,比特币改革了一种传递信任的载体和媒介,千百年来,人类社会通过多少流血战争建立的政权和共识,现在兵不血刃,只是耗费些电力就实现,岂不是更先进。
总结而言,要想设计一个去中心化而且安全的数字货币,能源和算力是必要的代价。工作量证明是以去中心化形式构建安全产权认证系统的唯一方案。所以认为POW是浪费的电的人不知道,正是能源和算力打造了比特币安全不可攻破的体系。现在比特币全网算力已经达到一个非常恐怖的地步,任何人想要发动51%算力攻击已经是不可能的事情了,POW算法使比特币系统牢不可破。
为缔造价值而产生的消耗不叫浪费。
但是,如此多的算力,是否可以用来创造更多的价值呢?用FileCoin的话说,工作量证明,还有没有其他用途呢?
FileCoin是分布式存储行业的明星项目。他的开发团队ProtocolLab就是开发IPFS协议的团队,以至于很多人都分不清FileCoin和IPFS的区别。可以说是2017年FileCoin的1CO,把这个行业推向巅峰,也引出了一系列的同类型项目。本文无意于赞誉或者贬低这个项目,只想结合自己从事这个行业的经验,表达一些自己的观点,尽量做到客观公正。希望对从事这个行业的人有一些启发。
FileCoin在*中提出要实现一个有用的工作量证明,实际上就是认可了,要打造一个安全不可攻破的区块链,就必须消耗工作量。但是,他们不希望为这个工作量做出的计算完全被浪费,所以想把这个工作量利用起来。所以,他们想到的方法是,在工作量证明里加入存储空间的使用率。这样,所有的节点为了形成共识,就必须提供存储空间来存文件。这个存储空间就可以存用户数据,就是有用的。
那我们来看一下FileCoin是怎样实现这种有用的工作量证明共识的。
Filecoin采用的共识机制并不是简单的工作量证明,而是一种叫做预期共识(ExpectedConsensus,简称EC)的机制。和其他主流共识机制目标一样,让矿工争夺某一个高度唯一的出块权而获得奖励。这个获得出块权的矿工叫做Leader。在每一轮的出块争夺中,为了保证账本的可靠性,都有一个唯一的leader来进行记账。
也就是说,共识的核心就是选择谁来当Leader。选Leader的方式一般有两种,交互式或者非交互式。交互式是要矿工之间互相投票的。比如PBFT就是交互式的,几个参与选举的人通过互发信息,得到多数票(超过2/3)的人就是Leader。预期共识采用了非交互式的方式来选举Leader。参与的各方根本不给彼此发消息,而是每个节点各自独立私下进行运算。最后某个节点说,我赢得了选举,然后提供一个证明,其他人可以很容易就验证,他确实赢得了选举。这个验证方法就是零知识证明。
预期共识机制会为区块链网络预设一个出块的期望值。比如每1个纪元(epoch)生成1个区块(block),但也有一个纪元可能出现空块或多个区块的情况。所以在Filecoin中,每个高度不是一个区块,而是一个区块集,叫做TipSet,这个TipSet中可能包含了多个区块。所以实际上Filecoin是TipSet链。预期共识无法保证每一轮只选举出一个Leader,所以会出现一轮中有多个Leader的可能,这样链式结构就变成了DAG的网状结构。所以FileCoin还会对block赋权重,实现有效收敛。
FileCoin采用的EC共识有一个好处。对于传统的POS共识机制来说,有一个重大问题就是无法控制分叉。也就是说,由于挖矿成本低,参与者可以同时挖多个链获取利益。而预期共识对这一点做了设计,那就是通过权重和抵押机制来促使矿工选择一条最好的链,对同时挖多个链的矿工进行惩罚,这样可以非常快速地促进收敛。这说明POW和POS共同使用会是一种好的方式。
每一个矿工获得出块的可能与其当前有效存储量占全网总存储量正相关。这种期望共识机制其实是更像是POS权益证明,只是它将POS里边的权益(Staking)换成了有效存储占比。但是矿工的有效存储从何而来呢?是通过存储用户数据得来。如何证明矿工存储了用户的数据,FileCoin创造出一个新的证明机制叫POST时空复制证明。这个POST就是FileCoin的工作量了。把耗电的算力换成存储有用数据的存储空间,无意义的军备竞争变成了存储服务市场竞争。这确实是FileCoin的进步之处。只不过,为了成功的出块,矿工通过预期共识被选为出块节点后,必须在一个块的时间里(现在是45秒)做个POST证明,成功提交,才能出块。否则就失去机会。所以,为了确保矿工能在指定时间内出块,最终官方还是决定要使用GPU。虽然这GPU不是像工作量证明那样一直不停的工作,但是在整个实现共识的过程中还是出现了跟有用的工作量证明思想相违背的耗能计算。
还有,谈到预期共识的时候,我们说到每一个纪元出块都不是一个块,而是一组块,那么纪元这个概念就很重要了。怎么控制纪元呢?每个矿工在参与选举前,需要先生成一个Ticket,这个Ticket实际上是一个随机数,他需要走一个VDF和VRF的流程,这个VDF全称VerifiableDelayFunction,可验证的延时函数。他的计算流程是串行的,需要花费一定的时间,并且这个时间无法通过多核并行的方式进行缩减。这保证了每个矿工产生Ticket时必须要消耗的时间,没有人可以通过优化硬件的方式来获得加速。听上去这函数很完美,可是,这个VDF根本还不存在!现在FileCoin测试网直接使用了一个等待函数sleep,这是UDF,UnverifiableDelayFunction。现在最接近的VDF解决方案,也是需要消耗大量计算资源的。说白了,还是要耗电,还是不环保。
所以,有用的工作量证明,依然只是一个美好的愿望,理想很丰满,但现实很骨感。被誉为下一个比特币的FIL,还要继续为实现这个*性的共识而努力。
总结一下FileCoin存储矿工获取激励的流程:用户存储数据,支付FIL费用-矿工存储数据-生成复制证明-完成时空证明-经过EC共识,选出出块Leader-获取打包权-矿工获取FIL奖励
在这个流程图上,可以看到,矿工可以在两个地方获取奖励。一个是存储用户文件的时候可以得到用户的FIL奖励。一个是在获取区块打包权后获得FIL。而得到区块打包权的一个前提就是存有足够多的用户数据。所以,在存储需求不够大的情况下,矿工会从用户那里收取很低廉的费用。在用户不够的情况下,甚至会倒贴钱自己付FIL存数据,只为能够存足够多的数据,在EC共识中被选成Leader得到打包奖励。这样产生的效果是,FileCoin对用户非常友好,存储费用非常低。所以,一定会吸引很多的应用来这个平台上做开发。但是缺点也很明显,如果存储量不够大,矿工根本没法跟其他人争夺出块权,所以得不到奖励。最后整个平台会朝着大矿工,大矿池的方向发展,这跟FileCoin想把所有闲散服务器利用起来实现分布式存储的初衷是违背的。或者说,一定要等到这个行业具有一定规模,技术更成熟,才有小矿机挖矿的机会。
我们先来简单的讲一讲中心化存储和去中心化存储各自的利弊。中心化存储设备统一管理,可靠性好,性能高,去中心化存储数据天然分散,易于流通,容灾性好,但是可靠性低。从经济角度来说,中心化存储是重资产投入,成本高。去中心化存储通过区块链激励层,用户自行加入,轻资产,可降低存储总成本。未来应用数据的存储和处理还会是以中心化存储为主,而去中心化存储因为是分布式网络,主要可用于热门数据流量分发。同时,因为没有中心化所有权,可以成为去中心化应用的首选。
市场上有一种说法是,去中心化网络适合冷数据的备份,其实这并不是去中心化存储的优点,实在是因为把热数据放到去中心化网络上太不可靠,处理性能也跟不上。所以,如果去中心化存储能实现一定的规模效应,大大降低存储成本,把冷数据备份当作核心业务,并把目标定位在今天因为成本太高没被企业存储的冷数据,会是一个很好的发展方向。
如此说来,从技术上讲,去中心化存储并不一定比中心化存储有优势。如果能推行一种新的模式,把去中心化的经济激励和中心化的存储合在一起,就能吸收两者的长处。真正实现有用的工作量。FileCoin未来可能促成的大矿场模式的数据中心,可能更有市场。
在11年后的今天,比特币并没有实现它成为一个点对点的电子支付货币的初衷,但阻止不了人类前赴后继的去买它,拥有它。同样,我相信FileCoin已经得到足够大的社群,矿工和开发者的支持,即使在可预见的未来,它不会促成分布式存储应用的全面落地(也许这从来不是FileCoin的目标),但我还是相信会有很多人会因为它的共识去购买它,持有它。上升到哲学层面,人类在为真理买单。
那么在实际生活中,何为有用,或者说,我们到底是在用存储做共识还是用共识做存储?FileCoin是前者。FileCoin想要基于存储工作量实现的去中心化的共识,理论上是完美的,追求完美,人类是要付出代价的。这也是为什么在这个项目上我们等待了这么长的时间。但是一旦实现,它可能会为人类带来巨大价值,对市场带来无穷大的号召力。
只不过去中心化不是万物的灵药。中心化的一个最大优势是它的效率非常高。像dPOS或者联盟链这样的弱中心化共识兼顾两者优势,能更快速的把应用推向市场,提前启动分布式存储行业,推进分布式存储应用落地。所以,我们既追求用存储做共识,也追求用共识做存储,根据实际需求来做出我们的选择。在这个过程中,相信区块链也会进一步发展,逐步优化,变得越来越有用。
区块链共识机制之一:POW工作量证明机制区块链可以理解为一个不可篡改的公共账本,所有参与者都能验证交易并进行记账,即为分布式账本。那到底由谁来记账?又如何保证账本的一致性、准确性呢?也就是区块链的共识机制是如何的?
区块链的共识机制就是解决由谁来记账(构造区块),以及如何维护区块链的一致性问题。目前区块链项目采用的共识机制有多种,如:POW工作量证明机制,POS权益证明机制,DPOS股份授权证明机制等等。本文说明POW工作量证明机制。
区块链的第一个成功应用比特币系统采用的POW工作量证明机制。即以比特币系统为例说明POW机制,首先比特币系统有一套激励机制让所有参与者竞争记账的权利,即谁拥有记账权谁将获取构造新区块的比特币奖励(目前奖励为12.5比特币),同时获取新区块内所有交易的手续费作为奖励。
参与者如何竞争记账权利呢?参与者通过自己的算力计算一道数学难题,谁先计算的结果,谁就拥有了记账的权利,也就可获得构造新区块的奖励。这道数学难题就是寻找一个随机数Nonce,使得对区块头的哈希计算的结果小于目标值,Nonce本身是区块头中的一个字段,所以通过不断的尝试Nonce的值,以满足区块头的哈希计算结果小于目标值。通过动态调整目标值,即可调整计算的Nonce值的难度。
关于哈希计算Nonce的过程通常类比为掷筛子游戏,基于参与游戏的筛子的个数通过调整掷得筛子的点数可调整游戏的难度。例如:100个人参与掷筛子,总共有100个筛子,要求掷得点数为100为赢,则100个人谁先掷得点数100即为胜利者,即拥有了记账权。如果发现大家掷出100点的时间太快,则可增加难度,要求掷得点数为80为赢。如果又有100个人参与游戏,则游戏中增加了筛子数,如:筛子数增加为200个,同样通过设置掷得点数来调整游戏的难度。
筛子类似于比特币网络的算力,掷得点数类似于比特币网络可动态调整的目标值。
区块链以最长的链条视为正确的链条,如果存在同时出现两个区块,会暂时并行记录两个区块,后续再生成的区块基于其中的某一个区块,将会形成的最长的链条作为一致性的链条,另外一个区块将会被丢弃,比特币是基于6个区块的确认,所以被丢弃的区块将不会获得比特币系统的奖励,也就是白白将竞争记账权的算力(电费)浪费了。基于工作量的激励,参与者必然尽最大能力构造正确的区块,也就是满足区块链的一致性。即全网的所有用户可以达成唯一的一致性的公共账本。
目前比特币系统全网算力已达到惊人的24.75EH/s,其中1E=1000P,1P=1000T,1T=1000G,1G=1000M,1M=1000K,1K=1000,H/s为每秒一次哈希计算(哈希碰撞),也就是每秒进行24.75E次哈希计算,且仍有持续的算力加入比特币系统。比特币记账权的竞争,提供算力的