31

我理解的区块链

 5 years ago
source link: http://www.dohooe.com/2019/02/24/562.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我从2016年开始接触比特币技术,一年多以前开始读比特币源码,从比特币摸到了以太坊,再从以太坊接触到了EOS, CITA,Hyperledger Fabric等,对区块链的认识和理解也浅入深,虽然离专家水平还太远,打算从技术角度说说我的理解。

小说<三体>有一段类似的话:

一个穷凶极恶的人,如果想让别人认为他是安全的,那么他必须自己把手绑起来,而不是手里拿着刀。

在一个黑暗森林的守宙中,一个文明想证明自己是安全的,那么必须把自己裹在低光速黑域中。

我觉得如果说整个互联网是一个黑暗森林,那么区块链也许就是能证明一个互联网服务是安全的,或者是可信任的。因为区块链技术已经把信息篡改的手已经绑起来了。

分布式账本

首先,区块链是一个分布式账本,人类早就知道鸡蛋不能放在同一个篮子里,要分在不同一篮子里,这个比喻当然不够恰当,因为区块链里的分布式账本,是把一份同样的账本分别存储(备份)到不同的机器,如果是一条公链,任何人都可以备份到这个账本;如果是一个联盟链,加入到这条链的所有许可机器,都可以备份到账本。

这些账本只要有数据更新,就全立即同步,把更新内容同步到其它的机器上。只要网络不出问题,都会努力使自己的账本数据最新,这样账本就有了公开性。分布式存储,这个概念并不新鲜。

把一定时间内(比如10秒)的记账数据(交易)打成一个包(按照一定的结构组织起来),区成一个区块,这个区块中放入了上一个区块的区块hash,当下一个区块打包时,也将当前区块计算出来的hash放入区块中,这样就形成了一条单向链表,从0块到N块的一条链。

那么是怎么做到不可篡改的呢?对于区块链来说,不可篡改这个概念其实并不准确,由于块中只记录了交易,所有的数据状态改变都是通过交易来完成,只能说所有的数据篡改都会留下痕迹。

当机器(节点)收到新的数据(块)时,就会对数据进行验证,把每一条交易都检查一遍,如果是合约,那就用把交易再本地虚拟机里再执行一遍,只有全部都检查通过了,才会接收这个最新的块。(由此也可以想到随机数为什么是伪随机数)

共识

决定谁来打包这个块,就是共识。也就是大家共同维护同一账本的共同约定。

为了维护同一本账本,必须要先出一个打包交易的机器,这样账本才能不断地更新数据和状态。但怎么选择哪台机器来作这个工作,里面却是充满了现实中人类社会协作的影子。

给出一道题,谁最快解出来谁打包(pow)

能力越大,责任越大(pos)

选出一群人来代表群众(dpos)

投票得到大多人承认,就是合法的(BFT,PBFT,Tendermint)

区块存储

从区块链存储的角度,我觉得区块链只是一种新的信息的组织方式。

经典的软件架构设计模式MVC,即模型,视图,控制器。

如果把MVC模式来理解区块的存储,我觉得可以分为MVS,即模型,视图,存储。

V:视图,区块只是存储数据的一种视图,我们同步到的区块有区块头,交易列表等,这些都只是存储的数据的外在表现,而并非实际的存储就是如此。

M:模型,把底层的数据用各种树的形式结构化起来,目的是为了更好地检索和更新。

S:存储,真正存储在各种key-value数据库中的数据

区块存储以后打算展开再来写。

应用

既然区块链只是一种新的信息组织方式,我觉得区块链的应用在于信息本身。

1.信息公开,区块链的特点并不是不可篡改,而是把所有修改信息的痕迹都记录下来,基于这个特点,可以用来做信息公开,这样信息公开方就相当于把自己修改信息的手绑起来了。想到前几天电影流浪地球的影评被修改的问题,是不是可以使用区块链技术来消除市场的质疑。现在的各种产品溯源,也是这种想法。

但这样会不会又引发另一个问题,就是为了圆一个谎言,需要再编5个谎言去圆它。

2.信息标准化。联盟链各组织之间,通过区块链实现信息共享和标准化,现在各银行之间已有的安全认证机制是否有可能替代。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK