EVM Strategy

What we look for when deciding which EVMS to integrate with

Primer

A blockchain is a shared database used to store an immutable set of information. In the context of Ethereum Virtual Machine compatible blockchains, this means storing EVM bytecode.

Any EVM we integrate with must have a reliable and performant way of sending data to the blockchain.

This requires:

  1. a performant blockchain

  2. performant RPC nodes

What is an RPC

In the context of blockchain an RPC (Remote procedure call) is a URL used to connect to a blockchain. More specifically an API endpoint (applied programming interface) that will submit your request to a blockchain on your behalf.

For a Metamask user your RPC configuration is found in:

Settings -> Networks -> Choose a Network

The two important fields here are

Chain ID: This is a specific identifier for the EVM network

RPC URL: This is the API endpoint URL used to perform remote procedure calls.

Having a reliable default RPC supported by the EVM network is CRITICAL to the success of the EVM.

Central Point of Failure

When too many requests (be it legitimate or DDOS) attempt to call the network at the same time bad things can happen.

APIs are forced to rate limit the RPC endpoint which means when a user tries to perform a transaction they see something like this.

Or This

JSON-RPC is a specific type of RPC call designed for use with Ethereum.

Pitfalls of running your own RPC node

Anyone can independently run their own RPC node. But this should be a public good provided by the EVM network using their tokens as resources to pay for the RPC.

If we ran our own RPC node and switched users to our hosted RPC network, we would then also have to pay for the bandwidth of any other service they use in the future.

Community funds alone should be sufficient on any EVM to support robust network funded RPC infrastructure so dApp developers can focus on building their dApps instead of hassling with RPC errors.

What causes RPC errors

Too many developers, end users, and/or bots are trying to use the network

Short term Solution:

Internal JSON RPC Errors are coming because of Infura's rate limit. Not our infura app, Matic Mainnet's public RPC app. The solution to this is to connect to a different JSON RPC on Metamask or just wait a minute or so for the rate limit to reset. This is terrible for user experience and can cost many sales when users get frustrated before completing a transaction.

Long term Solution:

Choose to deploy on EVMs with robust RPC endpoints that run multiple full nodes which can dynamically redirect traffic.

Issues at the blockchain level

Keep nodes in sync

  • Manage mempool size. If the network gets clogged with a backlog of transactions to process this can cause the RPC nodes to get out of sync with the current state of the blockchain

  • Decrease Latency. So validator nodes retain as close to real time syncing with the current processed blocks as possible.

  • Build out excess capacity for the main RPC node that can dynamically fail over to other RPC nodes if the network detects rate limiting is occurring.

Qualitative Questions

What is your RPC node capacity and expansion strategy?

What is your block processing capacity and expansion strategy?

How do you ensure reliable confirmation without re-org risk?

Quantitative Testing

Each EVM we integrate with we perform automated scripts to test network performance.

This involves creating an NFT smart contract with very low priced tokens (1000 gwei) and a very large maximum mint size

We then run an automated script to purchase NFTs on each EVM which records

  • confirmation time

  • gas price

  • error logs (specifically RPC related API rate limiting errors)

List of EVM Chains

Integrated

Potential Future Integrations

  • Fantom

  • Avalanche

  • Algorand

  • Terra

  • Skale

Last updated