This changelog is based on Keep A Changelog.
setup-main-chain-state
command now uses native Rust to upsert the D-Parameter and upsert permissioned candidates
- Separate binary partner-chains-smart-contracts-commands.
- Cache returning invalid results when native token MainChainScripts has changed.
- Crash of parnter-chain-node smart-contracts command. Logging is now set independently.
- Renamed of argument 'ogmios-host' to 'ogmios-url' in smart-contracts subcommands.
genesis_utxo
andregistration_utxo
no longer have to have no native tokens.- Update ogmios to v6.9.0
- Organized Rust sources into two directories: toolkit and node.
- Implemented transaction balancing with CSL in offchain code.
- Update offchain code dependencies: pallas, ulpc and cardano-serialization-lib.
- Updated to partner-chains-smart-contracts v7.0.1
-
- chain-params crate that provided SidechainParam is removed, because there are no SidechainParams anymore
-
- partner-chains-cli is changed, so prepare-config wizard sets
genesis_utxo
and does not set sidechain parameters
- partner-chains-cli is changed, so prepare-config wizard sets
-
- pallets are not generic on SidechainParams anymore, they use UtxoId (genesis_utxo) instead
-
- This change requires manual migration, because automatic migration of storage in this case is impossible.
Please refer to the migration guide at
docs/developer-guides/migration-guide-1.4.0.md
for detailed instructions on how to manually upgrade a running chain to 1.4.0. Do NOT perform a normal runtime upgrade, it will break your chain.
- This change requires manual migration, because automatic migration of storage in this case is impossible.
Please refer to the migration guide at
- CardanoNetwork bug in
partner-chains-cli
, that would cause the CLI to fail with the mainnet.
- Added
smart-contracts
command to the node with sub-commandsinit-governance
,get-scripts
andupsert-d-parameter
.
- Added 'deregister' command to partner-chains-cli.
- Made
MainChainScripts
in the native token pallet optional. If they are not set, the inherent data provider will not query the main chain state or produce inherent data at all. - ETCM-8366 - native token management pallet can now observe historical transfers when added after the genesis block
- Updated to polkadot-stable2409 (aka v1.16.0).
-
- Requires some downstream changes in the node code.
-
- See diff of the commit that adds this changelog line for hints.
-
- Specific changes will depend on the node implementation.
- Update toolchain to 1.81.0
- Implemented batch queries and caching for the native token observability. Improves performance of the full-sync.
- Added ogmios-client interal library for communication with Ogmios
- Using Ogmios for reading Cardano Network parameters in
partner-chains-cli
, instead of asking user to choose them - Bugfix: rephrased vague log message when selecting the epoch committee
- Removed the
main-chain-follower-api
completely. Each crate that depended on it now defines its own*DataSource
trait, implemented by separate types indb-sync-follower
andmain-chain-follower-mock
crates. For reference on how to create these new data sources seenode/src/main_chain_follower.rs
file. - Added
pallet-session
integration forpallet-session-validator-management
. Not wired in the node. partner-chains-cli
does not usecardano-cli
to derive address not to query utxos.partner-chains-cli
does not usepc-contracts-cli
inprepare-configuration
wizard, it usespartner-chains-cardano-offchain
crate instead.- Update cardano-node to 10.1.2
- Added
new_if_pallet_present
factory for the native token inherent data provider, allowing to selectively query main chain state based on runtime version - Added Largest-First coin selection algorithm.
- Switched to paritytech/polkadot-sdk polkadot-stable2407-2. No migration is required because of this change.
- Reverted usage of custom Runner that allowed
async_run
with asynchronous initializer. NowRunner
code used is the same as in paritytech/polkadot-sdk. This change requires updates in node:new_partial
cannot be async. Run command dispatch looks more like in paritytech/polkadot-sdk. - bugfix for Mainnet compatibility in the db-sync main-chain follower. Fixes null block_no column decoding problem.
- moved out some cli related code from
node
crate, in order to require less copy-paste in users nodes - removed USE_CHAIN_INIT code. Migration strategy is to remove copy-pasted and adapted code. It will not compile with vanilla polkadot-sdk, that we plan to use in future.
- moved
pallet-partner-chains-session
from polkadot-sdk fork to this repository. Node uses vanilla grandpa and aura consensus now. No migration is needed. - moved
sc-consensus-aura
from input-output-hk/polkadot-sdk fork to this repository, tosc-partner-chains-consensus-aura
andsp-partner-chains-consensus-aura
. This change requires migration of the node, PartnerChainsProposerFactory has to be used. Seeservice.rs
inpartner-chains-node
crate for an example. - renamed sidechain-main-cli and relevant naming to pc-contracts-cli
- ETCM-6092 - removed the
epoch-derivation
crate, moving epoch derivation logic to thesidechain-domain
crate. RemovedEpochConfig
wrapper type; code using it should be changed to useMainchainEpochConfig
type directly,EpochConfig::read()
uses should be replaced byMainchainEpochConfig::read_from_env()
.
- ETCM-8267 - fixed
partner-chains-cli
missing the native token configuration
- ETCM-7811 - native token movement observability components:
sp-native-token-management
andpallet-native-token-management
crates; data sources behind thenative-token
feature inmain-chain-follower-api
anddb-sync-follower
crates. - added helper functions to
SidechainParams
and allMainChainScripts
types to read them from environment - Extrinsic
set_main_chain_scripts
for migrating to new committee selection main chain scripts
- polkadot-sdk dependency updated to partnerchains-stable2407 (stable2407 is v1.15.0 in the previous scheme)
- changed the inner type of
McBlockHash
from Vec to an array - ETCM-7985 - bumped
partner-chains-smart-contracts
version and updated thepartner-chains-cli
to match. Nowpartner-chains-cli
passes a network parameter tosidechain-main-cli
where necessary. - governance authority key hash is now calculated in
prepare-configuration
without using externalcardano-cli
- removed Relay docker build files
- removed usage of 'storage::getter' macros, following polkadot-sdk changes
- ETCM-7498 - update to polkadot v1.12.0
- ETCM-6262 - changed the way benchmarks are used in runtime. It now contains 'weights' directory with benchmarks for pallets, block and extrinsics overheads, machine and storage. New scripts for generating them were added.
- ETCM-7506 - moved
generate-signatures
functionality to node commandregistration-signatures
, output has changed, automation in this repository has been updated - Extracted SidechainParams to own crate, encouraging users to create their own SidechainParams.
- ETCM-6826 - added runtime api for candidate verification. Candidate verification outside of runtime is done only through runtime api. This node requires runtime to have a spec_version >= 111.
- ETCM-7599 - create custom index from dbsync follower implementation, to avoid using custom db-sync image
- ETCM-7512 - added registration-status command to sidechains-substrate-node cli
- RocksDB is explicitly made a sc-client-db backend
- ETCM-7610 implemented 'establish bootnode' step from prepare-configuration wizard
- Rust toolchain and docker builder images are updated to 1.77.0
- ETCM-7611 implemented 'establish sidechain parameters' step from prepare-configuration wizard
- ETCM-7613 implemented 'create-chain-spec' wizard
- ETCM-7614 implemented 'setup-main-chain-state' wizard
- ETCM-7530 - Removed active flow from runtime and node. To migrate, remove the following dependencies from you node
and runtime crates:
sp-active-flow
,pallet-active-flow
,pallet-active-flow-rpc
,sp-incoming-tx
,allet-incoming-tx
andallet-incoming-tx-rpc
. This involves removing Active Flow Pallet and Incoming Transactions Pallet from the runtime, along with their configuration, chain spec configuration and RPC modules in the node. - Removed the
runtime-constants
crate.SLOTS_PER_EPOCH
parameter now needs to be defined by the users in their runtime crate. - ETCM-7762 - update to polkadot v1.13.0 - requires adaption in node code, because GenericChainSpec has lost one generic parameter
- ETCM-7759 - decoupled all crates that use chain follower data sources from the concrete
DataSources
type. Now all logic accepts any type that implements one of the traits:XXXDataSource
orHasXXXDataSource
. - ETCM-7766 - updates to accommodate to new version of partner-chains-smart-contracts: containers and devnet settings and utilities
- BREAKING: ETCM-7818 read candidates related main chain configuration from ledger, not from environment. Migration for existing chains is to put proper configuration in the ledger and then export chain as a spec file.
- ETCM-7855 - removed all Active Flow-related components and features. This change should not affect Partner Chains nodes that did not use Active Flow.
- Clean up docs to support independent release from different repo
- Modify publish-doc.yml to only publish rustdocs
- Removed the
manage-devenv
crate - ETCM-7938 - update polkadot-sdk to v1.14.0
- Renamed
sidechain_domain::BlockHash
toMcBlockHash
for clarity - BREAKING: ETCM-7950 - Move SLOTS_PER_EPOCH to const to storage value in order to enable its configuration without recompilation. It is NOT BREAKING change for the chains having SLOTS_PER_EPOCH equal to 60.
sidechain-runtime
andsidechains-substrate-node
crates are updated to version 1.0.0- renamed
sidechains-substrate-node
topartner-chains-node
- ETCM-7745 - do not overwrite legacy chain params in partner-chains-cli prepare-configuration wizard
- ETCM-7713 - partner-chains-cli prepare-configuration small improvements and fixes
- ETCM-7610 implemented 'establish main chain configuration' step of prepare-configuration wizard
- ETCM-7422 - decoupled all pallet crates from their related inherent data crates. Moved all primitives
(types, error types, runtime APIs etc.) to separate crates in
primitives/
directory. Now for eachpallet-*
crate there is a correspondingsp-*
crate. - ETCM-7423 - moved
McHashInherentDataProvider
,IncomingTransactionsProvider
,AriadneInherentDataProvider
andCrossChainSignaturesInherentDataProvider
creation logic out of the node crate, to their respective primitive crates. Cleanedinherent_data.rs
which now contains only wiring and necessary minor helper logic. - ETCM-6709 - db-sync implementation of CandidatesDataSource has built-in caching, that is used only for stable main chain data. main-chain-follower-caching create is removed.
- Inherent data provider creation logic now uses error types instead of boxed errors where it's possible
- renamed the
block-rewards-primitives
crate tosp-block-rewards
for consistency - made
pallet-block-rewards
crate depend onsp-block-rewards
and moved some types and traits there
- ETCM-7463 - fixed incoming transactions cache in db-sync-follower, it was not working at all
- ETCM-7080: add aura and grandpa public keys to registrations data returned from RPC method
-
IMPORTANT: partner-chains-smart-contracts revision has been updated in flake.nix. Downstream projects, like Midnight, should keep using the previous value, to keep configuration utilities in sync with their testnets.
-
BREAKING: ETCM-5905 - remove all storage maps from pallet-active-flow
-
ETCM-7136 - replaced the local partner-chains-session pallet with one from the SDK
-
ETCM-7144 - fixes for the mainchain-follower-cli, required changes in mainchain-follower-api
-
ETCM-7293 - modularized the MC follower API, db-sync implementation and mock crates, hiding each data source type behind a feature
-
ETCM-6955 - move incoming transactions cache to db-sync-follower and use updated lower bound when after_tx param is not defined
-
BREAKING: ETCM-7330 - pallet-sidechain works with generic SidechainParameters. Change is breaking because storages are now generic over SidechainParameters. sidechain_getParams returns JSON representation of generic parameters instead of concrete GetParamsResponse. sidechain_getEpochSignatures field 'params' has changed - Relay 2.6.x is not compatible with this change, use Relay 2.7.x.
-
ETCM-7108 - unknown or 0 stake delegation makes registration invalid. It should not change committee selection results.
-
Refactoring: moved
sidechain_getAridaneParameters
andsidechain_getRegistrations
topallet-session-validator-management-rpc
.
- ETCM-7080 - use the same candidate validation as in runtime for
sidechain_getRegistrations
andsidechain_getAriadneParameters
rpc methods.
- Added an optional
slot
parameter togetEpochPhase
json RPC method - BREAKING: ETCM-6767 - store and verify mainchain block hash in header
- ETCM-6766 - main chain follower implementation for getting blocks for main chain state reference
- ETCM-6765 - add BLOCK_STABILITY_MARGIN to the configuration
- ETCM-6855 - incoming transactions with invalid recipient are filtered out when reading inherents, RPC method
sidechain_getIncomingTransactions
doesn't fail when there are transactions with invalid recipients. - ETCM-6777 - verify that mainchain state reference slot is high enough to calculate next committee
- ETCM-6954 - update to partnerchains-polkadot-v1.9.0 (public fork), update most of the dependencies
- BREAKING: ETCM-5898 - remove storage maps from pallet-session-validator-management and simplify the committee rotation logic
- ETCM-6877 - improved the performance of getting the latest on chain committee hash, requires update in deployment configuration.
- ETCM-6822 - update partner-chains-smart-contracts revision to: 76f57380b6d85f2c1a1f212591a99ebd0db96213.
- ETCM-6816, ETCM-6813 - removed dependency on
sidechain-inherents
,mock-types
andsidechain-domain
frompallet-session-validator-management
crate - ETCM-6813 - moved authority selection code from
sidechain-inherents
to a newauthority-selection-inherents
crate - ETCM-6813 - moved code shared between
authority-selection-inherents
andpallet-session-validator-management
to a new cratesp-session-validator-management
- BREAKING: ETCM-6777 - all ariadne main chain data used for selecting the committees for partner chain epochs which take place during main chain epoch N is now sourced from last slot of main chain epoch N-2
- changed logic in
authority-selection-inherents
crate to operate on Sr25519 and Ed25519 public key types instead of raw byte arrays - BREAKING: ETCM-6776 - use MC hash in the incoming transactions calculation
- ETCM-7072 - move
ValidatorManagementSessionManager
to a dedicated crate
- ETCM-6854 - make endpoints_spec.json file consistent with the actual implementation in session-validator-management
- ETCM-7051 - sidechain_getEpochSignatures nextCommitteePubKeys were returning next committee of the current epoch
- ETCM-7081 - fixed 'check_inherent' when committee cannot be selected from inherent data
- ETCM-7115 - fixed
sidechain_getEpochCommittee
RPC method returning wrong committee for next epoch from now - ETCM-7143 - fixed invalid block queries for the stable block at in dbsync-mainchain-follower
- ETCM-6517 - Added a main chain hash inherent provider and digest item under ID
mcsh
.
- ETCM-6858 - modified queries for getting registered candidates, permissioned-candidates, and d-parameter, vastly improving their performance.
- ETCM-6655 - refactor/cleanup of main chain follower queries related to registrations.
- ETCM-6517 - Updated Polkadot SDK dependency to a version introducing inherent digests.
- ETCM-6818 - remove pallet session validator management dependency to pallet sidechains session
- ETCM-6814 - decouple session-validator-management pallet from sidechain pallet.
- ETCM-6600 - updated the Polkadot SDK version to 1.7
- ETCM-6777 - chain initialization: insert initial committee into the storage
- ETCM-6608 - chain initialization: dumb search algorithm to find the earliest committee, plus
MINIMUM_MC_EPOCH
config setting for optimisation - ETCM-6629 -
sidechain_getEpochPhase
json RPC method inactive-flow-pallet
- ETCM-6648 - added
limit
parameter tosidechain_getSignaturesToUpload
json RPC method
- ETCM-6517 -
sidechain_getRegistrations
changed to return only active and invalid registrations inmainchainEpoch
formainchainPublicKey
- ETCM-6517 -
sidechain_getAriadneParameters
extended withcandidateRegistrations
response field - ETCM-5756 (update) - increased granularity of errors when retrieving the parameters
- ETCM-6629 - moved
sidechain_getStatus
json RPC method tosidechain-pallet
- ETCM-6728 - changed
sidechain_getStatus
json RPC method to calculateepoch
andnextEpochTimestamp
using current time
- ETCM-6629 - removed
epoch_phase
field fromsidechain_getStatus
json RPC method
- ETCM-6616 inherent data errors are handled properly, so meaningful messages are displayed
- ETCM-6075 - added prometheus metrics
execution_time
,call_count
for each method in main chain follower services
- ETCM-6420 - update the Polkadot SDK dependency to 1.6.0
- ETCM-5905 - use block search algorithm in
sidechain_getOutgoingTxMerkleProof
- enables replacing StorageMaps with StorageValue and save space. - ETCM-5905 - update sidechain_getOutgoingTxMerkleProof to use block search
- ETCM-6536 - fixed rejection of blocks without incoming transactions ('unlock' call), when verifier can already observe some new transactions on the main chain. Fixed accepting a block with 'unlock' call when verifier does not see any transactions.
- ETCM-6367 - fixed
sidechain_getEpochsToUpload
, so it returns the first epoch of sidechain by @LGLO in https://github.com/input-output-hk/partner-chains/pull/521 - ETCM-6369 - fixed invalid incoming transaction inherent caused by negative amount (bug in db-sync main chain follower) by @LGLO in https://github.com/input-output-hk/partner-chains/pull/527
- ETCM-5479 - fixed merkle proof endpoint with proper distributed set utxo by @AmbientTea in https://github.com/input-output-hk/partner-chains/pull/532
- ETCM-6441 - fixed a SQL query, so it can use index on multi_asset table when looking for d-parameter and permissioned candidates by @LGLO in https://github.com/input-output-hk/partner-chains/pull/537
- ETCM-6080 - mock payouts to block beneficiaries by @AmbientTea in https://github.com/input-output-hk/partner-chains/pull/500
- ETCM-5898 - Updated
sidechain_getEpochCommittee
to search for appropriate block, will allow to not store map of all epochs in the future by @aang114 in https://github.com/input-output-hk/partner-chains/pull/535 - ETCM-5756 - Unified
get_permissioned_candidates_for_epoch
andget_d_parameter_for_epoch
into a single function:get_ariadne_parameters
- ETCM-6516 - Updated slot assignment algorithm with the most recent specification https://github.com/input-output-hk/partner-chains/pull/563