Skip to content

Releases: ChainSafe/gossamer

v0.9.0

01 Mar 16:41
Compare
Choose a tag to compare

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

  • config: dynamically set version based on environment (#3693) (5c534c9)
  • staging: Expose RPC on Westend Staging Node (#3687) (c374eaa)
  • tests/scripts: create script to retrieve trie state via rpc (#3714) (5ccea40)

v0.8.0

11 Dec 21:46
Compare
Choose a tag to compare

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 using round/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 using westend 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 of SubChain at handleDescedingRequest (#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 to timwu20/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 return None 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 to 2^25 (#3393) (91eabdc)
  • lib/runtime: use westend-dev spec file in TestNodeRuntime_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 in TestAuthorModule_SubmitExtrinsic_invalid test (#3051) ([b6429b7](https://github.com/ChainSafe/gossamer...
Read more

v0.7.0

23 Nov 18:05
Compare
Choose a tag to compare

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 interface Version 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...
Read more

v0.6.0

03 Dec 20:50
Compare
Choose a tag to compare
v0.6.0 Pre-release
Pre-release

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 in unfinalisedBlocksMap (#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:...
Read more

v0.5.0

06 May 21:36
6bf1c62
Compare
Choose a tag to compare
v0.5.0 Pre-release
Pre-release

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

14 Apr 14:32
fdf3c53
Compare
Choose a tag to compare
v0.4.1 Pre-release
Pre-release

0.4.1 (2021-04-14)

Bug Fixes

  • dot/network: fix receiving notifications messages from substrate peers (#1517) (fdf3c53)

v0.4.0

13 Apr 15:37
558b9b3
Compare
Choose a tag to compare
v0.4.0 Pre-release
Pre-release

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

22 Mar 21:42
b8c4dd7
Compare
Choose a tag to compare
v0.3.2 Pre-release
Pre-release

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

  • code coverage change from codeclimate to codecov (#1461)
  • rename ksmcc -> kusama (#1470)

v0.3.1

08 Mar 19:53
8ee8ded
Compare
Choose a tag to compare
v0.3.1 Pre-release
Pre-release

This is a pre-release compatible with the Polkadot v0.8 runtime API and the Kusama and Polkadot networks.

New Features

  • use GlobalKeystore in lib/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 correct Version encoding
  • fix trie.ClearPrefix and trie.GetAllKeysWithPrefix based on syncing issues
  • replace trie.NextKey in TrieState with trie.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

25 Feb 19:49
da8a240
Compare
Choose a tag to compare

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