feat(core-signing-taurus-protect): add Taurus-PROTECT signing provider - #2268
Open
nbonvin wants to merge 2 commits into
Open
feat(core-signing-taurus-protect): add Taurus-PROTECT signing provider#2268nbonvin wants to merge 2 commits into
nbonvin wants to merge 2 commits into
Conversation
nbonvin
marked this pull request as ready for review
August 11, 2026 13:59
mjuchli-da
reviewed
Aug 13, 2026
mjuchli-da
left a comment
Contributor
There was a problem hiding this comment.
Thank you for the contribution. We are excited to list Taurus as a signing driver.
We have just switched over from yarn to pnpm. Would you mind rebasing the PR again? Afterward, we will do a detailed review.
Route Canton commands through a Taurus-PROTECT Canton gateway
(tg-canton-gatewayd): a submit provider — the gateway prepares, signs
(ECDSA P-256) and submits each CIP-103 command under Taurus governance,
so the wallet never handles a raw signature; it forwards commands and
reconciles status.
New package @canton-network/core-signing-taurus-protect:
- GatewayClient: JSON-RPC transport (connect, listAccounts,
prepareExecute, getTransactionStatus) with lazy session and one-shot
reconnect, a monotonic per-command status cache with requestId
re-seed, a pre-flight 1 MiB body guard, and an always-set commandId
as the end-to-end idempotency key.
- routingOnlyCommands: on the encoded path the gateway validates the
full argument tree only to discard it for the PTX, and real
token-standard arguments fail that validation, so commands are
reduced to the routing fields (templateId '#'-prefixed, argument
trees blanked).
- TaurusProtectSigningDriver: SigningDriverInterface over the client;
the gateway lifecycle rides in metadata.gatewayStatus ('executed'
maps to 'signed', unknown values to 'failed').
wallet-gateway-remote wiring:
- TransactionService: sign forwards the command once and re-polls
after; execute reconciles and never posts to the ledger. A command
is complete only on 'failed', or on 'executed' once the updateId is
present — the gateway reports 'executed' before the updateId is
observable. The ledger updateId stands in for the signature, and the
executed payload/txChanged event is exactly
{updateId, completionOffset: 0}.
- TaurusProtectWalletAllocator: imports parties provisioned in
Taurus-PROTECT (no topology transaction, no hash signing), guarding
ambiguous prefixes; the vault picker lists parties by prefix.
- Wallet sync skips Taurus-PROTECT wallets in the sync-needed check
and the repair loop: parties are hosted remotely, so absence from
the local rights snapshot says nothing.
- Registered when TAURUS_PROTECT_GATEWAY_URL and
TAURUS_PROTECT_GATEWAY_TOKEN are set.
Single-tenant by design: one machine token serves all wallet users.
Signed-off-by: NBO <519181+nbonvin@users.noreply.github.com>
flatpack now uses `pnpm pack --pack-destination`: FLATPACK_OUTDIR is a directory the packer reads back, so `yarn pack --out` would write a file named after the directory. README install/run commands follow the repo sweep. setConfiguration compared a two-field config with lodash isEqual; a field comparison does the same, so lodash and @types/lodash are dropped. Signed-off-by: NBO <519181+nbonvin@users.noreply.github.com>
nbonvin
force-pushed
the
feature/taurus-protect-signing-driver
branch
from
August 14, 2026 12:07
dd705d6 to
a2602e1
Compare
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
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.
Route Canton commands through a Taurus-PROTECT Canton gateway
(tg-canton-gatewayd): a submit provider — the gateway prepares, signs
(ECDSA P-256) and submits each CIP-103 command under Taurus governance,
so the wallet never handles a raw signature; it forwards commands and
reconciles status.
New package @canton-network/core-signing-taurus-protect:
prepareExecute, getTransactionStatus) with lazy session and one-shot
reconnect, a monotonic per-command status cache with requestId
re-seed, a pre-flight 1 MiB body guard, and an always-set commandId
as the end-to-end idempotency key.
full argument tree only to discard it for the PTX, and real
token-standard arguments fail that validation, so commands are
reduced to the routing fields (templateId '#'-prefixed, argument
trees blanked).
the gateway lifecycle rides in metadata.gatewayStatus ('executed'
maps to 'signed', unknown values to 'failed').
wallet-gateway-remote wiring:
after; execute reconciles and never posts to the ledger. A command
is complete only on 'failed', or on 'executed' once the updateId is
present — the gateway reports 'executed' before the updateId is
observable. The ledger updateId stands in for the signature, and the
executed payload/txChanged event is exactly
{updateId, completionOffset: 0}.
Taurus-PROTECT (no topology transaction, no hash signing), guarding
ambiguous prefixes; the vault picker lists parties by prefix.
and the repair loop: parties are hosted remotely, so absence from
the local rights snapshot says nothing.
TAURUS_PROTECT_GATEWAY_TOKEN are set.
Single-tenant by design: one machine token serves all wallet users.
Signed-off-by: NBO 519181+nbonvin@users.noreply.github.com