RaiBlocks(现己更名为Nano)真的是一个很有意思的项目,刷新的我对区块链的认知。相对于一般的区块链技术,RaiBlocks创新性的采用了一个帐户一条链的方式,帐户相关的数据单独保存,不与其它帐户共享数据,从而使所有的ts都可以并行执行,解决了ts处理速度的瓶颈限制,从而解决了scalability的问题,而这,正是目前区块链世界所面对的最大的问题,也是其它项目试图解决但是到目前为止尚未实现的目的。
现在,有一个问题摆在了面前,既然RaiBlocks具有这样好的可扩展性,那么如果给RaiBlocks加上执行代码的能力,是否能够解决现在困扰以太坊的扩容的问题呢。现在思考的结果是很困难。为了理解为什么,就要解决RaiBlocks是怎样达到扩容效果的:发送账号创建一个send block,在处理这个send block时,发送方在自己的存储空间里减去发送的数额,接收账号监听到这个send block后,再创建一个receive block,在处理 个block时,接收账号在自己的存储空间里加上发送的数额,这样一个完整的传输就完成了。也就是说RaiBlocks的每个帐户其实只需维护一个变量即可。由于在发送和接收时,没有操作除自身账号以外的数据,所以不同的账号之间的发送和接收的处理可以达到并行的效果。正像团队所说的,他们奉行的理念是:do one thing and do it well,研发人员真的是把做一件事执行到了极致。
而当用到智能合约的时候,保存的数据可就多种多样了,而这些数据很多是要被多个帐户所共享的。这个时候,保持数据的同步就变得非常的困难。由于RaiBlocks是采用一个帐户一条链的方式,如果要访问其它帐户的数据,如何保持数据的同步,换句话说,如何保证每个结点所执行的结果的一致性,或者说共识就变得非常的困难了。