[Completed] AE maintenance Q3 2023

Application Status

Status: New
Last updated: 06.09.2023
Submited by First Name, Last Name: Dimitar Ivanov
Team: Craig Everett, Sean Hinde, Dimitar Ivanov, Hans Svensson, Dincho Todorov, Ulf Wiger, Metin Akat, Rumiana Akat, Justin Mitchell, Jarvis Caroll
Approved Budget (in h):
Used Budget (in h):
Planned Delivery:

Specify the funding category

Open Source Development

Application Title

Core team application July-September 2023

Applicant

Aeternity core developers team.

Value Application

We will also be working on various ongoing tasks:

  • Tx Execution Parallelization
  • Snapshot Sync
  • Front-End Playground

Definition of Terms

What exactly are we talking about? Please describe your project.

Status Quo

HyperChains

With our improved understanding, the HCs seem closer than ever. We should still:

  • finish the lazy_leader functionality and rename it to something more suitable
  • implement the parent chain fork awareness
  • adjust the config producing tool and the staking UI according to the latest contract changes
  • tooling to facilitate setup and deployment
  • setup and deploy documentation
  • an AE wallet in order to support HC’s child chain signing

Move the State Channels out of the node

This will speed up the core node tests but also would allow building server-side infrastructure for supporting SCs and perhaps simplify running State Channels on mobile devices. This task aims primarily at taking the SC FSM out of the node.

Revisit the internal API to make it easier to implement plugins

This is mostly an ongoing process and the API is being adjusted when needed. The goal is to have a static API in order to support different plugins accross different node versions. Documentation and tutorials are also needed.

HTML UI to operate the node

A simple local webpage to allow the user to interact with their node. This is mostly an RnD project.

Snapshot sync

Sync the backbone of headers first and then download the MPT some blocks below the top. This includes a whole spectrum of new P2P functionalities like communicating P2P versions, enabled node capabilities and so on.

Jump sync

This is still at the idea stage. The thought is for syncing nodes to share a Proof of Inclusion of the block hash at a given height + the Genesis hash, allowing a connecting node to jump directly to that height, trusting that the hash is indeed on the main chain and connected to Genesis. More theoretical analysis and experimentation will be needed.

State Channel Market

Some ideas exist for how to evolve the State Channel Market concept. One idea is to provide a fast bridge between Hyperchain child chains, or between child- and parent chain. More concrete use cases and more developed user interfaces may also be explored, as well as making the demo properly decentralized, with proper wallet support.

This could in part help to clarify and improve the experience of using State Channels for highly interactive, high-volume applications.

Support and improvement for tooling

Those are long running tasks that we tackle if we find some time for them: GUI launcher, aeCanary, monitoring tool, plugin system, devmode, state channel use cases and so on

Middleware

In the third quarter of this year, the Middleware team will focus on implementing several major features that will enhance the functionality and usability of the system. Firstly, the team will work on adding statistics endpoints, which will enable the display of chart data that will provide valuable insights and visualisations to users, facilitating data analysis and decision-making. Additionally, the team will concentrate on expanding support for NFT (Non-Fungible Token) and nested resources information. Moreover, in an effort to optimise the system, the team plans to deprecate the V1 version of the Middleware API and introduce the V3 version. This upgrade will bring improved functionality, performance, and security to the API, ensuring compatibility with the latest node changes, including support for hyperchains.

JavaScript SDK

In the following work, it is planned to implement an alternative way to connect aepp with a wallet using WalletConnect. In the scope of refactoring to improve the existing aepp-wallet interface, find a better way to calculate transaction fee, and implement a consistent way to represent AE coins in code.

Sophia/FATE compiler maintenance and development

  • Fix high priority bugs, currently: 476, 471, 470, 395. More bugs could be included as we progress.
  • Provide developer support by answering questions in the forum and github.

We refrain from adding new functionality to the compiler unless it would serve another project. This is because we are planning to replace the Erlang compiler with the Rust one. This way we are avoiding duplicated work and distraction, as those features will be implemented in the new compiler only.

Sophia compiler rewrite

  • Finish the reimplementation of aebytecode in Rust.
  • Rewrite and test lexer and parser, at least a simplified version
  • Define the entire compiler’s project structure and provide type definitions for most crucial data across the compilation pipeline.
  • Implement infrastructure for basic type checking.

Sophia/FATE debugger and REPL

  • Expose full REPL/dbg functionality in the new web interface
  • Provide machine-readable interface to the REPL
  • Fix deployment: update the Dockerfile and make sure the application is startable out-of-the-box in release mode

Required Work

Once we have enough features implemented, we will make official releases.

Estimate

We would be working full time on this, although some of the team (Hans and Craig) already have other commitments and would help us depending on their availability.

Known Limitations

Although we aim at delivering fully functional HCs, there will be a lot to be improved there.

Outlook

HCs is something we had promised long ago. It will be great to deliver a working version. Improved syncing would be highly appreciated by the community. We do need the monitoring tool for internal purposes.

Publishment

We publish our work in the official AE repositories.

3 Likes

Week 27 (3 July - 9 July)

Sean Hinde

Worked on a new node embedded wallet for Hyperchains: 42 hrs

Metin Akat

Helping to port aeserialization to Rust. Time spent 22:00h

Hans Svensson

Fixed timeout issue in aesophia_http, and prepared and released new versions of HTTP and CLI compiler. Finished off a couple of PRs on Chain.network_id to conclude before vacataion.
Time spent: 13h

Dimitar Ivanov

Dimitar was making old tests pass. Time spent: 40.5h

Ulf Wiger

Ulf worked on snapshot sync. Time spent: 40h

Week 28 (10 July - 16 July)

Dimitar Ivanov

