Skip to content

Releases: input-output-hk/partner-chains

Partner Chains Node 1.3.0

14 Nov 22:16
1fc4cb2
Compare
Choose a tag to compare

Changed

  • 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 in db-sync-follower and main-chain-follower-mock crates. For reference
    on how to create these new data sources see node/src/main_chain_follower.rs file.
  • Added pallet-session integration for pallet-session-validator-management. Not wired in the node.
  • partner-chains-cli does not use cardano-cli to derive address not to query utxos.
  • partner-chains-cli does not use pc-contracts-cli in prepare-configuration wizard, it uses partner-chains-cardano-offchain crate instead.
  • Update cardano-node to 10.1.2

Added

  • 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.

Compatibility matrix

partner-chains-node partner-chains-smart-contracts cardano-node cardano-db-sync kupo ogmios
1.3.0 6.2.2 10.1.2 13.5.0.2 2.9.0 6.8.0

Binaries

You can download the archives that contain both partner-chains-node and partner-chains-cli from assets attached to this release (available for MacOS and Linux architectures). PC smart contracts CLI can be downloaded from here.

Docker

You can also pull the Docker image of the partner-chains-node from GitHub Container Registry:

docker pull ghcr.io/input-output-hk/partner-chains/partner-chains-node:v1.3.0

How to Use

Refer to the documentation for detailed instructions on using the node and CLI tools.

Support

You can visit our issues page for support, feature requests, or to report a bug.

Partner Chains Node v1.2.0

07 Oct 10:59
31b57d6
Compare
Choose a tag to compare

Notes

Code migration guide for partner-chains v1.1.0 to v1.2.0

Code migration guide for partner-chains v1.1.0 to v1.2.0

partner-chains-node-commands

Code supporting generate-signatures, get-ariadne-parameters and get-registration-status commands has been moved from the reference node to library crates of partner-chains.
Moving this code to library crates will make it less code to update in the future.
Any node has to recognize these commands in order to be a valid partner chain node.

  1. Add partner-chains-node-commands crate to your dependencies in Cargo.toml.

  2. Modify Subcommand enum (in reference implementation it is in cli.rs file):

#[derive(Debug, clap::Subcommand)]
pub enum Subcommand {
	// ... other subcommands
	#[clap(flatten)]
	PartnerChains(PartnerChainsSubcommand<YourSidechainParams>),
	// ... other subcommands
}

, where YourSidechainParams is the struct that holds the parameters of your partner chains. Reference implementation uses chain_params::SidechainParams struct.

  1. Wire all the partner chains commands in the run function of your node. For example:
pub fn run() -> sc_cli::Result<()> {
	let cli = Cli::from_args();

	match &cli.subcommand {
		// ... other commmands
		Some(Subcommand::PartnerChains(cmd)) => {
			let make_dependencies = |config| {
				let components = service::new_partial(&config)?;
				Ok((components.client, components.task_manager, components.other.3.candidate))
			};
			partner_chains_node_commands::run(&cli, make_dependencies, cmd.clone())
		},
		/// ... other commands
  1. Cleanup cli.rs and mod.rs files in case you node had copy-paste implementation of these commands.

polkadot-sdk

partner-chains toolkit has migrated from custom fork of polkadot-sdk to paritytech fork of polkadot-sdk.
This changes the structure of crates used by partner-chains toolkit.

Please update your dependencies to reflect this change and depend only on the paritytech fork.
Replace git = "https://github.com/input-output-hk/polkadot-sdk.git", tag = "partnerchains-stable2407" with "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-stable2407-2" in your cargo files.

sc-partner-chains-consensus-aura

input-output-hk fork of polkadot used modified sc-consensus-aura crate to inject slot in inherent data providers and to have access to inherent digest (Cardano stable block hash).
These modifications are moved to partner-chains crate sc-partner-chains-consensus-aura that depends on unmodified sc-consensus-aura crate from paritytech/polkadot-sdk.

Add sc-partner-chains-consensus-aura to your dependencies in Cargo.toml.

Code changes related wiring this change are (service.rs file in reference node implementation):

  1. Replace use sp_partner_chains_consensus_aura::CurrentSlotProvider; with use sc_consensus_aura::CurrentSlotProvider;.

  2. Replace sc_consensus_aura::import_queue with sc_partner_chains_consensus_aura::import_queue.

  3. Replace sc_consensus_aura::start_aura with sc_partner_chains_consensus_aura::start_aura.

  4. Use custom BlockProposerFactory from sc-partner-chains-consensus-aura crate:

let basic_authorship_proposer_factory = sc_basic_authorship::ProposerFactory::new(
	task_manager.spawn_handle(),
	client.clone(),
	transaction_pool.clone(),
	prometheus_registry.as_ref(),
	telemetry.as_ref().map(|x| x.handle()),
);
let proposer_factory: PartnerChainsProposerFactory<_, _, McHashInherentDigest> =
	PartnerChainsProposerFactory::new(basic_authorship_proposer_factory);

pallet-partner-chains-session

This pallet was moved from polkadot-sdk to partner-chains, please update your cargo files.
Also add pallet-session-runtime-stub from partner-chains to your runtime dependencies.
Add pallet-session from polkadot-sdk as well to runtime and node dependencies.

runtime code

It is required to add pallet-session Runtime configuration to your construct_runtime! macro.
What is more, currently it has to be stubbed implementation, because of how pallet-partner-chains-session is implemented and wired in.
To obtain this stub implementation use:

pallet_session_runtime_stub::impl_pallet_session_config!(Runtime);

Then add: PolkadotSession:pallet_session in the construct_runtime! macro.

Increase the spec_version, so it will be possible to upgrade the runtime.

sc-cli

Runner has been reverted to pairtytech version, this requires changes in the node code,
because the vanilla polkadot-sdk version doesn't support async in a way our custom code did.

Required change is in service.rs file, where the main chain follower has to be created in a blocking way:

let data_sources = task::block_in_place(|| {
	config.tokio_handle.block_on(
		crate::main_chain_follower::create_cached_main_chain_follower_data_sources(
			mc_follower_metrics.clone(),
		),
	)
})?;

pub fn new_partial is not async anymore, please follow the change in your implementation.

Please remove async move and .await in the run function of your node in places where compiler complains.
For example replace:

Some(Subcommand::CheckBlock(cmd)) => {
	let runner = cli.create_runner(cmd)?;
	runner.async_run(|config| async move {
		let PartialComponents { client, task_manager, import_queue, .. } =
			service::new_partial(&config).await?;
		Ok((cmd.run(client, import_queue), task_manager))
	})
},

with:

Some(Subcommand::CheckBlock(cmd)) => {
	let runner = cli.create_runner(cmd)?;
	runner.async_run(|config| {
		let PartialComponents { client, task_manager, import_queue, .. } =
			service::new_partial(&config)?;
		Ok((cmd.run(client, import_queue), task_manager))
	})
},

chain-init feature

Code that was present in node crate related to USE_CHAIN_INIT feature has been removed.
The only supported way to obtain the chain-spec is through partner-chains-cli.
Please cleanup your node if it contained copy-pasted code for it.

Observation of native token illiquid supply address

This feature is not complete, please do not follow changes in partner-chains reference runtime and node.
Please do not wire it in your node code nor use the "native-token" feature in the main chain follower.


Changed

  • 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.
    Now Runner 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
  • 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,
    to sc-partner-chains-consensus-aura and sp-partner-chains-consensus-aura.
    This change requires migration of the node, PartnerChainsProposerFactory has to be used.
    See service.rs in partner-chains-node crate for an example.
  • renamed sidechain-main-cli and relevant naming to pc-contracts-cli

Removed

  • 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.

Fixed

  • ETCM-8267 - fixed partner-chains-cli missing the native token configuration

Added

  • ETCM-7811 - native token movement observability components: sp-native-token-management and
    pallet-native-token-management crates; data sources behind the native-token feature in
    main-chain-follower-api and db-sync-follower crates.
  • added helper functions to SidechainParams and all MainChainScripts types to read them from environment
  • Extrinsic set_main_chain_scripts for migrating to new committee selection main chain scripts

Compatibility matrix

partner-chains-node partner-chains-smart-contracts cardano-node cardano-db-sync kupo ogmios
1.2.0 6.1.0 9.1.1 13.5.0.2 2.9.0 6.6.0

Binaries

You can download the archives that contain both partner-chains-node and partner-chains-cli from assets attached to this release (available for MacOS and Linux architectures). PC smart contracts CLI can be downloaded from here.

Docker

You can also pull the Docker image of the partner-chains-node from GitHub Container Registry:

docker pull ghcr.io/input-output-hk/partner-chains/partner-chains-node:v1.2.0

How to Use

Refer to the documentation for detailed instructions on using the node and CLI tools.

Support

You can visit our issues page for support, feature requests, or to report a bug.

Thank you for being a part of our community!

Partner Chains Node v1.1.0

20 Aug 14:46
v1.1.0
b991b7e
Compare
Choose a tag to compare

Partner Chains Node 1.1.0 includes all the features compatible with Chang hard fork at Cardano Node 9.1.0.

Notes

  • This release includes a change that requires a chain reset. Future releases will include instructions on how to upgrade the chain without reset

Changed

  • 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
  • bumped partner-chains-smart-contracts version and updated the partner-chains-cli
    to match. Now partner-chains-cli passes a network parameter to sidechain-main-cli where necessary.
  • governance authority key hash is now calculated in prepare-configuration without using external cardano-cli

Removed

  • removed Relay docker build files
  • removed usage of 'storage::getter' macros, following polkadot-sdk changes

Compatibility matrix

partner-chains-node partner-chains-smart-contracts cardano-node cardano-db-sync kupo ogmios
v1.1.0 6.1.0 9.1.0 13.3.0.0 2.9.0 6.5.0

Binaries

You can download the archives that contain both partner-chains-node and partner-chains-cli together with compatible smart contracts CLI from assets attached to this release (available for MacOS and Linux architectures)

Docker

You can also pull the Docker image of the partner-chains-node from GitHub Container Registry:

docker pull ghcr.io/input-output-hk/partner-chains/partner-chains-node:v1.1.0

How to Use

Refer to the documentation for detailed instructions on using the node and CLI tools.

Support

You can visit our issues page for support, feature requests, or to report a bug.

Thank you for being a part of our community!

Partner Chains Node v1.1.0-rc1

19 Aug 21:19
5eda647
Compare
Choose a tag to compare
Pre-release

Partner Chains Node 1.1.0-pre includes all the features compatible with Chang hard fork at Cardano Node 9.1.0.

Notes

  • This is a pre-release and as such subject to change in the final release
  • This release includes a change that requires a chain reset. Future releases will include instructions on how to upgrade the chain without reset

Changed

  • polkadot-sdk dependency updated to partnerchains-stable2407 (stable2407 is v1.15.0 in the previous scheme)
  • remove Relay docker build files
  • changed the inner type of McBlockHash from Vec to an array
  • bumped partner-chains-smart-contracts version and updated the partner-chains-cli
    to match. Now partner-chains-cli passes a network parameter to sidechain-main-cli where necessary.
  • removed usage of 'storage::getter' macros, following polkadot-sdk changes
  • governance authority key hash is now calculated in prepare-configuration without using external cardano-cli

Compatibility matrix

partner-chains-node partner-chains-smart-contracts cardano-node cardano-db-sync kupo ogmios
v1.1.0-rc1 6.1.0 9.1.0 13.3.0.0 2.9.0 6.5.0

Binaries

You can download the archives that contain both partner-chains-node and partner-chains-cli together with compatible smart contracts CLI from assets attached to this release (available for MacOS and Linux architectures)

Docker

You can also pull the Docker image of the partner-chains-node from GitHub Container Registry:

docker pull ghcr.io/input-output-hk/partner-chains/partner-chains-node:v1.1.0-pre

How to Use

Refer to the documentation for detailed instructions on using the node and CLI tools.

Support

You can visit our issues page for support, feature requests, or to report a bug.

Thank you for being a part of our community!

Partner Chains Node v1.0.0

01 Aug 08:20
52feddd
Compare
Choose a tag to compare

We are excited to announce the public release of v1.0.0 for our Substrate-based partner chains node! This release includes essential tools for building and configuring partner chains within the Cardano ecosystem.

What's Included

This release comes with two primary components:

  1. partner-chains-node: Our Substrate-based node binary tailored for operating Cardano partner chains
  2. partner-chains-cli: A command-line interface wizard designed for the configuration of Cardano partner chains

Compatibility matrix

partner-chains-node partner-chains-smart-contracts cardano-node cardano-db-sync kupo ogmios
v1.0.0 6.0.0 9.0.0 13.3.0.0 2.9.0 6.5.0

Binaries

You can download the archives that contain both partner-chains-node and partner-chains-cli together with compatible smart contracts CLI from assets attached to this release (available for MacOS and Linux architectures)

Docker

You can also pull the Docker image of the partner-chains-node from GitHub Container Registry:

docker pull ghcr.io/input-output-hk/partner-chains/partner-chains-node:v1.0.0

How to Use

Refer to the documentation for detailed instructions on how to use the node and CLI tools.

Support

Please visit our issues page for support, feature requests, or to report a bug.

Thank you for being a part of our community!