Weekly Update (4/23/2021): Ava Labs Engineering
Development across the Avalanche ecosystem is growing rapidly, with new teams, applications, and assets being created every day. To keep the community up-to-speed on the work Ava Labs is doing to support these amazing efforts, we will be publishing a weekly blog to recap our contributions to key technical areas.
This recap will also provide information on how developers can get more involved in the Avalanche ecosystem through programs like bug bounties, developer office hours, and career opportunities. Without further ado, here is this week’s engineering update:
New Indexing Endpoints
We developed new indexing endpoints for avalanchego that allow anyone to iterate through all the accepted containers for each VM (vertices, blocks, or transactions). This new endpoint serves as an alternative to our existing IPC endpoint that publishes a “once-only” stream to socket subscribers.
For example, you can also access the index of the last accepted transaction your node accepted on the X-Chain:
Then, you can now access the “nth” transaction your node accepted on the X-Chain:
Or, you can access a range of transactions (typically ones you haven’t ingested yet):
This new set of endpoints will allow us to remove some operational requirements from Ortelius, the state archival indexer used by many exchanges and explorers, to make it more reliable and easier to operate. If you want to give these endpoints a test drive, you can access them via AvalancheJS (as of v3.2.6) and in our Postman Collection.
ERC-20 + ERC-721 Support in Avalanche Ledger App
To continue empowering the growing ecosystem around the C-Chain, we’ve been working with Obsidian to add ERC-20, ERC-721, and contract deployment support to the Avalanche Ledger App. We are excited to share that this week Obsidian released support for this functionality.
C-Chain RPC Enhancements
To preemptively avoid error-prone setups for teams integrating with the C-Chain, we’ve changed all EVM endpoints to only stream and respond to requests with finalized information (erroring when unfinalized information is queried). This prevents new integrators from accidentally querying data that could be orphaned (if querying ahead of the last accepted height).
Additionally, we’ve added support for teams hosting avalanchego nodes to restrict the number of logs a caller can request in a single eth_getLogs call and to restrict how long a single API call execution can last. This prevents users from abusing publicly accessible API endpoints (otherwise they’d be able to fetch all logs from genesis to the current block or run expensive trace queries at will).
API Node Re-Architecture
We now receive over 3.3 Billion C-Chain API Requests each month at api.avax.network. To continue providing reliable service for everyone utilizing these endpoints, we’ve begun re-architecting the components that power it. This re-architecture will allow us to remove a vast majority of the rate limits we’ve put in place to ensure users abusing these APIs don’t impact the experience of others. We’ll continue to share updates on the progress of this effort in the coming weeks.
Documentation + Examples
In the past week, our Developer Services team has been working in overdrive to update our docs with new tutorials. The highlights of this effort have been:
- Indexer API Endpoints
- Node Database Backup
- Emergency Node Downgrade
- MetaMask Programmatic Addition (for C-Chain dApps)
Additionally, we’ve added a new repository with examples for spinning up a local Avalanche network using both Kurtosis and Docker Compose.
During the last week, Heroku had a major outage that affected all “Dynos” deployed on their platform. This outage impacted the Avalanche Wallet and confused many users who thought something may have been wrong with the network. To better communicate the uptime of various components, we created a Statuspage. Our vision for this page is for it to become a “one stop shop” for tracking the status of popular services run by different teams in the ecosystem.
Discord Office Hours
Over the last few weeks, our engineering team has been hosting office hours on Discord from 2–4 PM ET each Wednesday. Going forward, we will start doing “specialized” office hours with the following teams:
- Platform (avalanchego/coreth)
- Client Apps (wallet / ledger / explorer)
- Dev Tools (avalancheJS / avash)
We will kickoff the first iteration of these “specialized” office hours on 4/28 with Client Apps (wallet / ledger / explorer).
We’ve seen great engagement from the community on the bug bounty program we launched a few weeks ago. If you find a vulnerability that could impact the Avalanche Ecosystem, you could earn a bug bounty of $10k!
Join Ava Labs
Ava Labs was founded by Cornell computer scientists who brought on talent from Wall Street to execute their vision. The company has received funding from Andreessen Horowitz, Initialized Capital, and Polychain Capital, with angel investments from Balaji Srinivasan and Naval Ravikant.
We are actively hiring for a number of key technical roles. To ensure we attract the best and brightest to join our team, we support hiring remote candidates from anywhere in the world. If the work we are doing interests you, we’d love to chat! You can apply here.