关于比特币和区块链重要问题的答疑

本文主要就比特币和区块链技术中一些常见的问题进行答疑,问题如下,

  • 什么是去中心化,去中心化有何优缺点?

  • 比特币为什么会有价格?

  • 随着比特币交易的增加,占用的磁盘空间是否会很大?怎么解决?

  • 什么是挖矿?为什么要挖矿?GPU为什么比CPU效果好?

  • 攻击者能否颠覆区块链?可以从哪些方面入手?

  • 比特币为什么被称为公开化的记账系统,这样还能否保护用户的隐私?


什么是去中心化,去中心化有何优缺点?

中本聪发明比特币的目的就是去中心化,那么什么是去中心化?我们以计算机下载文件的方式来描述这种思想。

传统的下载方式如图所示,所有需要下载的文件都存储在数据服务器上;所有下载都要像服务器请求,从服务器下载文件。这样的方式都是围绕服务器为中心,是中心化的。

050517fe9nxd9e3r26ss68

传统的下载方式

而P2P下载方式如下图所示,所有需要下载的文件都分布存储在不同的节点,上传和下载节点没有明显的区分。 这样的方式没有中心,是去中心化的。

050517xycay2q3mmhuc9gh

P2P的下载方式

传统的方式便于监管,只需要对服务器出入口进行监控就可以达到监管的目的,而P2P则不便于监管。 传统的方式如果服务器出现故障,则整个服务就会终止,而P2P不会因为一个节点的离去全部瘫痪。


中心化这种思想目前普遍存在,金融领域央行作为中心,在传媒领域新华社是中心(PS: 自媒体看似去中心化的,其实不然,自媒体所有信息都会汇聚到一个节点)。如果上升到制度方面,中心化就是社会主义社会,自上而下层层分配,而去中性化则是无政府主义社会。

当前铸币权完全掌握在央行手中,央行根据国民经济发展需要决定发多少钱或者适当地回收资金。货币的发型由央行统一管理。中本聪提出的去中心化的思想正好与当前央行相对立,比特币的发行不受单个个体的影响,完全由整个网络来决定,将铸币权下放到整个网络。 央行发行货币的行为是一种中心化的,可以更好的为经济服务,但是容易受到各种外在因素的影响,引起货币超发等问题。 比特币虽然去中心化,但是并不能为实体经济服务,与经济的发展没有必然能的联系。


比特币为什么会有价格?

我们知道比特币不过硬盘里面的一串数字,为什么会有价格?中本聪设计了交易系统,但是该交易完全是在比特币内部交易,至于比特币何时跟现实中的货币发生关联,这估计只有原作者知道。随着比特币不断发展,比特币交易所出现,它就充当比特币和实际价格之间的纽带,从此比特币就有了价格。


比特币的发展壮大有一个黑色地下市场起到巨大的作用,那就是--暗网。暗网是匿名的,里面各种非法交易,如果采用传统的银行卡转账的方式,很容易被警-察发现。比特币虽然所有的交易记录都是有据可查的,但是并不能把现实中的人与里面的记录联系起来,能够保护用户的隐私,所以得到非法交易者的青睐。而且比特币可以用于洗钱,跨国转账容易的多。

050517ok7kk6yz26okoon2

暗网以比特币计价

比特币是去中心化的,但是比特币交易所并不是去中心化的,封堵住所有比特币交易所同银行和第三方机构的接口,这样就可以让比特币和价格之间脱钩。目前我国央行就是这样做的,但是还有更多的国家并没有任何限制。


那么比特币价格如此之高,是不是旁氏骗局呢?一个国家发行的货币是以国家信用为基础的,至于比特币是以什么作为信用支撑这就不清楚了,亦或是大金主们联合控盘,与其说是旁氏骗局,个人觉得零和游戏更准确。


随着比特币交易的增加,占用的磁盘空间是否会很大?怎么解决?

我们都知道区块链用来存储比特币的交易记录,随着比特币交易人数的增加,交易记录也越来越多,要存储这些交易记录必然会占用大量的空间。从下图看出一个区块可以分为两部分,区块头和区块中的交易记录。在论文中提到区块头并不会占用太多的空间,区块头大小只有80字节,如果按照没十分钟增加一个区块,那么80B*6*24*365 = 4.2MB,只包含头信息的话一年只会增加4.2MB。


但是为什么现有的区块信息占用空间达到几十GB,因为交易记录太多,占用太多空间。目前关于这方面有争论,中本聪论文中提到如果某一交易被纳入到后续足够多交易中,那么就可以把这条记录从区块中删除。但是如果按照这种思想就会遗失很多交易记录,与之作为一种分布式记账系统不相符。而且从下图可以得知如果删除Tx0交易,就会影响Root Hash值,后续检查过程会出现问题,虽然作者说可以删除交易记录,但是依旧保持原始的Root Hash不变这种方式。但是目前软件实现上依旧采用全记录而不是删除部分交易记录。


050517wtbzmspbxc7q3akd

一个区块里面存储的记录

