This upgrade consists of the following Lux Community Proposal (LP):
- [LP-176](https://github.com/luxfi/LPs/blob/main/LPs/176-dynamic-evm-gas-limit-and-price-discovery-updates/README.md) Dynamic EVM Gas Limits and Price Discovery Updates
The LP in this upgrade goes into effect at 11 AM ET (3 PM UTC) on Tuesday, April 8th, 2025 on Mainnet.
**All Fortuna supporting Mainnet nodes should upgrade before 11 AM ET, April 8th 2025.**
The plugin version is unchanged at `39` and is compatible with version `v1.12.2`.
- Added network health check to alert if a primary network validator has no ingress connections. Runs a configurable time after startup or 10 minutes by default.
### Configs
- Added:
-`--proposervm-min-block-delay`
-`--network-no-ingress-connections-grace-period` to configure how long after startup it is expected for a Mainnet validator to have received an ingress connection.
### What's Changed
- Implement traversal based early termination by @yacovm in https://github.com/luxfi/node/pull/3337
- Add networked-signer tests by @richardpringle in https://github.com/luxfi/node/pull/3613
- Remove unused code by @yacovm in https://github.com/luxfi/node/pull/3682
- chore(proposervm): timestamp metrics for block acceptance by @ARR4N in https://github.com/luxfi/node/pull/3680
- remove dependency of validator.State from BitSetSignature.Verify by @tsachiherman in https://github.com/luxfi/node/pull/3679
- [docker] Optimize build time by copying and downloading deps first by @maru-ava in https://github.com/luxfi/node/pull/3683
- fix: broken link in README.md by @DeVikingMark in https://github.com/luxfi/node/pull/3681
- [docker] Silence remaining InvalidDefaultArgInFrom warnings by @maru-ava in https://github.com/luxfi/node/pull/3684
- [tmpnet] Update chain configuration in README by @maru-ava in https://github.com/luxfi/node/pull/3686
- testing: improve e2e test bootstrapping by @tsachiherman in https://github.com/luxfi/node/pull/3690
- [tmpnet] Update URI and StakingAddress usage in support of kube by @marun in https://github.com/luxfi/node/pull/3665
- [tmpnet] Re-enable reuse of dynamically allocated API ports by @maru-ava in https://github.com/luxfi/node/pull/3697
- fix spelling issues by @futreall in https://github.com/luxfi/node/pull/3700
- fix: correct typos in parser.go and tmpnet documentation by @avorylli in https://github.com/luxfi/node/pull/3712
- fix: typos in documentation files by @maximevtush in https://github.com/luxfi/node/pull/3710
- Fail fast in tests if lux executable isn't an absolute path by @yacovm in https://github.com/luxfi/node/pull/3707
- [ci] Fix metrics link annotation emitted for e2e and upgrade jobs by @maru-ava in https://github.com/luxfi/node/pull/3713
- Remove Mock Mempool by @joshua-kim in https://github.com/luxfi/node/pull/3687
- cleanup(tmpnet): resolve chainconfig post-etna TODO by @darioush in https://github.com/luxfi/node/pull/3720
- Update to go 1.23.6 by @joshua-kim in https://github.com/luxfi/node/pull/3722
- docs: Fix grammatical errors and improve clarity in documentation and comments by @VolodymyrBg in https://github.com/luxfi/node/pull/3716
- [testing] Replace script-based tool installation with nix by @maru-ava in https://github.com/luxfi/node/pull/3691
- Remove unnecessary function by @richardpringle in https://github.com/luxfi/node/pull/3723
- bump geth to master by @darioush in https://github.com/luxfi/node/pull/3724
- Make `bls.Signer` api fallible by @richardpringle in https://github.com/luxfi/node/pull/3696
- Add comment to seemingly dead code by @richardpringle in https://github.com/luxfi/node/pull/3721
- Bump geth by @richardpringle in https://github.com/luxfi/node/pull/3728
- Comment on the need for `CGO_ENABLED=1` to support cross-compilation by @maru-ava in https://github.com/luxfi/node/pull/3735
- [ci] Update to golangci-lint version compatible with go 1.23 by @maru-ava in https://github.com/luxfi/node/pull/3739
- [testing] Provide more logging context for SynchronizedBeforeSuite by @maru-ava in https://github.com/luxfi/node/pull/3741
- refactor: export PeerSample by @Elvis339 in https://github.com/luxfi/node/pull/3745
- [antithesis] Set LUXD_PLUGIN_DIR for VM images by @maru-ava in https://github.com/luxfi/node/pull/3751
- [ci] Drop support for Ubuntu 20.04 by @maru-ava in https://github.com/luxfi/node/pull/3737
- Fix spelling errors in `majority.go`, `minority.go`, `compressor.go`, and `logger.go` by @tomasandroil in https://github.com/luxfi/node/pull/3738
- [ci] Simplify tmpnet monitoring action by @maru-ava in https://github.com/luxfi/node/pull/3736
- Remove apostrophe from Dockerfile comments by @aaronbuchwald in https://github.com/luxfi/node/pull/3706
- fix error 404 link README.md by @futreall in https://github.com/luxfi/node/pull/3750
- fix: typos in documentation files by @leopardracer in https://github.com/luxfi/node/pull/3733
- Add With and WithOptions receivers to the Logger interface by @iansuvak in https://github.com/luxfi/node/pull/3729
- [tmpnet] Minimize duration of tx acceptance for e2e testing by @maru-ava in https://github.com/luxfi/node/pull/3685
- Remove unused `ForceCreateChain` function from `testManager` by @strmfos in https://github.com/luxfi/node/pull/3755
- chore: make function comments match function names by @rustco in https://github.com/luxfi/node/pull/3757
- L1 validator eviction block validity by @StephenButtolph in https://github.com/luxfi/node/pull/3758
- Add LP-176 e2e tests by @StephenButtolph in https://github.com/luxfi/node/pull/3749
- [tmpnet] Deploy collectors with golang to simplify cross-repo use by @maru-ava in https://github.com/luxfi/node/pull/3692
- fix spelling issues config_test.go by @futreall in https://github.com/luxfi/node/pull/3760
- [tmpnet] Add check for collection of logs and metrics to custom github action by @maru-ava in https://github.com/luxfi/node/pull/3740
- Deprecate the `consensus.Context.Lock` by @StephenButtolph in https://github.com/luxfi/node/pull/3762
- Name F-Upgrade Fortuna by @StephenButtolph in https://github.com/luxfi/node/pull/3761
- Add CodecID to ICM README by @iansuvak in https://github.com/luxfi/node/pull/3759
- Update CODEOWNERS s/marun/maru-ava/ by @maru-ava in https://github.com/luxfi/node/pull/3768
- Support caller-defined namespaces in merkledb by @joshua-kim in https://github.com/luxfi/node/pull/3747
- Fix empty standard block check by @StephenButtolph in https://github.com/luxfi/node/pull/3775
- Enable empty standard block check by @StephenButtolph in https://github.com/luxfi/node/pull/3776
- Restrict ProposerVM P-chain height advancement by @StephenButtolph in https://github.com/luxfi/node/pull/3777
- Add canoto serialization support to the block context by @aaronbuchwald in https://github.com/luxfi/node/pull/3709
- Remove support for XVM tx checksums by @joshua-kim in https://github.com/luxfi/node/pull/3774
- [ci] Disable monitoring for jobs of PRs of fork branches by @maru-ava in https://github.com/luxfi/node/pull/3781
- Update db_test.go by @sky-coderay in https://github.com/luxfi/node/pull/3765
- chore: fix some function names in comment by @tcpdumppy in https://github.com/luxfi/node/pull/3773
- Implement LP-118 Aggregator by @joshua-kim in https://github.com/luxfi/node/pull/3394
- Print git commit version upon startup by @yacovm in https://github.com/luxfi/node/pull/3771
- chore(nix): add darwin.apple_sdk.frameworks.Security by @darioush in https://github.com/luxfi/node/pull/3769
- Add comment to SendConfig documenting how to broadcast by @aaronbuchwald in https://github.com/luxfi/node/pull/3783
- refactor: use a more straightforward return value by @fuyangpengqi in https://github.com/luxfi/node/pull/3726
- [ci] Stop emitting grafana link as an annotation by @maru-ava in https://github.com/luxfi/node/pull/3767
- Remove Etna activation banner by @StephenButtolph in https://github.com/luxfi/node/pull/3789
- Upgrade canoto to v0.13.3 by @tsachiherman in https://github.com/luxfi/node/pull/3790
- Healthcheck for zero ingress connection count by @yacovm in https://github.com/luxfi/node/pull/3719
- Timely halt Lux engine by @yacovm in https://github.com/luxfi/node/pull/3792
- [docker] Update all images to debian12/bookworm by @maru-ava in https://github.com/luxfi/node/pull/3798
- [ci] Move monitoring check from github action to code by @maru-ava in https://github.com/luxfi/node/pull/3766
- [tmpnet] Start kind cluster with golang by @maru-ava in https://github.com/luxfi/node/pull/3780
- Fix flake TestIngressConnCount by @yacovm in https://github.com/luxfi/node/pull/3799
- [tmpnet] Rename tmpnetctl main package from cmd to tmpnetctl by @maru-ava in https://github.com/luxfi/node/pull/3787
- Improve check-clean CI script by @StephenButtolph in https://github.com/luxfi/node/pull/3800
- Bump golang.org/x/net from 0.33.0 to 0.36.0 by @dependabot in https://github.com/luxfi/node/pull/3793
- Fix LP-118 Aggregator Test Flake by @joshua-kim in https://github.com/luxfi/node/pull/3801
- Canoto v0.15.0 upgrade by @tsachiherman in https://github.com/luxfi/node/pull/3805
- [tmpnet] Fix README example for tmpnetctl script by @maru-ava in https://github.com/luxfi/node/pull/3807
- Update geth to v0.15.0-rc.0 by @darioush in https://github.com/luxfi/node/pull/3808
### New Contributors
-@maru-ava made their first contribution in https://github.com/luxfi/node/pull/3683
-@DeVikingMark made their first contribution in https://github.com/luxfi/node/pull/3681
-@futreall made their first contribution in https://github.com/luxfi/node/pull/3700
-@avorylli made their first contribution in https://github.com/luxfi/node/pull/3712
-@maximevtush made their first contribution in https://github.com/luxfi/node/pull/3710
-@VolodymyrBg made their first contribution in https://github.com/luxfi/node/pull/3716
-@Elvis339 made their first contribution in https://github.com/luxfi/node/pull/3745
-@tomasandroil made their first contribution in https://github.com/luxfi/node/pull/3738
-@leopardracer made their first contribution in https://github.com/luxfi/node/pull/3733
-@strmfos made their first contribution in https://github.com/luxfi/node/pull/3755
-@rustco made their first contribution in https://github.com/luxfi/node/pull/3757
-@sky-coderay made their first contribution in https://github.com/luxfi/node/pull/3765
-@tcpdumppy made their first contribution in https://github.com/luxfi/node/pull/3773
-@fuyangpengqi made their first contribution in https://github.com/luxfi/node/pull/3726
This version is backwards compatible to [v1.12.0](https://github.com/luxfi/node/releases/tag/v1.12.0). It is optional, but encouraged.
The plugin version is updated to `39` all plugins must update to be compatible.
**This release removes the support for the long deprecated Keystore API. Any users still relying on the keystore API will not be able to update to this version, or any later versions, of Luxgo until their dependency on the keystore API has been removed.**
### APIs
- Deprecated:
-`info.GetTxFee`
- Added:
-`xvm.GetTxFee`
-`platform.getValidatorFeeConfig`
-`platform.getValidatorFeeState`
-`validationID` field to `platform.getL1Validator` results
- L1 validators to `platform.getCurrentValidators`
- Removed:
-`StakeAmount` field from `platform.getCurrentValidators` results
-`keystore.createUser`
-`keystore.deleteUser`
-`keystore.listUsers`
-`keystore.importUser`
-`keystore.exportUser`
-`xvm.createAddress`
-`xvm.createFixedCapAsset`
-`xvm.createNFTAsset`
-`xvm.createVariableCapAsset`
-`xvm.export`
-`xvm.exportKey`
-`xvm.import`
-`xvm.importKey`
-`xvm.listAddresses`
-`xvm.mint`
-`xvm.mintNFT`
-`xvm.send`
-`xvm.sendMultiple`
-`xvm.sendNFT`
-`wallet.send`
-`wallet.sendMultiple`
-`platform.exportKey`
-`platform.listAddresses`
### Configs
- Removed static fee config flags
-`--create-chain-tx-fee`
-`--transform-chain-tx-fee`
-`--create-blockchain-tx-fee`
-`--add-primary-network-validator-fee`
-`--add-primary-network-delegator-fee`
-`--add-chain-validator-fee`
-`--add-chain-delegator-fee`
- Removed `--api-keystore-enabled`
### What's Changed
- [testing] Always use the go.mod version of ginkgo by @marun in https://github.com/luxfi/node/pull/3618
- Bump antithesishq/antithesis-trigger-action from 0.5 to 0.6 by @dependabot in https://github.com/luxfi/node/pull/3620
- Fix typos in document files by @taozui472 in https://github.com/luxfi/node/pull/3622
- [ci] Always use the specified go version by @marun in https://github.com/luxfi/node/pull/3616
- Fix: quotation mark by @jasmyhigh in https://github.com/luxfi/node/pull/3623
- refactor: move node configs to config/node by @darioush in https://github.com/luxfi/node/pull/3600
- Update e2e tests and CI jobs for post-etna by @marun in https://github.com/luxfi/node/pull/3614
- Replace AWM terminology in ReadMe with ICM by @meaghanfitzgerald in https://github.com/luxfi/node/pull/3595
- fix: grammatical mistakes by @crStiv in https://github.com/luxfi/node/pull/3625
- [testing] Update golangci-lint to latest version by @marun in https://github.com/luxfi/node/pull/3617
- partial sync default info by @meaghanfitzgerald in https://github.com/luxfi/node/pull/3602
- Update stale comment on commitToDB by @aaronbuchwald in https://github.com/luxfi/node/pull/3627
- geth atomic pkg dependency by @ceyonur in https://github.com/luxfi/node/pull/3588
- Mark Meag as the owner of README files by @StephenButtolph in https://github.com/luxfi/node/pull/3635
- Update x/net to v0.33.0 by @StephenButtolph in https://github.com/luxfi/node/pull/3636
- Fix codeowners to simplify PR review by @StephenButtolph in https://github.com/luxfi/node/pull/3637
- Add BLS healthcheck to communicate incorrect BLS key configuration by @StephenButtolph in https://github.com/luxfi/node/pull/3638
- chore(all): mocks generation improved by @qdm12 in https://github.com/luxfi/node/pull/3628
- fix LRU sized cache: consistent size at element removal by @rrazvan1 in https://github.com/luxfi/node/pull/3634
- Index API and Lux Node Configs Docs Fix by @meaghanfitzgerald in https://github.com/luxfi/node/pull/3632
- [ci] Migrate from buf-*-action to buf-action by @marun in https://github.com/luxfi/node/pull/3639
- chore(ci): define Github labels as code with a workflow by @qdm12 in https://github.com/luxfi/node/pull/3629
- feat(github): add "needs Go upgrade" label by @qdm12 in https://github.com/luxfi/node/pull/3642
- [ci] Fix post-merge protobuf lint job breakage by @marun in https://github.com/luxfi/node/pull/3644
- merkledb visualisations v1 (change proofs and range proofs) by @rrazvan1 in https://github.com/luxfi/node/pull/3643
- Remove Static Fee Config by @samliok in https://github.com/luxfi/node/pull/3610
- fix(ci): trigger labels workflow on push to master not main by @qdm12 in https://github.com/luxfi/node/pull/3646
- X-Chain API fix by @meaghanfitzgerald in https://github.com/luxfi/node/pull/3654
- [ci] Rename {PROMETHEUS,LOKI}_ID to {PROMETHEUS,LOKI}_USERNAME by @marun in https://github.com/luxfi/node/pull/3652
- chore: replaced faulty link by @Radovenchyk in https://github.com/luxfi/node/pull/3649
- Add L1 validator fees API by @StephenButtolph in https://github.com/luxfi/node/pull/3647
- Reintroduce the deprecated `info.getTxFee` API by @StephenButtolph in https://github.com/luxfi/node/pull/3656
- remove x-chain api obsolete metadata by @meaghanfitzgerald in https://github.com/luxfi/node/pull/3655
- Remove the Keystore API by @StephenButtolph in https://github.com/luxfi/node/pull/3657
- Add F Upgrade Scaffolding. Post-Etna Cleanup by @michaelkaplan13 in https://github.com/luxfi/node/pull/3672
- [testing] Fix instructions for triggering antithesis test runs by @marun in https://github.com/luxfi/node/pull/3664
- [testing] Ensure run_metric.sh uses a writeable storage path by @marun in https://github.com/luxfi/node/pull/3662
- Make consensusman use consensusflake directly instead of consensusball by @yacovm in https://github.com/luxfi/node/pull/3403
- chore: fix some typos by @chuangjinglu in https://github.com/luxfi/node/pull/3670
- Bump antithesishq/antithesis-trigger-action from 0.6 to 0.7 by @dependabot in https://github.com/luxfi/node/pull/3667
- [ci] Use go env {GOOS,GOARCH} for os and arch detection by @marun in https://github.com/luxfi/node/pull/3661
- Silence docker InvalidDefaultArgInFrom warnings by @marun in https://github.com/luxfi/node/pull/3659
- add L1 support to getCurrentValidators API by @ceyonur in https://github.com/luxfi/node/pull/3564
- [docker] Enable image builds from git worktrees by @marun in https://github.com/luxfi/node/pull/3660
- [tmpnet] Set an explicit `instance` label for logs and metrics by @marun in https://github.com/luxfi/node/pull/3650
- [docker] Switch to kube-compatible plugin path for images by @marun in https://github.com/luxfi/node/pull/3653
- [testing] Support direnv to simplify usage of test tooling by @marun in https://github.com/luxfi/node/pull/3651
### New Contributors
-@taozui472 made their first contribution in https://github.com/luxfi/node/pull/3622
-@jasmyhigh made their first contribution in https://github.com/luxfi/node/pull/3623
-@crStiv made their first contribution in https://github.com/luxfi/node/pull/3625
-@qdm12 made their first contribution in https://github.com/luxfi/node/pull/3628
-@rrazvan1 made their first contribution in https://github.com/luxfi/node/pull/3634
-@Radovenchyk made their first contribution in https://github.com/luxfi/node/pull/3649
-@chuangjinglu made their first contribution in https://github.com/luxfi/node/pull/3670
- [LP-103](https://github.com/luxfi/LPs/blob/main/LPs/103-dynamic-fees/README.md) Add Dynamic Fees to the P-Chain
- [LP-118](https://github.com/luxfi/LPs/blob/main/LPs/118-warp-signature-request/README.md) Warp Signature Interface Standard
- [LP-125](https://github.com/luxfi/LPs/blob/main/LPs/125-basefee-reduction/README.md) Reduce C-Chain minimum base fee from 25 nLUX to 1 nLUX
- [LP-131](https://github.com/luxfi/LPs/blob/main/LPs/131-cancun-eips/README.md) Activate Cancun EIPs on C-Chain and Net-EVM chains
- [LP-151](https://github.com/luxfi/LPs/blob/main/LPs/151-use-current-block-pchain-height-as-context/README.md) Use current block P-Chain height as context for state verification
The changes in the upgrade go into effect at 12 AM ET (5 PM UTC) on Monday, December 16th, 2025 on Mainnet.
**All Etna supporting Mainnet nodes should upgrade before 12 AM ET, December 16th 2025.**
The plugin version is unchanged at `38` and is compatible with version `v1.11.13`.
### APIs
- Allowed `platform.issueTx` to be called, for non-ImportTx transactions, while partial syncing
### What's Changed
- Fix NetToL1ConversionData typo by @cam-schultz in https://github.com/luxfi/node/pull/3555
- Refactor `logging.Format` to expose constants by @StephenButtolph in https://github.com/luxfi/node/pull/3561
- [testing] Switch to logging with log by @marun in https://github.com/luxfi/node/pull/3557
- Use JSON logs during Antithesis runs by @StephenButtolph in https://github.com/luxfi/node/pull/3562
- Antithesis: Skip checks if tx confirmation fails by @StephenButtolph in https://github.com/luxfi/node/pull/3563
- chore: fix some function names in comment by @wanxiangchwng in https://github.com/luxfi/node/pull/3566
- update api docs by @ashucoder9 in https://github.com/luxfi/node/pull/3558
- Remove unused wallet interface by @StephenButtolph in https://github.com/luxfi/node/pull/3568
- Remove required fields from config by @StephenButtolph in https://github.com/luxfi/node/pull/3569
- Remove redundant field in platformVM/network's Network by @yacovm in https://github.com/luxfi/node/pull/3571
- Remove observedNetUptime from Info Docs by @samliok in https://github.com/luxfi/node/pull/3575
- Allow issuing transactions when using partial-sync by @StephenButtolph in https://github.com/luxfi/node/pull/3570
- Add partial-sync support to the wallet by @StephenButtolph in https://github.com/luxfi/node/pull/3567
### New Contributors
-@wanxiangchwng made their first contribution in https://github.com/luxfi/node/pull/3566
-@ashucoder9 made their first contribution in https://github.com/luxfi/node/pull/3558
This version is backwards compatible to [v1.11.0](https://github.com/luxfi/node/releases/tag/v1.11.0). It is optional, but encouraged.
The plugin version is updated to `38` all plugins must update to be compatible.
### APIs
- Added `platform.getL1Validator`
- Added `platform.getProposedHeight`
- Updated `platform.getValidatorsAt` to accept `"proposed"` as valid `height` input
### Configs
- Added P-chain configs
-`"l1-weights-cache-size"`
-`"l1-inactive-validators-cache-size"`
-`"l1-chain-id-node-id-cache-size"`
### Fixes
- Fixed metrics initialization in the RPCChainVM. This could cause crashes during startup if metrics was requested during VM initialization.
- Fixed compilations on macos 14.7 and higher
- Fixed node wallet usage with ledger v0.8.4
- Fixed missing `NodeIDs` argument in the `info.peers` client implementation
- Fixed `getChainID` state tracing
### What's Changed
- [testing] Double image build timeout for bootstrap monitor e2e by @marun in https://github.com/luxfi/node/pull/3468
- [antithesis] Double the duration of sanity checks by @marun in https://github.com/luxfi/node/pull/3475
- Properly initialize metrics in rpcchainVM by @yacovm in https://github.com/luxfi/node/pull/3477
- Cleanup editorconfig by @dhrubabasu in https://github.com/luxfi/node/pull/3473
- Update lux ledger go package by @sukantoraymond in https://github.com/luxfi/node/pull/3456
- [testing] Enable config of log format for bootstrap monitor by @marun in https://github.com/luxfi/node/pull/3467
- cache signatures only in lp118 handler by @ceyonur in https://github.com/luxfi/node/pull/3474
- Introduce and use `database.WithDefault` by @StephenButtolph in https://github.com/luxfi/node/pull/3478
- Evict recentlyAccepted blocks based on wall-clock time by @iansuvak in https://github.com/luxfi/node/pull/3460
- fix improper use of FailNow in testing by @tsachiherman in https://github.com/luxfi/node/pull/3479
- [LP 151] Use current block's P-Chain height as context for verifying state of the inner block by @iansuvak in https://github.com/luxfi/node/pull/3459
- [tmpnet] Add --start-network to support hypersdk MODE=run by @marun in https://github.com/luxfi/node/pull/3465
- [e2e] Check network health after bootstrap checks by @marun in https://github.com/luxfi/node/pull/3466
- LP-77: Add ConversionID to state by @StephenButtolph in https://github.com/luxfi/node/pull/3481
- Make bootstrapping handle its own timeouts by @yacovm in https://github.com/luxfi/node/pull/3410
- Wrap `TestDiffExpiry` sub-tests in `t.Run` by @StephenButtolph in https://github.com/luxfi/node/pull/3483
- Move RPC metrics registration after its client's initialization by @yacovm in https://github.com/luxfi/node/pull/3488
- database: add applicable dbtests for linkeddb by @darioush in https://github.com/luxfi/node/pull/3486
- Add SoV Excess to P-chain state by @StephenButtolph in https://github.com/luxfi/node/pull/3482
- Remove deprecated X-chain pubsub server by @StephenButtolph in https://github.com/luxfi/node/pull/3490
- Update SoV struct to align with latest LP-77 spec by @StephenButtolph in https://github.com/luxfi/node/pull/3492
- Register VM and consensusman metrics after chain creation by @yacovm in https://github.com/luxfi/node/pull/3489
- Skip Flaky Test by @joshua-kim in https://github.com/luxfi/node/pull/3495
- Add request to update `releases.md` in PR template by @ceyonur in https://github.com/luxfi/node/pull/3476
- LP-77: Update P-chain state staker tests by @StephenButtolph in https://github.com/luxfi/node/pull/3494
- LP-77: Write chain public key diffs to state by @StephenButtolph in https://github.com/luxfi/node/pull/3487
- Add `Deregister` to `metrics.MultiGatherer` interface by @StephenButtolph in https://github.com/luxfi/node/pull/3498
- LP-77: Add chainIDNodeID struct by @StephenButtolph in https://github.com/luxfi/node/pull/3499
- Use chain public key diffs after Etna is activated by @StephenButtolph in https://github.com/luxfi/node/pull/3502
- Split `writeCurrentStakers` into multiple functions by @StephenButtolph in https://github.com/luxfi/node/pull/3500
- [tmpnet] Refactor bootstrap monitor kubernetes functions for reuse by @marun in https://github.com/luxfi/node/pull/3446
- Add NumNets to the validator manager interface by @StephenButtolph in https://github.com/luxfi/node/pull/3504
- Clarify partial sync flag by @michaelkaplan13 in https://github.com/luxfi/node/pull/3505
- Update BLST to v0.3.13 by @yacovm in https://github.com/luxfi/node/pull/3506
- Restrict public keys prior to TLS handshake by @yacovm in https://github.com/luxfi/node/pull/3501
- LP-77: Filter the inactive validator from block proposals and tx gossip by @StephenButtolph in https://github.com/luxfi/node/pull/3509
- [testing] Enable bootstrap testing of partial sync by @marun in https://github.com/luxfi/node/pull/3508
- Rename `constantsAreUnmodified` to `immutableFieldsAreUnmodified` by @StephenButtolph in https://github.com/luxfi/node/pull/3513
- Accept info.Peers args by @cam-schultz in https://github.com/luxfi/node/pull/3515
- Return shallow copy of validator set in platformVM's validator manager by @yacovm in https://github.com/luxfi/node/pull/3512
- Add `ValidatorWeightDiff``Add` and `Sub` helpers by @StephenButtolph in https://github.com/luxfi/node/pull/3514
- LP-77: Add caching to SoV DB helpers by @StephenButtolph in https://github.com/luxfi/node/pull/3516
- Add script to configure metrics and log collection from a local node by @marun in https://github.com/luxfi/node/pull/3517
- LP-77: Implement validator state by @StephenButtolph in https://github.com/luxfi/node/pull/3388
- LP-77: Reduce block gossip log level by @StephenButtolph in https://github.com/luxfi/node/pull/3519
- LP-77: Implement ids.ID#Append by @StephenButtolph in https://github.com/luxfi/node/pull/3518
- LP-103: Document and update genesis test fee configs by @StephenButtolph in https://github.com/luxfi/node/pull/3520
- LP-77: Deactivate SoVs without sufficient fees by @StephenButtolph in https://github.com/luxfi/node/pull/3412
- LP-77: Allow legacy validator removal after conversion by @StephenButtolph in https://github.com/luxfi/node/pull/3521
- LP-77: Refactor e2e test by @StephenButtolph in https://github.com/luxfi/node/pull/3522
- LP-77: Update `ConvertNetTx` by @StephenButtolph in https://github.com/luxfi/node/pull/3397
- Remove stutter in P-chain wallet builder by @StephenButtolph in https://github.com/luxfi/node/pull/3524
- Clarify EndAccumulatedFee comment by @michaelkaplan13 in https://github.com/luxfi/node/pull/3523
- [tmpnet] Misc cleanup for monitoring tooling by @marun in https://github.com/luxfi/node/pull/3527
- Remove P-chain txsmock package by @StephenButtolph in https://github.com/luxfi/node/pull/3528
- Unexport all P-Chain visitors by @StephenButtolph in https://github.com/luxfi/node/pull/3525
- Standardize P-Chain tx visitor order by @StephenButtolph in https://github.com/luxfi/node/pull/3529
- LP-77: Implement `RegisterNetValidatorTx` by @StephenButtolph in https://github.com/luxfi/node/pull/3420
- LP-77: Refactor P-Chain configs by @StephenButtolph in https://github.com/luxfi/node/pull/3533
- Add additional BLS benchmarks by @StephenButtolph in https://github.com/luxfi/node/pull/3538
- LP-77: Refactor chain auth verification by @StephenButtolph in https://github.com/luxfi/node/pull/3537
- LP-77: Implement `SetNetValidatorWeightTx` by @StephenButtolph in https://github.com/luxfi/node/pull/3421
- Rename error to be more generic by @StephenButtolph in https://github.com/luxfi/node/pull/3543
- fix getChainIDTag in traced state by @ceyonur in https://github.com/luxfi/node/pull/3542
- Add `platform.getNetOnlyValidator` API by @StephenButtolph in https://github.com/luxfi/node/pull/3540
- Add SoV deactivation owner support to the P-chain wallet by @StephenButtolph in https://github.com/luxfi/node/pull/3541
- LP-77: Implement Warp message verification by @StephenButtolph in https://github.com/luxfi/node/pull/3423
- LP-77: Current validators API for SoV by @ceyonur in https://github.com/luxfi/node/pull/3404
- LP-77: Implement Warp message signing by @StephenButtolph in https://github.com/luxfi/node/pull/3428
- LP-77: Implement IncreaseBalanceTx by @StephenButtolph in https://github.com/luxfi/node/pull/3429
- LP-77: Implement DisableNetValidatorTx by @StephenButtolph in https://github.com/luxfi/node/pull/3440
- Improve P-Chain error messages by @StephenButtolph in https://github.com/luxfi/node/pull/3536
- Add Etna logging by @StephenButtolph in https://github.com/luxfi/node/pull/3454
- Add Etna P-chain metrics by @StephenButtolph in https://github.com/luxfi/node/pull/3458
- Clarify benched field by @samliok in https://github.com/luxfi/node/pull/3545
- [tmpnet] Watch for and report FATAL log entries on node startup by @marun in https://github.com/luxfi/node/pull/3535
- Allow non primary network validators to request all peers by @cam-schultz in https://github.com/luxfi/node/pull/3491
- Add `platform.getProposedHeight` API by @iansuvak in https://github.com/luxfi/node/pull/3530
- Follow LP-77 naming conventions by @michaelkaplan13 in https://github.com/luxfi/node/pull/3546
- LP-103: Finalize complexity calculations by @StephenButtolph in https://github.com/luxfi/node/pull/3548
- LP-103: Finalize parameterization by @StephenButtolph in https://github.com/luxfi/node/pull/3549
- Add "proposed" optional flag to `getValidatorsAt` by @iansuvak in https://github.com/luxfi/node/pull/3531
- Fix json parsing of GetValidatorsAtArgs by @iansuvak in https://github.com/luxfi/node/pull/3551
### New Contributors
-@sukantoraymond made their first contribution in https://github.com/luxfi/node/pull/3456
-@samliok made their first contribution in https://github.com/luxfi/node/pull/3545
This version is backwards compatible to [v1.11.0](https://github.com/luxfi/node/releases/tag/v1.11.0). It is optional, but encouraged.
The plugin version is updated to `36` all plugins must update to be compatible.
### APIs
- Renamed `lux_{vmName}_plugin_.*` metrics to `lux_{vmName}_.*`
- Renamed `lux_{vmName}_rpcchainvm_.*` metrics to `lux_rpcchainvm_.*`
### Fixes
- Updated local network validator start times
- Fixed block building timer recalculation when anyone can propose
### What's Changed
- Refactor rpcchainvm metrics registration by @StephenButtolph in https://github.com/luxfi/node/pull/3170
- Add example reward calculator usage by @StephenButtolph in https://github.com/luxfi/node/pull/3171
- Send AppErrors from p2p SDK by @joshua-kim in https://github.com/luxfi/node/pull/2753
- build(tests): require `//go:build test` tag if importing test packages outside of `_test.go` files by @ARR4N in https://github.com/luxfi/node/pull/3173
- Include VM path in plugin version error by @StephenButtolph in https://github.com/luxfi/node/pull/3178
- [ci] Simplify ci monitoring with custom actions by @marun in https://github.com/luxfi/node/pull/3161
- [vms/xvm] Replace `strings.Replace` with `fmt.Sprintf` in tests by @dhrubabasu in https://github.com/luxfi/node/pull/3177
- Changes to support teleporter e2e tests by @feuGeneA in https://github.com/luxfi/node/pull/3179
- Reduce usage of `getBlock` in consensus by @StephenButtolph in https://github.com/luxfi/node/pull/3151
- [ci] Enable run-monitored-tmpnet-cmd reuse by other repos by @marun in https://github.com/luxfi/node/pull/3186
- Restructured fee calculator API by @abi87 in https://github.com/luxfi/node/pull/3145
- P-Chain: Block-level fee Calculator by @abi87 in https://github.com/luxfi/node/pull/3032
- [ci] Allow antithesis test setups to be triggered independently by @marun in https://github.com/luxfi/node/pull/3183
- [antithesis] Fix image version separator in triggering workflows by @marun in https://github.com/luxfi/node/pull/3191
- Remove `block.Status` by @StephenButtolph in https://github.com/luxfi/node/pull/3158
- [antithesis] Refactor compose config generation to simplify reuse by @marun in https://github.com/luxfi/node/pull/3184
- [antithesis] Add schedule for workflows by @marun in https://github.com/luxfi/node/pull/3192
- Update `golangci-lint` to `v1.59.1` by @dhrubabasu in https://github.com/luxfi/node/pull/3195
- [ci] Ensure monitoring action compatibility for other repos by @marun in https://github.com/luxfi/node/pull/3193
- chore: fix some comments for struct field by @linghuying in https://github.com/luxfi/node/pull/3194
- [antithesis] Configure workload history by @marun in https://github.com/luxfi/node/pull/3196
- [vms/proposervm] Set build block time correctly when anyone can propose by @dhrubabasu in https://github.com/luxfi/node/pull/3197
- chore: fix comment by @polymaer in https://github.com/luxfi/node/pull/3201
- Make math.Add64 and math.Mul64 generic by @StephenButtolph in https://github.com/luxfi/node/pull/3205
- Implement LP-103 fee package by @StephenButtolph in https://github.com/luxfi/node/pull/3203
- [antithesis] Fix job duration by @marun in https://github.com/luxfi/node/pull/3206
- [vms/platformvm] `RegisterDUnsignedTxsTypes` -> `RegisterDurangoUnsignedTxsTypes` by @dhrubabasu in https://github.com/luxfi/node/pull/3212
- chore: fix some comments by @yingshanghuangqiao in https://github.com/luxfi/node/pull/3213
- Fix typos by @omahs in https://github.com/luxfi/node/pull/3208
- Cleanup fee.staticCalculator by @StephenButtolph in https://github.com/luxfi/node/pull/3210
- typo by @meaghanfitzgerald in https://github.com/luxfi/node/pull/3220
- add getNet to p-chain api reference by @felipemadero in https://github.com/luxfi/node/pull/3204
- [ci] Update fuzz workflows to target master branch by @marun in https://github.com/luxfi/node/pull/3221
- Cleanup wallet tests by @StephenButtolph in https://github.com/luxfi/node/pull/3230
- Update local validator start time by @ceyonur in https://github.com/luxfi/node/pull/3224
### New Contributors
-@feuGeneA made their first contribution in https://github.com/luxfi/node/pull/3179
-@linghuying made their first contribution in https://github.com/luxfi/node/pull/3194
-@polymaer made their first contribution in https://github.com/luxfi/node/pull/3201
-@yingshanghuangqiao made their first contribution in https://github.com/luxfi/node/pull/3213
-@omahs made their first contribution in https://github.com/luxfi/node/pull/3208
This version is backwards compatible to [v1.11.0](https://github.com/luxfi/node/releases/tag/v1.11.0). It is optional, but encouraged.
The plugin version is unchanged at `35` and is compatible with versions `v1.11.3-v1.11.5`.
### APIs
- Updated cache metrics:
-`*_cache_put_sum` was replaced with `*_cache_put_time`
-`*_cache_get_sum` was replaced with `*_cache_get_time`
-`*_cache_hit` and `*_cache_miss` were removed and `*_cache_get_count` added a `result` label
- Updated db metrics:
-`*_db_{method}_count` were replaced with `*_db_calls` with a `method` label
-`*_db_{method}_sum` were replaced with `*_db_duration` with a `method` label
-`*_db_{method}_size_count` were deleted
-`*_db_{method}_size_sum` were replaced with `*_db_size` with a `method` label
- Updated p2p message compression metrics:
-`lux_network_codec_{type}_{op}_{direction}_time_count` were replaced with `lux_network_codec_compressed_count` with `direction`, `op`, and `type` labels
- Updated p2p message metrics:
-`lux_network_{op}_{io}` were replaced with `lux_network_msgs` with `compressed:"false"`, `io`, and `op` labels
-`lux_network_{op}_{io}_bytes` were replaced with `lux_network_msgs_bytes` with `io` and `op` labels
-`lux_network_{op}_compression_saved_{io}_bytes_sum` were replaced with `lux_network_msgs_bytes_saved` with `io` and `op` labels
-`lux_network_{op}_compression_saved_{io}_bytes_count` were replaced with `lux_network_msgs` with `compressed:"true"`, `io`, and `op` labels
-`lux_network_{op}_failed` were replaced with `lux_network_msgs_failed_to_send` with an `op` label
- Updated p2p sdk message metrics:
-`*_p2p_{op}_count` were replaced with `*_p2p_msg_count` with an `op` label
-`*_p2p_{op}_time` were replaced with `*_p2p_msg_time` with an `op` label
- Updated consensus message queue metrics:
-`lux_{chainID}_handler_unprocessed_msgs_{op}` were replaced with `lux_{chainID}_handler_unprocessed_msgs_count` with an `op` label
-`lux_{chainID}_handler_async_unprocessed_msgs_{op}` were replaced with `lux_{chainID}_handler_unprocessed_msgs_count` with an `op` label
- Updated consensus handler metrics:
-`lux_{chainID}_handler_{op}_count` were replaced with `lux_{chainID}_handler_messages` with an `op` label
-`lux_{chainID}_handler_{op}_msg_handling_count` was deleted
-`lux_{chainID}_handler_{op}_msg_handling_sum` were replaced with `lux_{chainID}_handler_message_handling_time` with an `op` label
-`lux_{chainID}_handler_{op}_sum` were replaced with `lux_{chainID}_handler_locking_time`
- Updated consensus sender metrics:
-`lux_{chainID}_{op}_failed_benched` were replaced with `lux_{chainID}_failed_benched` with an `op` label
- Updated consensus latency metrics:
-`lux_{chainID}_lat_{op}_count` were replaced with `lux_{chainID}_response_messages` with an `op` label
-`lux_{chainID}_lat_{op}_sum` were replaced with `lux_{chainID}_response_message_latencies` with an `op` label
- Updated X-chain metrics:
-`lux_X_vm_lux_{tx}_txs_accepted` were replaced with `lux_X_vm_lux_txs_accepted` with a `tx` label
- Updated P-chain metrics:
-`lux_P_vm_{tx}_txs_accepted` were replaced with `lux_P_vm_txs_accepted` with a `tx` label
-`lux_P_vm_{blk}_blks_accepted` were replaced with `lux_P_vm_blks_accepted` with a `blk` label
### Fixes
- Fixed performance regression while executing blocks in bootstrapping
- Fixed peer connection tracking in the P-chain and C-chain to re-enable tx pull gossip
- Fixed C-chain deadlock while executing blocks in bootstrapping after aborting state sync
- Fixed negative ETA while fetching blocks after aborting state sync
- Fixed C-chain snapshot initialization after state sync
- Fixed panic when running node in environments with an incorrectly implemented monotonic clock
- Fixed memory corruption when accessing keys and values from released pebbledb iterators
- Fixed prefixdb compaction when specifying a `nil` limit
### What's Changed
- Consolidate record poll by @aaronbuchwald in https://github.com/luxfi/node/pull/2970
- Update metercacher to use vectors by @StephenButtolph in https://github.com/luxfi/node/pull/2979
- Reduce p2p sdk metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2980
- Use vectors in message queue metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2985
- Use vectors for p2p message metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2983
- Simplify gossip metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2984
- Use vectors for message handler metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2987
- Use vector in message sender by @StephenButtolph in https://github.com/luxfi/node/pull/2988
- Simplify go version maintenance by @marun in https://github.com/luxfi/node/pull/2977
- Use vector for router latency metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2989
- Use vectors for accepted tx and block metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2990
- fix: version application error by @jujube in https://github.com/luxfi/node/pull/2995
- Chore: fix some typos. by @hattizai in https://github.com/luxfi/node/pull/2993
- Cleanup meterdb metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2991
- Cleanup compression metrics by @StephenButtolph in https://github.com/luxfi/node/pull/2992
- Fix antithesis image publication by @marun in https://github.com/luxfi/node/pull/2998
- Remove unused `Metadata` struct by @dhrubabasu in https://github.com/luxfi/node/pull/3001
- prefixdb: fix bug with Compact nil limit by @a1k0n in https://github.com/luxfi/node/pull/3000
- Update go version to 1.21.10 by @marun in https://github.com/luxfi/node/pull/3004
- vms/txs/mempool: unify xvm and platformvm mempool implementations by @lebdron in https://github.com/luxfi/node/pull/2994
- Use gauges for time metrics by @StephenButtolph in https://github.com/luxfi/node/pull/3009
- Chore: fix typos. by @cocoyeal in https://github.com/luxfi/node/pull/3010
- [antithesis] Refactor existing job to support xsvm test setup by @marun in https://github.com/luxfi/node/pull/2976
- chore: fix some function names by @cartnavoy in https://github.com/luxfi/node/pull/3015
- Mark nodes as connected to the P-chain networking stack by @StephenButtolph in https://github.com/luxfi/node/pull/2981
- [antithesis] Ensure images with a prefix are pushed by @marun in https://github.com/luxfi/node/pull/3016
- boostrapper: compact blocks before iterating them by @a1k0n in https://github.com/luxfi/node/pull/2997
- Remove pre-Durango networking checks by @StephenButtolph in https://github.com/luxfi/node/pull/3018
- Repackaged upgrades times into upgrade package by @abi87 in https://github.com/luxfi/node/pull/3019
- Standardize peer logs by @StephenButtolph in https://github.com/luxfi/node/pull/3017
- Fix pebbledb memory corruption by @StephenButtolph in https://github.com/luxfi/node/pull/3020
- [vms/xvm] fix linter error in benchmark : Use of weak random number generator by @tsachiherman in https://github.com/luxfi/node/pull/3023
- Simplify sampler interface by @StephenButtolph in https://github.com/luxfi/node/pull/3026
- [build] Update linter version by @tsachiherman in https://github.com/luxfi/node/pull/3024
- fix broken link. by @cocoyeal in https://github.com/luxfi/node/pull/3028
-`gossipping` -> `gossiping` by @dhrubabasu in https://github.com/luxfi/node/pull/3033
- [tmpnet] Ensure tmpnet compatibility with windows by @marun in https://github.com/luxfi/node/pull/3002
- Fix negative ETA caused by rollback in vm.SetState by @StephenButtolph in https://github.com/luxfi/node/pull/3036
- [tmpnet] Enable single node networks by @marun in https://github.com/luxfi/node/pull/3003
- P-chain - introducing fees calculators by @abi87 in https://github.com/luxfi/node/pull/2698
- Change default staking key from RSA 4096 to secp256r1 by @StephenButtolph in https://github.com/luxfi/node/pull/3025
- Fix LP links by @dhrubabasu in https://github.com/luxfi/node/pull/3037
- Prevent unnecessary bandwidth from activated LPs by @dhrubabasu in https://github.com/luxfi/node/pull/3031
- [antithesis] Add test setup for xsvm by @marun in https://github.com/luxfi/node/pull/2982
- [antithesis] Ensure node image is pushed by @marun in https://github.com/luxfi/node/pull/3042
- Cleanup fee config passing by @StephenButtolph in https://github.com/luxfi/node/pull/3043
- Fix typo fix by @StephenButtolph in https://github.com/luxfi/node/pull/3044
- Grab iterator at previously executed height by @StephenButtolph in https://github.com/luxfi/node/pull/3045
- Verify signatures during Parse by @StephenButtolph in https://github.com/luxfi/node/pull/3046
### New Contributors
-@jujube made their first contribution in https://github.com/luxfi/node/pull/2995
-@hattizai made their first contribution in https://github.com/luxfi/node/pull/2993
-@a1k0n made their first contribution in https://github.com/luxfi/node/pull/3000
-@lebdron made their first contribution in https://github.com/luxfi/node/pull/2994
-@cocoyeal made their first contribution in https://github.com/luxfi/node/pull/3010
-@cartnavoy made their first contribution in https://github.com/luxfi/node/pull/3015
-@tsachiherman made their first contribution in https://github.com/luxfi/node/pull/3023
This version is backwards compatible to [v1.10.0](https://github.com/luxfi/node/releases/tag/v1.10.0). It is optional, but encouraged.
The plugin version is unchanged at `27` and compatible with versions `v1.10.5 - v1.10.7`.
**This update changes the local network genesis. This version will not be able to join local networks with prior versions.**
**The first startup of the P-Chain will perform indexing operations. This indexing runs in the background and does not impact restart time. During this indexing the node will report increased CPU, memory, and disk usage.**
### APIs
- Added `platform.getBlockByHeight`
### Configs
- Added `--partial-sync-primary-network` flag to enable non-validators to optionally sync only the P-chain on the primary network
This version is backwards compatible to [v1.10.0](https://github.com/luxfi/node/releases/tag/v1.10.0). This release contains meaningful performance improvements and we recommend updating as soon as possible.
The plugin version is unchanged at `27` and compatible with versions `v1.10.5 - v1.10.6`.
### APIs
- Modified `platform.getValidatorsAt` to also return BLS public keys
- Change the default value of `--network-allow-private-ips` to `false` for `mainnet` and `testnet` by @StephenButtolph in https://github.com/luxfi/node/pull/1773
This version is backwards compatible to [v1.10.0](https://github.com/luxfi/node/releases/tag/v1.10.0). It is optional, but encouraged.
The plugin version is updated to `27` all plugins must update to be compatible.
**The first startup of the X-Chain will perform an indexing operation. This indexing runs in the background and does not impact restart time.**
### APIs
- Added `lux_network_clock_skew_sum` metric
- Added `lux_network_clock_skew_count` metric
### Configs
- Added `--tracing-headers` to allow specifying headers to the tracing indexer
### Fixes
- Fixed API handler crash for `lookupState` in `prestate` tracer
- Fixed API handler crash for LOG edge cases in the `callTracer`
### What's Changed
- stop persisting rejected blocks on P-chain by @dhrubabasu in https://github.com/luxfi/node/pull/1696
- Ensure scripts/lint.sh failure when used with incompatible grep by @marun in https://github.com/luxfi/node/pull/1711
- sum peers clock skew into metric by @najeal in https://github.com/luxfi/node/pull/1695
- Make XVM implement `block.HeightIndexedChainVM` by @dhrubabasu in https://github.com/luxfi/node/pull/1699
- ProposerVM nits by @abi87 in https://github.com/luxfi/node/pull/1688
- Sorting -- Remove old `IsSortedAndUnique`, rename `IsSortedAndUniqueSortable` to `IsSortedAndUnique` by @danlaine in https://github.com/luxfi/node/pull/1666
- Update consensus consensus doc post X-chain linearization by @exdx in https://github.com/luxfi/node/pull/1703
-`merkledb` / `sync` -- remove TODOs by @danlaine in https://github.com/luxfi/node/pull/1718
- remove cache TODOs by @danlaine in https://github.com/luxfi/node/pull/1721
- Adjust `NewSizedCache` to take in a size function by @dhrubabasu in https://github.com/luxfi/node/pull/1725
- Wallet issuance to return tx instead of tx id by @felipemadero in https://github.com/luxfi/node/pull/1704
- Add support for providing tracing headers by @StephenButtolph in https://github.com/luxfi/node/pull/1727
- Only return accepted blocks in `GetStatelessBlock` by @dhrubabasu in https://github.com/luxfi/node/pull/1724
- Proposermv fix goroutine leaks by @abi87 in https://github.com/luxfi/node/pull/1713
- Update warp msg format by @aaronbuchwald in https://github.com/luxfi/node/pull/1686
- Cleanup anr scripts by @ceyonur in https://github.com/luxfi/node/pull/1714
- remove TrackBandwidth from NetworkClient by @danlaine in https://github.com/luxfi/node/pull/1716
- Bump network start timeout by @marun in https://github.com/luxfi/node/pull/1730
- e2e: Ensure e2e.test is built with portable BLST by @marun in https://github.com/luxfi/node/pull/1734
- e2e: Increase all ANR timeouts to 2m to ensure CI reliability. by @marun in https://github.com/luxfi/node/pull/1733
### New Contributors
-@exdx made their first contribution in https://github.com/luxfi/node/pull/1703
This version is backwards compatible to [v1.10.0](https://github.com/luxfi/node/releases/tag/v1.10.0). It is optional, but encouraged. The supported plugin version is `26`.
**Users must specify the `--allowed-hosts-flag` to receive inbound API traffic from non-local hosts.**
- Removed `minPercentConnectedStakeHealthy` from the chain config
### Fixes
- Fixed `platformvm.GetValidatorSet` returning incorrect BLS public keys
- Fixed IPv6 literal binding with `--http-host`
- Fixed P2P message log format
### What's Changed
-`x/sync` -- Add proto for P2P messages in https://github.com/luxfi/node/pull/1472
- Bump Protobuf and tooling and add section to proto docs outlining buf publishing by @hexfusion in https://github.com/luxfi/node/pull/1552
- Minor pchain UTs cleanup by @abi87 in https://github.com/luxfi/node/pull/1554
- Add ping uptimes test by @ceyonur in https://github.com/luxfi/node/pull/1550
- Add workflow to mark stale issues and PRs by @joshua-kim in https://github.com/luxfi/node/pull/1443
- Enforce inlining functions with a single error return in `require.NoError` by @dhrubabasu in https://github.com/luxfi/node/pull/1500
-`x/sync` / `x/merkledb` -- add `SyncableDB` interface by @danlaine in https://github.com/luxfi/node/pull/1555
- Rename beacon to boostrapper, define bootstrappers in JSON file for cross-language compatibility by @gyuho in https://github.com/luxfi/node/pull/1439
- add P-chain height indexing by @dhrubabasu in https://github.com/luxfi/node/pull/1447
- Add P-chain `GetBlockByHeight` API method by @dhrubabasu in https://github.com/luxfi/node/pull/1448
-`x/sync` -- use for sending Range Proofs by @danlaine in https://github.com/luxfi/node/pull/1537
- Add test to ensure that database packing produces sorted values by @StephenButtolph in https://github.com/luxfi/node/pull/1560
- Randomize unit test execution order to identify unwanted dependency by @marun in https://github.com/luxfi/node/pull/1565
- use `http.Error` instead of separately writing error code and message by @danlaine in https://github.com/luxfi/node/pull/1564
- Adding allowed http hosts flag by @joshua-kim in https://github.com/luxfi/node/pull/1566
-`x/sync` -- Use proto for sending Change Proofs by @danlaine in https://github.com/luxfi/node/pull/1541
- Only send `PushQuery` messages after building the block by @joshua-kim in https://github.com/luxfi/node/pull/1428
- Rename APIAllowedOrigins to HTTPAllowedOrigins by @joshua-kim in https://github.com/luxfi/node/pull/1567
- Add GetBalance examples for the P-chain and X-chain wallets by @StephenButtolph in https://github.com/luxfi/node/pull/1569
- Reduce number of test iterations by @danlaine in https://github.com/luxfi/node/pull/1568
- Re-add upgrade tests by @StephenButtolph in https://github.com/luxfi/node/pull/1410
- Remove lists from Chits messages by @StephenButtolph in https://github.com/luxfi/node/pull/1412
- Add more X-chain tests by @coffeelux in https://github.com/luxfi/node/pull/1487
- fix typo by @meaghanfitzgerald in https://github.com/luxfi/node/pull/1570
- Reduce the number of test health checks by @StephenButtolph in https://github.com/luxfi/node/pull/1571
- Fix proposervm.GetAncestors test flake by @StephenButtolph in https://github.com/luxfi/node/pull/1572
- Remove list from AcceptedFrontier message by @StephenButtolph in https://github.com/luxfi/node/pull/1578
- Remove version db from merkle db in https://github.com/luxfi/node/pull/1534
-`MerkleDB` -- add eviction batch size config by @danlaine in https://github.com/luxfi/node/pull/1586
-`MerkleDB` -- fix `onEvictCache.Flush` by @danlaine in https://github.com/luxfi/node/pull/1589
- Revert P-Chain height index by @StephenButtolph in https://github.com/luxfi/node/pull/1591
-`x/sync` -- Add `SyncableDB` proto by @danlaine in https://github.com/luxfi/node/pull/1559
- Clarify break on error during ancestors lookup by @hexfusion in https://github.com/luxfi/node/pull/1580
- Add buf-push github workflow by @hexfusion in https://github.com/luxfi/node/pull/1556
- Pchain bls key diff fix by @abi87 in https://github.com/luxfi/node/pull/1584
- Cleanup fx interface compliance by @StephenButtolph in https://github.com/luxfi/node/pull/1599
- Improve metrics error msging by @anusha-ctrl in https://github.com/luxfi/node/pull/1598
- Separate health checks by tags by @StephenButtolph in https://github.com/luxfi/node/pull/1579
- Separate chain stake connected health and metrics from P-chain by @ceyonur in https://github.com/luxfi/node/pull/1358
- Merkle db iterator in https://github.com/luxfi/node/pull/1533
- Fix unreadable message errors by @morrisettjohn in https://github.com/luxfi/node/pull/1585
- Log unexpected errors during GetValidatorSet by @hexfusion in https://github.com/luxfi/node/pull/1592
-`merkleDB` -- add inner heap type to syncWorkHeap by @danlaine in https://github.com/luxfi/node/pull/1582
-`sync` -- explain algorithm in readme by @danlaine in https://github.com/luxfi/node/pull/1600
- Rename license header file to avoid unintended license indexing by @StephenButtolph in https://github.com/luxfi/node/pull/1608
-`merkledb` and `sync` -- use time based rand seed by @danlaine in https://github.com/luxfi/node/pull/1607
- add `local-prefixes` setting for `goimports` by @dhrubabasu in https://github.com/luxfi/node/pull/1612
- consensus/engine/consensusman: instantiate voter after issuer by @gyuho in https://github.com/luxfi/node/pull/1610
- Update CodeQL to v2 by @StephenButtolph in https://github.com/luxfi/node/pull/1616
- Remove old networking metric by @StephenButtolph in https://github.com/luxfi/node/pull/1619
- Fix --http-host flag to support IPv6 by @StephenButtolph in https://github.com/luxfi/node/pull/1620
### New Contributors
-@marun made their first contribution in https://github.com/luxfi/node/pull/1565
-@meaghanfitzgerald made their first contribution in https://github.com/luxfi/node/pull/1570
-@anusha-ctrl made their first contribution in https://github.com/luxfi/node/pull/1598
-@morrisettjohn made their first contribution in https://github.com/luxfi/node/pull/1585
This version is backwards compatible to [v1.10.0](https://github.com/luxfi/node/releases/tag/v1.10.0). It is optional, but encouraged. The supported plugin version is `26`.
### APIs
- Significantly improved the performance of `platform.getStake`
- Added `portion_filled` metric for all metered caches
- Added resource metrics by process
-`lux_system_resources_num_cpu_cycles`
-`lux_system_resources_num_disk_read_bytes`
-`lux_system_resources_num_disk_reads`
-`lux_system_resources_num_disk_write_bytes`
-`lux_system_resources_num_disk_writes`
### Configs
- Deprecated `--genesis` in favor of `--genesis-file`
- Deprecated `--genesis-content` in favor of `--genesis-file-content`
- Deprecated `--inbound-connection-throttling-cooldown` in favor of `--network-inbound-connection-throttling-cooldown`
- Deprecated `--inbound-connection-throttling-max-conns-per-sec` in favor of `--network-inbound-connection-throttling-max-conns-per-sec`
- Deprecated `--outbound-connection-throttling-rps` in favor of `--network-outbound-connection-throttling-rps`
- Deprecated `--outbound-connection-timeout` in favor of `--network-outbound-connection-timeout`
- Deprecated `--staking-enabled` in favor of `--sybil-protection-enabled`
- Deprecated `--staking-disabled-weight` in favor of `--sybil-protection-disabled-weight`
- Deprecated `--consensus-gossip-frequency` in favor of `--consensus-accepted-frontier-gossip-frequency`
### Fixes
- Fixed `--network-compression-type` to correctly honor the requested compression type, rather than always using gzip
- Fixed CPU metrics on macos
### What's Changed
- use `require` library functions in tests by @dhrubabasu in https://github.com/luxfi/node/pull/1451
- style nits in vm clients by @dhrubabasu in https://github.com/luxfi/node/pull/1449
- utils/logging: add "Enabled" method to remove redundant verbo logs by @gyuho in https://github.com/luxfi/node/pull/1461
- ban `require.EqualValues` by @dhrubabasu in https://github.com/luxfi/node/pull/1457
- chains: do not hold write chainsLock in health checks by @gyuho in https://github.com/luxfi/node/pull/1460
- remove zstd check by @dhrubabasu in https://github.com/luxfi/node/pull/1459
- use `require.IsType` for type assertions in tests by @dhrubabasu in https://github.com/luxfi/node/pull/1458
- vms/platformvm/service: nits (preallocate address slice, error msg) by @gyuho in https://github.com/luxfi/node/pull/1477
- ban `require.NotEqualValues` by @dhrubabasu in https://github.com/luxfi/node/pull/1470
- use `require` in `api` and `utils/password` packages by @dhrubabasu in https://github.com/luxfi/node/pull/1471
- use "golang.org/x/term" as "golang.org/x/crypto/ssh/terminal" is deprecated by @gyuho in https://github.com/luxfi/node/pull/1464
- chains: move "msgChan" closer to the first use (readability) by @gyuho in https://github.com/luxfi/node/pull/1484
- ban function params for `require.ErrorIs` by @dhrubabasu in https://github.com/luxfi/node/pull/1486
- standardize imports by @dhrubabasu in https://github.com/luxfi/node/pull/1466
- fix license header test by @dhrubabasu in https://github.com/luxfi/node/pull/1492
- use blank identifier for interface compliance by @dhrubabasu in https://github.com/luxfi/node/pull/1493
- codec: remove "SetMaxSize" from "Manager", remove unnecessary lock by @gyuho in https://github.com/luxfi/node/pull/1481
- config: disallow "ThrottlerConfig.MaxRecheckDelay" < 1 ms by @gyuho in https://github.com/luxfi/node/pull/1435
- ban `require.Equal` when testing for `0` by @dhrubabasu in https://github.com/luxfi/node/pull/1495
- Clean up MerkleDVB Sync Close lock in https://github.com/luxfi/node/pull/1469
- MerkleDB Cleanup in https://github.com/luxfi/node/pull/1465
- Remove comment referencing old IP based tracking by @StephenButtolph in https://github.com/luxfi/node/pull/1509
- ban usage of `require.Len` when testing for length `0` by @dhrubabasu in https://github.com/luxfi/node/pull/1496
- ban usage of `require.Equal` when testing for length by @dhrubabasu in https://github.com/luxfi/node/pull/1497
- ban usage of `nil` in require functions by @dhrubabasu in https://github.com/luxfi/node/pull/1498
- Sized LRU cache by @abi87 in https://github.com/luxfi/node/pull/1517
- engine/consensusman: clean up some comments in "bubbleVotes" unit tests by @gyuho in https://github.com/luxfi/node/pull/1444
- consensus/networking/sender: add missing verbo check by @gyuho in https://github.com/luxfi/node/pull/1504
- Delete duplicate test var definitions by @StephenButtolph in https://github.com/luxfi/node/pull/1518
- utils/bag: print generic type for bag elements by @gyuho in https://github.com/luxfi/node/pull/1507
- Fix incorrect test refactor by @abi87 in https://github.com/luxfi/node/pull/1526
- Pchain validators repackaging by @abi87 in https://github.com/luxfi/node/pull/1284
- Config overhaul by @ceyonur in https://github.com/luxfi/node/pull/1370
- rename enabled staking to sybil protection enabled by @ceyonur in https://github.com/luxfi/node/pull/1441
- Fix network compression type flag usage by @StephenButtolph in https://github.com/luxfi/node/pull/1532
- Deprecate uptimes in pong message by @ceyonur in https://github.com/luxfi/node/pull/1362
- Add CPU cycles and number of disk read/write metrics by pid by @coffeelux in https://github.com/luxfi/node/pull/1334
- Fetch process resource stats as best-effort by @StephenButtolph in https://github.com/luxfi/node/pull/1543
- Add serialization tests for transactions added in Banff by @StephenButtolph in https://github.com/luxfi/node/pull/1513
- Log chain shutdown duration by @StephenButtolph in https://github.com/luxfi/node/pull/1545
- add interface for MerkleDB by @danlaine in https://github.com/luxfi/node/pull/1519
### New Contributors
-@gyuho made their first contribution in https://github.com/luxfi/node/pull/1461
-@coffeelux made their first contribution in https://github.com/luxfi/node/pull/1334
This version is backwards compatible to [v1.10.0](https://github.com/luxfi/node/releases/tag/v1.10.0). It is optional, but encouraged. The supported plugin version is `26`.
### APIs
- Enabled `xvm.getBlockByHeight` to take in `height` as a string
- Added IDs to json formats
-`platform.getTx` now includes `id` in the `tx` response
-`platform.getBlock` now includes `id` in the `block` response and in the internal `tx` fields
-`xvm.getTx` now includes `id` in the `tx` response
-`xvm.getBlock` now includes `id` in the `block` response and in the internal `tx` fields
-`xvm.getBlockByHeight` now includes `id` in the `block` response and in the internal `tx` fields
- Removed `xvm.issueStopVertex`
- Fixed `wallet` methods to correctly allow issuance of dependent transactions after the X-chain linearization
- Added `validatorOnly` flag in `platform.getStake`
- Removed all lux consensus metrics
- Fixed `msgHandlingTime` metrics
### Configs
- Removed `--consensus-lux-num-parents`
- Removed `--consensus-lux-batch-size`
### Fixes
- Fixed panic when restarting partially completed X-chain consensusman bootstrapping
- Fixed `--network-allow-private-ips` handling to correctly prevent outbound connections to private IP ranges
- Fixed UniformSampler to support sampling numbers between MaxInt64 and MaxUint64
- Fixed data race in txID access during transaction gossip in the XVM
### What's Changed
- Add benchmark for gRPC GetValidatorSet by @hexfusion in https://github.com/luxfi/node/pull/1326
- Add checks for database being closed in merkledb; other nits by @danlaine in https://github.com/luxfi/node/pull/1333
- Update linkedhashmap to only Rlock when possible in https://github.com/luxfi/node/pull/1329
- Remove no-op changes from history results in https://github.com/luxfi/node/pull/1335
- Cleanup type assertions in the linkedHashmap by @StephenButtolph in https://github.com/luxfi/node/pull/1341
- Fix racy xvm tx access by @StephenButtolph in https://github.com/luxfi/node/pull/1349
[This upgrade](https://medium.com/luxlux/cortina-x-chain-linearization-a1d9305553f6) linearizes the X-chain, introduces delegation batching to the P-chain, and increases the maximum block size on the C-chain.
The changes in the upgrade go into effect at 11 AM ET, April 25th 2023 on Mainnet.
**All Mainnet nodes should upgrade before 11 AM ET, April 25th 2023.**
The supported plugin version is `25`.
### What's Changed
- Add CODEOWNERS for the x/ package by @StephenButtolph in https://github.com/luxfi/node/pull/1260
- Feature Spec Template by @richardpringle in https://github.com/luxfi/node/pull/1258
- Standardize CI triggers by @StephenButtolph in https://github.com/luxfi/node/pull/1265
- special case no sent/received message in network health check by @ceyonur in https://github.com/luxfi/node/pull/1263
- Fix bug template by @StephenButtolph in https://github.com/luxfi/node/pull/1268
- Replace `flags` usage with `pflags` by @danlaine in https://github.com/luxfi/node/pull/1270
- Fixed grammatical errors in `README.md` by @krakxn in https://github.com/luxfi/node/pull/1102
- Add tests for race conditions in merkledb by @kyl27 in https://github.com/luxfi/node/pull/1256
- Add P-chain indexer API example by @StephenButtolph in https://github.com/luxfi/node/pull/1271
- use `require` in `consensus/choices` tests by @dhrubabasu in https://github.com/luxfi/node/pull/1279
- use `require` in `utils/wrappers` tests by @dhrubabasu in https://github.com/luxfi/node/pull/1280
- add support for tracking delegatee rewards to validator metadata by @dhrubabasu in https://github.com/luxfi/node/pull/1273
- defer delegatee rewards until end of validator staking period by @dhrubabasu in https://github.com/luxfi/node/pull/1262
- Initialize UptimeCalculator in TestPeer by @joshua-kim in https://github.com/luxfi/node/pull/1283
- Add Lux liveness health checks by @StephenButtolph in https://github.com/luxfi/node/pull/1287
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
- Removed unnecessary repoll after rejecting vertices
- Improved consensusstorm lookup error handling
- Removed rejected vertices from the Lux frontier more aggressively
- Reduced default health check values for processing decisions
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
- Fixed `x/merkledb.ChangeProof#getLargestKey` to correctly handle no changes
- Added test for `xvm/txs/executor.SemanticVerifier#verifyFxUsage` with multiple valid fxs
- Fixed CPU + bandwidth performance regression during vertex processing
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
### Networking
- Removed linger setting on P2P connections
- Improved error message when failing to calculate peer uptimes
- Removed `EngineType` from P2P response messages
- Added context cancellation during dynamic IP updates
- Reduced the maximum P2P reconnect delay from 1 hour to 1 minute
### Consensus
- Added support to switch from `Lux` consensus to `Consensusman` consensus
- Added support for routing consensus messages to either `Lux` or `Consensusman` consensus on the same chain
- Removed usage of deferred evaluation of the `handler.Consensus` in the `Lux``OnFinished` callback
- Dropped inbound `Lux` consensus messages after switching to `Consensusman` consensus
- Renamed the `Lux` VM metrics prefix from `lux_{chainID}_vm_` to `lux_{chainID}_vm_lux`
- Replaced `consensus` and `decision` dispatchers with `block`, `tx`, and `vertex` dispatchers
- Removed `Lux` bootstrapping restarts during the switch to `Consensusman` consensus
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
### Plugins
- Removed error from `logging.NoLog#Write`
- Added logging to the static VM factory usage
- Fixed incorrect error being returned from `subprocess.Bootstrap`
### Ledger
- Added ledger tx parsing support
### MerkleDB
- Added explicit consistency guarantees when committing multiple `merkledb.trieView`s to disk at once
- Removed reliance on premature root calculations for `merkledb.trieView` validity tracking
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `24`.
### MerkleDB
- Removed parent tracking from `merkledb.trieView`
- Removed `base` caches from `merkledb.trieView`
- Fixed error handling during `merkledb` intermediate node eviction
- Replaced values larger than `32` bytes with a hash in the `merkledb` hash representation
### XVM
- Refactored `xvm` API tx creation into a standalone `Spender` implementation
- Migrated UTXO interfaces from the `platformvm` into the `components` for use in the `xvm`
- Refactored `xvm``tx.SyntacticVerify` to expect the config rather than the fee fields
### Miscellaneous
- Updated the minimum golang version to `v1.19.6`
- Fixed `rpcchainvm` signal handling to only shutdown upon receipt of `SIGTERM`
- Added `warp.Signature#NumSigners` for better cost tracking support
- Added `consensus.Context#PublicKey` to provide access to the local node's BLS public key inside the VM execution environment
- Renamed Lux consensus metric prefix to `lux_{chainID}_lux`
- Specified an explicit TCP `Linger` timeout of `15` seconds
- Updated the `secp256k1` library to `v4.1.0`
### Cleanup
- Removed support for the `--whitelisted-chains` flag
- Removed unnecessary abstractions from the `app` package
- Removed `Factory` embedding from `platformvm.VM` and `xvm.VM`
- Removed `validator` package from the `platformvm`
- Removed `timer.TimeoutManager`
- Replaced `consensus.Context` in `Factory.New` with `logging.Logger`
- Renamed `set.Bits#Len` to `BitLen` and `set.Bits#HammingWeight` to `Len` to align with `set.Bits64`
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `23`.
**Note: The `--whitelisted-chains` flag was deprecated in `v1.9.6`. This is the last release in which it will be supported. Use `--track-chains` instead.**
### Monitoring
- Added warning when the P2P server IP is private
- Added warning when the HTTP server IP is potentially publicly reachable
- Removed `merkledb.trieView#calculateIDs` tracing when no recalculation is needed
### Databases
- Capped the number of goroutines that `merkledb.trieView#calculateIDsConcurrent` will create
- Removed `nodb` package
- Refactored `Batch` implementations to share common code
- Added `Batch.Replay` invariant tests
- Converted to use `require` in all `database` interface tests
### Cryptography
- Moved the `secp256k1` implementations to a new `secp256k1` package out of the `crypto` package
- Added `rfc6979` compliance tests to the `secp256k1` signing implementation
- Removed unused cryptography implementations `ed25519`, `rsa`, and `rsapss`
- Removed unnecessary cryptography interfaces `crypto.Factory`, `crypto.RecoverableFactory`, `crypto.PublicKey`, and `crypto.PrivateKey`
- Added verification when parsing `secp256k1` public keys to ensure usage of the compressed format
### API
- Removed delegators from `platform.getCurrentValidators` unless a single `nodeID` is requested
- Added `delegatorCount` and `delegatorWeight` to the validators returned by `platform.getCurrentValidators`
### Documentation
- Improved documentation on the `block.WithVerifyRuntime` interface
- Fixed `--public-ip` and `--public-ip-resolution-service` CLI flag descriptions
- Updated `README.md` to explicitly reference `SECURITY.md`
### Geth
- Enabled state sync by default when syncing from an empty database
- Increased block gas limit to 15M for `Cortina` Network Upgrade
- Added back file tracer endpoint
- Added back JS tracer
### Miscellaneous
- Added `allowedNodes` to the chain config for `validatorOnly` chains
- Removed the `hashicorp/go-plugin` dependency to improve plugin flexibility
- Replaced specialized `bag` implementations with generic `bag` implementations
- Added `mempool` package to the `xvm`
- Added `chain.State#IsProcessing` to simplify integration with `block.WithVerifyRuntime`
- Added `StateSyncMinVersion` to `sync.ClientConfig`
- Added validity checks for `InitialStakeDuration` in a custom network genesis
- Removed unnecessary reflect call when marshalling an empty slice
### Cleanup
- Renamed `teleporter` package to `warp`
- Replaced `bool` flags in P-chain state diffs with an `enum`
- Refactored chain configs to more closely align between the primary network and chains
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `22`.
### Networking
- Added TCP proxy support for p2p network traffic
- Added p2p network client utility for directly messaging the p2p network
### Consensus
- Guaranteed delivery of App messages to the VM, regardless of sync status
- Added `EngineType` to Runtime
### MerkleDB - Alpha
- Added initial implementation of a path-based merkle-radix tree
- Added initial implementation of state sync powered by the merkledb
### APIs
- Updated `platform.getCurrentValidators` to return `uptime` as a percentage
- Updated `platform.get*Validators` to avoid iterating over the staker set when requesting specific nodeIDs
- Cached staker data in `platform.get*Validators` to significantly reduce DB IO
- Added `stakeAmount` and `weight` to all staker responses in P-chain APIs
- Deprecated `stakeAmount` in staker responses from P-chain APIs
- Removed `creationTxFee` from `info.GetTxFeeResponse`
- Removed `address` from `platformvm.GetBalanceRequest`
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `22`.
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `22`.
### Consensus
- Added `StateSyncMode` to the return of `StateSummary#Accept` to support syncing chain state while tracking the chain as a light client
- Added `AcceptedFrontier` to `Chits` messages
- Reduced unnecessary confidence resets during consensus by applying `AcceptedFrontier`s during `QueryFailed` handling
- Added EngineType for consensus messages in the p2p message definitions
- Updated `vertex.DAGVM` interface to support linearization
### Configs
- Added `--plugin-dir` flag. The default value is `[DATADIR]/plugins`
- Removed `--build-dir` flag. The location of the node binary is no longer considered when looking for the `plugins` directory. Net maintainers should ensure that their node is able to properly discover plugins, as the default location is likely changed. See `--plugin-dir`
- Changed the default value of `--api-keystore-enabled` to `false`
- Added `--track-chains` flag as a replacement of `--whitelisted-chains`
### Fixes
- Fixed NAT-PMP router discovery and port mapping
- Fixed `--staking-enabled=false` setting to correctly start chain chains and report healthy
- Fixed message logging in the consensus handler
### VMs
- Populated non-trivial logger in the `rpcchainvm``Server`'s `consensus.Context`
- Updated `rpcchainvm` proto definitions to use enums
- Added `Block` format and definition to the `XVM`
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `21`.
### Net Messaging
- Added chain message serialization format
- Added chain message signing
- Replaced `bls.SecretKey` with a `teleporter.Signer` in the `consensus.Context`
- Moved `SNLookup` into the `validators.State` interface to support non-whitelisted chainID to chainID lookups
- Added support for non-whitelisted chainIDs for fetching the validator set at a given height
- Added chain message verification
- Added `teleporter.AnycastID` to denote a chain message not intended for a specific chain
### Fixes
- Added re-gossip of updated validator IPs
- Fixed `rpcchainvm.BatchedParseBlock` to correctly wrap returned blocks
- Removed incorrect `uintptr` handling in the generic codec
- Removed message latency tracking on messages being sent to itself
### Geth
- Added support for eth_call over VM2VM messaging
- Added config flags for tx pool behavior
### Miscellaneous
- Added networking package README.md
- Removed pagination of large db messages over gRPC
- Added `Size` to the generic codec to reduce allocations
- Added `UnpackLimitedBytes` and `UnpackLimitedStr` to the manual packer
- Added SECURITY.md
- Exposed proposer list from the `proposervm`'s `Windower` interface
- Added health and bootstrapping client helpers that block until the node is healthy
- Moved bit sets from the `ids` package to the `set` package
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `20`.
**This version modifies the db format. The db format is compatible with v1.9.3, but not v1.9.2 or earlier. After running a node with v1.9.4 attempting to run a node with a version earlier than v1.9.3 may report a fatal error on startup.**
### PeerList Gossip Optimization
- Added gossip tracking to the `peer` instance to only gossip new `IP`s to a connection
- Added `PeerListAck` message to report which `TxID`s provided by the `PeerList` message were tracked
- Added `TxID`s to the `PeerList` message to unique-ify nodeIDs across validation periods
- Added `TxID` mappings to the gossip tracker
### Validator Set Tracking
- Renamed `GetValidators` to `Get` on the `validators.Manager` interface
- Removed `Set`, `AddWeight`, `RemoveWeight`, and `Contains` from the `validators.Manager` interface
- Added `Add` to the `validators.Manager` interface
- Removed `Set` from the `validators.Set` interface
- Added `Add` and `Get` to the `validators.Set` interface
- Modified `validators.Set#Sample` to return `ids.NodeID` rather than `valdiators.Validator`
- Replaced the `validators.Validator` interface with a struct
- Added a `BLS` public key field to `validators.Validator`
- Added a `TxID` field to `validators.Validator`
- Improved and documented error handling within the `validators.Set` interface
- Added `BLS` public keys to the result of `GetValidatorSet`
- Added `BuildBlockWithRuntime` as an optional VM method to build blocks at a specific P-chain height
- Added `VerifyWithRuntime` as an optional block method to verify blocks at a specific P-chain height
### Uptime Tracking
- Added ConnectedNet message handling to the chain handler
- Added NetConnector interface and implemented it in the platformvm
- Added chain uptimes to p2p `pong` messages
- Added chain uptimes to `platform.getCurrentValidators`
- Added `chainID` as an argument to `info.Uptime`
### Fixes
- Fixed incorrect context cancellation of escaped contexts from grpc servers
- Fixed race condition between API initialization and shutdown
- Fixed race condition between NAT traversal initialization and shutdown
- Fixed race condition during beacon connection tracking
- Added race detection to the E2E tests
- Added additional message and sender tests
### Geth
- Improved header and logs caching using maximum accepted depth cache
- Added config option to perform database inspection on startup
- Added configurable transaction indexing to reduce disk usage
- Added special case to allow transactions using Nick's Method to bypass API level replay protection
- Added counter metrics for number of accepted/processed logs
### APIs
- Added indices to the return values of `GetLastAccepted` and `GetContainerByID` on the `indexer` API client
- Removed unnecessary locking from the `info` API
### Chain Data
- Added `ChainDataDir` to the `consensus.Context` to allow blockchains to canonically access disk outside node's database
- Added `--chain-data-dir` as a CLI flag to specify the base directory for all `ChainDataDir`s
### Miscellaneous
- Removed `Version` from the `peer.Network` interface
- Removed `Pong` from the `peer.Network` interface
- Reduced memory allocations inside the system throttler
- Added `CChainID` to the `consensus.Context`
- Converted all sorting to utilize generics
- Converted all set management to utilize generics
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `19`.
### Tracing
- Added `context.Context` to all `VM` interface functions
- Added `context.Context` to the `validators.State` interface
- Added additional message fields to `tracedRouter#HandleInbound`
- Added `tracedVM` implementations for `block.ChainVM` and `vertex.DAGVM`
- Added `tracedState` implementation for `validators.State`
- Added `tracedHandler` implementation for `http.Handler`
- Added `tracedConsensus` implementations for `consensusman.Consensus` and `lux.Consensus`
### Fixes
- Fixed incorrect `NodeID` used in registered `AppRequest` timeouts
- Fixed panic when calling `encdb#NewBatch` after `encdb#Close`
- Fixed panic when calling `prefixdb#NewBatch` after `prefixdb#Close`
### Configs
- Added `proposerMinBlockDelay` support to chain configs
- Added `providedFlags` field to the `initializing node` for easily observing custom node configs
- Added `--chain-aliases-file` and `--chain-aliases-file-content` CLI flags
- Added `--proposervm-use-current-height` CLI flag
### Geth
- Added metric for number of processed and accepted transactions
- Added wait for state sync goroutines to complete on shutdown
- Increased go-ethereum dependency to v1.10.26
- Increased soft cap on transaction size limits
- Added back isForkIncompatible checks for all existing forks
- Cleaned up Apricot Phase 6 code
### Linting
- Added `unused-receiver` linter
- Added `unused-parameter` linter
- Added `useless-break` linter
- Added `unhandled-error` linter
- Added `unexported-naming` linter
- Added `struct-tag` linter
- Added `bool-literal-in-expr` linter
- Added `early-return` linter
- Added `empty-lines` linter
- Added `error-lint` linter
### Testing
- Added `scripts/build_fuzz.sh` and initial fuzz tests
- Added additional `Fx` tests
- Added additional `messageQueue` tests
- Fixed `vmRegisterer` tests
### Documentation
- Documented `Database.Put` invariant for `nil` and empty slices
- Documented node's versioning scheme
- Improved `vm.proto` docs
### Miscellaneous
- Added peer gossip tracker
- Added `lux_P_vm_time_until_unstake` and `lux_P_vm_time_until_unstake_chain` metrics
- Added `keychain.NewLedgerKeychainFromIndices`
- Removed usage of `Temporary` error handling after `listener#Accept`
- Removed `Parameters` from all `Consensus` interfaces
- Updated `lux-network-runner` to `v1.3.0`
- Added `ids.BigBitSet` to extend `ids.BitSet64` for arbitrarily large sets
- Added support for parsing future chain uptime tracking data to the P-chain's state implementation
- Increased validator set cache size
- Added `lux.UTXOIDFromString` helper for managing `UTXOID`s more easily
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `19`.
### Geth
- Added trie clean cache journaling to disk to improve processing time after restart
- Fixed regression where a snapshot could be marked as stale by the async acceptor during block processing
- Added fine-grained block processing metrics
### RPCChainVM
- Added `validators.State` to the rpcchainvm server's `consensus.Context`
- Added `rpcProtocolVersion` to the output of `info.getNodeVersion`
- Added `rpcchainvm` protocol version to the output of the `--version` flag
- Added `version.RPCChainVMProtocolCompatibility` map to easily compare plugin compatibility against node versions
### Builds
- Downgraded `ubuntu` release binaries from `jammy` to `focal`
- Updated macos github runners to `macos-12`
- Added workflow dispatch to build release binaries
### BLS
- Added bls proof of possession to `platform.getCurrentValidators` and `platform.getPendingValidators`
- Added bls public key to in-memory staker objects
- Improved memory clearing of bls secret keys
### Cleanup
- Fixed issue where the chain manager would attempt to start chain creation multiple times
- Fixed race that caused the P-chain to finish bootstrapping before the primary network finished bootstrapping
- Converted inbound message handling to expect usage of types rather than maps of fields
- Simplified the `validators.Set` implementation
- Added a warning if synchronous consensus messages take too long
This version is backwards compatible to [v1.9.0](https://github.com/luxfi/node/releases/tag/v1.9.0). It is optional, but encouraged. The supported plugin version is `18`.
### Features
- Added cross-chain messaging support to the VM interface
- Added Ledger support to the Primary Network wallet
- Converted Bionic builds to Jammy builds
- Added `mock.gen.sh` to programmatically generate mock implementations
- Added BLS signer to the `consensus.Context`
- Moved `base` from `rpc.NewEndpointRequester` to be included in the `method` in `SendRequest`
- Converted `UnboundedQueue` to `UnboundedDeque`
### Observability
- Added support for OpenTelemetry tracing
- Converted periodic bootstrapping status update to be time-based
- Removed duplicated fields from the json format of the node config
- Configured min connected stake health check based on the consensus parameters
- Added new consensus metrics
- Documented how chain time is advanced in the PlatformVM with `chain_time_update.md`
### Cleanup
- Converted chain creation to be handled asynchronously from the P-chain's execution environment
- Removed `SetLinger` usage of P2P TCP connections
- Removed `Banff` upgrade flow
- Fixed ProposerVM inner block caching after verification
- Fixed PlatformVM mempool verification to use an updated chain time
This version is backwards compatible to [v1.8.0](https://github.com/luxfi/node/releases/tag/v1.8.0). It is optional, but encouraged. The supported plugin version is `16`.
### BLS
- Added BLS key file at `--staking-signer-key-file`
- Exposed BLS proof of possession in the `info.getNodeID` API
- Added BLS proof of possession to `AddPermissionlessValidatorTx`s for the Primary Network
The default value of `--staking-signer-key-file` is `~/.node/staking/signer.key`. If the key file doesn't exist, it will be populated with a new key.
### Networking
- Added P2P proto support to be activated in a future release
- Fixed inbound bandwidth spike after leaving the validation set
- Removed support for `ChitsV2` messages
- Removed `ContainerID`s from `Put` and `PushQuery` messages
- Added `pending_timeouts` metric to track the number of active timeouts a node is tracking
- Fixed overflow in gzip decompression
- Optimized memory usage in `peer.MessageQueue`
### Miscellaneous
- Fixed bootstrapping ETA metric
- Removed unused `unknown_txs_count` metric
- Replaced duplicated code with generic implementations
The changes in `v1.8.x` go into effect at 4 PM EDT on September 6th, 2022 on both Testnet and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.
- Fixed live-lock in bootstrapping, after performing state-sync, by properly reporting `database.ErrNotFound` in `GetBlockIDAtHeight` rather than a formatted error
- Increased the log level of `BAD BLOCK`s from `DEBUG` to `ERROR`
The changes in `v1.8.x` go into effect at 4 PM EDT on September 6th, 2022 on both Testnet and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.
The changes in the upgrade go into effect at **4 PM EDT on September 6th, 2022** on both Testnet and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.
You may see some extraneous ERROR logs ("BAD BLOCK") on your node after upgrading. These may continue until the Apricot Phase 6 activation (at 4 PM EDT on September 6th).
The supported plugin version is `16`.
### PlatformVM APIs
- Fixed `GetBlock` API when requesting the encoding as `json`
- Changed the json key in `AddNetValidatorTx`s from `chain` to `chainID`
- Added multiple asset support to `getBalance`
- Updated `PermissionlessValidator`s returned from `getCurrentValidators` and `getPendingValidators` to include `validationRewardOwner` and `delegationRewardOwner`
- Deprecated `rewardOwner` in `PermissionlessValidator`s returned from `getCurrentValidators` and `getPendingValidators`
- Added `chainID` argument to `getCurrentSupply`
- Added multiple asset support to `getStake`
- Added `chainID` argument to `getMinStake`
### PlatformVM Structures
- Renamed existing blocks
-`ProposalBlock` -> `ApricotProposalBlock`
-`AbortBlock` -> `ApricotAbortBlock`
-`CommitBlock` -> `ApricotCommitBlock`
-`StandardBlock` -> `ApricotStandardBlock`
-`AtomicBlock` -> `ApricotAtomicBlock`
- Added new block types **to be enabled in a future release**
-`BlueberryProposalBlock`
- Introduces a `Time` field and an unused `Txs` field before the remaining `ApricotProposalBlock` fields
-`BlueberryAbortBlock`
- Introduces a `Time` field before the remaining `ApricotAbortBlock` fields
-`BlueberryCommitBlock`
- Introduces a `Time` field before the remaining `ApricotCommitBlock` fields
-`BlueberryStandardBlock`
- Introduces a `Time` field before the remaining `ApricotStandardBlock` fields
- Added new transaction types **to be enabled in a future release**
-`RemoveNetValidatorTx`
- Can be included into `BlueberryStandardBlock`s
- Allows a chain owner to remove a validator from their chain
-`TransformNetTx`
- Can be included into `BlueberryStandardBlock`s
- Allows a chain owner to convert their chain into a permissionless chain
-`AddPermissionlessValidatorTx`
- Can be included into `BlueberryStandardBlock`s
- Adds a new validator to the requested permissionless chain
-`AddPermissionlessDelegatorTx`
- Can be included into `BlueberryStandardBlock`s
- Adds a new delegator to the requested permissionless validator on the requested chain
### PlatformVM Block Building
- Fixed race in `AdvanceTimeTx` creation to avoid unnecessary block construction
- Added `block_formation_logic.md` to describe how blocks are created
- Refactored `BlockBuilder` into `ApricotBlockBuilder`
- Added `BlueberryBlockBuilder`
- Added `OptionBlock` builder visitor
- Refactored `Mempool` issuance and removal logic to use transaction visitors
### PlatformVM Block Execution
- Added support for executing `AddValidatorTx`, `AddDelegatorTx`, and `AddNetValidatorTx` inside of a `BlueberryStandardBlock`
- Refactored time advancement into a standard state modification structure
- Refactored `ProposalTxExecutor` to abstract state diff creation
- Standardized upgrade checking rules
- Refactored chain authorization checking
### Wallet
- Added support for new transaction types in the P-chain wallet
- Fixed fee amounts used in the Primary Network wallet to reduce unnecessary fee burning
### Networking
- Defined `p2p.proto` to be used for future network messages
- Added `--network-tls-key-log-file-unsafe` to support inspecting p2p messages
- Added `lux_network_accept_failed` metrics to track networking `Accept` errors
### Miscellaneous
- Removed reserved fields from proto files and renumbered the existing fields
- Added generic dynamically resized ring buffer
- Updated gRPC version to `v1.49.0` to fix non-deterministic errors reported in the `rpcchainvm`
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged. The supported plugin version is `15`.
### Fixes
- Fixed bug in `codeToFetch` database accessors that caused an error when starting/stopping state sync
- Fixed rare BAD BLOCK errors during C-chain bootstrapping
- Fixed platformvm `couldn't get preferred block state` log due to attempted block building during bootstrapping
- Fixed platformvm `failed to fetch next staker to reward` error log due to an incorrect `lastAcceptedID` reference
- Fixed AWS AMI creation
### PlatformVM
- Refactored platformvm metrics handling
- Refactored platformvm block creation
- Introduced support to prevent empty nodeID use on the P-chain to be activated in a future upgrade
### Geth
- Updated gas price estimation to limit lookback window based on block timestamps
- Added metrics for processed/accepted gas
- Simplified syntactic block verification
- Ensured statedb errors during block processing are logged
- Removed deprecated gossiper/block building logic from pre-Apricot Phase 4
- Added marshal function for duration to improve config output
### Miscellaneous
- Updated local network genesis to use a newer start time
- Updated minimum golang version to go1.18.1
- Removed support for RocksDB
- Bumped go-ethereum version to v1.10.21
- Added various additional tests
- Introduced additional database invariants for all database implementations
- Added retries to windows CI installations
- Removed useless ID aliasing during chain creation
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged. The supported plugin version is `15`.
### VMs
- Refactored P-chain block state management
- Supporting easier parsing and usage of blocks
- Improving separation of block execution with block definition
- Unifying state definitions
- Introduced support to send custom X-chain assets to the P-chain to be activated in a future upgrade
- Introduced support to use custom assets on the P-chain to be activated in a future upgrade
- Added VMs README to begin fully documenting plugin invariants
- Added various comments around expected usages of VM tools
### Geth
- Added optional JSON logging
- Added interface for supporting stateful precompiles
- Removed legacy code format from the database
### Fixes
- Fixed ungraceful gRPC connection closure during very long running requests
- Fixed LevelDB panic during shutdown
- Fixed verification of `--stake-max-consumption-rate` to include the upper-bound
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged. The supported plugin version is `15`.
### LevelDB
- Fix rapid disk growth by manually specifying the maximum manifest file size
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged. The supported plugin version is `15`.
### PlatformVM
- Replaced copy-on-write validator set data-structure to use tree diffs to optimize validator set additions
- Replaced validation transactions with a standardized representation to remove transaction type handling
- Migrated transaction execution to its own package
- Removed child pointers from processing blocks
- Added P-chain wallet helper for providing initial transactions
### Geth
- Bumped go-ethereum dependency to v1.10.20
- Updated API names used to enable services in `eth-api` config flag. Prior names are supported but deprecated, please update configurations [accordingly](https://docs.lux.network/nodes/maintain/chain-config-flags#c-chain-configs)
- Optimized state sync by parallelizing trie syncing
- Added `eth_syncing` API for compatibility. Note: This API is only accessible after bootstrapping and always returns `"false"`, since the node will no longer be syncing at that point
- Added metrics to the atomic transaction mempool
- Added metrics for incoming/outgoing mempool gossip
### Fixes
- Updated Consensusman and Lux consensus engines to report original container preferences before processing the provided container
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged.
### APIs
**These API format changes are breaking changes. https://api.lux.network and https://api.lux-test.network have been updated with this format. If you are using Lux Node APIs in your code, please ensure you have updated to the latest versions. See https://docs.lux.network/apis/node/cb58-deprecation for details about the CB58 removal.**
- Removed `CB58` as an encoding option from all APIs
- Added `HexC` and `HexNC` as encoding options for all APIs that accept an encoding format
- Removed the `Success` response from all APIs
- Replaced `containerID` with `id` in the indexer API
### PlatformVM
- Fixed incorrect `P-chain` height in `Consensusman++` when staking is disabled
- Moved `platformvm` transactions to be defined in a sub-package
- Moved `platformvm` genesis management to be defined in a sub-package
- Moved `platformvm` state to be defined in a sub-package
- Standardized `platformvm` transactions to always be referenced via pointer
- Moved the `platformvm` transaction builder to be defined in a sub-package
- Fixed uptime rounding during node shutdown
### Geth
- Bumped go-ethereum dependency to v1.10.18
- Parallelized state sync code fetching
### Networking
- Updated `Connected` and `Disconnected` messages to only be sent to chains if the peer is tracking the chain
- Updated the minimum TLS version on the p2p network to `v1.3`
- Supported context cancellation in the networking rate limiters
- Added `ChitsV2` message format for the p2p network to be used in a future upgrade
### Miscellaneous
- Fixed `--public-ip-resolution-frequency` invalid overwrite of the resolution service
- Added additional metrics to distinguish between virtuous and rogue currently processing transactions
- Suppressed the super cool `node` banner when `stdout` is not directed to a terminal
- Updated linter version
- Improved various comments and documentation
- Standardized primary network handling across chain maps
- Fixed `platform.getCurrentValidators` API to correctly mark a node as connected to itself on chains.
- Fixed `platform.getBlockchainStatus` to correctly report `Unknown` for blockchains that are not managed by the `P-Chain`
- Added process metrics by default in the `rpcchainvm#Server`
- Added `Database` health checks
- Removed the deprecated `Database.Stat` call from the `rpcdb#Server`
- Added fail fast logic to duplicated Consensusman additions to avoid undefined behavior
- Added additional testing around Consensusman diverged voting tests
- Deprecated `--dynamic-update-duration` and `--dynamic-public-ip` CLI flags
- Added `--public-ip-resolution-frequency` and `--public-ip-resolution-service` to replace `--dynamic-update-duration` and `--dynamic-public-ip`, respectively
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged.
**The first startup of the C-Chain will cause an increase in CPU and IO usage due to an index update. This index update runs in the background and does not impact restart time.**
### State Sync
- Added state syncer engine to facilitate VM state syncing, rather than full historical syncing
- Added `GetStateSummaryFrontier`, `StateSummaryFrontier`, `GetAcceptedStateSummary`, `AcceptedStateSummary` as P2P messages
- Updated `Ancestors` message specification to expect an empty response if the container is unknown
- Added `--state-sync-ips` and `--state-sync-ids` flags to allow manual overrides of which nodes to query for accepted state summaries
- Updated networking library to permanently track all manually tracked peers, rather than just beacons
- Added state sync support to the `metervm`
- Added state sync support to the `proposervm`
- Added state sync support to the `rpcchainvm`
- Added beta state sync support to `geth`
### ProposerVM
- Prevented rejected blocks from overwriting the `proposervm` height index
- Optimized `proposervm` block rewind to utilize the height index if available
- Ensured `proposervm` height index is marked as repaired in `Initialize` if it is fully repaired on startup
- Removed `--reset-proposervm-height-index`. The height index will be reset upon first restart
- Optimized `proposervm` height index resetting to periodically flush deletions
### Bug Fixes
- Fixed IPC message issuance and restructured consensus event callbacks to be checked at compile time
- Fixed `geth` metrics initialization
- Fixed bootstrapping startup logic to correctly startup if initially connected to enough stake
- Fixed `geth` panic during metrics collection
- Fixed panic on concurrent map read/write in P-chain wallet SDK
- Fixed `rpcchainvm` panic by sanitizing http response codes
- Fixed incorrect JSON tag on `platformvm.BaseTx`
- Fixed `AppRequest`, `AppResponse`, and `AppGossip` stringers used in logging
### API/Client
- Supported client implementations pointing to non-standard URIs
- Introduced `ids.NodeID` type to standardize logging and simplify API service and client implementations
- Changed client implementations to use standard types rather than `string`s wherever possible
- Added `chainID` as an argument to `platform.getTotalStake`
- Added `connected` to the chain validators in responses to `platform.getCurrentValidators` and `platform.getPendingValidators`
- Add missing `admin` API client methods
- Improved `indexer` API client implementation to avoid encoding edge cases
### Networking
- Added `--consensus-mixed-query-num-push-vdr` and `--consensus-mixed-query-num-push-non-vdr` to allow parameterization of sending push queries
- By default, non-validators now send only pull queries, not push queries.
- By default, validators now send both pull queries and push queries upon inserting a container into consensus. Previously, nodes sent only push queries.
- Added metrics to track the amount of over gossiping of `peerlist` messages
- Added custom message queueing support to outbound `Peer` messages
- Reused `Ping` messages to avoid needless memory allocations
### Logging
- Replaced Lux Node's internal logger with [uber-go/log](https://github.com/uber-go/log).
- Replaced Lux Node's log rotation with [lumberjack](https://github.com/natefinch/lumberjack).
- Renamed `log-display-highlight` to `log-format` and added `json` option.
- Added `log-rotater-max-size`, `log-rotater-max-files`, `log-rotater-max-age`, `log-rotater-compress-enabled` options for log rotation.
### Miscellaneous
- Added `--data-dir` flag to easily move all default file locations to a custom location
- Standardized RPC specification of timestamp fields
- Logged health checks whenever a failing health check is queried
- Added callback support for the validator set manager
- Increased `geth` trie tip buffer size to 32
- Added CPU usage metrics for Lux Node and all sub-processes
- Added Disk IO usage metrics for Lux Node and all sub-processes
### Cleanup
- Refactored easily separable `platformvm` files into separate smaller packages
- Simplified default version parsing
- Fixed various typos
- Converted some structs to interfaces to better support mocked testing
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged.
### Consensus
- Added asynchronous processing of `App.*` messages.
- Added height indexing support to the `proposervm` and `rpcchainvm`. If a node is updated to `>=v1.7.5` and then downgraded to `<v1.7.5`, the user must enable the `--reset-proposervm-height-index=true` flag to ensure the `proposervm` height index is correctly updated going forward.
- Fixed bootstrapping job counter initialization that could cause negative ETAs to be reported.
- Fixed incorrect processing check that could log incorrect information.
- Removed incorrect warning logs.
### Miscellaneous
- Added tracked chains to be reported in calls to the `info.peers` API.
- Updated gRPC implementations to use `buf` tooling and standardized naming and locations.
- Added a consistent hashing implementation to be used in future improvements.
- Fixed database iteration invariants to report `ErrClosed` rather than silently exiting.
- Added additional sanity checks to prevent users from incorrectly configuring their node.
- Updated log timestamps to include milliseconds.
### Geth
- Added beta support for offline pruning.
- Refactored peer networking layer.
- Enabled cheap metrics by default.
- Marked RPC call metrics as expensive.
- Added Abigen support for native asset call precompile.
- Fixed bug in BLOCKHASH opcode during traceBlock.
- Fixed bug in handling updated chain config on startup.
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged.
**The first startup of the C-Chain will take a few minutes longer due to an index update.**
### Consensus
- Removed deprecated Consensusstorm consensus implementation that no longer aligned with the updated specification.
- Updated bootstrapping logs to no longer reset counters after a node restart.
- Added bootstrapping ETAs for fetching Consensusman blocks and executing operations.
- Renamed the `MultiPut` message to the `Ancestors` message to match other message naming conventions.
- Introduced Whitelist conflicts into the Consensusstorm specification that will be used in future X-chain improvements.
- Refactored the separation between the Bootstrapping engine and the Consensus engine to support Fast-Sync.
### Geth
- Added an index mapping height to the list of accepted atomic operations at that height in a trie. Generating this index will cause the node to take a few minutes longer to startup the C-Chain for the first restart.
- Updated Geth dependency to `v1.10.15`.
- Updated `networkID` to match `chainID`.
### VMs
- Refactored `platformvm` rewards calculations to enable usage from an external library.
- Fixed `platformvm` and `xvm` UTXO fetching to not re-iterate the UTXO set if no UTXOs are fetched.
- Refactored `platformvm` status definitions.
- Added support for multiple address balance lookups in the `platformvm`.
- Refactored `platformvm` and `xvm` keystore users to reuse similar code.
### RPCChainVM
- Returned a `500 InternalServerError` if an unexpected gRPC error occurs during the handling of an HTTP request to a plugin.
- Updated gRPC server's max message size to enable responses larger than 4MiB from the plugin's handling of an HTTP request.
### Configs
- Added `--stake-max-consumption-rate` which defaults to `120,000`.
- Added `--stake-min-consumption-rate` which defaults to `100,000`.
- Added `--stake-supply-cap` which defaults to `720,000,000,000,000,000` nLUX.
- Renamed `--bootstrap-multiput-max-containers-sent` to `--bootstrap-ancestors-max-containers-sent`.
- Renamed `--bootstrap-multiput-max-containers-received` to `--bootstrap-ancestors-max-containers-received`.
This version is backwards compatible to [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). It is optional, but encouraged.
### Consensus
- Introduced a notion of vertex conflicts that will be used in future X-chain improvements.
### Geth
- Added an index mapping height to the list of accepted atomic transactions at that height. Generating this index will cause the node to take approximately 2 minutes longer to startup the C-Chain for the first restart.
- Fixed bug in base fee estimation API that impacted custom defined networks.
- Decreased minimum transaction re-gossiping interval from 1s to 500ms.
- Removed websocket handler from the static vm APIs.
### Database
- Reduced lock contention in `prefixDB`s.
### Networking
- Increase the gossip size from `6` to `10` validators.
- Prioritized `Connected` and `Disconnected` messages in the message handler.
### Miscellaneous
- Notified VMs of peer versions on `Connected`.
- Fixed acceptance broadcasting over IPC.
- Fixed 32-bit architecture builds for Lux Node (not Geth).
This update is backwards compatible with [v1.7.0](https://github.com/luxfi/node/releases/tag/v1.7.0). Please see the expected update times in the v1.7.0 release.
This upgrade adds support for issuing multiple atomic transactions into a single block and directly transferring assets between the P-chain and the C-chain.
The changes in the upgrade go into effect at 1 PM EST, December 2nd 2021 on Mainnet. One should upgrade their node before the changes go into effect, otherwise they may experience loss of uptime.
**All nodes should upgrade before 1 PM EST, December 2nd 2021.**
### Networking
- Added peer uptime reports as metrics.
- Removed IP rate limiting over local networks.
### PlatformVM
- Enabled `AtomicTx`s to be issued into `StandardBlock`s and deprecated `AtomicBlock`s.
- Added the ability to export/import LUX to/from the C-chain.
### Geth
- Enabled multiple `AtomicTx`s to be issued per block.
- Added the ability to export/import LUX to/from the P-chain.
- Updated dynamic fee calculations.
### ProposerVM
- Removed storage of undecided blocks.
### RPCChainVM
- Added support for metrics to be reported by plugin VMs.
### Configs
- Removed `--consensus-epoch-first-transition` and `consensus-epoch-duration` as command line arguments.