As the current Ethereum state grows, we believe it is important to allow individuals to store state in a distributed way. As ethereumjs-client is a new client we thought it would be interesting to experiment with storing state on ipfs.

What it does

We are attempting to sync ethereumjs-client with state being stored on ipfs.

How we built it

Ethereumjs-client works by importing ethereumjs-blockchain which is "a module to store and interact with blocks". It is this module that instantiates leveldb. We replaced it with orbitdb which "provides various types of databases for different data models and use cases".

Challenges we ran into

We ran into challenges getting the tests to pass in ethereumjs-blockchain and then syncing ethereumjs-client with our forked ethereumjs-orbitdb-blockchain.

Accomplishments that we're proud of

We are extremely proud of even attempting to do this. It is extremely challenging to attempt to store on ipfs.

What we learned

We learned a lot about ethereumjs-client and orbitdb.

What's next for ethereumjs-orbitdb

Next we are going to work to actually get the client to sync and preparing the code for an upstream PR. Eventually we want storing state on ipfs to be a flag that is optional allowing individuals to run full nodes without worrying about state.

Built With

  • ethereumjs
  • ipfs
  • orbitdb
Share this project: