读书提示:本书发布在此,具有更好的阅读体验。
随着你不断的深入学习区块链知识,终有一天你会想要自己从零开始实现一个完整的区块链程序。 这样做不但可以把以前学习的各种零散的区块链知识有机的结合在一起了,也通过对底层的了解, 你终于可以用区块链实现你想要做的事情了,而不仅仅是现在已经成熟应用的几个有限的领域。
在我第一次从零开始写区块链程序的时候,我有一个明确的愿景,想要做一个区块链数据库, 用以轻松的替代现存的关系型数据库,虽然开源的区块链程序不计其数, 但受限于我当时对区块链底层技术的理解,在开源区块链的基础上修改出我所期望的区块链数据库, 这个目标并不现实,因为显然这些开源区块链程序并没有为我做这样的扩展做好铺垫, 于是我从零开始,一个模块一个模块的将区块链领域的各个知识点打通了, 并知道和克服了一系列的底层的诸如性能优化、设计抉择的困难, 最终实现了最初的愿景——区块链数据库。
这不是终点,就如大家所知的,关系型数据库利用“关系”, ACID原则等使得数据库程序更加的健壮和稳定,但却牺牲了性能, 总有一些行业和应用更加关心数据库的性能,于是NoSql数据库应运而生, 在这些“简单”的数据库中,所有维持系统健壮和稳定的事情都需要程序员亲力亲为, 但系统却提供了前所未有的高性能。 而在这个过程中开发的区块链数据库虽然提供了一种快捷、方便,且稳定、健壮的选择, 但却牺牲了性能,当前区块链行业发展迅速,会有各行各业拥有不同的对数据库的要求, 这并不是一个全能型方案。
因此本书里详细的带领大家通过亲自编写一个类比特币的区块链程序, 再编写一个类以太坊的区块链程序,最终结合这个过程中学到的经验, 编写了一个区块链数据库程序,以此让读者朋友们了解到编写区块链程序的过程, 以及这个过程中涉及到的问题和挑战, 为未来读者朋友自己实现符合自己业务需求的区块链数据库奠定基础。
本书没有使用学术界推崇的伪代码方式,而是直接使用C#(符合DotNet Core 2.0框架的)编写的代码, 代码不但可以直接在实际项目中应用,学习过程还可以通过真实代码的实际执行, 并结合章节习题亲自动手修改代码,加深对区块链理论的认识, 并可以将这些能力更快的应用到实际项目中去。