|
2 | 2 |
|
3 | 3 | This document outlines major changes between releases. |
4 | 4 |
|
| 5 | +## 0.4.1 "Liberalization" (19 Aug 2025) |
| 6 | + |
| 7 | +This patch-release supports recovery from out-of-date or lost anti-MEV keystore |
| 8 | +and introduces an enhanced version of ZK-based DKG process. The results of MPC |
| 9 | +ceremony for ZK-DKG setup conducted by NGD, NSPCC, AxLabs and Lazynode are |
| 10 | +published to the https://github.com/bane-labs/mpc repository and integrated to |
| 11 | +the verifier system contracts. This release schedules `NeoXEthSig`, `NeoXDKG` |
| 12 | +and `NeoXAMEV` forks for MainNet with ZK-based DKG version. |
| 13 | + |
| 14 | +This version is fully compatible with v0.4.0 and does not require node |
| 15 | +resynchronization. For TestNet nodes no configuration changes are required on |
| 16 | +upgrade (comparing to v0.4.0). For MainNet nodes the DB reinitialization is |
| 17 | +required with the updated genesis configuration since `NeoXEthSig`, `NeoXDKG` |
| 18 | +and `NeoXAMEV` forks are enabled. Follow the instructions below to upgrade your |
| 19 | +node from v0.4.0 to v0.4.1: |
| 20 | + |
| 21 | +1. Download new binary and new genesis configuration file from the release page. |
| 22 | +2. Gracefully stop the node. |
| 23 | +3. Replace the old binary with the new binary. |
| 24 | +4. For MainNet nodes only: don't remove DB; reinitialize DB using new binary and |
| 25 | + new genesis configuration file with the following command: |
| 26 | + ``` |
| 27 | + ./geth init --datadir ./node-datadir ./config/genesis.json |
| 28 | + ``` |
| 29 | +5. For consensus nodes only: prepare for participation in ZK-based DKG process |
| 30 | + following the steps below: |
| 31 | + 1. Download 3 pairs of R1CS files and proving key files from the |
| 32 | + [Neo X MPC ceremony page](https://github.com/bane-labs/mpc?tab=readme-ov-file#seal-result) |
| 33 | + using [NeoFS CLI](https://github.com/nspcc-dev/neofs-node/releases/tag/v0.48.3): |
| 34 | + ``` |
| 35 | + mkdir ./r1cs |
| 36 | + ./neofs-cli-linux-amd64 object get --cid 411d8vuzogogMxXJqTQcu61btgQ6rL2VNYUYnH7r4kE3 --oid 8f6m4RUvgNDyo7gdFhEJQEAqkdaTzEj4oYuLVxfRJP4S -r grpc://st3.storage.fs.neo.org:8080 --timeout 1000s --file ./r1cs/one_message.ccs |
| 37 | + ./neofs-cli-linux-amd64 object get --cid 411d8vuzogogMxXJqTQcu61btgQ6rL2VNYUYnH7r4kE3 --oid Fqzn6PvAhmmYWVBRV8dVRWwAL3T8JHgycBfjS7A18z6f -r grpc://st3.storage.fs.neo.org:8080 --timeout 1000s --file ./r1cs/two_message.ccs |
| 38 | + ./neofs-cli-linux-amd64 object get --cid 411d8vuzogogMxXJqTQcu61btgQ6rL2VNYUYnH7r4kE3 --oid 2jNd8acKHBb5s6matnED49MCo36vTMWXbfjocT7Xcub7 -r grpc://st3.storage.fs.neo.org:8080 --timeout 1000s --file ./r1cs/seven_message.ccs |
| 39 | + mkdir ./pk |
| 40 | + ./neofs-cli-linux-amd64 object get --cid 411d8vuzogogMxXJqTQcu61btgQ6rL2VNYUYnH7r4kE3 --oid HZVzrU7348zztWvgBTM3xkpvZ6BNNJMGDrKyeDDTHZLw -r grpc://st3.storage.fs.neo.org:8080 --timeout 1000s --file ./pk/one_message.pk |
| 41 | + ./neofs-cli-linux-amd64 object get --cid 411d8vuzogogMxXJqTQcu61btgQ6rL2VNYUYnH7r4kE3 --oid HKEeCskBjnL5yJGXYP4EfakVaDsw3aAJ64FXavDhpv4E -r grpc://st3.storage.fs.neo.org:8080 --timeout 1000s --file ./pk/two_message.pk |
| 42 | + ./neofs-cli-linux-amd64 object get --cid 411d8vuzogogMxXJqTQcu61btgQ6rL2VNYUYnH7r4kE3 --oid A1DTHYvdnzrgEJP14yzt2T8AXsuM3YaNDoe3LoMWXepT -r grpc://st3.storage.fs.neo.org:8080 --timeout 1000s --file ./pk/seven_message.pk |
| 43 | + ``` |
| 44 | + 2. Specify paths to the downloaded files to the node's run command via |
| 45 | + the following flags: |
| 46 | + ``` |
| 47 | + --dkg.one-msg-r1cs=./r1cs/one_message.ccs \ |
| 48 | + --dkg.two-msg-r1cs=./r1cs/two_message.ccs \ |
| 49 | + --dkg.seven-msg-r1cs=./r1cs/seven_message.ccs \ |
| 50 | + --dkg.one-msg-pk=./pk/one_message.pk \ |
| 51 | + --dkg.two-msg-pk=./pk/two_message.pk \ |
| 52 | + --dkg.seven-msg-pk=./pk/seven_message.pk \ |
| 53 | + ``` |
| 54 | + 3. Ensure that `--antimev.password` flag is provided to the node's |
| 55 | + run command and the node has access to its anti-MEV keystore. |
| 56 | + 4. Ensure that your node meets the hardware requirements mentioned in the |
| 57 | + [README](https://github.com/bane-labs/go-ethereum?tab=readme-ov-file#consensus-node) |
| 58 | + since ZK-based DKG process significantly increases node's RAM |
| 59 | + consumption. If not, then migrate your node to the suitable machine. |
| 60 | +6. Start the node. |
| 61 | +
|
| 62 | +New features: |
| 63 | + * the results of MPC ceremony are integrated into verifier contracts (#494) |
| 64 | +
|
| 65 | +Behaviour changes: |
| 66 | + * BLS12-381 precompiles are updated to Prague-compatible version (#488, #495) |
| 67 | + * `NeoXDKG` fork is enabled at height `3689280` of MainNet (#497) |
| 68 | + * `NeoXEthSig` fork is enabled at height `3810240` of MainNet (#497) |
| 69 | + * `NeoXAMEV` fork is enabled at height `3810240` of MainNet (#497) |
| 70 | +
|
| 71 | +Improvements: |
| 72 | + * support out-of-date or lost anti-MEV keystore recovery (#480, #491) |
| 73 | + * an upgrade to optimized `zk-dkg` v0.3.0 (#492) |
| 74 | + * ZK-related KeyManagement system contract updates (#489) |
| 75 | +
|
| 76 | +Bugs fixed: |
| 77 | + * panic on ZK-based DKG message recovery (#485) |
| 78 | + * disabled shares phase check during DKG epoch transition (#480) |
| 79 | + * improper ZK version is used during reshare recovery (#480) |
| 80 | + * zero random scalar is possible in anti-MEV related operations (#490) |
| 81 | +
|
5 | 82 | ## 0.4.0 "Karstification" (20 Jun 2025) |
6 | 83 |
|
7 | 84 | This version introduces a preview of ZK-based DKG signature verification added to |
|
0 commit comments