区块链随想录——一种设想中的公链架构

原本,这篇文章的标题是《区块链所预示的未来,需要什么样的基础设施?》,后来我反复想了好久,突然有一个有趣的念头紧紧的拽住了我,于是我完全沉迷其中无法自拔,只能放弃原来的写作内容与提纲,而是努力试图将自己的这个设想,阐述明白。

当然,这还远远称不上一份白皮书!

一、区块链的本质是什么?

有人说是:分布式数据库;有人说是:分布式账本;还有人会进一步说明:就是一种以分布式方式记录账本的数据库,但是,这个数据库只能添加、读取,不能修改,删除。

在苦思冥想的过程中,我突然想到,什么“账本”呀,这完全就是一套版本控制系统。

所以:我们也许可以借助对版本管理系统的理解,来理解区块链。

二、联想:SVN与Git的区别

更远的版本管理系统,咱们不去提他,单说SVN与Git的区别,SVN的版本号,是一个自增长的数字,因此:只能有一条链:

Git的版本号,是一串Hash值,不存在必须自增长的限制,因此Git的版本树形状会非常多样,通称DAG(有向无环图)

如果每一个节点,记录世界上的一批交易的话,我们就会发现SVN与Git的两种模式,存在性能上的巨大差距。因为SVN记录的交易,必须是串行的,任凭世界上同时发生多少交易,都必须依次记录!相比之下,Git的版本,就不必严格依序发生,最后的版本合并,也容易得多,这就是使得Git的并发性能,会好很多!

如果我没有理解错误的话:IOTA的DAG Tangle,应该受到Git的很多启发。

三、继续完善我们的设想——基于Git的分布式记账系统

1. 创造一个初始账户

2. 新增一个账户A,并且从root得到转账

3. 如上所述,再创建第二个账户B,也从root得到转账

4. 创建一个fork仓库,包含原来的全部账本

5. 原始仓库继续发生交易

6. 在fork仓库中,发生另一次交易

7. 原始仓库合入fork仓库的变更

四、基于Git的分布式记账系统——要点

1. 每一台Git Server,就是一个账本库。因此,一笔交易的双方,可以选择任意一台服务器,记录他们的交易。前提是:

2. 交易双方经过协商,可以选择任何一台服务器进行交易,并且支付费用。因此:账本服务器,存在竞争关系。理论上,以下优点将帮助交易服务器胜出:

3. 数据同步成功率与服务可信度

4. 可信度最高的服务器,通常为了确保其数据的及时与准确性,需要投入大量的成本,他们的交易服务费用,也将会比较高(好的服务,当然应该贵一些)

五、三种交易类型与应对策略

1. 最简单的交易,就是发生在两个账户之间的。参考复式记账法,一笔交易我们至少需要同时修改两个文件,因此我们需要确保在那台git server上,两个账户文件都已经是最新版本了

2. 对于频繁收钱,或者频繁支出的账户,如果每次都需要交易双方协调版本,那交易成本就太高了

3. 从个人账户到银行账户

六、联想与结语

本文未完善之处

未来的数字货币架构

一个逐渐完善的架构,肯定是分层、分模块,多个组件是可以组合/替换的。目前的大多数公链,都想的是打造一个完整的,全面可用的架构。我觉得他们多半都会失败。但是,有谁能够构造一个类似于TCP/IP这一的协议族呢?我非常期待!

下期预告

下一篇文章,会聊聊乌托邦的事情,这是IT技术,最接近革命的状态,也许未来真的会是某种DAO也未可知!

———————— 补充一段霍炬对这篇文章的评论:

这是道思考题啊,git和区块链的异同比较可以做面试题。 你这个恰好回答了这个问题,这个系统 1 不是拜占庭容错系统 2 没法阻止异步时候的双花。 把这俩问题解决了之后就会发现它跟主流区块链解决方案基本一样了。 你这个叫做PoA,Proof-of-authority。以太坊早期启动时候算力不够用过一段这个办法。我们要pow是因为在数学上可以证明它成立,普通人懂不懂没关系。但是它得是可证明的。不然还搞区块链做什么,直接信任银行好了。。 你说的那种就是Pos或者DPos。前者是你抵押足够多的资产,让惩罚足够大,从而让你不敢捣乱。后者是经过选举大家选出来的,捣乱就干掉你破坏你前期投入。 git为什么不能和区块链相比,因为关键就在这个P-o- xxxx 啊。。

我的感想: 作为一个外行,我大概又搞懂了一些什么。虽然是自己瞎想,然后也许慢慢会理解“前辈”们的取舍和决策依据了。