[Completed] AE maintenance Q4-2022

Application Status

Status: Completed on the 30.12.2022, approved on the 08.11.2022, submitted on the 04.11.2022
Last updated: 04.11.2022
Submited by First Name, Last Name: Dimitar Ivanov
Team: Michal Bargowski, Craig Everett, Sean Hinde, Dimitar Ivanov, Fabian Krol, Hans Svensson, Dincho Todorov, Ulf Wiger, Metin Akat
Approved Budget (in h):
Used Budget (in h):
Planned Delivery:

Specify the funding category

Open Source Development

Application Title

Core team application October-December 2022

Applicant

Aeternity core developers team.

Value Application

During the third quarter, our main task will be the HyperChains implementation. We expect to have a working version by the end of this application.

We will also be working on various ongoing tasks:

  • GC of old states
  • Ceres improvements
  • Rosetta API
  • A new webpage for the AF
  • Support for SC use cases

Definition of Terms

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

Status Quo

Hyperchains

They are our top priority. We are working towards adding:

  • a parent chain posting of commitments
  • collection of those commitments and feeding them to a smart contract in order to elect the next leader
  • difficulty computation
  • a white paper
  • improving the release process
  • making the current UI responsive

GC of old states

Once the DB issue is being resolved, we will work in the direction of deleting unused data for names, oracles, contracts and channels. Currently we only GC accounts, quite inefficiently

Ceres improvements

The following improvements would be made as a step for a next hard fork:

  • fix delegated signatures
  • AENS contract call
  • raw AENS pointers
  • dynamic fork protection (RnD)
  • if there is a consensus about it - update AENS auctions

Rosetta API

We aim at finishing this beast finally. The API is a really bad fit for BitcoinNG consensus but this should be finished soon.

Other tasks

  • a webpage for the AF - we will publish a simple but functional webpage to represent the effort of the AF. It will help us attract new sponsors and partners.
  • SC improvements and bug fixes - we will support the ongoing efforts of various SC projects
  • AeCanary - if identified, we will fix bugs
  • Multisig - implement and test MuSig2 for ed25519; this will produce transaction signatures indistinguishable from “normal” signatures. To test and showcase this we also need rudimentary wallet/key support which means AEX-3, AEX-10 and a couple of more things.

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, Michal 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 and a corresponding whitepaper is something we had promised long ago. The same goes for Rosetta API. It will be great to deliver those.

Publishment

We publish our work in the official AE repositories.

7 Likes

keep building, exciting stuff to come! :slight_smile: :crossed_fingers:

2 Likes

I will try to organize a governance vote for this one. I would really love to see this changed :sweat_smile:

2 Likes

This Application is approved by AF.

1 Like

@dimitar.chain How to transfer my AENS?

@Bigtree.chain let’s keep the discussion on the original thread please: There was some problem transferring Aens

1 Like

Our reports so far:

Week 40 (3 Oct - 9 Oct)

Hans Svensson

More work on contracts called by name, finished implementation - started working on tests. Also involved in discussions about contract source hash, and contract validation. And had a meeting with Radek about (e)WASM.
Time spent: 17h

Sean Hinde

Continued re-working the rocksdb / erlang interface to remove the complex C++ memory management code and use the low level C api to rocksdb. Time spent: 40:00

Ulf Wiger

Ulf started reworking State Channels connection handling, in part based on input from the State Channels demo project. He also continued working on GC. Time spent: 40.5 hrs

Metin Akat

Mostly discussions. Time spent 3h

Dimitar Ivanov

Dimitar was working on HC: posting commitments on the parent chain. The cache was enriched with an additional functionality to track local node’s top change and trigger publishing of a commitment. Time spent: 42h

Week 41 (10 Oct - 16 Oct)

Hans Svensson

Worked on test for contracts called by name, HTTP API and started with GA tests and name resolution in GA Auth.
Time spent: 4h

Sean Hinde

Continued re-working the rocksdb / erlang interface to remove the complex C++ memory management code and use the low level C api to rocksdb and investigated rocksdb tuning parameters. Time spent: 46:00

Ulf Wiger

Ulf started working on a quick fix for the observed GC-related issues (memory growth during small restarts at GC swap). Also some work on the State Channels connection handling. Time spent: 40.5 hrs

Metin Akat

Started work on new AF website. Time spent: 14:30

Dimitar Ivanov

Dimitar was working on HC: posting commitments on the parent chain. Tracking a bug that blocked tx production for the parent chain. Identified a bug that blocks block production in the child chain. Time spent: 27.5h

Week 42 (17 Oct - 23 Oct)

Hans Svensson

Finished GA tests and name resolution in GA Auth, added protocol changes + release note. Read and commented on Radek’s eWASM report.
Time spent: 9h

Ulf Wiger

