Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(dot/state): keep latest state trie in memory #3386

Merged
merged 2 commits into from
Jul 14, 2023

Conversation

EclesioMeloJunior
Copy link
Member

@EclesioMeloJunior EclesioMeloJunior commented Jul 13, 2023

Changes

Gossamer was taking too much time to load a state trie of the latest finalized block given that it was stored in the database and then pruned from memory.

Is important for Gossamer to quickly load the state trie from the latest finalized block to keep the sync process at the normal speed, otherwise every finalization we will need to wait for Gossamer to load the entire trie from database which can be a bottleneck

Tests

go test -tags integration github.com/ChainSafe/gossamer

Issues

N/A

Primary Reviewer

@timwu20

Copy link
Contributor

@jimjbrettj jimjbrettj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work resolving this issue!

@codecov
Copy link

codecov bot commented Jul 13, 2023

Codecov Report

Merging #3386 (36c8eef) into development (25a2b79) will decrease coverage by 0.02%.
The diff coverage is 78.26%.

Additional details and impacted files
@@               Coverage Diff               @@
##           development    #3386      +/-   ##
===============================================
- Coverage        51.20%   51.19%   -0.02%     
===============================================
  Files              227      227              
  Lines            28370    28372       +2     
===============================================
- Hits             14527    14524       -3     
- Misses           12442    12448       +6     
+ Partials          1401     1400       -1     

Copy link
Member

@edwardmack edwardmack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, I like the variable renames.

Copy link
Contributor

@dimartiro dimartiro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! as always

@EclesioMeloJunior EclesioMeloJunior merged commit 421d087 into development Jul 14, 2023
@EclesioMeloJunior EclesioMeloJunior deleted the eclesio/keep-latest-state-trie branch July 14, 2023 12:22
github-actions bot pushed a commit that referenced this pull request Dec 11, 2023
# [0.8.0](v0.7.0...v0.8.0) (2023-12-11)

### Bug Fixes

