ccip

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2026 License: MIT Imports: 49 Imported by: 0

Documentation

Overview

Package ccip holds Stellar CCIP deployment helpers: datastore contract types, lane/onramp config, topology conversion, the CCIPDevenvHost surface for Soroban devenv, post-deploy token pool (DeployLockReleaseTestTokenPool), CLDF-backed devenv host (NewCLDFStellarCCIPDevenvHost), and stellarutil/. Full-stack deploy entrypoints that merge CCV topology and run github.com/smartcontractkit/chainlink-stellar/deployment/sequences.RunStellarCCIPFullDeploy live in package sequences (github.com/smartcontractkit/chainlink-stellar/deployment/sequences.RunStellarCCIPFullDeployForCCV, github.com/smartcontractkit/chainlink-stellar/deployment/sequences.DeployStellarCCIPContracts). Those entrypoints require a non-nil CCV environment topology so committee verifier signature quorum can be configured from offchain NOP/committee data.

Index

Constants

View Source
const (
	CcipReceiverContractType               = "CcipReceiverExample"
	TokenAdminRegistryContractType         = "token_admin_registry"
	LockReleaseTokenPoolContractType       = "lock_release_token_pool"
	SiloedLockReleaseTokenPoolContractType = "siloed_lock_release_token_pool"
	TokenLockBoxContractType               = "token_lock_box"
	TestTokenContractType                  = "sac_token"

	// DevenvTestTokenPoolQualifier is the datastore qualifier for the siloed test pool used in E2E transfers.
	DevenvTestTokenPoolQualifier = "TEST"

	// DevenvLegacyLockReleasePoolQualifier is the datastore qualifier for the legacy lock-release pool
	// deployed alongside the siloed pool (e.g. MCMS / lock-release-specific tests).
	DevenvLegacyLockReleasePoolQualifier = "LEGACY_LR"
)

Datastore contract type strings for Stellar CCIP deployments.

View Source
const StellarAddressByteLen = 32

StellarAddressByteLen is the canonical length (bytes) for Stellar contract/account IDs in lane configs.

Variables

This section is empty.

Functions

func AddressBytesHex

func AddressBytesHex(ref datastore.AddressRef, selector uint64) ([]byte, error)

AddressBytesHex decodes a datastore address hex string to raw bytes and validates length for selector.

func AddressBytesLength

func AddressBytesLength(selector uint64) (uint32, error)

AddressBytesLength returns the expected encoded address length for a CCIP chain selector.

func ApplyFeeQuoterTestTokenConfig

func ApplyFeeQuoterTestTokenConfig(
	ctx context.Context,
	feeQuoterClient *fee_quoter.FeeQuoterClient,
	priceUpdater string,
	testToken string,
	allSelectors []uint64,
) error

ApplyFeeQuoterTestTokenConfig sets oracle price and per-destination token transfer fee configs for the devenv test SAC token on FeeQuoter. priceUpdater must be an address in FeeQuoter's authorized-callers set and must match the invoker's auth.

func BuildOffRampSourceConfigs

func BuildOffRampSourceConfigs(
	ds datastore.DataStore,
	remoteSelectors []uint64,
	useRemoteOnRamp bool,
	vvrContractID string,
	routerContractID string,
) ([]offrampbindings.SourceChainConfigArgs, error)

BuildOffRampSourceConfigs builds provisional or datastore-backed OffRamp source configs.

func BuildOnRampDestConfigs

func BuildOnRampDestConfigs(
	ds datastore.DataStore,
	remoteSelectors []uint64,
	defaultExecutor string,
	useRemoteOffRamp bool,
	vvrContractID string,
	routerContractID string,
) ([]onrampbindings.DestChainConfigArgs, error)

BuildOnRampDestConfigs builds provisional or datastore-backed OnRamp destination chain configs.

func CCVEnvironmentTopologyToOffchain

func CCVEnvironmentTopologyToOffchain(t *ccvdeployment.EnvironmentTopology) (*offchain.EnvironmentTopology, error)

CCVEnvironmentTopologyToOffchain converts a chainlink-ccv topology to the chainlink-ccip offchain topology type used by DeployChainContracts. Struct layouts are aligned; JSON round-trip avoids manual field mapping.

func CanonicalSourceOnRampBytes

func CanonicalSourceOnRampBytes(ref datastore.AddressRef, selector uint64) ([]byte, error)

CanonicalSourceOnRampBytes returns on-ramp bytes for OffRamp source config; left-pads EVM addresses to 32 bytes.

func DefaultStellarDeployZerolog

func DefaultStellarDeployZerolog() zerolog.Logger

DefaultStellarDeployZerolog returns a stderr console logger for Stellar deploy sequences when no environment-specific logger is wired.

func DeployDevenvSACToken

func DeployDevenvSACToken(p DevenvSACTokenParams) (contractID string, issuerKP *keypair.Full, err error)

DeployDevenvSACToken creates a deterministic issuer, optional friendbot funding, trust + payment, and SAC deploy.

func DeployLockReleaseTestTokenPool

func DeployLockReleaseTestTokenPool(ctx context.Context, opBundle cldfops.Bundle, host CCIPDevenvHost) error

DeployLockReleaseTestTokenPool deploys legacy lock-release and siloed lock-release (+ lock box) test pools. E2E token transfers use the siloed pool; the legacy pool remains available for lock-release-specific tests. Intended to run from PostDeployContractsForSelector.

func DevenvTokenPoolsAddressRefDataStore

func DevenvTokenPoolsAddressRefDataStore(
	chainSelector uint64,
	siloedPoolContractID,
	legacyPoolContractID,
	lockBoxContractID,
	tokenContractID string,
) (datastore.DataStore, error)

DevenvTokenPoolsAddressRefDataStore returns a sealed datastore with siloed pool (E2E), legacy lock-release pool, token lock box, and optional test token refs for devenv.

func FundAccountViaFriendbot

func FundAccountViaFriendbot(friendbotURL, address string, lg *zerolog.Logger) error

FundAccountViaFriendbot funds a Stellar account using Friendbot with retries (devenv).

func GetCommitteeVerifierStrkey

func GetCommitteeVerifierStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetCommitteeVerifierStrkey resolves the Committee Verifier strkey for a chain from the datastore.

func GetFeeQuoterStrkey

func GetFeeQuoterStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetFeeQuoterStrkey resolves the FeeQuoter contract strkey for a chain from the datastore.

func GetOffRampStrkey

func GetOffRampStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetOffRampStrkey resolves the local OffRamp contract strkey for a chain from the datastore.

func GetOnRampStrkey

func GetOnRampStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetOnRampStrkey resolves the local OnRamp contract strkey for a chain from the datastore.

func GetRMNRemoteStrkey

func GetRMNRemoteStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetRMNRemoteStrkey resolves RMN Remote strkey for a chain from the datastore.

func GetRampRegistryStrkey

func GetRampRegistryStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetRampRegistryStrkey resolves the RampRegistry strkey for a chain from the datastore.

func GetRouterStrkey

func GetRouterStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetRouterStrkey resolves the local Router contract strkey for a chain from the datastore.

func GetTokenAdminRegistryStrkey

func GetTokenAdminRegistryStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetTokenAdminRegistryStrkey resolves TokenAdminRegistry for a chain from the datastore.

func GetVVRStrkey

func GetVVRStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

GetVVRStrkey resolves the Versioned Verifier Resolver strkey for a chain from the datastore.

func LockReleasePoolAddressRefDataStore

func LockReleasePoolAddressRefDataStore(chainSelector uint64, poolContractID, tokenContractID string) (datastore.DataStore, error)

LockReleasePoolAddressRefDataStore returns a sealed datastore containing the legacy lock-release pool AddressRef and, when tokenContractID is non-empty, the test token AddressRef for devenv (qualifier DevenvLegacyLockReleasePoolQualifier).

func LookupAddressRef

func LookupAddressRef(ds datastore.DataStore, selector uint64, contractType datastore.ContractType, version *semver.Version, qualifier string) (datastore.AddressRef, error)

LookupAddressRef loads an address ref from the datastore.

func LookupStellarContractStrkey

func LookupStellarContractStrkey(ds datastore.DataStore, selector uint64, contractType datastore.ContractType, version *semver.Version, qualifier string) (string, error)

LookupStellarContractStrkey resolves a datastore entry to a Soroban contract strkey.

func MergeExistingAddressRefs

func MergeExistingAddressRefs(ds *datastore.MemoryDataStore, refs []datastore.AddressRef) error

MergeExistingAddressRefs upserts CCIP / environment address refs into the in-memory deploy datastore (EVM-style ExistingAddresses seeding).

func RecordCCIPReceiver

func RecordCCIPReceiver(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordCCIPReceiver records the CCIP receiver example in the datastore.

func RecordCommitteeVerifier

func RecordCommitteeVerifier(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordCommitteeVerifier records the Committee Verifier in the datastore.

func RecordFeeQuoter

func RecordFeeQuoter(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordFeeQuoter records a FeeQuoter deployment in the datastore.

func RecordLockReleasePool

func RecordLockReleasePool(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordLockReleasePool records the legacy lock-release pool in the datastore.

func RecordOffRamp

func RecordOffRamp(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordOffRamp records an OffRamp deployment in the datastore.

func RecordOnRamp

func RecordOnRamp(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordOnRamp records an OnRamp deployment in the datastore.

func RecordRMNRemote

func RecordRMNRemote(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordRMNRemote records an RMN Remote deployment in the datastore.

func RecordRampRegistry

func RecordRampRegistry(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordRampRegistry records the RampRegistry in the datastore.

func RecordRouter

func RecordRouter(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordRouter records a Router deployment in the datastore.

func RecordSiloedLockReleasePool

func RecordSiloedLockReleasePool(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordSiloedLockReleasePool records the siloed lock-release pool in the datastore.

func RecordTokenAdminRegistry

func RecordTokenAdminRegistry(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordTokenAdminRegistry records TokenAdminRegistry in the datastore.

func RecordTokenLockBox

func RecordTokenLockBox(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordTokenLockBox records the token lock box in the datastore.

func RecordVVR

func RecordVVR(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

RecordVVR records the Versioned Verifier Resolver in the datastore.

func UpsertDeployedStrKey

func UpsertDeployedStrKey(
	ds *datastore.MemoryDataStore,
	chainSelector uint64,
	typ datastore.ContractType,
	version *semver.Version,
	qualifier string,
	contractStrkey string,
) error

UpsertDeployedStrKey records a deployed Soroban contract strkey in the datastore.

func ZeroAddressBytes

func ZeroAddressBytes(selector uint64) ([]byte, error)

ZeroAddressBytes returns a zero-filled address of the correct length for selector.

Types

type CCIPDevenvHost

type CCIPDevenvHost interface {
	Logger() *zerolog.Logger
	Deployer() *stellardeployment.Deployer
	DeployerKeypair() *keypair.Full
	NetworkPassphrase() string
	FriendbotURL() string

	SetOnRamp(contractID string, client *onrampbindings.OnRampClient)
	OnRampClient() *onrampbindings.OnRampClient
	FeeQuoterClient() *fqbindings.FeeQuoterClient
	SetFeeQuoter(client *fqbindings.FeeQuoterClient)
	SetTokenAdminRegistry(contractID string, client *tarbindings.TokenAdminRegistryClient)
	TokenAdminRegistryClient() *tarbindings.TokenAdminRegistryClient
	SetTokenPool(contractID string, client *tokenpoolbindings.TokenPoolClient)
	SetLegacyLockReleasePool(contractID string)
	SetTokenLockBox(contractID string)
	LatestLedgerSequence(ctx context.Context) (uint32, error)
	SetTestToken(contractID string)
	TestTokenContractID() string
	SetOffRamp(contractID string, client *offrampbindings.OffRampClient)
	OffRampClient() *offrampbindings.OffRampClient
	SetRouter(contractID string, client *routerbindings.RouterClient)
	RouterContractID() string
	SetRampRegistry(contractID string)
	RampRegistryContractID() string
	SetVVR(contractID string)
	SetCV(contractID string)
	SetReceiver(contractID string)

	SetFeeToken(contractID string)
	FeeTokenContractID() string
	CreateFeeToken(ctx context.Context, friendbotURL string) (string, error)

	CreateTestToken(ctx context.Context, friendbotURL string) (string, error)
}

CCIPDevenvHost is the runtime surface Stellar CCIP devenv deploy needs (implemented by ccv/chain). Kept in deployment/ccip so deployment/sequences can depend on it without importing ccv/chain.

type CLDFStellarCCIPDevenvHost

type CLDFStellarCCIPDevenvHost struct {
	// contains filtered or unexported fields
}

CLDFStellarCCIPDevenvHost implements CCIPDevenvHost from a CLDF cldfstellar.Chain (BlockChains entry), so DeployChainContracts does not need a side-registered *ccvchain.Chain.

func NewCLDFStellarCCIPDevenvHost

func NewCLDFStellarCCIPDevenvHost(ch cldfstellar.Chain, lg zerolog.Logger, dep *stellardeployment.Deployer) (*CLDFStellarCCIPDevenvHost, error)

NewCLDFStellarCCIPDevenvHost builds a devenv host backed by CLDF Stellar chain metadata and RPC.

func (*CLDFStellarCCIPDevenvHost) CreateFeeToken

func (h *CLDFStellarCCIPDevenvHost) CreateFeeToken(ctx context.Context, friendbotURL string) (string, error)

func (*CLDFStellarCCIPDevenvHost) CreateTestToken

func (h *CLDFStellarCCIPDevenvHost) CreateTestToken(ctx context.Context, friendbotURL string) (string, error)

func (*CLDFStellarCCIPDevenvHost) Deployer

func (*CLDFStellarCCIPDevenvHost) DeployerKeypair

func (h *CLDFStellarCCIPDevenvHost) DeployerKeypair() *keypair.Full

func (*CLDFStellarCCIPDevenvHost) FeeQuoterClient

func (*CLDFStellarCCIPDevenvHost) FeeTokenContractID

func (h *CLDFStellarCCIPDevenvHost) FeeTokenContractID() string

func (*CLDFStellarCCIPDevenvHost) FriendbotURL

func (h *CLDFStellarCCIPDevenvHost) FriendbotURL() string

func (*CLDFStellarCCIPDevenvHost) LatestLedgerSequence

func (h *CLDFStellarCCIPDevenvHost) LatestLedgerSequence(ctx context.Context) (uint32, error)

func (*CLDFStellarCCIPDevenvHost) Logger

func (*CLDFStellarCCIPDevenvHost) NetworkPassphrase

func (h *CLDFStellarCCIPDevenvHost) NetworkPassphrase() string

func (*CLDFStellarCCIPDevenvHost) OffRampClient

func (*CLDFStellarCCIPDevenvHost) OnRampClient

func (*CLDFStellarCCIPDevenvHost) RampRegistryContractID

func (h *CLDFStellarCCIPDevenvHost) RampRegistryContractID() string

func (*CLDFStellarCCIPDevenvHost) RouterContractID

func (h *CLDFStellarCCIPDevenvHost) RouterContractID() string

func (*CLDFStellarCCIPDevenvHost) SetCV

func (h *CLDFStellarCCIPDevenvHost) SetCV(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetFeeQuoter

func (h *CLDFStellarCCIPDevenvHost) SetFeeQuoter(client *fqbindings.FeeQuoterClient)

func (*CLDFStellarCCIPDevenvHost) SetFeeToken

func (h *CLDFStellarCCIPDevenvHost) SetFeeToken(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetLegacyLockReleasePool

func (h *CLDFStellarCCIPDevenvHost) SetLegacyLockReleasePool(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetOffRamp

func (h *CLDFStellarCCIPDevenvHost) SetOffRamp(contractID string, client *offrampbindings.OffRampClient)

func (*CLDFStellarCCIPDevenvHost) SetOnRamp

func (h *CLDFStellarCCIPDevenvHost) SetOnRamp(contractID string, client *onrampbindings.OnRampClient)

func (*CLDFStellarCCIPDevenvHost) SetRampRegistry

func (h *CLDFStellarCCIPDevenvHost) SetRampRegistry(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetReceiver

func (h *CLDFStellarCCIPDevenvHost) SetReceiver(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetRouter

func (h *CLDFStellarCCIPDevenvHost) SetRouter(contractID string, client *routerbindings.RouterClient)

func (*CLDFStellarCCIPDevenvHost) SetTestToken

func (h *CLDFStellarCCIPDevenvHost) SetTestToken(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetTokenAdminRegistry

func (h *CLDFStellarCCIPDevenvHost) SetTokenAdminRegistry(contractID string, client *tarbindings.TokenAdminRegistryClient)

func (*CLDFStellarCCIPDevenvHost) SetTokenLockBox

func (h *CLDFStellarCCIPDevenvHost) SetTokenLockBox(contractID string)

func (*CLDFStellarCCIPDevenvHost) SetTokenPool

func (h *CLDFStellarCCIPDevenvHost) SetTokenPool(contractID string, client *tokenpoolbindings.TokenPoolClient)

func (*CLDFStellarCCIPDevenvHost) SetVVR

func (h *CLDFStellarCCIPDevenvHost) SetVVR(contractID string)

func (*CLDFStellarCCIPDevenvHost) TestTokenContractID

func (h *CLDFStellarCCIPDevenvHost) TestTokenContractID() string

func (*CLDFStellarCCIPDevenvHost) TokenAdminRegistryClient

func (h *CLDFStellarCCIPDevenvHost) TokenAdminRegistryClient() *tarbindings.TokenAdminRegistryClient

type DatastoreSorobanContractRef

type DatastoreSorobanContractRef struct {
	Type      datastore.ContractType
	Version   *semver.Version
	Qualifier string
}

DatastoreSorobanContractRef is the (Type, Version, Qualifier) triple used when recording or resolving Soroban contracts in the CLDF deployment datastore. All Stellar CCIP writers and readers must use these constructors so keys stay aligned with Record* / UpsertDeployedStrKey.

func CCIPReceiverDatastoreRef

func CCIPReceiverDatastoreRef() DatastoreSorobanContractRef

func CommitteeVerifierDatastoreRef

func CommitteeVerifierDatastoreRef() DatastoreSorobanContractRef

func DefaultExecutorDatastoreRef

func DefaultExecutorDatastoreRef() DatastoreSorobanContractRef

func DevenvTestTokenDatastoreRef

func DevenvTestTokenDatastoreRef() DatastoreSorobanContractRef

func ExecutorProxyDatastoreRef

func ExecutorProxyDatastoreRef(qualifier string) DatastoreSorobanContractRef

ExecutorProxyDatastoreRef returns the executor proxy row for the given qualifier (typically devenvcommon.DefaultExecutorQualifier).

func FeeQuoterDatastoreRef

func FeeQuoterDatastoreRef() DatastoreSorobanContractRef

func LegacyLockReleasePoolDevenvDatastoreRef

func LegacyLockReleasePoolDevenvDatastoreRef() DatastoreSorobanContractRef

func LockReleasePoolDevenvDatastoreRef

func LockReleasePoolDevenvDatastoreRef() DatastoreSorobanContractRef

func OffRampDatastoreRef

func OffRampDatastoreRef() DatastoreSorobanContractRef

func OnRampDatastoreRef

func OnRampDatastoreRef() DatastoreSorobanContractRef

func RMNProxyDatastoreRef

func RMNProxyDatastoreRef() DatastoreSorobanContractRef

func RMNRemoteDatastoreRef

func RMNRemoteDatastoreRef() DatastoreSorobanContractRef

func RampRegistryDatastoreRef

func RampRegistryDatastoreRef() DatastoreSorobanContractRef

func RouterDatastoreRef

func RouterDatastoreRef() DatastoreSorobanContractRef

func SiloedLockReleasePoolDevenvDatastoreRef

func SiloedLockReleasePoolDevenvDatastoreRef() DatastoreSorobanContractRef

func TokenAdminRegistryDatastoreRef

func TokenAdminRegistryDatastoreRef() DatastoreSorobanContractRef

func TokenLockBoxDevenvDatastoreRef

func TokenLockBoxDevenvDatastoreRef() DatastoreSorobanContractRef

func VVRDatastoreRef

func VVRDatastoreRef() DatastoreSorobanContractRef

func (DatastoreSorobanContractRef) AddressRefKey

func (r DatastoreSorobanContractRef) AddressRefKey(chainSelector uint64) datastore.AddressRefKey

AddressRefKey returns the datastore key for this ref on a chain.

func (DatastoreSorobanContractRef) FullAddressRef

func (r DatastoreSorobanContractRef) FullAddressRef(chainSelector uint64, addressHex string) datastore.AddressRef

FullAddressRef returns a complete AddressRef for Upsert/Add.

func (DatastoreSorobanContractRef) LaneAddressRef

func (r DatastoreSorobanContractRef) LaneAddressRef(chainSelector uint64) datastore.AddressRef

LaneAddressRef returns an AddressRef template including ChainSelector (Address unset).

func (DatastoreSorobanContractRef) LookupAddressRef

func (r DatastoreSorobanContractRef) LookupAddressRef(ds datastore.DataStore, chainSelector uint64) (datastore.AddressRef, error)

LookupAddressRef loads the raw AddressRef row from the datastore.

func (DatastoreSorobanContractRef) LookupStrkey

func (r DatastoreSorobanContractRef) LookupStrkey(ds datastore.DataStore, chainSelector uint64) (string, error)

LookupStrkey resolves this ref to a Soroban contract strkey.

func (DatastoreSorobanContractRef) PartialAddressRef

func (r DatastoreSorobanContractRef) PartialAddressRef() datastore.AddressRef

PartialAddressRef returns Type, Version, and Qualifier for datastore queries (e.g. FindAndFormatRef) where ChainSelector is supplied separately.

func (DatastoreSorobanContractRef) UpsertDeployedStrKey

func (r DatastoreSorobanContractRef) UpsertDeployedStrKey(ds *datastore.MemoryDataStore, chainSelector uint64, contractStrkey string) error

UpsertDeployedStrKey records a deployed Soroban contract strkey under this ref.

type DevenvSACTokenParams

type DevenvSACTokenParams struct {
	Ctx               context.Context
	RPCClient         *rpcclient.Client
	MainDeployer      *stellardeployment.Deployer
	OwnerKeypair      *keypair.Full
	NetworkPassphrase string
	FriendbotURL      string
	IssuerSeedLabel   string // e.g. "fee-token-issuer-" + passphrase
	AssetCode         string
	Logger            *zerolog.Logger
}

DevenvSACTokenParams configures classic-asset + SAC deploy used for CCIP fee and test tokens in devenv.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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