Ulf continued working on GC improvements. Time spent: 38.5 hrs

Metin Akat

Some work on new AF website. Time spent: 2h

Sean Hinde

Worked to complete the remaining rosetta-cli check:data issues to pass the Rosetta API test suite. Time spent: 45:00

Dimitar Ivanov

Dimitar was working on HC: posting commitments on the parent chain. Fixed a few bugs on the child chain block production flow but blocks are still not being produced. Time spent: 44.5h

Week 43 (24 Oct - 30 Oct)

Hans Svensson

Explaining chain functionality to MDW-team, code review, merge PRs. Started working on raw AENS pointers (#GH3744).
Time spent: 5h

Ulf Wiger

Ulf continued working on improvements to GC and State Channels connection handling. Time spent: 38 hrs

Metin Akat

Work on new AF website. A working prototype. Time spent:20h

Sean Hinde

Worked on adding transaction construction support to the Rosetta API. Time spent: 31:30

Dimitar Ivanov

Dimitar was working on HC: posting commitments on the parent chain. Fixed a few more bugs. Developing a test that actually tests commitments are being produced as expected. Time spent: 29h

Week 44 (31 Oct - 6 Nov)

Ulf Wiger

Ulf worked on State Channel connection handling improvements, and debugging the DB backend. A new, much improved, mutex implementation for database transaction retries was introduced. Time spent: 39 hrs

Metin Akat

A little work on AF website. Maintenance work on HC UI. Time spent: 5h

Sean Hinde

Continued work to add transaction construction support to the Rosetta API. Time spent: 40:00

Hans Svensson

Debugging UAT sync issue, maps:to_list on OTP24 and later. Started looking into how raw pointers affect the Sophia compiler.
Time spent: 11h

Dimitar Ivanov

Dimitar was working on HC: posting commitments on the parent chain. Fixed a few bugs in commitments production. At this point the child chain is emitting transactions correctly but the parent chain is including them in a non-deterministic manner. Time spent: 44.75h

Week 45 (7 Nov - 13 Nov)

Ulf Wiger

Ulf worked on various tasks, debugging and monitoring the DB backend and GC improvements, generally preparing for the upcoming maintenance release. Time spent: 34 hrs

Metin Akat

Discussions. Time spent 2:45h

Sean Hinde

Finished adding transaction construction support to the Rosetta API and started work on an experimental native swiftUI MacOS wallet. Time spent: 51:05

Hans Svensson

Spent a bit of time understanding and implementing FROST (Flexible Round-Optimized Schnorr Threshold Signatures) in Erlang. More work on Sophia complier w.r.t. raw pointers.
Time spent: 13h

Dincho Todorov

Working on k8s application cluster capacity plan/sizing and load testing. 40h.

Dimitar Ivanov

Dimitar was working on HC: posting commitments on the parent chain. Making the test deterministic: a few different approaches were explored to keep the test realistic and meaningful. Time spent: 40h

1 Like

Progress report:

Week 46 (14 Nov - 20 Nov)

Metin Akat

Worked on responsive UI for hyperchains. Talked to a designer to create an AF logo. Discussions with Anstalt devs moving to AF. Time spent: 15h

Hans Svensson

Finished (hopefully!) Sophia changes for AENS raw pointers, started working on aens_update_tx and the changes necessary there.
Time spent: 12h

Ulf Wiger

Worked on State Channels connection handling, testing and debugging the refactored code (ongoing). Time spent: 35.5 hrs

Craig Everett

Made progress on Sophia custom type identification and serialization for the Vanillae/AE bindings, as well as PK signatures for sign-on purposes. Still significantly engaged with ecommerce platform, so few hours this week.
spent: 10hrs

Dincho Todorov

K8s application cluster update and platform tools update (dev environment). 40h.

Dimitar Ivanov

Dimitar improved the determinism in tests. A new bug was identified in HC commitments: since commitments are driven from the generation of blocks in the child chain, when there are no blocks, there are no commitments. Since blocks are released only after the block they are based on is finalized on the parent chain (enough commitments are accumulated), the child blocks are witheld. This results in the first X blocks have no commitments, where X is the number of commitments. Dimitar also made the 6.7.0 release. Time spent: 43h.

1 Like

Week 47 (21 Nov - 27 Nov)

Hans Svensson

Finished changes to transactions and serializations for AENS raw data pointers + updated and added tests. Implemented changes to Ceres FATE VM, and started working on contract tests.
Time spent: 14h

Dincho Todorov

  • Promoted k8s cluster changes dev → stg
  • Working on hyperchains docker-compose configuration

Time spent: 40h

Sean Hinde

Worked to finish productionisation of Rosetta support - testing against testnet and making our Docker image compatible. Also worked some more on a simple native wallet for MacOS. Time spent: 32:30

Ulf Wiger

Made a PR for the refactored State Channels connection handling, and worked on improved configuration management support for plugins (based on Nikita’s work on account provisioning in the dev mode plugin.) Time spent: 32.5 hrs

Metin Akat

Some UI tweaks. Worked on a new logo with a designer. Started work on a AE network monitoring tool. Time spent 13:15h

Dimitar Ivanov

Dimitarwas working on HCs. Dimitar kept adding more tests. An issue with regards of which block is being commited to was identified. After a rebase of the branch, Dimitar started fixing eunit tests. Time spent: 28h.

2 Likes

Week 48 (28 Nov - 4 Dec)

Hans Svensson

More on contract tests, added tests for FATE VM version interactions and AENS data pointers. Removing AEVM from the Sophia compiler means we need to change how we do calldata decode (for AEVM) in tests, fixed that. Time spent: 17h

Metin Akat

A little preparatory work on a new network monitoring tool. Work on the new website: started integrating a new logo, also general UI design. Time spent: 16:45h

Dimitar Ivanov

Dimitar was polishing the commitments posting. Since there had been some consensus-related changes, a lot of eunit and CT tests started acting strange. All but one bugs were fixed. Time spent: 38h

Dincho Todorov

Added feature to calldata lib to allow decoding data without ACI types. Time spent: 40h

Ulf Wiger

Ulf worked on moving some functionality from the dev mode plugin into the node, refactoring contributions for pre-funding dev mode accounts and reconsidering how to package plugins. Time spent 34h

Sean Hinde

Fixed bugs found while testing Rosetta against testnet. Started work on MESS style attack protection. Time spent: 40:00

Fabian Krol

Fabian worked on creation of Treasury contract to handle delayed staking and unstaking. Time spent: 17:10

Craig Everett

Many minor improvements to Vanillae, but the big news this week was the successful implementation of login verification with Superhero signtures for servers using the Vanillae binding libs and Sidekick. Time spent 17h

3 Likes

Week 49 (Dec 4 - Dec 11)

Metin Akat

Website design, some more work on the network monitoring tool. Time spent: 10:30h

Dincho Todorov

Added contract bytecode deserializer to calldata lib. Time spent: 37h

Sean Hinde

Conducted further analysis of additional fork protection and artificial finality schemes for newer blocks, made further Rosetta fixes and worked on the Swift native wallet. Time spent: 40:00

Fabian Krol

Fabian worked on creation of Treasury contract to handle delayed staking and unstaking. Time spent: 11:00

Dimitar Ivanov

Dimitar wraped around HC commitments posting. Since there are some consensus changes there, various seemingly unrelated tests started failing. After fixing those, Dimitar implemented a feature so a HC could start with iris protocol version (it used to be ceres only but we need iris till the MDW starts supporting ceres). Dimitar also started documenting HCs. Time spent: 43h

Ulf Wiger

Ulf has continued working on finding a smoother way to handle code dependencies in plugin development. Time spent: 37 hrs

2 Likes

Week 50 (12 - 18 Dec)

Metin Akat

Work on the website. Deployment via GitHub Actions. Time spent 8 hrs

Ulf Wiger

Finished the new build plugin for Aeternity node plugin projects, and worked on enhancing the setup application so that it can automatically detect and load applications from zip archives. Time spent: 33.5 hrs

Sean Hinde

Worked on the SwiftUI native wallet, creating AEX-3 comatible secure key storage, Base58 Check and BIP 39 key restoration, as well as layout and UI flows. Time spent: 30:10

Dimitar Ivanov

Dimitar finished the HC docs. Then he started working on collectinig commitments from the parent chain. Time spent: 41h

Dincho Todorov

Added bytecode contract encoder to calldata lib. Time spent: 40h

3 Likes

Week 51 (19 - 25 Dec)

Ulf Wiger

Ulf finished up the improved node plugin support. Time spent: 41.5 hrs

Sean Hinde

Worked on the SwiftUI native wallet, improved end to end error propagation. Time spent: 6:25

Dimitar Ivanov

Dimitar worked on commitments collection from the parent chain. Time spent: 23h

Hans Svensson

Final touches of GAMetaTx tamper protection and AEVM raw data pointer.
Time spent: 5h

Week 52 (26 Dec - 1 Jan)

Metin Akat

Worked on an utility script. Time spent 13:30h

Ulf Wiger

Ulf pushed pull requests for his changes to the dev mode plugin as well as the new node support for plugin archives. He then turned back to generalizing the node garbage collector. Time spent: 24 hrs

Sean Hinde

Worked on the SwiftUI native wallet, switched to use OAS3 endpoints for online API calls, and investigated embedding statically linked erlang runtime into iOS / Android apps. Time spent: 24:40

Dimitar Ivanov

Dimitar debugged and deployed an utility script. Time spent: 5.5 h

2 Likes