比特币区块链是骗人的吗?---比特币篇(2)

作者:假日区块链  时间:2019-12-02  分类:比特币(BitCoin)新闻  

   在前文比特币区块链是骗人的吗?---比特币篇(1)中小编已经带着大家对比特币与区块链的关系、比特币的起源、比特币如何保证全局一本账,出块时间、挖矿等内容进行了介绍,本文将继续比特币的其他方面的内容”

  防篡改

  

  如上图所示是一个区块链的示意图,三个区块依次根据区块哈希值进行相连,以101个区块为例,区块头中不仅保存了自己的区块摘要值,而且保存了前一个区块也就是100个区块的摘要值。每一个区块的区块头部都会保存前一个区块的哈希值,区块与区块之间通过哈希值相连,一直到创世区块,也就是0号区块。

  上篇文章比特币区块链是骗人的吗?---比特币篇(1)所讲的矿工挖矿,做工作量证明,其中一个很关键的要求是需要矿工同步全网的区块数据,原因就是矿工在挖矿的时候,需要将前一个区块的哈希值包含在所要打包的区块中,在此基础上,不停增加随机数的值,算出符合全网难度要求的随机数,完成挖矿操作。

  根据前文的介绍,比特币网络,全网每十分钟才会出一个区块,也就是说集中全网的算力,来进行挖矿,十分钟才能有一个矿工胜出,因此难度非常的大。如果要修改区块体中的某个交易,由于哈希算法的特点,轻微的不同,就会导致输出摘要很大的不同,比如我要修改第100个区块中的某个值。区块头中还有一个值是Merkle根,该值是根据区块体中的交易逐级进行哈希运算得出的,因此区块体中交易的改变,会使Merkle根发生改变,区块的哈希值也就会随之进行改变。

  根据区块链的链式规则,第100个区块改变了之后,101个区块也会随着改变,因此原来寻找到的满足网络要求的随机数,此时也就不再满足难度要求。需要重新进行挖矿,把之前产生区块计算出随机数的过程重新进行计算之后,才可以。同样,后面的区块也都需要进行重新计算。

  如果要进行篡改数据的主体只有一个人的力量,那么只有你自己会以你所修改的这条链来做挖矿,而全网其他的所有矿工还是会在原来的链上进行挖矿,也就是说你需要比全网的其他矿工都要更快的完成挖矿操作,才能让其他人按照你修改后的链进行共识。这个难度是非常大的,或者说是根本不可能的。

  比特币网络的设计中,一条交易从记录到区块,到最终确认,一般会等到该区块之后的六个区块上链之后,才能最终确认,也就是说一般六个区块上链之后,也就基本可以认为,几乎不可能对六个区块之前的区块进行修改了。

  按照工作量证明机制的原理,除非有人能够调动全网51%以上的资源发动攻击,才能对原有的区块链进行修改,但大家都清楚,每个人都是趋利的,如果真的有机构或者个人能够聚集这么多的算力的话,那他想的恐怕会是更好的通过挖矿获取更多的奖励,而不是要篡改记录,或者使比特币系统失去公信力。

  通过这种方式来达到防止交易被篡改的目的。

  矿场

  

  中本聪原来的设想是,按照每个节点的CPU的算力进行挖矿,但随着后来比特币的价值的走高,挖矿这件事有很大的利益可图,一些公司开发出了专门用于挖矿也就是专门进行哈希运算的ASIC矿机。

  且由于原本的设置,挖出的区块的收益,每次只有一个矿工能够获得,虽然全网都在进行挖矿,但比特币挖矿是一个赢家通吃的游戏。因此网络中的矿工开始想着联合,也就形成了上图所示的矿场,投资者将买来的矿机聚集在一起,大家加入同一个矿池,挖矿所得的收益按照贡献大小进行分配,这样保证了大家都能获得一定的收益,而不是赢家通吃的局面。

  矿场的出现,其实是有点背离去中心化设计的初衷的,以前大家可能拿着自己的笔记本都有可能挖出比特币,但由于矿场的出现,区块的打包权基本被各个矿场垄断了,普通的节点,现在几乎不可能再挖出区块了,这也是比特币的工作量证明机制(POW)这种共识算法为人所诟病的地方。当然另外一方面是比特币挖矿会耗费大量的电量,而挖矿本身所做的哈希运算是没有意义的,只是为了选出一个出块节点,这是比特币被人诟病的另一方面。

  防伪造

  比特币通过工作量证明机制(挖矿),维护区块链系统,保证系统能够不被篡改,但还有一个比较重要的问题,在这个分布式系统上,怎么保证用户的交易确实是由用户本人发出的,而不是被别人冒名顶替的。

  加密算法

  

  比特币中所采用的的加密算法主要是非对称加密算法,如上图所示。显然和非对称加密算法相对的是对称加密算法。对称加密算法指的是加解密的过程所使用的是同一个秘钥。对称解密算法具有计算量小,加密速度快,加密效率高的特点。缺点也很明显,加解密的过程使用同一个秘钥,会导致安全性不足,双方持有相同的秘钥,很容易被对方替换了自己的签名。

  因此后续就有人提出了非对称解密,非对称加密如上图所示,加密过程和解密过程使用的是不同的秘钥,明文通过公钥加密后,可由对应的私钥进行解密,私钥对信息进行签名后,可由对应的公钥进行验签。这样的话,用户就可以将自己的私钥保存在自己的手中,而将自己的公钥分发给需要验签的用户,能够实现加解密的过程。

  

  在公私钥的产生过程中,一般是利用256位的随机数生成器来生成私钥,私钥在通过椭圆曲线加密算法计算得到公钥,一般私钥用户自己保存,公钥分发给他人,比特币系统中公钥再通过sha256等一系列的运算得到对应的比特币的账户地址。且上述过程的每一步都无法进行反推,其他人无法通过用户给出的公钥或者是地址获取到对应的私钥。

  从这里面不难发现,比特币上系统上所识别的用户其实就是一个个的账户地址,账户中的比特币是由一个一个对应的私钥所控制的,因此人们常说的比特币系统转账的匿名性,是指现实中的比特币的持有者和账户之间是有一层隔离的,不是像我们大家在银行中开的账户一样,每一个账户都直接对应到一个真实的人。比特币系统每一个账户对应的拥有者其实是一个私钥。

  

  比特币节点在广播交易的时,内容主要包含以下信息:

  交易的原文,节点的公钥,交易原文经过上面的公式处理之后所获得的密文。

  收到交易的节点通过交易原文进行哈希运算获得信息的摘要,再通过该节点发出的对应的公钥解密相关摘要的密文,获取信息摘要,将上述两摘要进行比对,若二者一致,则表明该信息确实是由该节点发出的且没有进行改变过。

  通过这种方式保证了交易的防伪造。

  这里也不难发现,其实我们所说的谁拥有多少比特币,其实并不是这个人直接拥有的,这个人手中的私钥所拥有的,因此比特币系统中至关重要的就是用户的私钥。用户在进行比特币转账的时候,需要通过自己手中的私钥进行签名才能执行。如果拥有某个比特币账户的人,自己的私钥不慎忘记的话,该账户中的比特币也就永远无法找回了。

  比特币系统在提供匿名性的同时,也将保护私钥安全的责任交到了用户手中。

  到这里,大家也看出来了比特币区块链技术是依赖于密码学的,很大一部分信任是由密码学提供的,因此也有人说,量子计算机一旦商用之后,比特币区块链系统将不复存在,由其所构造的所谓信任系统也将不复存在。这里当然有一定的道理,但是在现有技术条件下,我们可以认为比特币区块链系统是有效的。至于量子计算机出来以后,那可能受影响的就不仅仅是区块链系统了,或许整个密码学体系都需要重构,而和密码学系统相关的行业可能也都需要进行重新的设计了。

  UTXO:解决双花问题

  比特币或者电子货币和传统的货币相比,需要解决的问题是双花,双花字面意思也就是一笔钱花了两次。传统的纸币是没有这个问题的,而我们所说的卡或者是支付宝,微信是由一个中心化的系统来防止用户双花的,但比特币没有一个中心化的系统来保证。比特币使用的是UTXO(未花费的交易输出)来表示每个账户中的余额。其实应该这么说,比特币系统是没有余额的概念的,每个比特币账户所谓的余额,其实是指在比特币网络上该账户中所拥有的未花费输出。

  UTXO

  

  

  

  前几年一部很火的电视剧《潜伏》中有个经典的桥段,情报贩子谢若林和余则成见面谈生意,那句经典的台词,“现在两根金条放在这儿,你告诉我哪一根是高尚的,哪一根是龌龊的”。这里其实是揭示了我们现有的记账系统一种弊端,无法追踪到每一笔资金的来源,你手中的钱其实到你的兜里,是发生了一次混合的,混合完成后是无法有效的追踪,每笔钱的具体的源头的。这也就是谢若林,所说的口袋里的两根金条,没有人可以分清楚哪一根是高尚的,哪一根是龌龊的。

  

  比特币系统中所有的合法交易都能够通过UTXO追溯到在他之前的一个或者多个交易的输出,交易的源头UTXO是挖矿的奖励,末尾就是在账户里面未还费的交易输出。如上图所示,每一笔交易都是由交易的进项和出项组成,每一笔交易都是来自于某一个或者某几个交易的UTXO,直至追溯到矿工奖励,这就是比特币产生的地方,以这种方式完成交易历史的追溯。且由于每一笔交易都依赖于前序的交易,而前序的交易同时经过交易验证过的,因此不必每一笔交易都追溯到矿工奖励来确定交易是否合规。

  解决双花问题

  双花:指一笔钱花了两次,这里假设甲只有5个比特币,它同时既给乙转了5个,又给丁转了5个,这就是双花。

  由于存在网络延时等问题,这两笔交易同时到达不同节点的先后会有不同,存在两种情况。

  一是:两笔交易先后到达同一个节点,由于每笔交易都会有前序交易的交易哈希,因此节点会校验用户的余额是否足够,第二笔交易由于节点已经接受了第一条交易,用户账户中的余额自然不够第二次交易的,此时节点将会拒绝第二笔交易,避免双花。

  二是:如果两笔交易分别到达不同的节点,被打包到了不同的区块,区块会出现短暂的分支,后续挖矿节点会在各自认为是最长链的分支上继续挖矿,一旦新的区块产生,链接到其中一个分支上,根据最长链原则,节点会舍弃短链,转而维护最长链。防止双花。

  这就是比特币防止双花的策略。

  到这里基本就是比特币部分的内容了。这两篇文章主要讲了:

  由谁记账的方案:挖矿(POW),即计算一道特别难的数学题,选择出块的节点。

  防止记录篡改:通过链式区块链结构,使得篡改记录需要耗费很大的资源和成本,来防止篡改。

  防止伪造:通过非对称加密方案,采用电子签名的方式,来防止伪造。

  防双花:UTXO交易记录追溯的方式。

  比特币系统诞生到现在运行了十多年的时间,没有一个中心化的管理机构,稳定运行,这本身就是件很了不起的事情了,不考虑其他的因素,单纯从技术角度来说,比特币区块链系统无疑是成功的。

  但比特币系统也有其不足的地方:

  交易确认速度慢,每十分钟出一个区块,每个区块仅包含几千笔交易,最终确认需要一个小时的时间。

  挖矿,做没有价值的哈希运算,造成了极大的资源浪费。

  比特币本身,如果把它看成一种货币来讲的话,并不是一个成功的货币,或者最起码是一个表现非常差劲的货币,价值起落巨大。

  今天先介绍到这,后续的内容将会在接下来的时间里,陆续推出。

文中所使用的图片部分来自于互联网,如有侵权,请联系小编,小编会立即删除

  

  

版权信息
作者:假日区块链
来源:假日区块链

关于我们

联系我们

作者进驻

公众号

Copyright © 2013 比特巴 www.btb8.com
只为您提供客观公正有用的比特币 区块链 加密数字货币新闻、技术教程、行情分析、行业人物资讯
手机版