区块链技术中几个关键问题
第一,去中心化
去中心化并不是一个时髦的名词,简单说就是点对点交换信息,不存在第三方中介。我们日常使用的Internet、Email Service、SMTP等都使用了去中心化思想。
第二,分布式共识
在去中心化的分布式系统中,如果要达成受信任的记账系统,需要考虑共识问题,也就是如何让点对点通信的各方达成一致,并解决叛徒或者恶意结点的问题。
分布式共识要保证所有诚实结点的输入一致,且共识是由所有诚实结点达成的。拜占庭将军问题是一个典型的案例,但当叛徒数量超过总人数的1/3时,共识问题就无法解决了。这些算法都会出现一些漏洞。
在区块链技术中,并未完全应用之前的分布式共识算法,而是结合了独有的奖励机制和逐步确认机制。可以说中本聪在用阳谋来对付阴谋。
共识算法简要:
一,广播交易。
二,诚实节点将交易打包进区块。(矿工,看谁算力强)
三,随机的节点广播该区块。
四,如果区块中所有的交易都是有效的(有验证算法),则其他节点接受这个区块,并在之后创建的新区快中加入这个区块的哈希(链入算法)。
第三,奖励机制
比特币是一种货币,大部分节点愿意通过维持这个系统的正常运转获得奖励,从而保证大部分结点是诚实的。
目前由两部分组成:区块奖励和交易小费。
第四,逐步确认机制
区块链中的共识不是立即确认,而是分两步走。
第一步是第一个区块(一笔交易)的确认需要等待一个小时,可以基本确定这次交易是合法的(比如,A send 10 BTC to B,来购买B的货物,这个区块产生后,B需要等待再次链入6个区块的时间,才会完成交易,把货物交给A,这个时间可以认为之前的待确认区块基本无法更改)。
第二步,随着链入的区块却来越多,代表这次交易的区块被更改的概率越来越小,合法性逐步增强。
第五,双重支付问题
什么是双重支付?
假设A广播一条交易信息,A send 10 BTC to B,矿工(其他节点)会将这个区块打包链入区块链,B发现该区块后,如果立刻将货物交给A(零确认机制),这时,A可能会利用自己强大的算力迅速将另一个区块也加入区块链,即A send 10 BTC to A,如果A可以成功将这个区块加入,并且利用算力在这个区块后继续加入新的区块,则真实的区块则会被忽略。因为诚实的结点会沿着最长的区块链创建的区块。
怎么解决的?
基本基于两点:第一,用上面提到的逐步确认机制代替零确认机制。第二,A很难达到能够在逐步确认机制下,仍能在假区块后控制链入6个以上新区块的算力。第三,即使真能达到这种算力,那么整个比特币系统就会因A这个强大BUG而失去其公信力,即信任崩塌,失去信任的BTC则一文不值,那么掌控强大算力的A也会一无所得,成本高于收益。这也是赤裸裸的阳谋,即想玩就一起好好玩,想捣乱,大家都别玩了。
(文章内容仅为区块链技术的学习记录,如有失误或考证不严谨的地方,请多多指教。)
(参考资料:https://www.zhihu.com/people/ustcsse308)
原文地址:https://www.cnblogs.com/ChengzhiYang/p/9726473.html