changesets

package
v0.0.0-...-94e6e87 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package changesets exports one CLDF ChangeSetV2 per Stellar CCIP component (deploy + initialize together), wrapping the per-component sequences in deployment/sequences. Each changeset resolves its dependency strkeys from the environment datastore, so a chain is built by applying them in dependency order:

tier 0: RMN Remote, TokenAdminRegistry, RampRegistry,
        VersionedVerifierResolver, Executor
tier 1: RMN Proxy (needs RMN Remote);
        FeeQuoter (needs the fee-token strkey in its config)
tier 2: OnRamp (TokenAdminRegistry + RMN Proxy + FeeQuoter);
        OffRamp (RMN Proxy + TokenAdminRegistry);
        Router (RMN Proxy);
        CommitteeVerifier (RMN Proxy + StorageLocations in its config)
tier 3: ccip_receiver_example (Router)

VerifyPreconditions returns "deploy <X> first" when a dependency ref is missing from the datastore.

Apply builds the deployer from the chain's signer, so no raw keypair is required and KMS-backed signers work; the address used to predict contract IDs is the signer's own address, so a predicted ID can never diverge from the key that signs the deploy. Owner defaults to that signer address (the configs accept another owner for custom workflows). These changesets never transfer ownership or emit MCMS proposals; ownership moves later through the transfer-ownership changesets.

Rerun safety comes from the component sequences' three-layer skip (datastore ref, predicted contract ID + WASM hash, owner()): re-applying an already-deployed component sends no transactions and records no new refs.

Report size: each component changeset appends one sequence report plus at most one deploy and one initialize op report (two op reports on a fresh deploy, zero on a rerun). Op reports embed the absolute WASM path and are deleted from durable pipeline storage after 30 days, so they are a crash-resume aid, not the idempotency mechanism — the skip layers are.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DeployCCIPReceiver

type DeployCCIPReceiver struct{}

DeployCCIPReceiver deploys and initializes the ccip_receiver_example contract on one Stellar chain. Requires Router.

func (DeployCCIPReceiver) Apply

func (DeployCCIPReceiver) VerifyPreconditions

type DeployCCIPReceiverConfig

type DeployCCIPReceiverConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
}

DeployCCIPReceiverConfig is the input of the ccip_receiver_example deploy changeset. The Router strkey is resolved from the environment datastore, not configured here. Enabling remote chains is a config op and stays with the orchestrator.

type DeployCommitteeVerifier

type DeployCommitteeVerifier struct{}

DeployCommitteeVerifier deploys and initializes the CommitteeVerifier contract on one Stellar chain. Requires RMN Proxy.

func (DeployCommitteeVerifier) VerifyPreconditions

type DeployCommitteeVerifierConfig

type DeployCommitteeVerifierConfig struct {
	ChainSelector    uint64   `json:"chainSelector" yaml:"chainSelector"`
	Owner            string   `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath         string   `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
	StorageLocations [][]byte `json:"storageLocations" yaml:"storageLocations"`
	AllowlistAdmin   string   `json:"allowlistAdmin,omitempty" yaml:"allowlistAdmin,omitempty"`
	FeeAggregator    string   `json:"feeAggregator,omitempty" yaml:"feeAggregator,omitempty"`
	VersionTag       [4]byte  `json:"versionTag" yaml:"versionTag"`
}

DeployCommitteeVerifierConfig is the input of the CommitteeVerifier deploy changeset. StorageLocations is a required input: the deploy never invents one. AllowlistAdmin and FeeAggregator default to the owner and VersionTag to the default committee-verifier tag. The RmnProxy strkey is resolved from the environment datastore, not configured here.

type DeployExecutor

type DeployExecutor struct{}

DeployExecutor deploys and initializes the source-side Executor contract on one Stellar chain. No dependencies.

func (DeployExecutor) Apply

func (DeployExecutor) VerifyPreconditions

func (DeployExecutor) VerifyPreconditions(e cldf.Environment, cfg DeployExecutorConfig) error

type DeployExecutorConfig

