Skip to content

Instantly share code, notes, and snippets.

@rhazberries
Last active September 23, 2020 22:24
Show Gist options
  • Select an option

  • Save rhazberries/1e273f9fddf08af36a92b858c254ad72 to your computer and use it in GitHub Desktop.

Select an option

Save rhazberries/1e273f9fddf08af36a92b858c254ad72 to your computer and use it in GitHub Desktop.
Harmony External Infrastructure Research

Harmony External Infra Research

Infura.io

Website // FAQ

Infura is a centralized solution that provides access to Ethereum API to developers. This allows developers to create their apps without having to manage their own node infrastructure, sync to the network, etc. Used by MetaMask.

They use a private Vipnode pool to manage access to Ethereum nodes. According to their website, they run Geth (Go), Parity (Rust) & Hyperledger Besu (Java) Ethereum clients. They also provide a Dashboard to provide analytics to the developers.

Monetization

They also offer custom plans with differing number of projects, requests/day, SLA & support.

Archival data is also available at an additional $250/month.

Vipnode

Github // Website

Open source project. A decentralized network to incentivize running Eth full clients to serve light clients. The idea is to create "pools" of nodes that will accept payments using a smart contract. The user will send payment to a smart contract & the smart contract will pay out to the node provider when requests are made. Any one can run a node for a pool & create their own pools with their own payment smart contracts.

The project only has one contributor starting from 2018. The last commit was in June 2020. From the website, it looks like the project is in beta and currently has no monetization scheme.

Conclusion

  • Building an incentivized external infrastructure system is a large project that should be done by a team, not a single developer. For comparison, Testnet is being run by the entire P-Ops team & takes ~2-3 hours of effort daily. Having a team of multiple people will also provide better response time to service interruptions.
  • This project is not a single deliverable, like SmartStake's dashboard. In order for this project to have any value, it must be longer than the usual 6-week grant engagements. If they stop providing the endpoint service, then our grant will be meaningless.
  • Creating reliable infrastructure is difficult work. It will be easier to find another project willing to adapt what they have already built out to our chain than to find a team to build this from scratch.
  • At the end of the grant engagement/when we stop paying the grantee, they will need to have some sort of way to monetize their continued effort to keep running the nodes to provide the service. This is difficult for multiple reasons:
    • Why would any developer pay for their services, when we are running endpoints for free? They will need to offer more than just the endpoint infrastructure to attract users. We can not stop running our endpoints, because they are used by our partners (TrustWallet, JellySwap, etc).
    • The current largest customer category for our endpoint are partnerships. For partners, they will not pay for endpoint services from an external provider.
    • Validators are another category of users. However, since they are running nodes, they can just use their own nodes instead of pay for the external service.
    • One possibility is to include in the grant that we will use & pay for their service to run our Staking Dashbord backend & possibly our Block Explorer backend, provided that they meet our metrics for uptime, etc. This would provide the grantee with at least 1 guarenteed user & reduce usage on our own usage of our endpoints/possibly allow us to run less nodes (particularlly on shard 0 & reduce our own AWS costs).
    • We can also encourage future grants to utilize their services & cover their infra costs during the grant engagement.
  • The only way that this kind of service would succeed is if the endpoint demand is no longer sustainable by our current endpoints. The application developers must also be able to profit more than they spend to use the service.

The service must be stable, have high availability, return data quickly, support all shards, etc. But these are obvious requirements for a service like this, especially a paid service.

TL;DR

The ideal grantee will be a team that already works on a similar project, who will understand the requirements for the service without a written spec.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment