[Completed] AE maintenance Q1-2023

Application Status

Status: Completed on the 31.03.2023, approved on the 30.01.2023, Submitted on the 25.01.2023
Last updated: 25.01.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
Approved Budget (in h):
Used Budget (in h):
Planned Delivery:

Specify the funding category

Open Source Development

Application Title

Core team application January-March 2023

Applicant

Aeternity core developers team.

Value Application

During the first quarter, our main task will still 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
  • Network monitoring tool
  • MESS Protocol
  • Plugin System
  • Dev Mode
  • Support for SC use cases
  • JS SDK

Status Quo

Hyperchains

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

  • collection of commitments and feeding them to a smart contract in order to elect the next leader
  • difficulty computation
  • improving the release process

GC of old states

GC old states were discussed and exploratory work has been done, but needs to be finished and released.

Network monitoring tool

The network monitoring tool is designed to inspect network connectivity of the nodes. It can be used to monitor what happens if some peer nodes are taken down.

MESS Protocol

In a broader sense, this is about improving resistance against attacks in general. A modified version of the MESS protocol is one interesting path. Another area we have glanced at is Byzantine Voting Protocols, for which an Erlang implementation actually already exists (Honeybadger BFT, used by the Helium blockchain).

Plugin System

Improvements in build, packaging and internal APIs are underway, and need to be documented and improved upon the feedback from actual uses.

Dev Mode

A number of feature requests have been made from the tools team, and need to be considered. A WIP task is support for provisioning pre-funded accounts for dev mode.

JS SDK

We will explore a more minimal approach to the SDK

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 is something we had promised long ago. It will be great to deliver a working version.

Publishment

We publish our work in the official AE repositories.

6 Likes

Week 1 (1 Jan - 8 Jan)

Metin Akat

Metin worked on a new Generalized Accounts UI. Time spent 8:15h

Ulf Wiger

Ulf worked on extending the garbage collector. Time spent: 19.5 hrs

Sean Hinde

Sean worked on the creating a framework distribution of the aeternity node suitable for embedding into a native iOS / MacOS application . Time spent: 40.00 hrs

Dimitar Ivanov

Dimitar worked on collecting commitments and parent chain cache invalidation. Time spent: 36.5 h

Hans Svensson

Adding a more realistic GA test case for delegated signing.
Time spent: 8h

Dincho Todorov

Docker-composer setup to run a all components local Hyperchains network.
Time spent: 32h

Week 2 (9 Jan - 15 Jan)

Metin Akat

Metin mostly got involved in some admin tasks. Time spent: 4:00h

Hans Svensson

Finally had some time to work on the FROST threshold signatures. Internally published a draft/prototype version, Erlang code is functionally complete, TypeScript only started. Added some QuickCheck tests and did more Typescript protoyping.
Time spent: 16h

Ulf Wiger

Ulf worked on extending the garbage collector. Time spent: 36 hrs

Sean Hinde

Sean worked on replacing the pre-built Rust nif for ecrecover with an easily buildable C replacement library libsecp256k1. Time spent: 40.00 hrs

Dincho Todorov

Docker-composer setup to run a all components local Hyperchains network.
Time spent: 40h

Dimitar Ivanov

Dimitar worked mostly on collecting commitments from the parent chain. He also fixed a CORS headers bug and a deadlock in the HC setup. Time spent: 44 h

Rumyana Akat

Onboarding and local setup of the AF site. Updated footer. Time spent: 1.5 h

Week 3 (16 Jan - 22 Jan)

Dincho Todorov

  • Docker-composer setup to run a all components local Hyperchains network.
  • Docker images ARM builds (multiplatform) in CI

Time spent: 40h

Dimitar Ivanov

The deadlock issue from the previous week resulted in a small refactoring and was finalized. Dimitar was back to commitments’ collection. Time spent: 43 h

Hans Svensson

Worked on TypeScript implementation of FROST threshold signatures - draft version is complete, including distributed key generation examples.
Time spent: 8h

Ulf Wiger

Worked on the garbage collector. Some refactoring to make the new structure more manageable. Time spent: 28.5 hrs

Metin Akat

Metin worked on Generalized Accounts UI. Time spent 16h

Rumyana Akat

Minor tweaks of the AF site. Onboarding local setup of HC UI and GA UI. Time spent: 5 h

Sean Hinde

Sean worked on testing the new ecrecover library and investigating timeout crashes seen during sync. Time spent: 24.00 hrs

Week 4 (23 Jan - 29 Jan)

Rumyana Akat

Worked on GA UI - site structure, page layout, saving accounts list in local storage. Time spent: 19.5 h

Metin Akat

Worked on various aspects of Generalized Accounts UI. Time spent 34:15h

Hans Svensson

Only some minor cleanup and some additional tests for FROST + a discussion with Philipp on how to use it within a Wallet context.
Time spent: 3h

Sean Hinde

Sean worked on investigating improved artificial finality through a MESS like mechanism 26.00 hrs

Ulf Wiger

Ulf was testing and debugging the new garbage collector. Time spent: 31 hrs

Dimitar Ivanov

Dimitar was working in collecting commitments’ task for HyperChains. At this point this is the fourth stab at the task and the solution is quite neat, to be finished soon. Time spent: 40 hrs

4 Likes

Week 5 (Jan 30 - Feb 5)

Metin Akat

Worked on Generalized Accounts UI. Time spent 46:30h

Rumyana Akat

Worked on Generalized Accounts UI. Time spent 9:20h

Hans Svensson

Preparing for a new release (slight API change) of aesophia_http. Debugging and improving an Erlang-only (no NIF) implementation of SHA3/Keccak hash function. Investigating and prototyping “all AENS delegation”.
Time spent: 16h

Ulf Wiger

Ulf worked on getting the automated test suites working with the new db table setup needed for the rewritten GC. Time spent: 40 hrs

Sean Hinde

Sean worked towards an iOS app compatible static build of the Aeternity node. Time spent 32.00 hrs

Dimitar Ivanov

Dimitar was fighting with cache of collected commitments. At the end of the week identified a bad race condition. Time spent: 37.5h

Week 6 (Feb 6 - Feb 12)

Hans Svensson

Discussing improvements of GAAttach + unrolling parts of SHA3 for speed (x100!). Patch release of aesophia_http.
Time spent: 6h

Dimitar Ivanov

Dimitar did a big refactoring in collecting commitments and now all commitments are collected atomically with their corresponding block hash. Dimitar started working on contract accomodating them. A bug was fixed that caused the node to crash with a network id suggesting a HyperChain while the configuration for a HyperChain was missing. Time spent: 41h

Ulf Wiger

Ulf worked on getting the dev mode plugin and the new plugin support in synch so that the cross-dependencies between the two repositories work properly. Time spent: 32.5 hrs

Sean Hinde

Sean continued work on a rebar plugin for building a statically linked release of the runtime for iOS. Time spent 27.30 hrs

Rumyana Akat

Worked on Generalized Accounts UI. Time spent 9:15 h

Metin Akat

Worked on Generalized Accounts UI. Mostly tried to figure out how to sign GA transactions via the SDK. Ended up implementing key storage interface as a temporary feature. Time spent 24:00h

3 Likes

Week 7 (Feb 13 - Feb 19)

Dimitar Ivanov

After some bugfixes the contract now is accepting commitments. It is also refactored to be using the Chain api interface opposed to feeding the endpoint the current hash and height. This exposed a handful of bugs in the contract execution context that are all fixed now. The contract is not yet finalized as some staker filtering is yet to be implemented. Time spent: 41h

Rumyana Akat

Worked on Generalized Accounts UI - deleting and editing stored info, layout improvements. Onboarding Stoyan. AF website discussed. Time spent 19:30 h

Ulf Wiger

Ulf did some finishing work on the improved plugin support and the dev mode plugin, to ensure that they work properly for the upcoming release. He also improved error reporting for invalid config data during startup. He also continued working on adapting the test suites for the new GC support. Time spent: 45 hrs

Metin Akat

Worked on Generalized Accounts UI - various improvements. Time spent: 13:15 h

Dincho Todorov

P2P Monitoring tool PoC. Noise implementation.
Time spent: 40h

Sean Hinde

Sean continued work on a rebar plugin for building a statically linked release of the runtime for iOS. Time spent 8:00 hrs

Hans Svensson

Not much to report, started preparing slides for Meetup.
Time spent: 2h

Craig Everett

Craig adapted a native Erlang implementation of Keccack into a erlang-sha3 fork, worked through a dep tree problem in the wallet, and worked on an out of context testing harness to compare various language implementations of the Keccack and NIST flavors of SHA3.
Time spent: 36h

Week 8 (Feb 20 - Feb 26)

Ulf Wiger

Ulf prepared a talk for the Aeternity meetup in Stockholm 24 Feb, and presented it at the meetup. He also continued to fix the test suites for the new GC. Time spent: 42 hrs

