Hyperchains development updates

My team is currently tasked with developing Hyperchains - this thread will contain periodic(probably biweekly) public updates on the progress of development.

Update #1

Hyperchain whitepaper has been released!

This concluded a lot of R/D of the concept and actually defined hyperchains in an implementable form.

Initial implementation of the staking contract

Each hyperchain will be governed by a unique smart contract tasked with:

Plugable functionality in the core node

Hyperchain commitment DB

Hyperchain parent simulator

@radrow @erlmachinedev1.chain Let me know if I forgot to add something :wink: I omitted WIP tasks as amending the whitepaper for when this will be done.


Really liking the simple 4 step local deployment

will give it a try this weekend .

Update #2 [07 - 11 September]

Short update on the development progress.
CC: @yani.chain @sergiimaksiuta.chain

What was done this week:

  • We finished and merged the initial Hyperchain parent DB
  • We finished and merged initial Hyperchain parent conector
  • Created a Chain Simulator parent connector
  • Sophia compiler refactoring for the necessary Erlang ACI helper library

What we are working on right now:

  • Sophia smart contract ACI helper
    While working on the Staking contract deployment in HC and running benchmarks of our Sophia compiler it turned out that it is infeasible to ship hyperchains together with the compiler for encoding/decoding call data as the compiler would introduce a nasty bottleneck in block validation times - somewhere around 2-3 seconds for validating a single header… The ACI library is the only sensible option for proceeding further and will replace the compiler in some places in the node test suite.
  • Chain simulator improvements
    The state channel test suite provided a chain simulator for testing various forking scenarios - after we started testing our Staking Contract it turned out that the only sensible way to test it is by using the chain simulator. Unfortunetelly as the Simulator was designed only for SC we are now in the progress of major refactorings to allow testing smart contract behavior during forking scenarios.
  • Connector DB integration
    Save the data obtained from the parent chain in our DB
  • Parent chain connector manager
    Manage parent chains and keep track of hard forks(changing the parent chain over the lifetime of the Hyperchain)

@radrow @erlmachinedev1.chain Did I miss something?
Keep in mind that if [Active] Aeternity node maintenance - iris hard fork release candidate doesn’t get approved then some more important tasks listed in the proposal will become part of the Hyperchains project(Fast Sync, Peer pool fix, etc…).


Update #2 [14 - 18 September]

Short update on the development progress.

We are still working on tasks started last week but we made a lof of progress on them:

  • Chain Simulator improvements:
    A draft PR can be found here: https://github.com/aeternity/aeternity/pull/3358 - right now this draft PR breaks Q/A checks and needs to be polished

  • ACI helper:
    Progress can be tracked here https://github.com/aeternity/aesophia_aci_encoder
    Right now this library works and was tested against all contract tests in the core node(I’ve intercepted calls to the compiler which got me a LOT of test cases). Some polishing needs to be done before integrating it in the core node test suite and the compiler.

  • Parent chain manager and DB integration:
    We are still working on it, no draft PR yet.

@radrow @erlmachinedev1.chain Did I miss something?