什么是挖矿?为什么要挖矿?GPU为什么比CPU效果好?

从上图可以看出一个区块可以分为区块头和交易两部分,区块头又可以分为三部分区块前一个区块的Hash,随机数和Root Hash,前一个区块的Hash可以直接得到,Root hash根据交易记录生成,随机数这是我们随机生成。

Hash是什么东西?我们以SHA-256算法为例,例如我们我一句话:“这是一份交易记录”,我们对它生成Hash值:04d879c22b1dc9a4948c0994f2fc29fc0354b7d4c30f776fba5a175bBCC2c7d6 对于任何信息他都会生成这样一个长度为256位的数字(注意:是256位 0和1的数字,然后每4位一结合就生成64位16进制的数,如上所示,例如 a 对应 1010),而且SHA-256可以抗强碰撞,不同的记录生成的值不一样,同时SHA-256具有不可逆的特点,即从hash值不能推算出交易记录。这样我们可以直接输入前一个区块就得到pre hash,对于root hash就需要根据交易的数量做多次运算,例如上图Tx0生成的Hash0,和Tx1生成的Hash1,加起来再做一次运算得到Hash01,在和Hash23加一起做一次运算就得到root Hash,加以记录组成一种Merkle tree的形式(一种二叉树)。


当pre Hash 和root Hash固定下来,挖矿设备就随机生成一个数,再对 pre Hash + root Hash +随机数 进行运算,会得到一个新的Hash。但是如果仅仅这样,那么每一个设备都可以生成自己的区块链,为了让它们中的一个有效,需要引进一种竞争进制,区块链中叫做工作证明,证明你的工作量比他人大,所以区块链对Hash值做了一定的要求,例如要求前72位都为0,目前基本确保10分钟能够算出这样的一个数,生成一个新的区块,如果某一时间段生成较快,则会自动调整难度增加难度,否则降低难度。根据随机数生成满足条件的hash值的过程就是挖矿。


为什么要挖矿呢?目前有两个好处,第一个好处就是挖出的区块链的第一笔交易就是根据规定直接转给挖矿者一定的比特币数量,最初是50个比特币,然后每生成21万的区块就会将为前值的一般,目前为12.5个,随着区块数量的增加该奖励的数量就越来越少。第二个好处则是交易费,每一笔交易都会从其中转入一部分到该记录该交易的区块的制造者账户中。随着以后交易的增加该数量会有来越多,所以不会使计算力枯竭。目前看来比特币总共可以生成2100万的区块,距离那个时候还有很远的距离。


从上述讲述中可以看出,随机数生成只是一个简短重复性的工作,GPU有庞大的计算阵列适合用于这样的计算,CPU适合复杂的有依赖关系的运算。简单点就是GPU适合广度运算,CPU适合深度运算,挖矿就是广度运算,GPU更加适合。随机发展目前都很多专业的挖矿机,运算速度比GPU更高,和他们比起来GPU也是小学生水平。


攻击者能否颠覆区块链?可以从哪些方面入手?

答案是可以,但是条件极高。我们知道在区块链中只有最长的一条链才是有效的,如果区块链在某一位置几乎同时生成两个链,由于网络延迟等原因导致一部分计算机使用链1,另外一部分使用链2,基于此各自再生成区块,如果一方胜出,则胜出的链就会被全网接受,另外一条则会被丢弃。如果某设备计算能力超过全网运算能力的50%,则该设备即可改写交易记录。对于此中本聪在文章中提到两个原因这类攻击者不会这么做:1、计算能力如此高,按照正常途径可以得到更多的收益,2、该设备只能改写与自己相关的交易记录,别的记录不会被其他诚实节点接受。


当然我们不妨异想天开,密码问题都是数学问题,要是能够破解这些数学难题,那么这些密码就不攻自破,例如使SHA-256可逆,从结果得到随机数,根本不用挖矿。当然还有诸如量子计算机这样计算能力超强的设备也会导致目前的系统失衡。(PS:这段属于臆想,无实际价值)


比特币为什么被称为公开化的记账系统,这样还能否保护用户的隐私?

我们知道每一笔交易记录都存储在区块链中,我们可以根据区块链回溯查到每一笔交易的详细信息,如下图所示,包括输入数量、输出数量、前一次交易hash和支付对象的公钥。这里出现公私钥加密,对于每一个比特币账号都会生成一对秘钥,公钥和私钥,公钥相对于地址,发到网上去让大家都知道存在这样一个地址。私钥则只能由当前账号本人知道。简单来说,如果A想转给B比特币,A则用自己的私钥加密交易,目的地址为B的公钥地址,B受到该转账,则使用A的公钥解密得到里面的目的地址为自己则收下这笔转账。如此循环往复。这样在网络中都以公钥作为地址,如果你在现实社会中不告诉别人你的公钥地址,你就是匿名的,用户隐私并不会泄露。

050518odvvg9z922y6dahz

一次比特币交易记录

050518jkv35wv7kw7uuvwc

交易过程



发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信

no cache
Processed in 0.534466 Second.