Sean Hinde

Sean continued work on a rebar plugin for building a statically linked release of the runtime for iOS. Time spent 5:50 hrs

Hans Svensson

Preparing and releasing v7.1.0 of the Sophia compiler (including HTTP and CLI). Meetup preparation and talk.
Time spent: 12h

Metin Akat

Metin was sick and only joined some meetings. Time spent: 2:45h

Rumyana Akat

Worked on Generalized Accounts UI - Adding and removing delegates. Time spent 16:15 h

Craig Everett

Craig worked on a chain init workaround for arbitrary chain creation using the launcher, a code load/compile tool for Sophia, and packaging native deps for use with Zomp.
Time spent: 58h

Dimitar Ivanov

The week was spent in fixing failing tests: a failing Stratum test was identified and fixed but the huge portion of the time went into HC commitment’s tests. Time spent: 40h

Week 9 (Feb 27 - Mar 5)

Hans Svensson

Writing some overdue documentation (AENS raw data pointers + GAMetaTx tamper protection). Implement generic/wildcard AENS name delegation. Review gas limit bug fix.
Time spent: 12h

Metin Akat

Worked on GA UI. Spend via a GA now working. Started designing the next project that the TS team will work on. Time spent 18h

Rumyana Akat

Worked on GA UI - New SDK version integration. Visual and performance improvements. Time spent 15:30 h

Sean Hinde

Sean Continued working towards building an AE node that can be embedded in an iOS app. Custom beam now built and attempting to run Erlang code in the iOS app. Time spent: 40.00 hrs

Ulf Wiger

Ulf worked on finalizing the Garbage Collection PR. Time spent: 36.5 hrs

Dimitar Ivanov

Dimitar wrapped around the final changes in collecting commitments. With some polish, the PR was merged. He started working on HC fork difficulty. Time spent: 35h

Week 10 (Mar 6 - Mar 12)

Rumyana Akat

Worked on GA UI - worked on some performance optimization when loading account info. Started work on encryption of keys in local storage. AF website - reviewed and discussed Stoyan’s implementation, fixed some minor bugs. Time spent 30:15 h

Metin Akat

Only took part in some discussions. Time spent: 5:30h

Hans Svensson

Implement improved AENS auctions (shorter auctions and dynamic + shorter auction extensions). Thomas will help writing tests.
Time spent: 3h

Ulf Wiger

With the GC PR in pretty good shape, awaiting reviews, Ulf started working on HTTP API functions that have returned a 500 (internal error) code when asked to fetch data that had been garbage-collected. While doing this, Ulf also identified some issues with the test suite libraries and fixed those. Time spent: 38.5 hrs

Dimitar Ivanov

Dimitar finished the fork difficulty task for HC. Started working on Lazy leader - when in the context of HCs a leader is elected but does not produce blocks. Time spent: 45h

Week 11 (Mar 13 - Mar 19)

Hans Svensson

Finish AENS auctions. Publish a new version of the HTTP compiler (v7.3.0) with multiarchitecture docker support. Add decode calldata to aesophia_cli.
Time spent: 8h

Rumyana Akat

Worked on GA UI - encryption of keys in local storage. Investigated issue with validators adding new validators. 26 h

Metin Akat

Metin is exploring new ways to talk to Aeternity via JS/TS. Currently working on a new node REST client. Time spent: 31:30h

Ulf Wiger

Ulf kept working on adapting HTTP API functions to the new GC support, and also improving the GC test suites. Time spent: 40 hrs

Dimitar Ivanov

Dimitar was working on lazy leader functionality. Additionally spent a day in improving a GA Sophia smart contract. Time spent: 38h

Week 12 (Mar 20 - Mar 26)

Hans Svensson

TLC for the CLI compiler (aesophia_cli) - fixed a number of small issues and added some more documentation. + PR reviews and discussions.
Time spent 9h

Rumyana Akat

Worked on GA UI - Worked on integrating the new version of the contract. Spending through Superhero does not work yet. 31:30 h

Metin Akat

Metin continues work/research on ways to talk to the AE blockchain from TS. Also some supportive work on GA UI. Time spent 20:30h

Dimitar Ivanov

Dimitar improved the GA smart contract. This exposed a bug in HTTP API - an inner transaction’s (wrapped in a MetaTx) gas consuption is not exposed via the info HTTP endpoint. Parallel to this, Denis exposed that this is the same with PayingForTx. This is fixed. Time spent: 43h

2 Likes