Skip to content

Conversation

@dfordivam
Copy link
Contributor

@dfordivam dfordivam commented Jan 20, 2026

Fixes #3553

  • Provides separate tables for managing the proposal and delegations
  • Each table shows all the fields of the appropriate item
  • Provide control buttons corresponding to known actions for proposal and delegations
    • Proposals: Accept/Reject
    • Delegations: Withdraw
  • All actions are confirmed
    • When proposal will update an existing delegation, the confirmation dialogue shows the details
  • Allows display of proposals/delegations from parties that are not fully onboarded, with certain controls deactivated as appropriate

PR author is https://github.com/adetokunbo , I have pushed this branch and created this PR for running CI

Pull Request Checklist

Cluster Testing

  • If a cluster test is required, comment /cluster_test on this PR to request it, and ping someone with access to the DA-internal system to approve it.
  • If a hard-migration test is required (from the latest release), comment /hdm_test on this PR to request it, and ping someone with access to the DA-internal system to approve it.

PR Guidelines

  • Include any change that might be observable by our partners or affect their deployment in the release notes.
  • Specify fixed issues with Fixes #n, and mention issues worked on using #n
  • Include a screenshot for frontend-related PRs - see README or use your favorite screenshot tool

Merge Guidelines

  • Make the git commit message look sensible when squash-merging on GitHub (most likely: just copy your PR description).

@adetokunbo
Copy link

This comment and the next two contain screenshots demonstrating this change

1. Some delegation proposals are pending approval

01-delegations-after-setup-26-01-20-11:0:18 439

2. One of them is approved

02-delegations-accept-proposal-26-01-20-11:0:19 380

3. View of the confirmation dialog as the next one is being approved

03-delegations-confirm-accept-proposal-26-01-21-3:18:4 197

4. After the second is approved

04-delegations-accept-again-26-01-20-11:0:20 339

@adetokunbo
Copy link

adetokunbo commented Jan 21, 2026

5. View of confirmation dialog as one of the approved delegations is withdrawn

12-delegations-confirm-withdraw-delegation-26-01-21-3:18:5 188

6. After the delegation is withdrawn

05-delegations-withdraw-delegation-26-01-20-11:0:21 531

7. View of confirmation dialog as the remaining proposal is rejected

06-delegations-confirm-withdraw-proposal-26-01-21-3:18:6 185

8. After that proposal is rejected

07-delegations-reject-proposal-26-01-20-11:0:23 379

@adetokunbo
Copy link

9. A new proposal and delegation appear from users that have not completed onboarding

08-delegations-non-onboarded-proposal-and-delegation-26-01-20-11:0:33 250

10. A proposal appears from a user that updates their active delegation

09-delegations-replacement-proposal-appears-26-01-20-11:0:36 704

11. View of the confirmation dialog when accepting the updating proposal

10-delegations-accept-replacement-proposal-26-01-21-3:18:21 81

12. After the update is accepted

11-delegations-after-accept-replacement-26-01-20-11:0:37 817

@dfordivam dfordivam marked this pull request as ready for review January 21, 2026 07:16
@dfordivam dfordivam requested a review from meiersi-da January 21, 2026 07:19
@dfordivam dfordivam force-pushed the dfordivam/feature-cip-73-minting-delegation branch from 34f262a to 98c805c Compare January 22, 2026 05:24
@dfordivam dfordivam force-pushed the dfordivam/adetokunbo/cip-73-minting-delegations-ui branch from 2ce99c4 to 057af83 Compare January 22, 2026 06:00
Copy link
Contributor

@meiersi-da meiersi-da left a comment

Choose a reason for hiding this comment

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

Very nice work @dfordivam and @adetokunbo. Functionally we're close except for the wording.

The codestyle also looks good, but I'd appreciate if you @ray-roestenburg-da could have a peek yourself or ask somebody from your team to approve as the codeowners.

I've also pinged @waynecollier-da to have a look at the UI screenshots. (Thanks for providing them @adetokunbo 🙏 )

const res = await walletClient.listMintingDelegations();
return res.delegations.map(d => ({
contract: Contract.decodeOpenAPI(d.contract, MintingDelegation),
beneficiaryOnboarded: d.beneficiary_onboarded,
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
beneficiaryOnboarded: d.beneficiary_onboarded,
beneficiaryHosted: d.beneficiary_hosted,

In Canton docs, we talk about a validator node hosting parties.

The Splice Amulet Wallet UI uses "onboarded" to mean that a party has an active WalletAppInstall contract.

Let's talk about "hosting" here.

Choose a reason for hiding this comment

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

Done

marginTop={4}
>
<Typography variant="h4" id="proposals-label">
Proposed
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
Proposed
Proposed Minting Delegations

Copy link
Contributor

Choose a reason for hiding this comment

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

the goal is to make clear what kind of delegations are seen here

Choose a reason for hiding this comment

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

Done

<TableRow>
<TableCell>Beneficiary</TableCell>
<TableCell>Onboarded</TableCell>
<TableCell>Max Amulets</TableCell>
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
<TableCell>Max Amulets</TableCell>
<TableCell>Merge Threshold</TableCell>
  • the merge logic does not maintain a strict max
  • when using "Amulet" care must be taken to read the name from the config, so that the wallet properly shows when configured as a "Canton Coin" wallet.

Choose a reason for hiding this comment

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

Done

<TableHead>
<TableRow>
<TableCell>Beneficiary</TableCell>
<TableCell>Onboarded</TableCell>
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd drop this column, and instead add an annotation toe beneficiary parties that are not hosted on the validator node. Possible options:

  • show a warning icon before the party-id with a hover text "Minting delegations do not work for this party, as it is not hosted on this validator node."
  • show the warning text inline below the party name.

Copy link

@adetokunbo adetokunbo Jan 23, 2026

Choose a reason for hiding this comment

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

Done, opted for the warning icon with a hover

09-delegations-replacement-proposal-appears-26-01-23-4:32:34 33

)}

<Typography variant="h4" id="delegations-label">
Active
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
Active
Active Minting Delegations

Copy link
Contributor

Choose a reason for hiding this comment

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

add a hover or inline text "The validator automates minting and merging holdings for the beneficiaries of the delegations below."

Choose a reason for hiding this comment

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

Done: went with a hover

conditions={[
{
disabled: !beneficiaryOnboarded,
reason: 'Beneficiary is not onboarded',
Copy link
Contributor

Choose a reason for hiding this comment

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

I assume this is shown on hover, is it?

side note: change everywhere to "not hosted on this validator"

Copy link

@adetokunbo adetokunbo Jan 23, 2026

Choose a reason for hiding this comment

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

It is, and the message has been updated
Done

beneficiaryOnboarded: boolean;
}

export interface MintingDelegationProposalWithOnboardedStatus {
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this interface is not used anywhere, right?

Choose a reason for hiding this comment

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

Correct; sorry that should have been cleaned up better.
Removed

useWalletClient,
} from '../contexts/WalletServiceContext';

export const shortenPartyId = (partyId: string): string => {
Copy link
Contributor

Choose a reason for hiding this comment

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

We already have an implementation of the shortenPartyId in TransactionHistory.tsx which I'd love to reuse somehow, perhaps move to src/utils?

Copy link
Contributor

Choose a reason for hiding this comment

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

While we're at it, please replace elements.length == 2 with elements.length === 2

Choose a reason for hiding this comment

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

Done, moved to src/utils/partyId.ts

Copy link
Contributor

@pawelperek-da pawelperek-da left a comment

Choose a reason for hiding this comment

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

Thank you @dfordivam and @adetokunbo, the UI code looks very solid. Please take a look at my 2 nits

dfordivam and others added 18 commits January 23, 2026 04:35
Signed-off-by: Divam <dfordivam@gmail.com>
- Add MintingDelegationCollectRewardsTrigger
- Bump version of DbExternalPartyWalletStore
- Bump version of DbUserWalletStore

Squashed commits from the PR reviewed in #3470

Signed-off-by: Divam <dfordivam@gmail.com>
Squashed commits from PR reviewed in #3598

Signed-off-by: Divam <dfordivam@gmail.com>
Extracted duplicated listSortedRewardCoupons method from DbUserWalletStore and
DbExternalPartyWalletStore into a new shared mixin trait.

PR reviewed in #3646

Signed-off-by: Divam <dfordivam@gmail.com>
Signed-off-by: Divam <dfordivam@gmail.com>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
dfordivam and others added 8 commits January 23, 2026 04:41
Signed-off-by: Divam <dfordivam@gmail.com>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
Signed-off-by: Tim Emiola <adetokunbo@emio.la>
@dfordivam dfordivam force-pushed the dfordivam/feature-cip-73-minting-delegation branch from 98c805c to f919249 Compare January 23, 2026 04:43
Signed-off-by: Divam <dfordivam@gmail.com>
@dfordivam dfordivam force-pushed the dfordivam/adetokunbo/cip-73-minting-delegations-ui branch from 057af83 to 9bcf04f Compare January 23, 2026 04:46
Copy link
Contributor

@meiersi-da meiersi-da left a comment

Choose a reason for hiding this comment

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

Thank you @dfordivam and @adetokunbo for the very quick and thorough turnaround. This is good to go 💪 👏

dfordivam pushed a commit that referenced this pull request Jan 23, 2026
PR reviewed on #3601

Signed-off-by: Tim Emiola <adetokunbo@emio.la>
@dfordivam dfordivam force-pushed the dfordivam/feature-cip-73-minting-delegation branch from f919249 to 1da591d Compare January 23, 2026 08:57
@dfordivam
Copy link
Contributor Author

Closing this commits have been squashed and merged on dfordivam/feature-cip-73-minting-delegation

@dfordivam dfordivam closed this Jan 23, 2026
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.

5 participants