Skip to content

Public Sequencer: Add automation to revoke ParticipantSynchronizerPermission based on ValidatorUnpermision. Extend integration test to to check both temporary revocation and permanent revocation - #6953

Merged
pasindutennage-da merged 7 commits into
feature-public-sequencer-and-scanfrom
pasindutennage-da/fix/6938
Aug 27, 2026

Conversation

@pasindutennage-da

Copy link
Copy Markdown
Contributor

Fix #6938

…mission based on ValidatorUnpermision. Extend integration test to to check both temporary revocation and permanent revocation

[ci]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>
[ci]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>
val svParty = sv.getDsoInfo().svParty
val dsoRules = sv.appState.dsoStore.getDsoRules().futureValue

clue(s"${sv.participantClient.name} votes for UnpermissionValidator(revoked=$revoked)") {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

how do I repermission them after this?

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.

@moritzkiefer-da

Repermission is automatic if it is loginAfter based ValidatorUnpermission. Validator will get PERMISSIONED_DENIED until loginAfter, but then will work normally

Repermission with revoke based ValidatorUnpermission is more subtle, and needs more work, IMO

  1. Validator X is revoked permeently, and SVs don't want it ever again. However, if someone buys traffic for X, then GrantValidatorPermissionTrigger will grant topology again, and hence bypass the unpermissioning. For this, we need to update GrantValidatorPermissionTrigger to not grant topology, if there is a matching ValidatorUnpermission

  2. Allow rejoining after permenent revocation - to implement this we will need another seperate vote action where SVs vote to archive ValidatorUnpermission contract. Only then someone can buy member traffic to submit topology from SV.

And anything else you have in mind for repermission?

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.

@moritzkiefer-da
Also, to simulate Repermission after loginAfter based ValidatorUnpermission, we need to add a TimeBased(simulated time)Integration Test. should we?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Validator X is revoked permeently, and SVs don't want it ever again.

I don't think that is gonna fly. In some cases, the SVs just want to say "unpermission this node" without thinking about a time but maybe later change their mind. You can argue they shoudl set loginAfter to very far in the future but that seems like a mess to me. I guess maybe you can hide it in the UI but I'd say if we do have the option to fully revoke we also need to have the option to revert that.

[ci]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>
[ci]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>
[ci]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>

@moritzkiefer-da moritzkiefer-da left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

thanks, I think we'll need a bit more work for repermissioning but let's do that in another pr.

val svParty = sv.getDsoInfo().svParty
val dsoRules = sv.appState.dsoStore.getDsoRules().futureValue

clue(s"${sv.participantClient.name} votes for UnpermissionValidator(revoked=$revoked)") {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Validator X is revoked permeently, and SVs don't want it ever again.

I don't think that is gonna fly. In some cases, the SVs just want to say "unpermission this node" without thinking about a time but maybe later change their mind. You can argue they shoudl set loginAfter to very far in the future but that seems like a mess to me. I guess maybe you can hide it in the UI but I'd say if we do have the option to fully revoke we also need to have the option to revert that.

[ci]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>
@pasindutennage-da
pasindutennage-da enabled auto-merge (squash) August 27, 2026 08:37
[static]

Signed-off-by: pasindutennage-da <pasindu.tennage@digitalasset.com>

Signed-off-by: Pasindu Tennage <pasindu.tennage@digitalasset.com>
@pasindutennage-da
pasindutennage-da merged commit c733944 into feature-public-sequencer-and-scan Aug 27, 2026
43 checks passed
@pasindutennage-da
pasindutennage-da deleted the pasindutennage-da/fix/6938 branch August 27, 2026 09:24
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