Weekly Update (4/30/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 publish this weekly blog to recap our contributions to key technical areas.
This blog also provides 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:
Preparing for Apricot Phase 2: Avalanche Native Token (ANT) Support on C-Chain
Early next week, we will release AvalancheGo v1.4.0 for the Apricot Phase 2 (AP2) upgrade. We expect that the AP2 network upgrade will take place at the end of next week (May 7th-May 10th) and recommend that all validators upgrade their nodes before then (there will be a separate announcement when the v1.4.0 release is created). For a full list of all the items we are targeting in the upcoming Apricot upgrades, check out the Apricot Phase 1 post.
AP2 contains new C-Chain precompiles (you can find a good explanation of what a “precompile” is in Appendix E of the Ethereum Yellow Paper) that makes using Avalanche Native Tokens a cinch! After this upgrade, you’ll be able to import custom tokens from the X-Chain and wrap them as ARC-20s on the C-Chain for use in the dApps deployed there (like Pangolin). Next week’s engineering blog will provide additional documentation and tutorials for how to use this new feature.
Additionally, AP2 activates the Berlin Hard Fork EIPs (which activated on Ethereum in mid-April). These include:
- EIP-2565 (ModExp Gas Cost): Defines the gas cost of the ModExp (0x00..05) precompile.
- EIP-2929 (Gas cost increases for state access opcodes): Increases gas cost for SLOAD, *CALL, BALANCE, EXT* and SELFDESTRUCT when used for the first time in a transaction.
- EIP-2718 (Typed Transaction Envelope): Defines a new transaction type that is an envelope for future transaction types.
- EIP-2930 (Optional access lists): Adds a transaction type which contains an access list, a list of addresses and storage keys that the transaction plans to access. Accesses outside the list are possible, but become more expensive.
The Ethereum Cat Herders provided a great overview of each EIP and why it is important in this blog post.
Over the last few weeks, we’ve been working hard on some commonly requested UX improvements and exciting new features for the wallet (wallet.avax.network).
Today, we are rolling out browser-based account storage and ERC-20/ERC-721 support to the wallet beta (wallet-beta.avax.network). When these features are rolled out to the production site early next week, you will need to update your Ledger (X or S) to the first officially supported Ledger version (v0.5.2). No more experimental mode required to upgrade! 🎉🎉🎉
You can find screenshots of these new features below:
Browser-Based Account Storage
Send and View ERC-20 and ERC-721s
API Node Re-Architecture Live on Fuji
As mentioned last week, we have been re-architecting our API platform. We are excited to announce that this new architecture is now fully rolled out on the Fuji Testnet.
We’ve reduced the time to load MetaMask and the wallet by caching popular static calls (`net_version`, `eth_chainId`) in a global CDN. In our own testing, we’ve found that these startup-related calls each take ~20 ms instead of > 300 ms (culminating in a few second or so faster UI). We plan to continue optimizing the new caching layer to make an unparalleled experience for anyone interacting with the Avalanche network through our hosted infrastructure.
Additionally, we rewrote the rate limiting mechanism used to prevent limiting user access. The new algorithm we are using does a much better job of differentiating power users from malicious attackers.
We plan to rollout this re-architecture to mainnet sometime next week after we observe some more metrics. If you see anything not working quite right on testnet, please let us know!
“Behind-the Scenes” Improvements
Each week many small, but meaningful improvements are made to the repos we maintain (usually based on feedback from the Avalanche community). Oftentimes they don’t warrant their own section but are still worth calling attention to. Here are this weeks “behind-the-scenes” improvements:
- (Overdue) Ansible rollup (#815): @moreati landed a massive improvement to the Ansible scripts used in AvalancheGo
- Installer Script Improvements: Easily install prior versions of AvalancheGo from the installer script
- Enhanced Address Validation (AvalancheJS v3.3.0): New release of AvalancheJS performs much more extensive validation of string addresses
If there is anything we missed that you found really useful, please let us know!
Over the last few weeks, the Ava Labs engineering team has been hosting office hours on Discord from 2–4 PM ET each Wednesday. Last week we hosted the first “specialized” office hours for Client Apps (Wallet / Ledger / Explorer). This Wednesday, office hours will focus on Platform (AvalancheGo / Coreth).
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.