Skip to content

feat(deployment): enable chosing party on operations#673

Merged
rodrigombsoares merged 6 commits into
mainfrom
multi-party-operations
Jun 15, 2026
Merged

feat(deployment): enable chosing party on operations#673
rodrigombsoares merged 6 commits into
mainfrom
multi-party-operations

Conversation

@rodrigombsoares

@rodrigombsoares rodrigombsoares commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR adds support for deployment and exercise operations to target a specific Canton participant instead of always using Participant[0]. TAR registration now separates CCIP owner, TokenConfig admin, and pool contract owner. Integration tests for tokens use dual EDS (CCIP on P0, token pool on P1) with split ownership.

Features

Participant-aware deployment

  • ParticipantIndex on deploy/exercise; ParticipantAt helper
  • Wired through coin, burn-mint, and lock-release deploy changesets

MCMS routing

  • ProposalDrivenForCaller — proposal mode when submitter cannot ActAs caller (ReadAs ≠ MCMS)
  • RegisterTokenPool uses separate MCMS flags for propose (ccip) vs accept/set-pool (admin)

TAR registration (3-party model)

  • CcipParty — registry owner; ProposeAdministrator caller
  • PoolAdminParty — TokenConfig admin; AcceptAdminRole + SetPool caller (e2e: ccipOwner)
  • PoolOwnerParty — pool contract owner; stored in PoolRegistration only
  • New RegisterTokenPool changeset; deploy changesets pass PoolAdminParty: CcipOwner

EDS

  • Pool-only / partial configs validate with CCIP/CCV disabled (omitempty, required_if=Enabled)

Integration tests (BnM + LnR)

  • P0 = ccipOwner, P1 = poolOwner + sender; two EDS instances
  • Explicit RegisterTokenPool with PoolAdmin: partyCCIP, PoolOwner: partySender
  • LnR: TransferPreapproval on pool owner (P1); balance assertions for poolOwner == sender

Testing

  • TestBnMTokenPool_FullSendFlow
  • TestLnRTokenPool_FullSendFlow

@rodrigombsoares
rodrigombsoares force-pushed the multi-party-operations branch from eb0281c to 783d1ba Compare June 15, 2026 13:24
@rodrigombsoares
rodrigombsoares marked this pull request as ready for review June 15, 2026 13:29
@rodrigombsoares
rodrigombsoares requested a review from a team as a code owner June 15, 2026 13:29
}
linkInstrumentId := splice_api_token_holding_v1.InstrumentId{
Admin: types.PARTY(partyCCIP),
Admin: types.PARTY(partySender),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you rename these participant/party variables and introduce a third participant/party that is the actual sender?
As-is I think this is blurring the lines between poolOwner/sender, as the poolOwner will also be the party sending the message

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is indeed in this case. The client is the one sending and also owning the pool.

@rodrigombsoares
rodrigombsoares merged commit 6041d35 into main Jun 15, 2026
39 checks passed
@rodrigombsoares
rodrigombsoares deleted the multi-party-operations branch June 15, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants