前言
到这里笔者要讲解的基础知识就差不多完成了,到下一章节笔者将带领大家实战一个DAPP。其实如果你完整的读完了前面的所有内容就会发现笔者并没有讲解专业的区块链知识,几乎都是在讲解传统开发到web3(DAPP)开发这一过渡的联系和相似的内在逻辑。
然而其实区块链相关的技术也远不止这么多,要想真正去了解什么是区块链,你还有很长的路要走。笔者只是从一个自己多年开发的角度来带你入门。
而本篇将要讲解的一个内容是关于区块链数据不可修改这一原则。
什么是区块链数据的不可修改?
在前面我说区块链数据库和传统数据库最大不同之处在于:传统的数据库是自己托管的,掌管者可以无数次修改,但是区块链数据不行。(可查看:传统开发者视角:智能合约与区块链数据库探秘)
为什么呢?
这其实可以扯到区块链的“分布式账本”,这就相当于每个人手里都有一个账本,而且账本上记录了完整的所有数据,你就算篡改了自己的账本,也是没有意义的。
当然还有就是一旦你调用智能合约的写方法之后,你那条数据就永久的记录上去了,是不能撤回、不能在那条数据记录上再进行修改的。
这其实就是笔者所说的不可篡改:不能在原数据记录上再修改,如果你业务逻辑中需要对原数据进行修改,也不是在原数据记录上改,而是从新提交一条数据进行追加。
总得来说就是:区块链数据库是只增不删的,所有记录都将存在,而所谓的修改只是应用层面展示最新的记录。
这和传统的数据是不一样的,就拿游戏来说,很多人觉得手里的英雄出场的时候很强,后面被官方暗改了数值。我们可以假设这些数值是存成了mysql中的一条记录,那么我作为官方我可以直接修改这条记录,官方不公开mysql日志是没法知道这东西到底有没有改动过的。但是区块链数据库中,这条关于英雄数值的记录则是不可篡改的,如果官方要改动这一数值他只能再次写入新数据进行修改,同时要全网广播且修改的记录还是存在。
所以,如果你是初学者你在担心我前面所说的“不可修改”这一概念,大可不必担心。笔者所说的数据不可修改是指不能在原操作记录上修改:假设你在2025年04月05日13:15插入了一个王二的数据,那么你将不能直接修改2025年04月05日13:15时王二这条数据,而如果你要修改数据——从底层逻辑层面上来说是追加了一条数据,而从业务层面上来说是展示最新记录。