I am trying to research about Redactable blockchain so my question is how can I implement a Redactable chain in Eth if someone has some idea about it I will be thankful
-
Had to google the term "redactable blockchain". If I understood right it has to do with redacting information from the blockchain - censoring of sorts. Then the answer is simple: it's not possible in Ethereum with any easy means as the blockchain is fully transparent. Private blockchains are of course different.– Lauri PeltonenCommented Oct 21, 2019 at 17:23
1 Answer
You don't redact. Non-repudiation is a feature.
You can, however, make contracts that permit overwrite of states. Consider three ordered pseudo transactions (the state means whatever it means in the context of the contracts):
1, Alice: +1, from Bob
2, Alice: +2, from Carol
3. Alice: +3, from Dave
Read-only inspection doesn't require a transaction, and generally anyone can do it.
read-only, getAlice: 6, from anyone
Great. What if something went wrong? Redaction would be a possible response to an error in the contract or an unanticipated situation. A contract may be written to allow intervention by an authorized signer.
4, setAlice: 4, from Authority
Fine. Now Alice == 4:
read-only, getAlice: 4, from anyone
We have an amended state and an unredacted transaction history (four transactions).
It will likely not be possible to redact history, for example, to pretend transaction #2 never happened because that would take a world-wide cooperative effort, by design. Blockchain is a data structure designed to ensure that it isn't possible to tamper with it like that.
Private chains are designed to lower the threshold for the arbitrary redaction of history. Such is by no means the only property that separates them from public blockchains, but it is true and it is a "feature" or an "anti-feature" depending on one's design goals.
A system with a smaller number of validators has a lower threshold, say, 3/5 or 11/20. Even if such a low threshold exists it should probably be the avenue of last resort. The first would be good contract design so that such rollbacks are never required.
Over-reliance on rollback may be indicative of a situation that shouldn't be tackled with blockchains at all. The lowering the threshold for redaction weakens what one can say about transaction finality.
Hope it helps.