The decentralized narrative of blockchains and cryptocurrencies draws from their ability to minimize trust across global networks of permissionless participants. There are many components of the development stack that are subject to more centralized designs, however.
Analyzing where developers need to tap into centralized services and technology require evaluating the development process in general, and dapps on Ethereum provide a useful case study. A recent report by Fluence on dapp development highlights how many of the unpolished developer tools and unstable connectivity to blockchains precludes their ability to adequately leverage fully decentralized back-end infrastructure when connecting to the Ethereum blockchain.
In particular, Ethereum’s Infura was cited by respondents in the survey as the most common method for connecting to the Ethereum blockchain (63 percent) — ahead of development teams running their own full nodes or using other node service providers. Efforts to replace Infura are underway due to the widespread reliance on the centralized layer for plugging into the Ethereum blockchain. So this begs the question, what exactly is Infura?
Accessing Ethereum With Infura
Infura is a scalable back-end infrastructure for building dapps on the Ethereum blockchain. It is a method for connecting to the Ethereum network without having to run a full node, and the service is provided by the company Consensys. The more straightforward interface for tapping into Ethereum is hosted through Amazon cloud servers and is the most commonly method used by dapp developers for connecting to the Ethereum network.
Infura is a collection of full nodes on the Ethereum network that enable developers to connect to these nodes through its interface. As such, a significant portion of dapp traffic runs through Infura — due to its ease of use, no requirement for developers to run a full node locally, and continual maintenance.
The notion of off-loading the need to run a full node is prevalent among developers who can subsequently focus more of their efforts for building dapps on the other areas of their application — rather than consistently managing the full node’s connecting to the network. Infura provides numerous development tools, documentation, and API keys for working with Ethereum — even enabling distributed storage through IPFS. Infura’s IPFS gateway is a useful feature of its design, and the congruency of IPFS with blockchains should continue to fuel the growth of its use among dapp developers.
Read: What is IPFS?
Infura also offers a very straightforward dashboard for evaluating network metrics and provides a simple tool for whitelisting smart contracts that a dapp uses. Some of the core components of the Infura infrastructure include a back-end built with both Geth and Parity clients as well as its Ferryman middleware for enhancing the reliability of connecting to the Ethereum blockchain.
Many dapp developers in the Fluence study cited node connectivity and stability as problems that required multiple technical solutions to circumvent. Using Infura can help developers off-load these concerns to a more robust and scalable connection to Ethereum, but it also comes with trade-offs through a persistent reliance on a centralized layer for connecting to the blockchain.
Infura is immensely popular among developers, managing more than 10 billion code requests per day and is used by prominent dapps such as MetaMask, Truffle, and 0X. Its trade-offs are effective for helping to accelerate development on the network, but mounting concerns over Infura’s dominance in connecting to Ethereum have led to numerous projects working to replace the centralized layer.
Centralized Concerns of Infura
Concerns around Infura’s centralization draw from it being hosted on Amazon cloud servers. Since the majority of dapps — including MetaMask — rely on Infura for plugging into the Ethereum blockchain, Infura presents a bottleneck. As a result, Infura represents a single point of failure that also brings with it privacy concerns and a disincentive for developers to run full Ethereum nodes.
If Infura were to crash (e.g., Amazon cuts off service or their servers crash), although unlikely, dapps running on top of it would stop working altogether since they would have no connection to the Etheruem network. Similarly, as a layer through which multiple dapps connect to the network, IP addresses and transaction data (such as wallet addresses) of dapp users can be traced — presenting privacy problems.
Infura’s intuitive interface for managing the connection to the blockchain makes it a practical tool for developers but it also disincentivizes them to run full Ethereum nodes, which leads to reduced decentralization of the network. Full Ethereum clients require the state storage of the blockchain, which contributes significantly to increasing blockchain bloat and storage requirements for running a full node.
The problem lies in the asymmetric incentives for running full nodes for dapp developers. Infura presents a much better option concerning the development process but leads to reliance on a layer that is prone to adverse long-term consequences.
Additionally, full nodes do not receive block rewards as miners do, so the primary incentives to run full nodes from the user’s perspective is to voluntarily contribute to Ethereum’s decentralization along with the better privacy/security assurances that come with running a full node. However, the current incentives for users to run full nodes is not perceived as sustainable as the continual growth of the blockchain will eventually preclude many mainstream consumer computers from being compatible with running a full client.
The general concept of building dapps that rely on centralized services to connect to the decentralized layer is also counterintuitive. The problem is well-known, and multiple projects are working on replacing Infura using incentive models or promoting the use of light clients.
Initiatives to Succeed Infura
Numerous initiatives are underway on Ethereum to reduce reliance on Infura, and Infura is even seeking to reduce their dependence on Amazon along with providing funding for several relevant projects. Although more of a temporary solution, Infura is trying to expand on its cloud service providers by transitioning to multiple providers instead of using purely Amazon cloud hosting.
Another project, called Turbo Geth, reduces the storage requirements of the other primary Ethereum client, Geth. Turbo Geth would make storage requirements and costs for developers running full nodes significantly lower. However, Turbo Geth is a client-specific solution, which is useful in certain cases but does not fulfill larger ambitions to scale Ethereum and make running full nodes more popular.
Broader initiatives need to be tailored to multiple clients and provide incentives for both users and developers to facilitate better decentralization. Proposals such as ‘storage rent’ where users are incentivized for running full nodes have garnered attention among Ethereum researchers, and the concept was initially proposed by Vitalik Buterin.
Similar projects based on incentivizing full node use include VIP Node, which identifies and rewards full clients that are online, and Denode — a project by Chainsafe that provides monetary incentives in a decentralized ecosystem for running full nodes.
Infura has undoubtedly provided an early boon for developers looking to launch dapps on the Ethereum blockchain, and it is likely that significant development on other projects is necessary before the widespread reliance on using Infura to connect to Ethereum is diminished. Although Infura can help developers focus on other aspects of their application’s development by providing a scalable and reliable back-end, dapp user metrics continue to be endemically low.
Until other technologies emerge as viable alternatives to Infura, it is likely that developers will continue to use its services rather than run their own nodes throughout their application’s lifecycle.