The road to implement a Cosmos/Tendermint node

Hi! I’d like to know what’s the best starting point and recommended roadmap to start an implementation of an alternative Cosmos node client. I know this may be quite a massive project but I’ve been following the blockchain space and cosmos for a quite a while now and I always wanted to have the chance to dive deeper. I think implementing a node could be a fun project, a nice way of knowing the inner workings of the technology and an excuse for me to test the Swift programming language on a different enviroment.

At a high level I imagine the following milestones

  • Implement the an SDK that can start a process, connect to a TCP/unix socket and talk ABCI
  • Port Tendermint Core
  • Port Cosmos SDK

I wanted to get the community’s opinion on what would be the path to do such a task



So there are a lot of challenges here.

the IAVL tree is somewhat underspecified at the moment.

The other challenge is Amino encoding of data which would easier once full protobuf compatibility is achieved