Skip to content

feat: optional signing providers - #2295

Open
pawelstepien-da wants to merge 55 commits into
mainfrom
pawel/optional-signing-providers
Open

feat: optional signing providers#2295
pawelstepien-da wants to merge 55 commits into
mainfrom
pawel/optional-signing-providers

Conversation

@pawelstepien-da

@pawelstepien-da pawelstepien-da commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

.

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
…to register

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
@pawelstepien-da pawelstepien-da changed the title task: optional signing providers feat: optional signing providers Aug 18, 2026
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
…tional-signing-providers

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
…tional-signing-providers

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>

# Conflicts:
#	wallet-gateway/remote/src/user-api/rpc-gen/index.ts
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
@pawelstepien-da pawelstepien-da linked an issue Aug 19, 2026 that may be closed by this pull request
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
@pawelstepien-da pawelstepien-da linked an issue Aug 19, 2026 that may be closed by this pull request
@pawelstepien-da
pawelstepien-da marked this pull request as ready for review August 19, 2026 09:35
@pawelstepien-da
pawelstepien-da requested a review from a team as a code owner August 19, 2026 09:35
Comment thread wallet-gateway/remote/src/index.ts Outdated
}

const hasSigningDb = process.argv.slice(2).includes('signing-db')
// TODO check if I can get rid db and signing-db arguments.

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.

@mjuchli-da Do you think we can remove arguments 'db' and 'signing-db'? If not, then I will just remove TODO 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.

i don't think we can

Comment thread docs/wallet-gateway/signing-providers/index.md Outdated
…ith deprecation warning

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
…tional-signing-providers

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
…gs that get added as fallback by zod.preprocess in 'required'

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>

@mjuchli-da mjuchli-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! It looks good but let us investigate if we can simplify the configuration as outlined in the comment below.

Comment thread wallet-gateway/remote/src/index.ts Outdated
}

const hasSigningDb = process.argv.slice(2).includes('signing-db')
// TODO check if I can get rid db and signing-db arguments.

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.

i don't think we can

Comment thread core/signing-blockdaemon/README.md Outdated
Comment thread core/signing-dfns/README.md Outdated
),
})

const providerEnableSchema = z.object({

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.

I actually think we might not need this: what if we just assume that if the config holds a record for a signing provider, then the intention is to enable it. That means, by default, everything is disabled, but if the property fireblocks with all its fields exists, then we plan to enable the driver.
This should also work fine for walletKernel and participant which do not hold sub-fields – here we can use the ~ tilde symbol as per yaml standard.

The reason why I think we should at least check if this is doable is because it might make the subsequent plug&play of signing drivers more user friendly.

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.

We could just assume that lack of provider's object in config means it won't register, but it is a breaking change that would require changing config after updating to Gateway version that will have this feature.

Explicit opt-out is one of two ways of preventing breaking changes I implemented, and the second is in case of missing config properties, like signingProviders.blockdaemon.baseUrl, to fallback on environment variables that were used before.

I see 3 options depending on how we want to balance no breaking changes vs simpler config and easier plug&play:

  1. Keep as is. No breaking changes, more complexity.
  2. Remove enable field, but keep checking environment variables as fallback for values that are now supposed to be in WG config. i.e if you have all env vars needed to register blockdaemon but no signingProviders.blockdaemon in config, it still registers. Only wallet-kernel and participant have breaking changes, simpler config for users, but still a bit convoluted for us to keep supporting deprecated env vars.
  3. Only existence of signingProviders.x entry allows registration of signing driver. Simplest config and code maintenance, but absolutely requires updating config after upgrading to WG version with that feature, or no signing provider will register.

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.

I suggest going with option 3. With the browser extension deployment, we will anyways need to opt-in a different default setup (e.g. no postgres but extension storage instead).

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.

We agreed that if signingProviders is missing, we will supply a default config:

"signingProviders": {
        "participant": {},
        "gateway": {},
        "fireblocks": {},
        "blockdaemon": {},
        "all the rest": {},        
    }

pawelstepien-da and others added 14 commits August 31, 2026 17:32
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
…tional-signing-providers

Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
Co-authored-by: Marc Juchli <120378272+mjuchli-da@users.noreply.github.com>
Signed-off-by: pawelstepien-da <pawel.stepien@digitalasset.com>
Co-authored-by: Marc Juchli <120378272+mjuchli-da@users.noreply.github.com>
Signed-off-by: pawelstepien-da <pawel.stepien@digitalasset.com>
Signed-off-by: Pawel Stepien <pawel.stepien@digitalasset.com>
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.

Make signing store optional Make all signing drivers optional via environment variables

3 participants