- The Ethereum blockchain continues to swell in size, with a default full “synced” GETH node requiring ~130GB of space (vs full archive node size of ~1.8TB); doubling the size requirement in just ~6 months
- Meanwhile, total active synced Ethereum nodes (full, light, archive) according to Ethernodes block explorer have seen a 50% decline since April 2018
- Rapid chain growth and node sync burden have pushed many dapp developers to opt-out of maintaining their own node, and depend on ConsenSys-operated infrastructure solution Infura .
- Infura (hosted on AWS) is positioned as a potential single central point of failure for a significant portion of the Ethereum network in its current form, as its infrastructure dependence is widely pervasive within the dapp ecosystem
It’s difficult to be a viable decentralized network when a majority of your applications depend on centralized infrastructure services.
That’s the situation many in the community want Ethereum to grow away from, as the cost and requirements to sufficiently run a fully synced node have pushed developers and dapp teams to opt-out of maintaining their own local infrastructure, and instead defer to third-party centralized infrastructure service providers like ConsenSys-owned Infura.
In 2018, the size requirement to sync a default Ethereum full node (GETH) ― which has the full blockchain data available on storage and the ability to serve any data request for the network ―grew by +3x to over 120GB (archive nodes which run closer to 2T are not required to be considered fully “synced”).
Source: Etherescan.io, The Block
The growth in Ethereum’s chain size is well known (with its fair share of confusion), however the size itself isn’t the only friction, as fully synced nodes require constant cryptographic-linked verification in order to confirm transactions. These proofs, combined with the 50m+ unique address accounts (with their own respective list of associated data), make up a complex data structure known as the state trie . While some may consider ~130GB of memory relatively non-intensive, the need for a fully synced node to continually verify constant changes in state adds a higher burden on the node operator to maintain sync. For many, the costs to manage this state burden are too high (Lane Rettig, an Ethereum core developer, recently estimated costs of running one full and one archive node to be upwards of ~$1200 a month), leaving those to consider service providers like Infura to host their nodes.
I know blockchain rent doesn’t have a great user experience, but we need to (eventually) bound the size of the EVM state trie or the system will
I know some of you will be thinking "but sharding! ", but sharding before rent only kicks the can down the road
Amidst these costs, the network has seen a significant decline in fully synced nodes as developers and users aren’t able (nor currently incentivized) to maintain hardware and bandwidth that can support the data demand of the network. According to Ethernodes, the three-month rolling average total node count has declined by more than 50% since April 2018 (vs. Bitcoin nodes which have remained relatively flat during that time). With the contraction in node count, Ethereum researchers have floated proposals such as EIP908 which aims to incentivize full nodes for relaying blocks and storing data (including state) ― however these are still exploratory.
“On our back-end servers, we (originally) had a Parity node running,” Robert Leshner, CEO of open finance application Compound, told The Block . “It was a burden to maintain. The node was hogging CPU and IO ― Plus, it required persistent state which made running redundant nodes more difficult. We have a good amount of experience running Ethereum nodes, but once we switched to relying on Infura, everything just ran smoother. We, honestly, never looked back.”
Infura hosts its own full nodes (currently through AWS instances), and opens up a front-end user interface for dapps to connect to smart contracts on the Ethereum blockchain (including testnets). The combined utility of services offered isn’t the only incentive for developers to leverage Infura for their applications, as Infura currently offers “base free services.” This is significantly more cost effective (while lowering UI friction), and for many, more reliable than maintaining their own local infrastructure, leaving users little reason to explore other options. It also creates an uncomfortable risk of centralizing the ecosystem around a potential single point of infrastructure failure.
Un Stoppable Applications
Ethereum was marketed at launch as a platform to run censorship resistant applications. The reality today is that a majority of applications on Ethereum can rely on Infura in some capacity; either directly via outsourced node hosting, as a stop-gap for stalled local node sync, or even indirectly through popular front-end UI Metamask. The dependence is pervasive. While public estimates vary, Infura currently handles anywhere from 6-10 billion API requests per day, transferring over +1B PB of data each month (1 PB = 1000TB), and serving over ~10k developers and dapps, according to Infura community updates.
“[We’re] effectively supporting the entire Ethereum dapp ecosystem with the RPC traffic,” Michael Wuehler, Co-Founder of Infura, told Coindesk in an article from December. “Any dapp that uses Metamask also inherently depends on Infura (knowingly, or not). In that sense, nearly all dapps potentially depend on Infura.”
In response to the ecosystem’s concern of over-reliance on centralized infrastructure for dapps to function, decentralized alternatives to Infura, like dappnode.io, blockcyper, and quicknode.io, are starting to emerge ― while Infura itself aims to “decentralize” more of their services. As Ethereum inches closer to its Constantinople upgrade (estimated to activate January 16th), many developers remain keen on finding new ways to reduce dependence on Infura.