当前位置:首页 > 区块链新闻 > 正文

区块链基础知识-比特币:四十八万页的账本

来源: 互联网时间:2017-09-11 13:48:00
货币本质是一种记账方式,其最关键的是信用问题,而比特币设计之初,就是为了解决该问题,它采用的方法,就是让所有网络上安装有比特币客户端的电脑,都下载一份账本的拷贝,这份拷贝所采用的技术—就是区块链。 区块链,正如它的名字所显示,分为区块和链两部分,区块即是block,链即是chain,合称blockchain。 不过区块链技术并不是天然绑定比特币的,但比特币却需要区块链作为载体,所以区块链是一种更加底层的技术,它的作用是记载信息,信息可能是交易记录,产品生产数据,合约履行情况等等,只不过这“账本”,恰好记载了比特币的交易记录,又正好比特币火了,所以人们才觉得区块链等于比特币。 blockchain

那区块链有什么特别呢?

首先,该本账本并不存在于一个单一中央服务器内,而是存在于所有装了客户端的电脑硬盘上,也就是所谓的区块链分布式存储,这里你可以想象区块链就是一部电影,每个客户端(钱包)安装完成后,都会从网上自动下载一部和原片一模一样的副本,保存到本地硬盘,这里用到的技术相信下载过BT的人都知道,叫做P2P,但该账本虽然是公开的,所有人都可看到交易记录,但在没有私钥的情况下,是无法对账户内的资金进行操作,也不能交易。(关于私钥,我将在之后文章中详细解释。) 其次,该账本一共有四十八万页之多,也就是四十八万个区块,每页或者说每个区块里都记录着成百上千的交易记录,要保证四十八万页的顺序不出错,是不是想着就头大了呢!物理世界的书本或账本每一页都会有页码表示前后关系,区块链世界里每个区块都由区块头和数据主体构成,区块头相当于页码,记录了本区块头,前一区块头,下一区块头的hash值,通过这些hash值的前后关联,保证了区块的顺序,所以区块头即是页码和链。 下图是第19999个区块,第20000个区块和第20001个区块头之间的指向关系,每个区块头里都有一个唯一hash值,并记载了前一个区块头的hash,和后一个区块的hash,彼此互联,成为一条链 blockchain 不过比特币区块的起始区块,0号区块(创世区块),是不指向任何之前区块的,废话,因为它是第一块。 block0

那有人可能会问,能不能把区块头黑掉,替换成我编写的信息呢?

答案是,几乎不可能,因为区块头的hash值是对区块头数据进行SHA256算法加密后生成的一段字符串,该字符串会因为输入的数据不同而不同,区块头本身是一串二进制数据,你改了其中任何一个数字,通过SHA256算法后,就会产生不同的hash值。(这里举个例子,我们从网上下载zip文件包时,通常也会包含一段MD5的字符串,该字符串原理类似SHA256,它的作用是验证文件的完整性)。如果hash值变了,那就需要去更改本区块之前和之后对应的区块,然后是和那些区块对应的区块,以此类推生生不息,你需要修改整条链上的所有区块,并且还需要把网络上超过51%的副本都修改了,才能起作用,考虑到这本账本有四十八万页之多,以及网络上的众多副本,这个修改的工作量将会大的惊人。

那区块头是怎么和区块主体连接呢?

靠merkle值,下图显示了区块头内包含的merkle值,merkle值是通过merkle树算法,将区块内所有交易数据生成的一串加密字符串,假设一个区块里有10000笔交易,现在让每两笔交易合并,通过两次SHA256算法生成一个merkle值,然后这5000个merkle值两两合并,再生成一个新的merkle值,以不断重复该过程,直到最后产生唯一的一个merkle值,这个值称作merkleroot值,这个过程有点像踢足球时候的32进16,16进8,8进4淘汰赛,只不过这里不淘汰,而是合并。 下图中区块头里打了红色的字符串就是merkleroot block2000 用merkle树算法的好处是,即使区块内的交易数据很多,也只需要很少的路径就能算出merkleroot,比如100万笔交易只需要20步就可以算出根merkle值,如下图: merkle 正因为merkle值的这个特点,使得SPV简单支付(simplified payment verification)和轻钱包成为可能,正常情况下一个包含区块头和主体数据的区块大约是1M,而区块头大小只有80字节,用户可以通过仅下载区块头,再下载每次与自己发生merkle值计算的相对交易的merkle值(你可以理解为所有和你提过比赛的球队),回到上面提到的含100万笔交易的区块,你只需要下载该区块的20个merkle节点数据,就能算出merkleroot值,从而证明交易的合法性,这样的轻钱包的大小可以控制在40m以内,不过SPV和轻钱包的交易确认,仍然需要依赖网络上拥有完整区块计算机的数据。 因为区块链技术的以上特点,使它实现了去中心化,不可篡改,可追溯交易记录等等功能,把所有人,所有客户端变成“可信的第三方机构”,不过作为代价,你需要下载所有的区块链数据,就比特币的应用来说,已经有上百G了,而不同的区块链应用会有不同大小的账本,我想说,愿你有个足够大的硬盘。截止本文写完,比特币最新区块已达四十八万多,150多个Gb,好大一本账啊!

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。