Am relatively new to the realm of Dapps and blockchain in general, and if you ask someone well-informed about the characteristics of blockchains, the word "immutable" will invariably appear in the response. Doing a simple search on google regarding immutability, the explanations given make sense, from a blockchain point of view. But when you dive deeper into coding, ethereum smart contracts, to be specific, the idea becomes vague. I have come from reading a two part series of how to implement CRUD operations in solidity, and as you can tell, Update and Delete part of CRUD introduces mutability. Towards the end of part 2, the author says:
1) The mapped struct (where the details still exist) is for the exclusive use of our contract. Sure, the data is still somewhere in the blockchain, but if this contract won’t retrieve it for you (it won’t), it’s approximately the same as gone.
2) There’s nothing we can do to prevent a determined adversary from finding data that once was but no longer is part of the current chain state. Overwriting data doesn’t undo immutable history.
Am concerned because my 4th year project entails developing a blockchain app for Ethereum to enable our country store public records like academic records, title deeds, driving licenses and log books.
One of the promises I gave in my proposal is this idea of immutability-: once the records enter the blockchain, there is no editing them, thus help curb forgery that we see all the time. If an update can be performed as simple as the tutorial linked above demonstrates, what will prevent anyone from updating their academic achievements for example (with the help of the system developer of course or some other way)?
So my reasoning at the moment is to provide setters and getters for these records, but explicitly omit functions to update/delete them. That way as a developer I help achieve immutability, not so much as a feature in blockchain.
But I feel am getting this wrong. How do I demonstrate immutability in this project?