Last year, I gave a talk about running your own Ethereum nodes at DevCon 4 due to the complexities AirSwap faced with our own Geth node infrastructure. We also open-sourced a CloudFormation stack to help other projects spin up their nodes successfully. We strongly believe that running nodes should be simple.

At the end of my talk last year, I mentioned that AirSwap would move to a dedicated Ethereum infrastructure provider once we found one that met our needs fully, and we did find a provider that meets our criteria last month.

Our Criteria

AirSwap processes millions of requests on our Geth nodes daily. We also make use of the txpool feature to provide a snappy UI for our users. Lastly, we seek to provide a 99.9% uptime guarantee on our nodes for our developers.

Many of the existing Ethereum infrastructure providers make use of multiple Geth nodes with a pub/sub overlay to handle filters. However, because nodes are not always peered to each other inside each provider, the txpool for each node may not be shared across the provider’s fleet of nodes. This causes inconsistencies in the state of the pending transaction — sometimes one node will report the transaction as received while another node will have no record of that transaction at all. This leads to inconsistent UI states — sometimes your trade was submitted, other times it might not even show up until it is mined in a block. That’s not a good UX.

We needed a node provider that would respond within a few blocks of the highest block at all times and had good intra-provider node peering to ensure the txpool was up-to-date across its full fleet.

Lastly, we needed a solid uptime guarantee; when a node has an issue, we needed to be certain that a new node would seamlessly rotate into place. This meant that many Ethereum infrastructure providers that only allow you to spin up a single node instance were out of the running as our provider.

Alchemy was the winner for us

After evaluating numerous Ethereum infrastructure providers, we chose Alchemy as the winner. They were able to meet all of our criteria as well as provide fast support. In an environment where forks, updates, and features all change frequently, we needed to know that outsourcing our Ethereum nodes would not degrade the operations team’s ability to provide our developers with solid performance and feature request implementation.

Alchemy did not support the transaction pool features that we needed initially, but they were able to add in this feature after we asked. The speed of turn around really won AirSwap over to using them as our node provider.

We are proud to have completed a case study with Alchemy where you can read more of our journey to selecting an Ethereum infrastructure provider on their blog.

New projects should use Ethereum infrastructure providers

For new projects, I would highly recommend selecting a solid Ethereum infrastructure provider. In development, a single node spun up via a third-party service should be sufficient. However, a single node is a single point of failure and should not be used in production.

For production traffic, ensure that you select a node provider that has a fleet of nodes. Check their backup and recovery policy since you don’t want to be down for 6–7 hours as your state trie re-syncs. If you are running on a fleet of nodes behind the scenes, check that your filters or pub/sub logic will work. If you rely on transaction pooling for a faster UI, ensure your provider can support that feature — not all major Ethereum infrastructure providers can.

And lastly, make sure you can get solid support. Having a great service is nearly worthless if you can’t get ahold of anyone when problems arise!

AirSwap is now discontinuing support for the CloudFormation template that we open-sourced last year. We strongly suggest finding a node-as-a-service provider, like Alchemy, instead.