vlambda博客
学习文章列表

区块链,一个糟糕的数据库


小仙女是龙泉寺俗家弟子,庙里财务系统就是小仙女开发的,也一直给庙里远程维护着数据库。今天得到通知,要做区块链经书研习,一大早就赶路,刚过响午就到了山上,这刚到山门口,就看到快70岁的慧能师叔拿了本《区块经》正在摇头晃脑的品读,看着师叔脑袋晃出了波动性的效果,小仙女心想:出家前师叔好像在欧洲跟随玻儿研习量子力学。

小仙女:师叔,区块经,是讲什么的?

老和尚:讲区块链

小仙女:区块链是什么?

老和尚: 一个类型的数据库,可以叫区块链数据库。

小仙女:数据库?

老和尚:那考考你,关系数据库有什么功能?数据库查询SQL语言主要做什么?

小仙女:主要是关系数据的 --

1)增加
2)删除
3)修改
4)查询
5)再加个触发器编程。

老和尚:区块链数据库的功能,和关系数据库很像,对数据的 --

1)增加
2)查询
3)智能合约编程
4)  不能删除
5)  不能修改

区块链就是一个失去了删除和修改能力的数据库。

小仙女:除了功能,关系数据库,和区块链数据库,还有什么区别?

老和尚:主流关系数据库性能如何?

小仙女:一秒能写入几千条数据,区块链数据库呢?

老和尚:主流区块链数据库能做到10秒写入1条。

小仙女:这慢了上万倍!那这个数据库写入性能太糟糕了!

老和尚:太糟糕了?当佛祖为你关上一扇门的时候,自然会打开另一扇门。

小仙女:打开了哪扇门?

老和尚:增加了两个特性--

1)数据几乎永远不丢失
2)数据几乎永远不能被修改

小仙女:师叔,数据永远不丢失,这是怎么做到的?

老和尚:区块链数据库,底层是部署在全球/全国的上百、上千、上万、上十万的服务器做支撑。每份数据会在每个服务器上放置一份。就像这部《金刚经》全球的寺庙里都有一份,除非全球的《金刚经》同时丢失了,否则这份智慧会一直传下去。

说着,慧能从袖子里取出了一部泛黄的经书拿在左手。

小仙女:难怪写入速度这么慢!为了保障数据不可删除、丢失,付出了这么大代价!每次加入一点数据,就像要去给全球所有寺庙的每部《金刚经》后面追加一句话一样,得跑遍全球。而且能写入的数据总量也不能超过单台服务器的存储容量。

老和尚:并且为了更好传递信息,区块链上的每份数据,对加入存放的单位都是透明可见的,信息可见度透明性更强。就像我们龙泉寺加入了“藏经阁”计划,纳入藏经阁列表的经书,都要保证全球1000个寺庙都必须存档一份,这些寺庙都能随意查看。

小仙女:看来要把一本经书放入“藏经阁”是一份大工程!要跑遍全球1000个寺庙。

老和尚:是的,我正发愁,“藏经阁”委员会让我负责把《区块经》存放进入藏经阁!我明天要出差环游世界。

小仙女若有所悟:师叔,藏经阁是有一个会长么?还是有一个委员会?

老和尚:没有会长,有一个全员都参与的1000个委员的委员会,每次投票超过一半通过,就算委员会通过决议。

小仙女:要是有寺庙想加入怎么办?

老和尚:自愿申请,全员委员会投票通过就行。

小仙女嘴角露出了一丝微笑,一定是悟到了点什么。

小仙女继续问道:数据永远不能修改,这个是怎么保证的?是佛祖一直看着每份数据?不准人去修改?

老和尚:佛祖的事情,凡人不可猜测议论。但算法的事情,除了量子力学,都可以研习,这个能力是算法保证的。所有数据都使用非常复杂算法进行加密解密及数字签名,除非有超过一半的服务器同时修改一个数据,数据才会被修改。为了这个签名,需要耗费极其多的电费,比如现在运行的几个公有BTC、ETH、LTC区块链数据库,每年耗电量估计能占到全球总发电量的1%!

小仙女:为什么要耗费如此大的代价,不让数据被修改?

老和尚:你想想,最重要的信息,比如《金刚经》,能让每个寺庙自己修改么?

小仙女:肯定不能! 看来区块链数据库适合存放最重要的数据!

老和尚:定当如此!现在来看,区块链数据库特性你基本都掌握了,只剩最后一个关键点了,你还记得什么是触发器么?

小仙女:就是数据库数据变更时候,系统自动触发执行的一段程序代码,这段代码能够对数据库数据进行操作。

老和尚:智能合约编程和触发器编程你可以认为是一样的,只有一点点不同。

小仙女:哪一点呢?

老和尚: 智能合约代码也存放在区块链数据库中的!并且只能追加数据。

说着老和尚用清澈深邃的眼镜盯着小仙女:你猜猜这会带来什么问题?

小仙女:那就是智能合约代码也不能修改?

老和尚:很聪明。

小仙女:好奇怪的特性!

老和尚:你猜猜,数据不丢不改,智能合约也不能修改,是为什么?

小仙女押了口茶,看着壁画陷入了沉思。

好一会儿,小仙女抬起头:为了向善,为了信任!

老和尚露出了微笑: 是的,历史数据,要公开,不能删,不能改,数据可信!智能合约,自动根据数据做规则操作,也公开开放,人人能审计,规则透明,规则可信!

小仙女:这太好了,大家不用花很多时间去判断人是否可信,大家都信任数据、信任自动合约代码规则就行了!那以后人们之间不用那么多怀疑,人和人的关系也就更简单,更单纯,更善良了!

接着,小仙女又露出了一丝疑惑的眼神:智能合约代码是好,但如果程序写错了,也没有修改的机会,这是一个超级大问题!要是有安全问题,就更麻烦了!

老和尚:这就是佛祖打开了区块链信任大门,又打开了另一扇安全隐患之门呀。

切记不要让10年编程工龄以下的人编写智能合约代码。

还得找专业团队反复进行代码审计才能提交。

传统程序,安全问题是大敌,智能合约任何BUG都是大敌。

好了,关于区块链我能告诉你的就这么多了。

时间不早了,我们该进庙去了。

小仙女: 我得整理下思路,看来区块链数据库就是一个写入速度极慢、花费成本极高、写入数量很小、数据不可删除、不可修改的、数据不丢失的、透明度更高的数据库!

和传统关系数据库相比较,有这些不同:

老和尚露出了微笑:学的不错!我能传授给你的都传授完了。

走,我要准备出差去了,这趟大概要10年才能回来,如果我还活着的话。

小仙女依依不舍:师叔,最后还有一个问题,这么奇特的数据库,什么场景会需要?

老和尚:关系数据库诞生后,什么产业得到了发展?

小仙女:几乎所有计算机信息化的产业,都得到了应用。尤其是互联网产业以关系数据库为业务关键基础之一,得到了极大发展。

老和尚:那么哪个领域需要一个数据存放成本极高、写入成本极高、性能极慢的、不丢失数据的、不可修改数据的、透明数据的数据库?

小仙女陷入了冥思,过了一会儿睁开眼睛,露出了清朗的笑容:师叔,你明天不用出差了!

老和尚抬起右手,手心向上摊开,用拇指和食指做一拈花状,和小仙女相视,会心一笑。

小仙女双手合十:我佛慈悲!

老和尚双手合十:我佛慈悲!