We are quickly approaching a significant new era in our history: a multi-node network. There are a handful of node implementations in progress with new ones seemingly being announced every day.
While client diversity is a fantastic thing for the ecosystem, it necessitates clear communication and consensus in a way that we, as an ecosystem, have never really needed before. The ledger team has done amazing work including the community in the process, but has never had to support other teams implementing the node before.
At the node diversity workshop, Ori Pomerantz talked to us about testing in Ethereum in a multi-node ecosystem. He briefly mentioned the separation between EIPs and ERCs, where an EIP is a proposed improvement to the Ethereum protocol and an ERC is a proposed standard for users of the protocol.
I believe that it is worthwhile for us to explore a similar distinction in proposals in our own ecosystem. A CIP-like process is the perfect way for us to manage changes to the ledger, requiring collaboration and agreement from multiple node maintainers. It also provides, by default, a clear change log for hard forks. However, the CIP process itself, in it’s current form, does not feel like the best place for it. The CIP process is already hard to follow and encapsulates more than just the ledger. I believe we should design and implement a new process, specifically for changes to the ledger to streamline the process while ensuring that the ledger truly is a shared resource.
I would be happy to help design such a process, along with contributors from IO, Pragma, and other node implementors, if this is something we want. Ironically, I’d argue that this process should be specified in a CIP, even.
I’d love to hear feedback and ideas from the community!