Dimitar was making old tests pass. Time spent: 44.5h

Sean Hinde

Finished work on the embedded wallet for Hyperchains and started to look at extracting the Fate VM into a standalone application: 28 hrs

Ulf Wiger

Ulf made a small improvement to the State Channel Market Demo, and worked on snapshot sync. Time spent: 44h

Week 29 (17 July - 23 July)

Dimitar Ivanov

Dimitar tracked an ugly race condition. Time spent: 51h

Sean Hinde

Worked on extracting the Fate VM into a standalone application and attended Foundation workshop in Sofia: 36:30 hrs

Ulf Wiger

Ulf worked on improvements to plugin build support and attended Foundation workshop in Sofia. Time spent: 40h

Week 30 (24 July - 30 July)

Rumyana Akat

HC starter kit onboarding and documentation. Worked on the new AF website. Participated in some discussions. Time spent 7:15 h

Dimitar Ivanov

Dimitar did a rebase on the lazy leader branch on top of latest master, this introduced some issues which are being fixed one by one. Time spent: 32.5h

Sean Hinde

Worked on an updated plan for Hyperchains and started to look at handling parent chain re-orgs for Hyperchains. Time spent: 20:30 hrs

Metin Akat

Work on HC Kubernetes setup. Time spent 16:00h

Ulf Wiger

Worked on version control in the sync protocol, and automatic upgrade to protocol enhancements. Time spent: 32h

Week 31 (31 July - 6 August)

Rumyana Akat

Worked on the new AF website. Participated in some discussions. Time spent 19:15 h

Dimitar Ivanov

Dimitar was cleaning up rebase issues. Time spent: 52.5h

Sean Hinde

Worked a bit more on an updated plan for Hyperchains and on merging the main hyperchains branch. Time spent: 11:45 hrs

Ulf Wiger

Worked on sync protocol enhancements. Time spent: 37h

Week 32 (7 August - 13 August)

Rumyana Akat

Worked on the new AF website. Participated in some discussions. Time spent 3:15 h

Hans Svensson

Made an effort to improve the constraint solving in the Sophia compiler, and extended Crypto.verify_sig to work on arbitrary sized byte arrays. Started reading up on ERC-4337 to prepare Universe presentation.
Time spent: 17h

Sean Hinde

Worked on handling parent chain re-organisations for Hyperchains. Time spent: 34:00 hrs

Dimitar Ivanov

Dimitar did some final polish and finally merged the lazy leader. Time spent: 39.5h

Ulf Wiger

Worked on sync protocol enhancements, and improved support for prefunded accounts in the dev mode plugin. Time spent: 40h

Week 33 (14 August - 20 August)

Hans Svensson

More studying of ERC-4337. Started looking into simplifying the NamePreclaim → NameClaim workflow. With the introduction of auctions front-running is less of an issue.
Time spent: 16h

Sean Hinde

Worked on handling parent chain re-organisations for Hyperchains. Time spent: 20:40 hrs

Ulf Wiger

Worked on sync protocol enhancements, and improved support for prefunded accounts in the dev mode plugin. Time spent: 40h

Week 34 (21 August - 27 August)

Hans Svensson

Hunting down and fixing a Sophia compiler bug, thanks to Ulf N for assisting in fixing it. Prepare releases of aesophia, aesophia_cli and aesophia_http. Preparing node PR for Crypto.verify_sig + some more work on presentation.
Time spent: 22h

Sean Hinde

Worked on handling parent chain re-organisations for Hyperchains. Time spent: 20:10 hrs

Ulf Wiger

Worked on snapshot sync, and preparations for the AE Universe 3. Time spent: 40h

Dimitar Ivanov

Some preparations for the AE Universe 3. Time spent: 9h

Week 35 (28 August - 3 September)

Hans Svensson

The whole week week was dedicated to AE Universe and a visit to the Crypto Castle. Workshops with Anstalt and Anstalt + Foundation, preparing presentation, and attending the conference. Also fixed an issue where a bad call to dry-run would result in 500.
Time spent: 40h

Justin Mitchell

Finished hard fork configuration, added tests & fixing existing tests to support new configuration.
Time spent: 35.5 hours

Metin Akat

Work on internal tooling. Time spent: 3:15h

Sean Hinde

Worked on handling parent chain re-organisations for Hyperchains. Time spent: 25:00 hrs

Ulf Wiger

Worked on snapshot sync and attended (and presented at) eternity Universe 3. Time spent: 34h

Dimitar Ivanov

Preparations and attending the AE Universe 3. Delivered a small improvement of the HC election smart contract. Time spent: 45h

2 Likes

Week 36 (4 September - 10 September)

Hans Svensson

Finished the work on making NamePreclaimTx optional in Ceres protocol upgrade. Released a new version of the Sophia compiler (aesophia + aesophia_cli + aesophia_http).
Time spent: 9h

Ulf Wiger

Worked on snapshot sync. Time spent: 40 hrs

Dimitar Ivanov

Dimitar identified a transaction pool corruption bug and spend the week tracking it. Time spent: 40 hrs

Week 37 (11 September - 17 September)

Hans Svensson

Ulf Wiger

Worked on snapshot sync. Time spent: 40 hrs

Dimitar Ivanov

Dimitar was tracking the transaction pool bug. Time spent: 27hrs

Week 38 (18 September - 24 September)

Ulf Wiger

Worked on snapshot sync. Time spent: 19.5 hrs

Dimitar Ivanov

Dimitar was tracking the transaction pool bug, but a HC election bug was identified and focus was switched to it instead. Time spent: 8.5hrs

Week 39 (25 September - 1 October)

Ulf Wiger

Did housekeeping work on supporting components. Time spent: 15.5 hrs