* **.github/workflows:** update node.js version ([#3637](#3637)) ([619be1b](619be1b))
* **babe:** Add support for versioned NextConfigData decoding ([#3239](#3239)) ([5ee3a64](5ee3a64))
* **blockstate:** if blocktree fails to search a hash in memory, load it from disk ([#3059](#3059)) ([6442544](6442544))
* cache slot to header data while checking BABE equivocation ([#3364](#3364)) ([dcfa4a4](dcfa4a4))
* **chain:** Fix `chain=westend` option  ([#3123](#3123)) ([64dbba6](64dbba6))
* **ci:** cancel previous workflow runs ([#3140](#3140)) ([a322a19](a322a19))
* **ci:** fix all Deepsource issues ([#3046](#3046)) ([4ea0a70](4ea0a70))
* **ci:** fix broken docker build ([#3231](#3231)) ([f796430](f796430))
* **ci:** Fix staging metrics collection ([#3138](#3138)) ([05a5c4c](05a5c4c))
* **cli:** parse module log-levels ([#3285](#3285)) ([86c7577](86c7577))
* **cmd/gossamer:** embed default toml config files ([#3091](#3091)) ([af38364](af38364))
* **cmd/gossamer:** update error message ([#3301](#3301)) ([960a9d4](960a9d4))
* **dot/babe:** use `bs.latestFinalised` instead of using `round/set id` ([#3167](#3167)) ([46c0ef7](46c0ef7))
* **dot/digest:** create `BlockImportHandler` and remove channel ([#3312](#3312)) ([a179855](a179855))
* **dot/network:** `findPeers` returns on timeout if a peer is found ([#3001](#3001)) ([2a05ce7](2a05ce7))
* **dot/network:** remove `maxReads` limitation to read stream ([#3287](#3287)) ([483b23f](483b23f))
* **dot/state:** clean up scheduled changes once a forced change is applied ([#3219](#3219)) ([5ebec46](5ebec46))
* **dot/state:** fix a bug in IsDescendantOf ([#3125](#3125)) ([4fd4a89](4fd4a89))
* **dot/state:** store raw authority keys and decode when verifying block signature ([#3627](#3627)) ([58f741d](58f741d))
* **dot/sync:** fix `Timestamp slot must match 'CurrentSlot'` while using `westend` spec file ([#3040](#3040)) ([e6da01b](e6da01b))
* **dot/sync:** Revert verify justification before importing blocks ([#3615](#3615)) ([11b96dc](11b96dc))
* **dot/sync:** rework on bootstrap/tip sync ([#3227](#3227)) ([ab6650a](ab6650a))
* **dot/sync:** use `Range` instead of `SubChain` at `handleDescedingRequest` ([#3006](#3006)) ([a83c1a3](a83c1a3))
* **dot/sync:** verify justification before importing blocks ([#3576](#3576)) ([2954fc0](2954fc0))
* **dot/sync:** wrong error message at `checkOrGetDescendantHash` ([#2971](#2971)) ([b1c6bf1](b1c6bf1))
* **dot:** use tempDir in tests as base path to avoid creating `dot/~` ([#3363](#3363)) ([04514d5](04514d5))
* **go.mod:** Replace `centrifuge/go-substrate-rpc-client` dependency to `timwu20/go-substrate-rpc-client` temporarily to fix build ([#3572](#3572)) ([ea49251](ea49251))
* **lib/babe:** Add context and additional assertion to TestBuildBlock_ok ([#3101](#3101)) ([a9a89ed](a9a89ed))
* **lib/babe:** rewrite TestBuildBlock_failing ([#3089](#3089)) ([28a3d0b](28a3d0b))
* **lib/babe:** use current system time to yield a new slot ([#3133](#3133)) ([9cd6f25](9cd6f25))
* **lib/grandpa:**  on verifying block justification, compare given block hash with finalised hash ([#3081](#3081)) ([fc91843](fc91843))
* **lib/grandpa:** ensure `finalisationEngine` exits when stop channel is triggered ([#3141](#3141)) ([d7f7c06](d7f7c06))
* **lib/runtime:** `ext_default_child_storage_next_key_version_1` return `None` correctly ([#3473](#3473)) ([c7d574b](c7d574b))
* **lib/runtime:** Fix `wasm error: out of bounds memory access` at `[#9412261](https://github.com/ChainSafe/gossamer/issues/9412261)` ([#3588](#3588)) ([ecb1ad9](ecb1ad9))
* **lib/runtime:** prevents polkadot zero-address bug using `sr25519_verify` version 1 ([#3494](#3494)) ([8b93d5e](8b93d5e))
* **lib/runtime:** return correct encoded value for `None` ([#3451](#3451)) ([3e11bc2](3e11bc2))
* **lib/runtime:** update `MaxPossibleAllocation` to `2^25` ([#3393](#3393)) ([91eabdc](91eabdc))
* **lib/runtime:** use `westend-dev` spec file in `TestNodeRuntime_ValidateTransaction` ([#3047](#3047)) ([043f5eb](043f5eb))
* **lib/trie:** `ClearFromChild` should update parent trie ([#3482](#3482)) ([70e2d2b](70e2d2b))
* **lib/trie:** create an empty child trie if not found ([#3459](#3459)) ([5d68447](5d68447))
* **lib/trie:** record deleted Merkle values fixed ([#2873](#2873)) ([61f0216](61f0216))
* **peerset:** check for incoming slot error ([#2952](#2952)) ([a1602bc](a1602bc))
* **rpc-tests:** Fix node port to execute tests on macOS ([#3223](#3223)) ([f758575](f758575))
* **rpc/modules:** use `westend-local` in `TestAuthorModule_SubmitExtrinsic_invalid` test ([#3051](#3051)) ([b6429b7](b6429b7))
* **runtime:** initialize TransactionState when creating runtime instance ([#3188](#3188)) ([29fe7a0](29fe7a0))
* **scale:** Use *int for scale index ([#3274](#3274)) ([9b04d30](9b04d30))
* **staging:** fixes the staging deployment issues caused by the new cli ([#3266](#3266)) ([1f4e786](1f4e786))
* **state:** clarify node hashes vs merkle values ([#2915](#2915)) ([e4033e8](e4033e8))
* **test/rpc:** use `westend-local` in `TestStateRPCAPI` ([#3049](#3049)) ([c57ade6](c57ade6))
* **tests/polkadot_js:** Use `westend-local` to run polkadot js test suite ([#3052](#3052)) ([2d5ead1](2d5ead1))
* **tests/rpc:** ensure new blocks are created before assert ([#3042](#3042)) ([a116d58](a116d58))
* **tests/rpc:** flaky test `TestChainSubscriptionRPC/chain_subscribeNewHeads` ([#3092](#3092)) ([5b56238](5b56238))
* **tests/rpc:** place `GreaterOrEqual` arguments in the correct order at `chain_subscribeNewHeads` test ([#3137](#3137)) ([33bdf28](33bdf28))
* **tests:** Export unimplemented runtime fuctions ([#3461](#3461)) ([3e4546c](3e4546c))
* **trie:** do not create buffer for nil child ([#2928](#2928)) ([d70af4f](d70af4f))
* **wasmer:** `ext_storage_exists_version_1` for empty values ([#2973](#2973)) ([059268e](059268e))

### Features

* **chain:** Add Westend network as command line `chain` option ([#3103](#3103)) ([d9cdd45](d9cdd45))
* **chain:** remove unneeded spec files ([#3086](#3086)) ([c76387d](c76387d))
* **cli:** use a single flag for log level in the CLI ([#3303](#3303)) ([caf3ea4](caf3ea4))
* **dot/network:** introduce libp2p resource manager + prometheus metrics ([#3333](#3333)) ([f166746](f166746))
* **dot/rpc:** export block trie state entries for a block hash ([#3607](#3607)) ([43828fe](43828fe))
* **dot/rpc:** implement RPC method state_queryStorageAt ([#3191](#3191)) ([3bbdfe0](3bbdfe0))
* **dot/state:** create `Range` to traverse the blocktree and the blocks in the disk ([#2990](#2990)) ([4442eee](4442eee))
* **dot/state:** keep latest state trie in memory ([#3386](#3386)) ([421d087](421d087))
* **dot/sync:** include block origin and skip extra validation on `initialSync` ([#3392](#3392)) ([8e1650e](8e1650e))
* **dot/sync:** Remove the `EndBlockHash` from `BlockRequestMessage` ([#2977](#2977)) ([b25e0b4](b25e0b4))
* **internal/database:** replace `chaindb/badgerdb` with `pebbledb` ([#3434](#3434)) ([344461d](344461d))
* introduces `SaturatingAdd` and `SaturatingSub` ([#3519](#3519)) ([daa9e25](daa9e25))
* **lib/allocator:** Refactor `FreeingBumpHeapAllocator` ([#3570](#3570)) ([39ca47f](39ca47f))
* **lib/babe:** Submit BABE equivocation report  ([#2947](#2947)) ([55de62e](55de62e)), closes [#2853](#2853)
* **lib/blocktree:** reduce the entries in the runtimes mapping ([#3151](#3151)) ([1a34972](1a34972))
* **lib/grandpa:** include `t.Parallel()` to all `lib/grandpa` tests ([#2840](#2840)) ([5c93488](5c93488))
* **lib/runtime/wasmer:** report grandpa equivocations ([#3007](#3007)) ([e63aeea](e63aeea))
* **lib/runtime:** `wazero` implementation of `runtime.Instance` ([#3279](#3279)) ([115d6f5](115d6f5))
* **lib/runtime:** add extra required runtime imports for parachain validation ([#3254](#3254)) ([dc1a521](dc1a521))
* **lib/runtime:** Update default `runtime.Instance` to `wazero` ([#3352](#3352)) ([308b10a](308b10a))
* **pkg/scale:** `VaryingDataType` String method ([#2970](#2970)) ([841636e](841636e))
* **pkg/scale:** Add `Marshaler` and `Unmarshaler` interfaces and functionality ([#3617](#3617)) ([4888ce4](4888ce4))
* **pkg/scale:** Use `New()` receiver function for construction of custom `VaryingDataType`  ([#3315](#3315)) ([9688f6c](9688f6c))
* **runtime/wasmer:** create wrapper around wasmer.Memory  ([#3160](#3160)) ([fc1055d](fc1055d))
* **runtime/wasmer:** write wasmer using latest wasmer version ([#3168](#3168)) ([32f1aa8](32f1aa8))
* **scale:** add `MustMarshal` function ([#2991](#2991)) ([32a80aa](32a80aa))
* **sync:** Validate bad blocks ([#3220](#3220)) ([0d0354b](0d0354b))
* **telemetry:** Add scheduled and force changes telemetry metrics ([#3226](#3226)) ([c53b1cd](c53b1cd))
* **trie:** Add trie v1 new headers support ([#3295](#3295)) ([c30f463](c30f463))
* **zombienet:** Add javascript tests to zombienet testing ([#3200](#3200)) ([aca9a5b](aca9a5b))
* **zombienet:** add zombienet testing to github workflow ([#3192](#3192)) ([d788bd6](d788bd6))

### Reverts

* **lib/runtime:** rollback wasmer update `PR[#3168](https://github.com/ChainSafe/gossamer/issues/3168)` ([#3264](#3264)) ([e7ff0cf](e7ff0cf))
Copy link

🎉 This PR is included in version 0.8.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

timwu20 pushed a commit that referenced this pull request Apr 18, 2024
# [0.8.0](v0.7.0...v0.8.0) (2023-12-11)

### Bug Fixes

* **.github/workflows:** update node.js version ([#3637](#3637)) ([619be1b](619be1b))
* **babe:** Add support for versioned NextConfigData decoding ([#3239](#3239)) ([5ee3a64](5ee3a64))
* **blockstate:** if blocktree fails to search a hash in memory, load it from disk ([#3059](#3059)) ([6442544](6442544))
* cache slot to header data while checking BABE equivocation ([#3364](#3364)) ([dcfa4a4](dcfa4a4))
* **chain:** Fix `chain=westend` option  ([#3123](#3123)) ([64dbba6](64dbba6))
* **ci:** cancel previous workflow runs ([#3140](#3140)) ([a322a19](a322a19))
* **ci:** fix all Deepsource issues ([#3046](#3046)) ([4ea0a70](4ea0a70))
* **ci:** fix broken docker build ([#3231](#3231)) ([f796430](f796430))
* **ci:** Fix staging metrics collection ([#3138](#3138)) ([05a5c4c](05a5c4c))
* **cli:** parse module log-levels ([#3285](#3285)) ([86c7577](86c7577))
* **cmd/gossamer:** embed default toml config files ([#3091](#3091)) ([af38364](af38364))
* **cmd/gossamer:** update error message ([#3301](#3301)) ([960a9d4](960a9d4))
* **dot/babe:** use `bs.latestFinalised` instead of using `round/set id` ([#3167](#3167)) ([46c0ef7](46c0ef7))
* **dot/digest:** create `BlockImportHandler` and remove channel ([#3312](#3312)) ([a179855](a179855))
* **dot/network:** `findPeers` returns on timeout if a peer is found ([#3001](#3001)) ([2a05ce7](2a05ce7))
* **dot/network:** remove `maxReads` limitation to read stream ([#3287](#3287)) ([483b23f](483b23f))
* **dot/state:** clean up scheduled changes once a forced change is applied ([#3219](#3219)) ([5ebec46](5ebec46))
* **dot/state:** fix a bug in IsDescendantOf ([#3125](#3125)) ([4fd4a89](4fd4a89))
* **dot/state:** store raw authority keys and decode when verifying block signature ([#3627](#3627)) ([58f741d](58f741d))
* **dot/sync:** fix `Timestamp slot must match 'CurrentSlot'` while using `westend` spec file ([#3040](#3040)) ([e6da01b](e6da01b))
* **dot/sync:** Revert verify justification before importing blocks ([#3615](#3615)) ([11b96dc](11b96dc))
* **dot/sync:** rework on bootstrap/tip sync ([#3227](#3227)) ([ab6650a](ab6650a))
* **dot/sync:** use `Range` instead of `SubChain` at `handleDescedingRequest` ([#3006](#3006)) ([a83c1a3](a83c1a3))
* **dot/sync:** verify justification before importing blocks ([#3576](#3576)) ([2954fc0](2954fc0))
* **dot/sync:** wrong error message at `checkOrGetDescendantHash` ([#2971](#2971)) ([b1c6bf1](b1c6bf1))
* **dot:** use tempDir in tests as base path to avoid creating `dot/~` ([#3363](#3363)) ([04514d5](04514d5))
* **go.mod:** Replace `centrifuge/go-substrate-rpc-client` dependency to `timwu20/go-substrate-rpc-client` temporarily to fix build ([#3572](#3572)) ([ea49251](ea49251))
* **lib/babe:** Add context and additional assertion to TestBuildBlock_ok ([#3101](#3101)) ([a9a89ed](a9a89ed))
* **lib/babe:** rewrite TestBuildBlock_failing ([#3089](#3089)) ([28a3d0b](28a3d0b))
* **lib/babe:** use current system time to yield a new slot ([#3133](#3133)) ([9cd6f25](9cd6f25))
* **lib/grandpa:**  on verifying block justification, compare given block hash with finalised hash ([#3081](#3081)) ([fc91843](fc91843))
* **lib/grandpa:** ensure `finalisationEngine` exits when stop channel is triggered ([#3141](#3141)) ([d7f7c06](d7f7c06))
* **lib/runtime:** `ext_default_child_storage_next_key_version_1` return `None` correctly ([#3473](#3473)) ([c7d574b](c7d574b))
* **lib/runtime:** Fix `wasm error: out of bounds memory access` at `[#9412261](https://github.com/ChainSafe/gossamer/issues/9412261)` ([#3588](#3588)) ([ecb1ad9](ecb1ad9))
* **lib/runtime:** prevents polkadot zero-address bug using `sr25519_verify` version 1 ([#3494](#3494)) ([8b93d5e](8b93d5e))
* **lib/runtime:** return correct encoded value for `None` ([#3451](#3451)) ([3e11bc2](3e11bc2))
* **lib/runtime:** update `MaxPossibleAllocation` to `2^25` ([#3393](#3393)) ([91eabdc](91eabdc))
* **lib/runtime:** use `westend-dev` spec file in `TestNodeRuntime_ValidateTransaction` ([#3047](#3047)) ([043f5eb](043f5eb))
* **lib/trie:** `ClearFromChild` should update parent trie ([#3482](#3482)) ([70e2d2b](70e2d2b))
* **lib/trie:** create an empty child trie if not found ([#3459](#3459)) ([5d68447](5d68447))
* **lib/trie:** record deleted Merkle values fixed ([#2873](#2873)) ([61f0216](61f0216))
* **peerset:** check for incoming slot error ([#2952](#2952)) ([a1602bc](a1602bc))
* **rpc-tests:** Fix node port to execute tests on macOS ([#3223](#3223)) ([f758575](f758575))
* **rpc/modules:** use `westend-local` in `TestAuthorModule_SubmitExtrinsic_invalid` test ([#3051](#3051)) ([b6429b7](b6429b7))
* **runtime:** initialize TransactionState when creating runtime instance ([#3188](#3188)) ([29fe7a0](29fe7a0))
* **scale:** Use *int for scale index ([#3274](#3274)) ([9b04d30](9b04d30))
* **staging:** fixes the staging deployment issues caused by the new cli ([#3266](#3266)) ([1f4e786](1f4e786))
* **state:** clarify node hashes vs merkle values ([#2915](#2915)) ([e4033e8](e4033e8))
* **test/rpc:** use `westend-local` in `TestStateRPCAPI` ([#3049](#3049)) ([c57ade6](c57ade6))
* **tests/polkadot_js:** Use `westend-local` to run polkadot js test suite ([#3052](#3052)) ([2d5ead1](2d5ead1))
* **tests/rpc:** ensure new blocks are created before assert ([#3042](#3042)) ([a116d58](a116d58))
* **tests/rpc:** flaky test `TestChainSubscriptionRPC/chain_subscribeNewHeads` ([#3092](#3092)) ([5b56238](5b56238))
* **tests/rpc:** place `GreaterOrEqual` arguments in the correct order at `chain_subscribeNewHeads` test ([#3137](#3137)) ([33bdf28](33bdf28))
* **tests:** Export unimplemented runtime fuctions ([#3461](#3461)) ([3e4546c](3e4546c))
* **trie:** do not create buffer for nil child ([#2928](#2928)) ([d70af4f](d70af4f))
* **wasmer:** `ext_storage_exists_version_1` for empty values ([#2973](#2973)) ([059268e](059268e))

### Features

* **chain:** Add Westend network as command line `chain` option ([#3103](#3103)) ([d9cdd45](d9cdd45))
* **chain:** remove unneeded spec files ([#3086](#3086)) ([c76387d](c76387d))
* **cli:** use a single flag for log level in the CLI ([#3303](#3303)) ([caf3ea4](caf3ea4))
* **dot/network:** introduce libp2p resource manager + prometheus metrics ([#3333](#3333)) ([f166746](f166746))
* **dot/rpc:** export block trie state entries for a block hash ([#3607](#3607)) ([43828fe](43828fe))
* **dot/rpc:** implement RPC method state_queryStorageAt ([#3191](#3191)) ([3bbdfe0](3bbdfe0))
* **dot/state:** create `Range` to traverse the blocktree and the blocks in the disk ([#2990](#2990)) ([4442eee](4442eee))
* **dot/state:** keep latest state trie in memory ([#3386](#3386)) ([421d087](421d087))
* **dot/sync:** include block origin and skip extra validation on `initialSync` ([#3392](#3392)) ([8e1650e](8e1650e))
* **dot/sync:** Remove the `EndBlockHash` from `BlockRequestMessage` ([#2977](#2977)) ([b25e0b4](b25e0b4))
* **internal/database:** replace `chaindb/badgerdb` with `pebbledb` ([#3434](#3434)) ([344461d](344461d))
* introduces `SaturatingAdd` and `SaturatingSub` ([#3519](#3519)) ([daa9e25](daa9e25))
* **lib/allocator:** Refactor `FreeingBumpHeapAllocator` ([#3570](#3570)) ([39ca47f](39ca47f))
* **lib/babe:** Submit BABE equivocation report  ([#2947](#2947)) ([55de62e](55de62e)), closes [#2853](#2853)
* **lib/blocktree:** reduce the entries in the runtimes mapping ([#3151](#3151)) ([1a34972](1a34972))
* **lib/grandpa:** include `t.Parallel()` to all `lib/grandpa` tests ([#2840](#2840)) ([5c93488](5c93488))
* **lib/runtime/wasmer:** report grandpa equivocations ([#3007](#3007)) ([e63aeea](e63aeea))
* **lib/runtime:** `wazero` implementation of `runtime.Instance` ([#3279](#3279)) ([115d6f5](115d6f5))
* **lib/runtime:** add extra required runtime imports for parachain validation ([#3254](#3254)) ([dc1a521](dc1a521))
* **lib/runtime:** Update default `runtime.Instance` to `wazero` ([#3352](#3352)) ([308b10a](308b10a))
* **pkg/scale:** `VaryingDataType` String method ([#2970](#2970)) ([841636e](841636e))
* **pkg/scale:** Add `Marshaler` and `Unmarshaler` interfaces and functionality ([#3617](#3617)) ([4888ce4](4888ce4))
* **pkg/scale:** Use `New()` receiver function for construction of custom `VaryingDataType`  ([#3315](#3315)) ([9688f6c](9688f6c))
* **runtime/wasmer:** create wrapper around wasmer.Memory  ([#3160](#3160)) ([fc1055d](fc1055d))
* **runtime/wasmer:** write wasmer using latest wasmer version ([#3168](#3168)) ([32f1aa8](32f1aa8))
* **scale:** add `MustMarshal` function ([#2991](#2991)) ([32a80aa](32a80aa))
* **sync:** Validate bad blocks ([#3220](#3220)) ([0d0354b](0d0354b))
* **telemetry:** Add scheduled and force changes telemetry metrics ([#3226](#3226)) ([c53b1cd](c53b1cd))
* **trie:** Add trie v1 new headers support ([#3295](#3295)) ([c30f463](c30f463))
* **zombienet:** Add javascript tests to zombienet testing ([#3200](#3200)) ([aca9a5b](aca9a5b))
* **zombienet:** add zombienet testing to github workflow ([#3192](#3192)) ([d788bd6](d788bd6))

### Reverts

* **lib/runtime:** rollback wasmer update `PR[#3168](https://github.com/ChainSafe/gossamer/issues/3168)` ([#3264](#3264)) ([e7ff0cf](e7ff0cf))
timwu20 pushed a commit that referenced this pull request Apr 19, 2024
# [0.8.0](v0.7.0...v0.8.0) (2023-12-11)

### Bug Fixes

* **.github/workflows:** update node.js version ([#3637](#3637)) ([619be1b](619be1b))
* **babe:** Add support for versioned NextConfigData decoding ([#3239](#3239)) ([5ee3a64](5ee3a64))
* **blockstate:** if blocktree fails to search a hash in memory, load it from disk ([#3059](#3059)) ([6442544](6442544))
* cache slot to header data while checking BABE equivocation ([#3364](#3364)) ([dcfa4a4](dcfa4a4))
* **chain:** Fix `chain=westend` option  ([#3123](#3123)) ([64dbba6](64dbba6))
* **ci:** cancel previous workflow runs ([#3140](#3140)) ([a322a19](a322a19))
* **ci:** fix all Deepsource issues ([#3046](#3046)) ([4ea0a70](4ea0a70))
* **ci:** fix broken docker build ([#3231](#3231)) ([f796430](f796430))
* **ci:** Fix staging metrics collection ([#3138](#3138)) ([05a5c4c](05a5c4c))
* **cli:** parse module log-levels ([#3285](#3285)) ([86c7577](86c7577))
* **cmd/gossamer:** embed default toml config files ([#3091](#3091)) ([af38364](af38364))
* **cmd/gossamer:** update error message ([#3301](#3301)) ([960a9d4](960a9d4))
* **dot/babe:** use `bs.latestFinalised` instead of using `round/set id` ([#3167](#3167)) ([46c0ef7](46c0ef7))
* **dot/digest:** create `BlockImportHandler` and remove channel ([#3312](#3312)) ([a179855](a179855))
* **dot/network:** `findPeers` returns on timeout if a peer is found ([#3001](#3001)) ([2a05ce7](2a05ce7))
* **dot/network:** remove `maxReads` limitation to read stream ([#3287](#3287)) ([483b23f](483b23f))
* **dot/state:** clean up scheduled changes once a forced change is applied ([#3219](#3219)) ([5ebec46](5ebec46))
* **dot/state:** fix a bug in IsDescendantOf ([#3125](#3125)) ([4fd4a89](4fd4a89))
* **dot/state:** store raw authority keys and decode when verifying block signature ([#3627](#3627)) ([58f741d](58f741d))
* **dot/sync:** fix `Timestamp slot must match 'CurrentSlot'` while using `westend` spec file ([#3040](#3040)) ([e6da01b](e6da01b))
* **dot/sync:** Revert verify justification before importing blocks ([#3615](#3615)) ([11b96dc](11b96dc))
* **dot/sync:** rework on bootstrap/tip sync ([#3227](#3227)) ([ab6650a](ab6650a))
* **dot/sync:** use `Range` instead of `SubChain` at `handleDescedingRequest` ([#3006](#3006)) ([a83c1a3](a83c1a3))
* **dot/sync:** verify justification before importing blocks ([#3576](#3576)) ([2954fc0](2954fc0))
* **dot/sync:** wrong error message at `checkOrGetDescendantHash` ([#2971](#2971)) ([b1c6bf1](b1c6bf1))
* **dot:** use tempDir in tests as base path to avoid creating `dot/~` ([#3363](#3363)) ([04514d5](04514d5))
* **go.mod:** Replace `centrifuge/go-substrate-rpc-client` dependency to `timwu20/go-substrate-rpc-client` temporarily to fix build ([#3572](#3572)) ([ea49251](ea49251))
* **lib/babe:** Add context and additional assertion to TestBuildBlock_ok ([#3101](#3101)) ([a9a89ed](a9a89ed))
* **lib/babe:** rewrite TestBuildBlock_failing ([#3089](#3089)) ([28a3d0b](28a3d0b))
* **lib/babe:** use current system time to yield a new slot ([#3133](#3133)) ([9cd6f25](9cd6f25))
* **lib/grandpa:**  on verifying block justification, compare given block hash with finalised hash ([#3081](#3081)) ([fc91843](fc91843))
* **lib/grandpa:** ensure `finalisationEngine` exits when stop channel is triggered ([#3141](#3141)) ([d7f7c06](d7f7c06))
* **lib/runtime:** `ext_default_child_storage_next_key_version_1` return `None` correctly ([#3473](#3473)) ([c7d574b](c7d574b))
* **lib/runtime:** Fix `wasm error: out of bounds memory access` at `[#9412261](https://github.com/ChainSafe/gossamer/issues/9412261)` ([#3588](#3588)) ([ecb1ad9](ecb1ad9))
* **lib/runtime:** prevents polkadot zero-address bug using `sr25519_verify` version 1 ([#3494](#3494)) ([8b93d5e](8b93d5e))
* **lib/runtime:** return correct encoded value for `None` ([#3451](#3451)) ([3e11bc2](3e11bc2))
* **lib/runtime:** update `MaxPossibleAllocation` to `2^25` ([#3393](#3393)) ([91eabdc](91eabdc))
* **lib/runtime:** use `westend-dev` spec file in `TestNodeRuntime_ValidateTransaction` ([#3047](#3047)) ([043f5eb](043f5eb))
* **lib/trie:** `ClearFromChild` should update parent trie ([#3482](#3482)) ([70e2d2b](70e2d2b))
* **lib/trie:** create an empty child trie if not found ([#3459](#3459)) ([5d68447](5d68447))
* **lib/trie:** record deleted Merkle values fixed ([#2873](#2873)) ([61f0216](61f0216))
* **peerset:** check for incoming slot error ([#2952](#2952)) ([a1602bc](a1602bc))
* **rpc-tests:** Fix node port to execute tests on macOS ([#3223](#3223)) ([f758575](f758575))
* **rpc/modules:** use `westend-local` in `TestAuthorModule_SubmitExtrinsic_invalid` test ([#3051](#3051)) ([b6429b7](b6429b7))
* **runtime:** initialize TransactionState when creating runtime instance ([#3188](#3188)) ([29fe7a0](29fe7a0))
* **scale:** Use *int for scale index ([#3274](#3274)) ([9b04d30](9b04d30))
* **staging:** fixes the staging deployment issues caused by the new cli ([#3266](#3266)) ([1f4e786](1f4e786))
* **state:** clarify node hashes vs merkle values ([#2915](#2915)) ([e4033e8](e4033e8))
* **test/rpc:** use `westend-local` in `TestStateRPCAPI` ([#3049](#3049)) ([c57ade6](c57ade6))
* **tests/polkadot_js:** Use `westend-local` to run polkadot js test suite ([#3052](#3052)) ([2d5ead1](2d5ead1))
* **tests/rpc:** ensure new blocks are created before assert ([#3042](#3042)) ([a116d58](a116d58))
* **tests/rpc:** flaky test `TestChainSubscriptionRPC/chain_subscribeNewHeads` ([#3092](#3092)) ([5b56238](5b56238))
* **tests/rpc:** place `GreaterOrEqual` arguments in the correct order at `chain_subscribeNewHeads` test ([#3137](#3137)) ([33bdf28](33bdf28))
* **tests:** Export unimplemented runtime fuctions ([#3461](#3461)) ([3e4546c](3e4546c))
* **trie:** do not create buffer for nil child ([#2928](#2928)) ([d70af4f](d70af4f))
* **wasmer:** `ext_storage_exists_version_1` for empty values ([#2973](#2973)) ([059268e](059268e))

### Features

* **chain:** Add Westend network as command line `chain` option ([#3103](#3103)) ([d9cdd45](d9cdd45))
* **chain:** remove unneeded spec files ([#3086](#3086)) ([c76387d](c76387d))
* **cli:** use a single flag for log level in the CLI ([#3303](#3303)) ([caf3ea4](caf3ea4))
* **dot/network:** introduce libp2p resource manager + prometheus metrics ([#3333](#3333)) ([f166746](f166746))
* **dot/rpc:** export block trie state entries for a block hash ([#3607](#3607)) ([43828fe](43828fe))
* **dot/rpc:** implement RPC method state_queryStorageAt ([#3191](#3191)) ([3bbdfe0](3bbdfe0))
* **dot/state:** create `Range` to traverse the blocktree and the blocks in the disk ([#2990](#2990)) ([4442eee](4442eee))
* **dot/state:** keep latest state trie in memory ([#3386](#3386)) ([421d087](421d087))
* **dot/sync:** include block origin and skip extra validation on `initialSync` ([#3392](#3392)) ([8e1650e](8e1650e))
* **dot/sync:** Remove the `EndBlockHash` from `BlockRequestMessage` ([#2977](#2977)) ([b25e0b4](b25e0b4))
* **internal/database:** replace `chaindb/badgerdb` with `pebbledb` ([#3434](#3434)) ([344461d](344461d))
* introduces `SaturatingAdd` and `SaturatingSub` ([#3519](#3519)) ([daa9e25](daa9e25))
* **lib/allocator:** Refactor `FreeingBumpHeapAllocator` ([#3570](#3570)) ([39ca47f](39ca47f))
* **lib/babe:** Submit BABE equivocation report  ([#2947](#2947)) ([55de62e](55de62e)), closes [#2853](#2853)
* **lib/blocktree:** reduce the entries in the runtimes mapping ([#3151](#3151)) ([1a34972](1a34972))
* **lib/grandpa:** include `t.Parallel()` to all `lib/grandpa` tests ([#2840](#2840)) ([5c93488](5c93488))
* **lib/runtime/wasmer:** report grandpa equivocations ([#3007](#3007)) ([e63aeea](e63aeea))
* **lib/runtime:** `wazero` implementation of `runtime.Instance` ([#3279](#3279)) ([115d6f5](115d6f5))
* **lib/runtime:** add extra required runtime imports for parachain validation ([#3254](#3254)) ([dc1a521](dc1a521))
* **lib/runtime:** Update default `runtime.Instance` to `wazero` ([#3352](#3352)) ([308b10a](308b10a))
* **pkg/scale:** `VaryingDataType` String method ([#2970](#2970)) ([841636e](841636e))
* **pkg/scale:** Add `Marshaler` and `Unmarshaler` interfaces and functionality ([#3617](#3617)) ([4888ce4](4888ce4))
* **pkg/scale:** Use `New()` receiver function for construction of custom `VaryingDataType`  ([#3315](#3315)) ([9688f6c](9688f6c))
* **runtime/wasmer:** create wrapper around wasmer.Memory  ([#3160](#3160)) ([fc1055d](fc1055d))
* **runtime/wasmer:** write wasmer using latest wasmer version ([#3168](#3168)) ([32f1aa8](32f1aa8))
* **scale:** add `MustMarshal` function ([#2991](#2991)) ([32a80aa](32a80aa))
* **sync:** Validate bad blocks ([#3220](#3220)) ([0d0354b](0d0354b))
* **telemetry:** Add scheduled and force changes telemetry metrics ([#3226](#3226)) ([c53b1cd](c53b1cd))
* **trie:** Add trie v1 new headers support ([#3295](#3295)) ([c30f463](c30f463))
* **zombienet:** Add javascript tests to zombienet testing ([#3200](#3200)) ([aca9a5b](aca9a5b))
* **zombienet:** add zombienet testing to github workflow ([#3192](#3192)) ([d788bd6](d788bd6))

### Reverts

* **lib/runtime:** rollback wasmer update `PR[#3168](https://github.com/ChainSafe/gossamer/issues/3168)` ([#3264](#3264)) ([e7ff0cf](e7ff0cf))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants