-
Notifications
You must be signed in to change notification settings - Fork 261
Feature/offline signers contract #5901
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jstuczyn
wants to merge
1
commit into
develop
Choose a base branch
from
feature/offline-signers-contract
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
0f2be6a to
1917502
Compare
jstuczyn
added a commit
that referenced
this pull request
Jul 21, 2025
updated contract schema remove duplicate import queries tests tx tests ensure placeholder is deprecated so that clippy catches it contract storage tests ignore panics in legacy tests missing performance contract schema changes they weren't caught as the contract was missing from the makefile dealing with CI generated contract schema client traits query for exposing signing status at particular height uses placeholder data due to another PR in progress at the time of writing wip removed placeholder mod removed dead code contract queries resetting offline status of sender implemented TestableNymContract for OfflineSigner, DKG, CW4 and CW3 contracts basic logic for voting on offline signers init offline signers contract
b7d3ed5 to
7aae4d9
Compare
jstuczyn
added a commit
that referenced
this pull request
Jul 22, 2025
updated contract schema remove duplicate import queries tests tx tests ensure placeholder is deprecated so that clippy catches it contract storage tests ignore panics in legacy tests missing performance contract schema changes they weren't caught as the contract was missing from the makefile dealing with CI generated contract schema client traits query for exposing signing status at particular height uses placeholder data due to another PR in progress at the time of writing wip removed placeholder mod removed dead code contract queries resetting offline status of sender implemented TestableNymContract for OfflineSigner, DKG, CW4 and CW3 contracts basic logic for voting on offline signers init offline signers contract
7aae4d9 to
233b1f2
Compare
removed placeholder mod updated contract schema remove duplicate import queries tests tx tests ensure placeholder is deprecated so that clippy catches it contract storage tests ignore panics in legacy tests missing performance contract schema changes they weren't caught as the contract was missing from the makefile dealing with CI generated contract schema client traits query for exposing signing status at particular height uses placeholder data due to another PR in progress at the time of writing wip removed placeholder mod removed dead code contract queries resetting offline status of sender implemented TestableNymContract for OfflineSigner, DKG, CW4 and CW3 contracts basic logic for voting on offline signers init offline signers contract
233b1f2 to
aaab293
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
NET-443
this PR introduces a new CosmWasm smart contract, the "offline signers" contract. It's purpose is to allow ecash signers to agree on their view of what other signers might be unavailable and thus send a global signal to issue an 'emergency mode' to allow network usage without credentials (as they would be unissuable).
it's quite straightforward contract with very simple interface. operators can only either propose a singer to be marked as offline or mark itself as online.
A signer is marked as offline if a specified quorum (contract parameter) sends voting transaction to the contract. It is determined as a ratio of all CW4 (as set in the DKG contract) group members.
There's also a small cooldown period between being marked as online and offline to prevent constantly going between those two states.
Execute Messages
UpdateAdmin- self-explanatory call, updates current contract adminProposeOrVote- allows caller to propose or cast a vote on particular DKG signer being offline and not issuing credentialsResetOfflineStatus- allows caller to reset its own offline status (i.e. after signer has been offline, this lets them announce to the world that they're back now)Query Messages
Admin- Returns information on the current adminGetConfig- Returns current config values of the contractGetActiveProposal- Returns information of the current active proposal against specific signerGetProposal- Returns information about proposal with the specified idGetVoteInformation- Returns information on the vote from the provided voter for the specified proposalGetOfflineSignerInformation- Returns offline signer information for the provided signerGetOfflineSignersAddressesAtHeight- Returns list of addresses of all signers marked as offline at provided height.GetLastStatusReset- Returns information on the last status reset of the provided signerGetActiveProposalsPaged- Returns all (paged) active proposalsGetProposalsPaged- Returns all (paged) proposalsGetVotesPaged- Returns all (paged) votes for the specified proposalGetOfflineSignersPaged- Returns all (paged) offline signersGetLastStatusResetPaged- Returns all (paged) status resetsCurrentSigningStatus- Returns the current signing status, i.e. whether credential issuance is still possibleSigningStatusAtHeight- Returns the signing status at provided block height, i.e. whether credential issuance was possible at that pointThis change is