Releases: ChainSafe/gossamer
Releases · ChainSafe/gossamer
v0.9.0
0.9.0 (2024-3-1)
Bug Fixes
- add a limit of number of bytes while scale decoding a slice (#3733) (5edbf89)
- docs: Fixing link to polkadot runtime fundamentals to the right one (#3763) (a785d32)
- don't panic if we fail to convert hex to bytes (#3734) (12234de)
- dot/sync: execute p2p handshake when there is no target (#3695) (a9db0ec)
- fix index out of range undeterministic error in rpc test (#3718) (d099384)
- fix non deterministic panic during TestStableNetworkRPC integration test (#3756) (ee3d243)
- lib/trie: use
MustBeHashed
for V1 trie nodes with larger storage values (#3739) (f5e48a9) - mocks: Set fixed version for uber mockgen in CI (#3656) (ea9877e)
- runtime/storage: support nested storage transactions (#3670) (3e99f6d)
- segfault on node restart (#3736) (d1ca7aa)
- state-version: should be uint8 instead of uint32 (#3779) (c8fdb14)
- update paseo chain spec (#3770) (6a54f28)
- use last finalized block on startup (#3737) (c262642)
Features
v0.8.0
0.8.0 (2023-12-11)
Bug Fixes
- .github/workflows: update node.js version (#3637) (619be1b)
- babe: Add support for versioned NextConfigData decoding (#3239) (5ee3a64)
- blockstate: if blocktree fails to search a hash in memory, load it from disk (#3059) (6442544)
- cache slot to header data while checking BABE equivocation (#3364) (dcfa4a4)
- chain: Fix
chain=westend
option (#3123) (64dbba6) - ci: cancel previous workflow runs (#3140) (a322a19)
- ci: fix all Deepsource issues (#3046) (4ea0a70)
- ci: fix broken docker build (#3231) (f796430)
- ci: Fix staging metrics collection (#3138) (05a5c4c)
- cli: parse module log-levels (#3285) (86c7577)
- cmd/gossamer: embed default toml config files (#3091) (af38364)
- cmd/gossamer: update error message (#3301) (960a9d4)
- dot/babe: use
bs.latestFinalised
instead of usinground/set id
(#3167) (46c0ef7) - dot/digest: create
BlockImportHandler
and remove channel (#3312) (a179855) - dot/network:
findPeers
returns on timeout if a peer is found (#3001) (2a05ce7) - dot/network: remove
maxReads
limitation to read stream (#3287) (483b23f) - dot/state: clean up scheduled changes once a forced change is applied (#3219) (5ebec46)
- dot/state: fix a bug in IsDescendantOf (#3125) (4fd4a89)
- dot/state: store raw authority keys and decode when verifying block signature (#3627) (58f741d)
- dot/sync: fix
Timestamp slot must match 'CurrentSlot'
while usingwestend
spec file (#3040) (e6da01b) - dot/sync: Revert verify justification before importing blocks (#3615) (11b96dc)
- dot/sync: rework on bootstrap/tip sync (#3227) (ab6650a)
- dot/sync: use
Range
instead ofSubChain
athandleDescedingRequest
(#3006) (a83c1a3) - dot/sync: verify justification before importing blocks (#3576) (2954fc0)
- dot/sync: wrong error message at
checkOrGetDescendantHash
(#2971) (b1c6bf1) - dot: use tempDir in tests as base path to avoid creating
dot/~
(#3363) (04514d5) - go.mod: Replace
centrifuge/go-substrate-rpc-client
dependency totimwu20/go-substrate-rpc-client
temporarily to fix build (#3572) (ea49251) - lib/babe: Add context and additional assertion to TestBuildBlock_ok (#3101) (a9a89ed)
- lib/babe: rewrite TestBuildBlock_failing (#3089) (28a3d0b)
- lib/babe: use current system time to yield a new slot (#3133) (9cd6f25)
- lib/grandpa: on verifying block justification, compare given block hash with finalised hash (#3081) (fc91843)
- lib/grandpa: ensure
finalisationEngine
exits when stop channel is triggered (#3141) (d7f7c06) - lib/runtime:
ext_default_child_storage_next_key_version_1
returnNone
correctly (#3473) (c7d574b) - lib/runtime: Fix
wasm error: out of bounds memory access
at[#9412261](https://github.com/ChainSafe/gossamer/issues/9412261)
(#3588) (ecb1ad9) - lib/runtime: prevents polkadot zero-address bug using
sr25519_verify
version 1 (#3494) (8b93d5e) - lib/runtime: return correct encoded value for
None
(#3451) (3e11bc2) - lib/runtime: update
MaxPossibleAllocation
to2^25
(#3393) (91eabdc) - lib/runtime: use
westend-dev
spec file inTestNodeRuntime_ValidateTransaction
(#3047) (043f5eb) - lib/trie:
ClearFromChild
should update parent trie (#3482) (70e2d2b) - lib/trie: create an empty child trie if not found (#3459) (5d68447)
- lib/trie: record deleted Merkle values fixed (#2873) (61f0216)
- peerset: check for incoming slot error (#2952) (a1602bc)
- rpc-tests: Fix node port to execute tests on macOS (#3223) (f758575)
- rpc/modules: use
westend-local
inTestAuthorModule_SubmitExtrinsic_invalid
test (#3051) ([b6429b7](https://github.com/ChainSafe/gossamer...
v0.7.0
0.7.0 (2022-11-23)
Bug Fixes
- chain: update ed25519 addresses in dev/gssmr genesis files (#2225) (5f47d8b)
- ci: caching of Go caches (#2451) (ce3c10c)
- ci: codecov.yml configuration (#2698) (d4fc383)
- ci: comment skip code for required workflows (#2312) (45dce9b)
- ci: copyright workflow to exit if different files (#2487) (89c32ae)
- ci: deepsource toml configuration (#2744) (86a70de)
- ci: embed v0.9.20 runtime, update test suite, and ci workflows (#2543) (0fff418), closes #2419 #2561 #2572 #2581 #2671
- ci: fix staging Dockerfile (#2474) (ae04b80)
- ci: mocks checking fixes (#2274) (d1308e0)
- ci: run devnet module unit tests (#2756) (f635c59)
- ci: run golangci-lint on integration tests (#2275) (3ae3401)
- cmd: allow --genesis flag to be passed to base command (#2427) (7f5b5aa)
- cmd: avoid nil pointer dereference (#2578) (f2cdfea)
- config: temporary fix for pprof enabled setting precedence (#2786) (d4d6262)
- core: fix txn pool for latest runtime (#2809) (1551e66)
- deps: upgrade chaindb to remove badger logs (#2738) (e0c5706)
- devnet: Fix build workflow for devnet (#2125) (0375fc2)
- Dockerfile: remove script entrypoint (#2707) (abd161b)
- dot/core:
RuntimeInstance
interfaceVersion
signature (#2783) (7d66ec0) - dot/core: fix the race condition in TrieState (#2499) (804069c), closes #2402
- dot/digest: BABE NextEpochData and NextConfigData should be set on finalization (#2339) (e991cc8)
- dot/digest: verify if next epoch already contains some definition (#2472) (a2ac6c2)
- dot/netwok: check for duplicate message earlier (#2435) (d62503f)
- dot/network: change BlockRequestMessage number from uint64 to uint32 (8105cd4)
- dot/network: close notifications streams (#2093) (de6e7c9), closes #2046
- dot/network: fixing errMissingHandshakeMutex (#2303) (eb07a53)
- dot/network: memory improvement for network buffers (#2233) (fd9b70d)
- dot/network: public IP address logging (#2140) (9e21587)
- dot/network: re-add nil mutex check for disconnected peer (#2408) (9b39bd1)
- dot/network: remove
defer cancel()
inside loop (#2248) (9e360a5) - dot/network: resize bytes slice buffer if needed (#2291) (8db8b2a)
- dot/peerset: fix sending on closed channel race condition when dropping peer (#2573) (2fa5d8a)
- dot/peerset: remove race conditions from
peerset
package (#2267) (df09d45) - dot/rpc/modules: grandpa.proveFinality update parameters, fix bug (#2576) (e7749cf)
- dot/rpc/modules: rpc.state.queryStorage fixed (#2565) (1ec0d47)
- dot/rpc: include unsafe flags to be considered by RPC layer (#2483) (3822257)
- dot/state/epoch, lib/babe: enable block production through epochs without rely on finalization (#2593) (a0a1804)
- dot/state: actually prune finalized tries from memory (#2196) (e4bc375)
- dot/state: change map of tries implementation to have working garbage collection (#2206) (fada46b)
- dot/state: inject mutex protected tries to states (#2287) (67a9bbb)
- dot/subscription: check websocket message from untrusted data (#2527) (1f20d98)
- dot/subscription: unsafe type casting from untrusted input (#2529) (1015733)
- dot/sync, dot/rpc: implement HighestBlock (#2195) (f8d8657)
- dot/sync: cleanup logs; don't log case where we fail to get parent while processing (#2188) ([cb360ab](https://github.com/ChainSaf...
v0.6.0
0.6.0 (2021-12-03)
Bug Fixes
- babe: Fix extrinsic format in block. (#1530) (1a03b2a)
- ci: add missing go-version matrix to fix development branch CI (#2037) (6babe76)
- cmd/cfg: Use Babe Lead value from toml config (#2032) (06aa3e3)
- cmd/gossamer: Generate random name if --name flag not set (#1506) (3c05a88)
- confirm block import notifier is closed properly (#1736) (ad2d85e)
- docs: improve build-spec usage docs (#1706) (2e164b4)
- dot/core: Add only extrinsic during chain reorg. (#1609) (29413d4)
- dot/core: Batch process transaction message. (#1780) (0064836)
- dot/core: check transaction Validity.Propagate field to determine whether to propagate tx (#1643) (81f23cc)
- dot/core: Fix handle transaction message test. (#1607) (58b8725)
- dot/network, lib/grandpa: fix handshake decoding and grandpa message handler sigabort (#1631) (887f72c)
- dot/network, lib/grandpa: fix node sync, improve devnet finality (bcc7935)
- dot/network: add nil checks in connManager (#2069) (7f9c042)
- dot/network: Check for size when decoding leb128. (#1634) (d082b9e)
- dot/network: check if peer supports protocol (#1617) (6bf66a4)
- dot/network: decrease DHT find peers interval for gssmr nodes (#1703) (08516a0)
- dot/network: fix bugs in notifications protocol handlers; add metrics for inbound/outbound streams (#2010) (8c2993d)
- dot/network: fix dht connection on discovery on devnet (#2059) (da065b8)
- dot/network: fix discovery between gossamer nodes (#1594) (f4c79d3)
- dot/network: fix justification request at head logic (#1510) (98d1413)
- dot/network: fix memory allocations with
sizedBufferPool
(#1963) (e0b126b) - dot/network: Fix missing digest in header (#2092) (21ea85e)
- dot/network: Fix notification handshake and reuse stream. (#1545) (a632dc4)
- dot/network: fix receiving notifications messages from substrate peers (#1517) (fdf3c53)
- dot/network: fix stream manager tests (#1683) (e02eca4)
- dot/network: implement a handshake timeout (#1615) (87c2f63)
- dot/network: Implement time based handle transaction (#1942) (dd08424)
- dot/network: move low reputation peer removal from network ConnManager to peer scoring logic (dot/peerstate) (#2068) (ac16285), closes #2039
- dot/network: Return on EOF error while reading stream. (#1733) (f447eac)
- dot/network: split stored streams and handshakeData into inbound and outbound (#1553) (637050b)
- dot/network: update notificationsProtocol handshakeData to sync.Map (#1492) (22f7269)
- dot/node: Start websocket server only with
--ws
flag (#1671) (6ecef3b) - dot/state, lib/babe, lib/trie: improve syncing between gossamer authority nodes (#1613) (ca99fbf)
- dot/state, lib/grandpa: update justification and SignedVote handling in database (#1682) (bbdcd6f)
- dot/state,dot/network: improve memory usage when syncing (#1491) (3b2ad8d)
- dot/state: add StorageState Lock/Unlock API for usage by babe and sync (#1700) (3c22ace)
- dot/state: fix deadlock, fixes bootstrap syncing (#1959) (dd80c09)
- dot/state: fix usage of trie.Snapshot (#1489) (3880a40)
- dot/state: track runtime per-block, fix runtime upgrades differing between forks (#1638) (e133884)
- dot/state: update
*state.BlockState.AddBlockToBlockTree
to store block inunfinalisedBlocksMap
(#2006) (55d997f) - dot/sync: add nil header checks (#2099) (a7d4be0)
- dot/sync: fix block request and response logic (#1907) (9c6283e)
- dot/sync: fix creating block response, fixes node sync between gossamer nodes (#1572) (1328c80)
- dot/telemetry: refactor telemetry to reduce CPU usage (#1597) ([bc31ac7](https:...
v0.5.0
v0.5.0 (2021-05-06)
Bug Fixes
- dot/state: Update StorageState to load storage from database. (#1486)
- dot/state: fix usage of trie.Snapshot (#1489)
- dot/state,dot/network: improve memory usage when syncing (#1491)
- dot/network: update notificationsProtocol handshakeData to sync.Map (#1492)
- cmd/gossamer: Generate random name if --name flag not set (#1506)
- dot/network: fix justification request at head logic (#1510)
- dot/network: Add cache for network message. (#1511)
- dot/network: fix receiving notifications messages from substrate peers (#1517)
- dot/rpc, dot/state: state_subscribeStorage to only notify for value changes
- lib/babe: fix BABE state storing after building block (#1536)
- lib/babe: Fix extrinsic format in block. (#1530)
- dot/network: Fix notification handshake and reuse stream. (#1545)
- dot: persist node name (#1543)
- dot/network: split stored streams and handshakeData into inbound and outbound (#1553)
- update go-schnorrkel version (#1557)
Features
- cmd: implement import-runtime subcommand (#1483)
- lib/crypto: update ed25519 to use go-schnorrkel bip39 derivation (#1488)
- dot/network: request block justifications when near head (#1499)
- dot/telemetry: Implement basic telemetry connection (#1497)
- dot/network: implement persistent peers functionality (#1512)
- dot: Add properties and chainId on build-spec command (#1520)
- dot/network, lib/grandpa: request justification on receiving NeighbourMessage, verify justification on receipt (#1529)
- lib/grandpa: fully verify justifications using GrandpaState (#1544)
- dot/network: add propagate return bool to messageHandler func type to determine whether to propagate message or not (#1555)
- dot/telemetry: implement telemetry system.interval message (#1528)
- lib/grandpa: send NeighbourMessage to peers (#1558)
Maintenance / Refactor
- cmd: rename genesis-raw flag and files to genesis, allow raw and human-readable genesis to be passed to it (#1500)
- docs: Docs Overhaul (#1438)
- dot/network, lib/grandpa: update network.ConsensusMessage, add grandpa.NeighbourMessage and handle accordingly (#1519)
- lib/grandpa: update grandpa message types to match substrate (#1534)
- linter: change locale to UK from US (#1533)
- dot/core, dot/state, lib/grandpa: implement GrandpaState, use in DigestHandler and grandpa.Service (#1540)
- dot/state: create BaseState for accessing non-prefixed db keys (#1546)
- lib/common implement MustHexToBigInt (#1547)
- close db if node initialized check fails (#1551)
v0.4.1
v0.4.0
0.4.0 (2021-04-13)
Bug Fixes
- dot/network: fix justification request at head logic (#1510) (98d1413)
- cmd/gossamer: Generate random name if --name flag not set (#1506) (3c05a88)
- fix edit link (#1507) (5089327)
- dot/network: update notificationsProtocol handshakeData to sync.Map (#1492) (22f7269)
- dot/state: fix usage of trie.Snapshot (#1489) (3880a40)
- dot/state,dot/network: improve memory usage when syncing (#1491) (3b2ad8d)
- lib/crypto/ed25519: update ed25519 to use go-schnorrkel bip39 derivation (#1488) (dfb95d2)
Features
- dot/network: Add cache for network message. (#1511) (accaf69)
- dot/network: implement persistent peers functionality (#1512) (7850532)
- dot/telemetry: Implement basic telemetry connection (#1497) (fcb4159)
- dot/network: request block justifications when near head (#1499) (ae7012b)
- cmd: implement import-runtime subcommand (#1483) (d82b2da)
v0.3.2
This is a pre-release compatible with the Kusama and Polkadot networks.
New Features
- added BestBlock bool to BlockAnnounceMessage (#1480)
- open block announce stream and send handshake on connect (#1467)
- implement import-state subcommand (#1455)
- add support for submit and watch extrinisic RPC (#1415)
- monitor and publish metrics to Prometheus. (#1437)
- implement ext_crypto_secp256k1_ecdsa_recover_compressed_version_1 (#1442)
Improvements
- moved websocket messages and listeners subscription package (#1459)
- improve syncing at head (#1465)
- start syncQueue after bootstrapping, don't run syncQueue during tests (#1446)
Bug Fixes
- fix network grandpa protocol ID (#1466)
- fix nested storage transactions, fixes kusama block 4939774 (#1457)
- fix trie.NextKey case (#1463)
- return 0 on ext_crypto_sr25519_verify_version_2 or ext_crypto_ed25519_verify_version_1 failure, fixes polkadot block 1089328 (#1458)
- allow generic keystore type in public_keys ext functions (#1450)
- update sign_ functs to return fixed size byte optional (#1451)
- re-implement and fix trie.NextKey (#1449)
Testing
- add transfer extrinsic integration test (#1448)
Maintenance
v0.3.1
This is a pre-release compatible with the Polkadot v0.8 runtime API and the Kusama and Polkadot networks.
New Features
- use
GlobalKeystore
inlib/runtime
package, update crypto runtime APIs accordingly - add BIP39 functionality for sr25519, update crypto runtime APIs accordingly
- implement
--rewind
to rewind chain to a specific block for testing - handle block justifications when syncing, mark block finalized when a response is received and prune blocktree
- update
system_peers
RPC call to return peer info collected from network handshakes - implemented persistent peerstore for the network; peerstore is now saved to disk
Improvements
- filter out local addresses from advertised addresses
- clean up
trie.Trie
API; no longer returns error for cases that don't error - update
blocktree.getNode
to check leaves of blocktree first, improving CPU usage - improve sync queue request management
- update network scoring so that peers with highest score are requested from first
Bug Fixes
- fix usage of
trie.Snapshot
and ensure previous tries don't get modified - if node shuts down abnormally, causing some database info to be missing, restart chain from last finalized block
- update
ext_misc_runtime_version_version_1
to return correctVersion
encoding - fix
trie.ClearPrefix
andtrie.GetAllKeysWithPrefix
based on syncing issues - replace
trie.NextKey
inTrieState
withtrie.GetAllKeysWithPrefix
and manual iteration for now based on syncing issues - fix clearing of digests before
execute_block
call, enabling Polkadot compatibility
Deprecated
- deprecated the legacy runtime API (v0.6)
v0.3.0 - Preliminary Kusama compatibility
This is a pre-release compatible with the Polkadot v0.8 runtime API and the Kusama network.
New Features
- compatible with Polkadot v0.8 runtime API (go-wasmer)
- networking up-to-date with substrate as of Feb 25 2021 (discovery, message exchanges tested and working with Kusama)
- compatibility with polkadot.js: implement storage and chain updates via websocket; able to query blocks and state; account and extrinsic submission working within node.js
- add preliminary support for the perlin/life wasm interpreter
- add BABE secondary slot authorship verification
- update BABE digests to be compatible with substrate and correctly set next epoch data
Improvements
- merkle-patricia trie database backing refactored to store trie nodes individually in database
- fix usage of trie node "dirty" bit, use this when writing to database
- merkle-patricia trie refactored to allow for "versioned" trie where only updated trie nodes are copied and updated, unmodified trie nodes are no longer duplicated
- network improvements based on CPU profiling; read/write directly to/from same stream when syncing, improve allocations
- syncing algorithm improved to queue block data while currently processing data
- basic scoring and pruning added to sync algorithm; don't disconnect from preferred peers
Bug Fixes
- runtime upgrades fixed and tested with Kusama
- runtime bug where values were not being correctly copied before placed into trie fixed
- use
__heap_base
as allocator offset for runtime - fix BABE threshold calculation to match substrate