[Active] AE Maintenance (Weeks 49-51, 2024)

Application Status

Status: Active

Hello everyone,

As we wrap up the year, our team remains focused on delivering updates and making steady progress. Here’s a summary of our work over the past three weeks.

Weeks 49-51 (December 4 - December 22)


Dincho Todorov

We updated the localnet to integrate the latest HyperChains contracts and replaced the legacy mdw-explorer with aescan. AWS payment changes required invoice re-issuance and ongoing coordination. We resolved compatibility issues with the latest HyperChains contracts on the localnet, added more tests, and made minor cleanups. We also reviewed and released PRs for the calldata library and made upstream updates to aeproject and aepp-contracts. On top of that, we introduced new Grafana Loki dashboards, including one for Fail2ban logs, and fine-tuned configurations for better log management.

Mihail Dobrev

We fixed an issue with MDW sync and adjusted the log level for misleading messages to improve debugging clarity. We added new endpoints to fetch delegators, epochs, and validators from the latest epoch. We addressed issues with MDW syncing for HyperChains caused by the reversed block order of microblocks and keyblocks. Additionally, we debugged and resolved a syncing bug related to newer node versions. We resolved block order issues, tested MDW HyperChain functionality with SDK data, and cleaned up HC endpoints in MDW while adding their parameters to Swagger specs. We also resolved an issue with the accounts claims endpoint missing from the specification.

Justin Mitchell

We fixed tests that were broken by the finalisation transaction being added to the last block. Using trees from micro block creation ensures that if the leader adds a transaction in the last block, the finalisation transaction is created with the correct nonce. You can find the details here. Additional tests were fixed, and we added a new test to check the finalization transaction on the chain.

Valentin Atanasov

We resolved a division by zero issue on empty chains and fixed an error with the AEXN counter on empty chains. A significant focus was placed on making MDW compatible with the HyperChain order of blocks. Additionally, we fixed an off-by-one transaction stat error, added total accounts to total stats, and addressed a pagination issue with DEX swaps.

Hans Svensson

Most of our efforts this period focused on delivering improvements and missing features for the basic staking contracts. Key updates included ensuring the pinning reward is part of the staking reward flow, recording and locking stakes on a per-epoch basis, and facilitating the StakingValidator owner being a contract. We also restricted the callback function (protected = true + gas limit), added a setting to change auto re-staking, cached epoch info in MainStaking with a getter, and provided a function to check if a callback is defined in the StakingValidator. You can check the details in here.

Additional work involved discussing and supporting delegated staking, improving calculation precision in the bonding curve Sophia implementation, and reviewing BTC/Doge connection and “hole” production timing aspects. We also reviewed the end-of-epoch consensus voting work and delegated staking contracts. Furthermore, we fixed a bug in staking logic where current_stake could get out of sync, and debugged issues with “hole” production, improving tests along the way.

Dmytro Lytovchenko

We resolved mining stability issues and produced a working solution for normal mining using time slots instead of chain height. Additionally, we worked on solving Dialyzer quality checks and fixed failed tests for the new consensus algorithm.

Gaith Hallak

Regarding the actual compiler rewrite, I have finished working on the PR that would allow type inference for datatypes and type aliases, and got that PR merged into the main branch.

For the most time this month, I was working on the LSP code. I have done some refactoring on the LSP code that I have worked on a few months ago and rebased it on the latest changes, that were introduced to the compiler. Now the code is more production-ready and handles a wider range of notifications from the editor. It also displays parser errors and type errors as diagnostics in the extension.

The extension was previously breaking on many inputs by the user. Now, most of these cases do not cause the extenion to break anymore, but more testing is still needed to make sure that the extension is easily usable.

One more thing that is still needed before making a release of the LSP extension, is the ability to handle multiple open files at once. Currently, vscode can handle requests and will show diagnostics to the latest opened file, but I have done some work to make it work with multiple files at once, and I’m continuing to work on this issue this month.

Jarvis Carroll

In the last month, I have finished the transition to the new ANF architecture in the backend, removing all FATE variables from the ANF stage, and added a lot of static analysis to use much fewer FATE variables than was possible in the previous architecture of the backend, by comparing different variables to see where one was initialized vs where another was last read.

I also began to add analysis of which variables are only used once, for future use in the backend.

This month so far I have been continuing that analysis, using it to detect when the function calls and aggregate data structures can use the FATE stack more intelligently for their inputs and for their outputs, to once again produce better FATE output than was possible in the previous architecture of the backend, but which is also more straightforward to test. I will also be transitioning the backend away from printing to stdout, to instead use the platform-agnostic logger that the frontend uses.


Thank you for your continued support. We look forward to sharing further updates as we move ahead!

3 Likes