type DeployExecutorConfig struct {
	ChainSelector         uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner                 string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath              string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
	MaxCCVsPerMsg         uint32 `json:"maxCCVsPerMsg,omitempty" yaml:"maxCCVsPerMsg,omitempty"`
	AllowedFinalityConfig uint32 `json:"allowedFinalityConfig,omitempty" yaml:"allowedFinalityConfig,omitempty"`
	CcvAllowlistEnabled   bool   `json:"ccvAllowlistEnabled,omitempty" yaml:"ccvAllowlistEnabled,omitempty"`
	FeeAggregator         string `json:"feeAggregator,omitempty" yaml:"feeAggregator,omitempty"`
}

DeployExecutorConfig is the input of the Executor deploy changeset. MaxCCVsPerMsg defaults to 2, AllowedFinalityConfig to 0, CcvAllowlistEnabled to false and FeeAggregator to the owner. The changeset records both the executor and executor-proxy rows: Soroban has no delegate proxy, so both point at the same contract.

type DeployFeeQuoter

type DeployFeeQuoter struct{}

DeployFeeQuoter deploys and initializes the FeeQuoter contract on one Stellar chain.

func (DeployFeeQuoter) Apply

func (DeployFeeQuoter) VerifyPreconditions

func (DeployFeeQuoter) VerifyPreconditions(e cldf.Environment, cfg DeployFeeQuoterConfig) error

type DeployFeeQuoterConfig

type DeployFeeQuoterConfig struct {
	ChainSelector     uint64   `json:"chainSelector" yaml:"chainSelector"`
	Owner             string   `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath          string   `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
	FeeToken          string   `json:"feeToken" yaml:"feeToken"`
	MaxFeeJuelsPerMsg *big.Int `json:"maxFeeJuelsPerMsg,omitempty" yaml:"maxFeeJuelsPerMsg,omitempty"`
	AuthorizedCallers []string `json:"authorizedCallers,omitempty" yaml:"authorizedCallers,omitempty"`
}

DeployFeeQuoterConfig is the input of the FeeQuoter deploy changeset. FeeToken is the strkey of the SAC used for fee payments, a required input: the deploy never derives it. MaxFeeJuelsPerMsg defaults to 1e18 and AuthorizedCallers to [owner]. No datastore dependencies.

type DeployOffRamp

type DeployOffRamp struct{}

DeployOffRamp deploys and initializes the OffRamp contract on one Stellar chain. Requires RMN Proxy and TokenAdminRegistry.

func (DeployOffRamp) Apply

func (DeployOffRamp) VerifyPreconditions

func (DeployOffRamp) VerifyPreconditions(e cldf.Environment, cfg DeployOffRampConfig) error

type DeployOffRampConfig

type DeployOffRampConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
}

DeployOffRampConfig is the input of the OffRamp deploy changeset. The RmnProxy and TokenAdminRegistry strkeys are resolved from the environment datastore, not configured here.

type DeployOnRamp

type DeployOnRamp struct{}

DeployOnRamp deploys and initializes the OnRamp contract on one Stellar chain. Requires TokenAdminRegistry, RMN Proxy and FeeQuoter.

func (DeployOnRamp) Apply

func (DeployOnRamp) VerifyPreconditions

func (DeployOnRamp) VerifyPreconditions(e cldf.Environment, cfg DeployOnRampConfig) error

type DeployOnRampConfig

type DeployOnRampConfig struct {
	ChainSelector         uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner                 string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath              string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
	MaxUsdCentsPerMessage uint32 `json:"maxUsdCentsPerMessage,omitempty" yaml:"maxUsdCentsPerMessage,omitempty"`
	FeeAggregator         string `json:"feeAggregator,omitempty" yaml:"feeAggregator,omitempty"`
}

DeployOnRampConfig is the input of the OnRamp deploy changeset. The TokenAdminRegistry, RmnProxy and FeeQuoter strkeys are resolved from the environment datastore, not configured here. MaxUsdCentsPerMessage defaults to 500000 ($5000) and FeeAggregator to the owner.

type DeployRMNProxy

type DeployRMNProxy struct{}

DeployRMNProxy deploys and initializes the RMN Proxy contract on one Stellar chain. Requires RMN Remote.

