[Completed] Aeternity node maintenance - iris hard fork release candidate

Since this is our last week on this proposal, on Monday we will share our last progress.

In the past month we’ve accomplished a lot and we are happy with our progress there, especially given it was Ulf and me doing the coding and Dincho the DevOps. On this basis we would like to share with you our proposal for the next 2 months. We propose a bigger timeframe so we can tackle some bigger tasks. What is more, Hans can help us out as well. At the moment he can not dedicate more than 16h a week, hopefully this would change for the better.

Below you can find our horizon of tasks for the next 2 months. Please note that we don’t commit that we would do all of those in the timeframe but rather this is the order we would tackle tasks.

So this is our proposal :slight_smile: It is up to the foundation to decide if they would like to support it or not. cc @Lydia and @Tina

Ulf Wiger @uwiger

Update rocksdb to 6.4.6

The latest version of erlang-rocksdb supports Rocksdb 6.5.2 Our system currently uses erlang-rocksdb 0.24.0, which uses Rocksdb 5.15.10. A new release should be forthcoming, also adapting the Erlang part to OTP 23. We want to move to a newer Rocksdb not least because Rocksdb takes up a large part of the Aeternity build time. Also, lots of bugfixes and performance improvements have been introduced in later Rocksdb versions.

When syncing from backup, accept previous states in DB if they don’t differ

This would improve things for the Middleware, avoiding unnecessary problems during database import.

Rest API endpoints version prefix

This is regular technical debt, and should be fixed.

Dev mode

Supporting “dev mode” (fake) mining instead of running light cuckoo cycle mining. A prototype for this can be said to exist in the test suites, where this is achieved through mocking.

Data and log locations should be configurable from other location

This would be helpful for plugin applications, and should not be too hard to implement.

Unhandled error in aec_chain_metrics_probe

Probably a rare error, but should be easy to fix. Though the origin of the error is unknown, so testing may be a bit tricky, and addressing the root cause even more so. What we can begin to do is to make the metric probe more robust.

More flexible/file-less configuration

This would simplify testing and deployment of closed systems, and should be easy to implement (testing may take a little bit more time).

Allow configuration by OS environment variables

This would simplify test setup and development environments. The best way to address it may be to refactor some of the legacy code which checks configuration data. The methods of handling config data evolved over time, and the code reflects this.

aehttp_sc_SUITE failure: timeout waiting for channel open messages

This bug was detected during the maintenance project, and causes intermittent failures in the CI. It should be fixed, should not take more than 1-2 man-days.

The following issues are broken-down tasks from the already approved issue #3194 (Relax restriction that channel cannot be used before min_depth · Issue #3194 · aeternity/aeternity · GitHub)

State Channels: Inactivity timer in chain watcher

State Channels: Client can ask FSM to quit waiting for minimum depth

State Channels: modifiable minimum_depth default

Hans Svenson @hanssv.chain

FATE cannot get blockhash of current generation

This an outright bug that should be fixed.

AENS: Review and simplify pointers

Currently name pointers allow too much freedom for the user to be creative. This should be revisited

Make inner transaction of PayingForTx non-valid

This is a bug in the PayingForTx that would render it useless. The attack vector is described in the GitHub issue. This must be done before Iris release.

AENS: Increase the name expiry time

This is something that came up a few times in the forum already: name expiration was never decided by the public. The idea here is to allow the community to vote on when names should expire.

AENS: Fix bug in AENS.update signature check

This is a bug, it must be fixed.

Deprecate AEVM properly for Iris

This one is a technical debt, it should be resolved ASAP.

Dincho Todorov @dincho.chain

Dincho would be providing us with his DevOps skills so he is needed all over the tasks, really. When he is not overloaded with work, he will be cleaning the issues assigned to him:

Dimitar Ivanov @dimitar.chain

Sync: cleanup dead peers

This bug had beem around for long time now. This would be my priority task. There had been a few attempts to expose the bug, so far all of those exposed some issues but didn’t solve it. It is a black box issue and we would not know how much time and effort it would require to fix. It might take 2 weeks or over a month, exactly how much it would take is to determine my availability for the rest of the tasks. A few more issues might be created from this one. I will need Dincho’s help here as well.

HTTP Websockets upgrade regression

This bug is breaking some of the tools used by SRE and should be a low hanging fruit.

Out of sync /status endpoint data

This is a curious bug that points to a race condition in the code. The result is a confusing API that is hard to reason about.

aec_chain_state infinity restarts and crashes

The error recover mechanism seems to be broken, not marked as a bug but it is clearly one. This could result in filling one’s HDD with garbage logs.

meta_tx’s TTL

This bug could result in unexpected results when using generalised accounts: the TTL being used is the one authenticating the inner transaction but it must be the other way around.

Test suite bugs

aest_channels_SUITE ==> test_simple_different_nodes_channel: FAILED badmatch

aehttp_sc_SUITE ==> plain.with_open_channel.sc_ws_update_abort: FAILED timeout

Those are bugs in the test setup.

Drop “native” windows support

Bring the discussion in the forum if the community needs the Windows build and if not - deprecate it.

8 Likes