func (DeployRMNProxy) Apply

func (DeployRMNProxy) VerifyPreconditions

func (DeployRMNProxy) VerifyPreconditions(e cldf.Environment, cfg DeployRMNProxyConfig) error

type DeployRMNProxyConfig

type DeployRMNProxyConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
}

DeployRMNProxyConfig is the input of the RMN Proxy deploy changeset. The RmnRemote strkey is resolved from the environment datastore, not configured here.

type DeployRMNRemote

type DeployRMNRemote struct{}

DeployRMNRemote deploys and initializes the RMN Remote contract on one Stellar chain. No dependencies.

func (DeployRMNRemote) Apply

func (DeployRMNRemote) VerifyPreconditions

func (DeployRMNRemote) VerifyPreconditions(e cldf.Environment, cfg DeployRMNRemoteConfig) error

type DeployRMNRemoteConfig

type DeployRMNRemoteConfig struct {
	ChainSelector      uint64   `json:"chainSelector" yaml:"chainSelector"`
	Owner              string   `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath           string   `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
	CurseAdmins        []string `json:"curseAdmins,omitempty" yaml:"curseAdmins,omitempty"`
	EnableFastCurse    bool     `json:"enableFastCurse,omitempty" yaml:"enableFastCurse,omitempty"`
	FastCurseQualifier string   `json:"fastCurseQualifier,omitempty" yaml:"fastCurseQualifier,omitempty"`
}

DeployRMNRemoteConfig is the input of the RMN Remote deploy changeset. CurseAdmins default to none; EnableFastCurse prepends the fast-curse timelock resolved from the datastore (qualifier FastCurseQualifier, default the Ultra Fast Curse qualifier).

type DeployRampRegistry

type DeployRampRegistry struct{}

DeployRampRegistry deploys and initializes the RampRegistry contract on one Stellar chain.

func (DeployRampRegistry) Apply

func (DeployRampRegistry) VerifyPreconditions

type DeployRampRegistryConfig

type DeployRampRegistryConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
}

DeployRampRegistryConfig is the input of the RampRegistry deploy changeset. The ramp map updates are config ops and stay with the orchestrator. No dependencies.

type DeployRouter

type DeployRouter struct{}

DeployRouter deploys and initializes the Router contract on one Stellar chain. Requires RMN Proxy.

func (DeployRouter) Apply

func (DeployRouter) VerifyPreconditions

func (DeployRouter) VerifyPreconditions(e cldf.Environment, cfg DeployRouterConfig) error

type DeployRouterConfig

type DeployRouterConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
}

DeployRouterConfig is the input of the Router deploy changeset. The RmnProxy strkey is resolved from the environment datastore, not configured here.

type DeployTokenAdminRegistry

type DeployTokenAdminRegistry struct{}

DeployTokenAdminRegistry deploys and initializes the TokenAdminRegistry contract on one Stellar chain.

func (DeployTokenAdminRegistry) VerifyPreconditions

type DeployTokenAdminRegistryConfig

type DeployTokenAdminRegistryConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
}

DeployTokenAdminRegistryConfig is the input of the TokenAdminRegistry deploy changeset. No params beyond owner, and no dependencies.

type DeployVVR

type DeployVVR struct{}

DeployVVR deploys and initializes the VersionedVerifierResolver contract on one Stellar chain.

func (DeployVVR) Apply

func (DeployVVR) VerifyPreconditions

func (DeployVVR) VerifyPreconditions(e cldf.Environment, cfg DeployVVRConfig) error

type DeployVVRConfig

type DeployVVRConfig struct {
	ChainSelector uint64 `json:"chainSelector" yaml:"chainSelector"`
	Owner         string `json:"owner,omitempty" yaml:"owner,omitempty"`
	WasmPath      string `json:"wasmPath,omitempty" yaml:"wasmPath,omitempty"`
	FeeAggregator string `json:"feeAggregator,omitempty" yaml:"feeAggregator,omitempty"`
}

DeployVVRConfig is the input of the VersionedVerifierResolver deploy changeset. FeeAggregator defaults to the owner. No dependencies.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL