SDP-1592: Add embedded wallet provider - #1019
Conversation
* Implement disbursements to contract accounts * Update go.list * fmt * Fix typo in unit test Co-authored-by: Copilot <[email protected]> * Fix error message --------- Co-authored-by: Copilot <[email protected]>
Chore: Merge `develop` into `feature/c-accounts`
* Upgrade to AP 3.2.0-beta.1 and set up config * Add docs for RpcOptions * Fix serve test * Update internal/serve/httphandler/stellar_toml_handler.go Co-authored-by: Copilot <[email protected]> * Fix custom_set_value tests * Fix AP SEP-45 config * Remove RpcOptions from TSS * Fix Anchor Platform sep45.enabled config * Fix custom_set_value error message --------- Co-authored-by: Copilot <[email protected]>
* Implement webauthn account contract * Add tests * Implement tests * Cleanup * Add GH workflow * Update base64_url * Fix comment * Use single signature * Fix challenge check * Fix comment * Update docker_image_public_release workflow
* Parse challenge as JSON * Add unit test for invalid challenge length
Chore: Merge `develop` into `feature/c-accounts`
* Implement wallet creation service * Typo * PR comments * PR comments
* Add wallet creation type to TSS transactions * PR comments * Fix constraint
* Refactor payment transaction handling out of TSS * PR comments
* Implement wallet creation for embedded wallets * PR comments * Rename Dynamic -> SelfHosted
* Implement wallet creation TSS worker * Dependency injection * Update wallet creation transaction worker * Config * PR comments * Mocks * Auth header
* Add sponsored type to TSS transactions * Copilot * Rename fields and use enum type * Fix constraint
* SDP-1689 Prevent unregistering user-managed wallets and wallets with in-progress payments. (#683) * Feat: Turn on service account use in the ap deployment in the helm chart (#679) ### What Turn on the service account in the helm chart for the ap deployment ### Why Currently the serviceaccount name is commented out while all the other deployments have the serviceaccountname set up * Bump vite (#654) * Bump the minor-and-patch group across 1 directory with 6 updates (#690) * Bump the minor-and-patch group across 1 directory with 6 updates Bumps the minor-and-patch group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) | `0.32.0` | `0.33.0` | | [github.com/nyaruka/phonenumbers](https://github.com/nyaruka/phonenumbers) | `1.6.1` | `1.6.3` | | [github.com/segmentio/kafka-go](https://github.com/segmentio/kafka-go) | `0.4.47` | `0.4.48` | | [github.com/twilio/twilio-go](https://github.com/twilio/twilio-go) | `1.25.1` | `1.26.1` | | [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` | | [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` | Updates `github.com/getsentry/sentry-go` from 0.32.0 to 0.33.0 - [Release notes](https://github.com/getsentry/sentry-go/releases) - [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md) - [Commits](getsentry/sentry-go@v0.32.0...v0.33.0) Updates `github.com/nyaruka/phonenumbers` from 1.6.1 to 1.6.3 - [Release notes](https://github.com/nyaruka/phonenumbers/releases) - [Changelog](https://github.com/nyaruka/phonenumbers/blob/main/CHANGELOG.md) - [Commits](nyaruka/phonenumbers@v1.6.1...v1.6.3) Updates `github.com/segmentio/kafka-go` from 0.4.47 to 0.4.48 - [Release notes](https://github.com/segmentio/kafka-go/releases) - [Commits](segmentio/kafka-go@v0.4.47...v0.4.48) Updates `github.com/twilio/twilio-go` from 1.25.1 to 1.26.1 - [Release notes](https://github.com/twilio/twilio-go/releases) - [Changelog](https://github.com/twilio/twilio-go/blob/main/CHANGES.md) - [Commits](twilio/twilio-go@v1.25.1...v1.26.1) Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0 - [Commits](golang/crypto@v0.37.0...v0.38.0) Updates `golang.org/x/net` from 0.39.0 to 0.40.0 - [Commits](golang/net@v0.39.0...v0.40.0) --- updated-dependencies: - dependency-name: github.com/getsentry/sentry-go dependency-version: 0.33.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: github.com/nyaruka/phonenumbers dependency-version: 1.6.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: github.com/segmentio/kafka-go dependency-version: 0.4.48 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-and-patch - dependency-name: github.com/twilio/twilio-go dependency-version: 1.26.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: golang.org/x/crypto dependency-version: 0.38.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-and-patch - dependency-name: golang.org/x/net dependency-version: 0.40.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-and-patch ... Signed-off-by: dependabot[bot] <[email protected]> * Update CHANGELOG.md * Update go.list --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marcelo Salloum <[email protected]> * SDP 1685 add create receiver endpoint (#687) * SDP 1685 add create receiver endpoint * SDP 1685 receiver shadowing fix * SDP-1685 discussions fix * Add badges to the README.md file (#691) ### What Add Several badges to the README.md: <img width="969" alt="Screenshot 2025-05-23 at 2 19 10 PM" src="https://github.com/user-attachments/assets/d0a45bb4-4d35-4ccb-a9c7-798e16845ffe" /> This includes the DeepWiki badge, which ensures DeepWiki will re-index this repo once a week. ### Why 📈 Kaizen * chore: bump version to 3.7.1 * Fix stellar.expert pubnet URL configuration in helm chart * SDP-1630: add api key auth to all SDP endpoints (#681) * SDP-1630 add api keys middleware * SDP-1630 fix existing tests * SDP 1630 merge develop * SDP 1630 * SDP 1630 gofumpt * SDP 1630 * SDP 1630 changelog update * SDP 1630 keys parsing improve * SDP 1630 update remote debug template file * SDP-1630 resolve discussions * SDP 1630 resolve discussion * SDP 1686 create wallet endpoint update (#696) * SDP 1686 create wallet endpoint update * SDP-1686 * SDP-1686 fix test * SDP-1686 * SDP 1687 update wallet patch endpoint (#697) * SDP 1686 create wallet endpoint update * SDP-1686 * SDP-1686 fix test * SDP-1687 update PATCH endpoint * SDP 1687 update chengelog * SDP 1687 * SDP-1687 linter fix * SDP-1687 discussions fix * SDP-1687 --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Marwen Abid <[email protected]> Co-authored-by: Traver Tischio <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marcelo Salloum <[email protected]> Co-authored-by: Denys <[email protected]> Co-authored-by: Marcelo Salloum dos Santos <[email protected]> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Update embedded wallets configuration * Fix embedded_wallet_serivce_test * PR comments
* Remove tenant_id from embedded_wallet * PR comments * Oops
* Generate unique tokens * DI * Remove tenant ID * Fix test
* Fix wallet creation transaction building * Empty commit
* Fix embedded wallet service DI * PR comments
* Implement embedded wallet from TSS sync * Rename * Fix tests * Fix shadow * PR comments * Fix tests
* Fetch wallet status by credential_id * PR comments * Copilot comment
* Update helm chart * Improve RPC header documentation * Spacing * Update descriptions
Chore: Merge `develop` into `feature/c-accounts`
…1025) ### What Reuse invite link when there is already an existing pending embedded wallet for the receiver. ### Why When resending an invitation for an embedded wallet via `PATCH /receivers/wallets/{id}`, the system was creating fresh entries in the `embedded_wallets` table for each resend attempt, even when a PENDING registration already existed for that receiver wallet. This caused: 1. Duplicate entries accumulating in the embedded_wallets table 2. Previously sent invitation links becoming orphaned/invalid 3. Potential confusion for receivers who might have multiple valid-looking registration tokens
### What This treats any TSS transactions with the `function_trapped` op code as a permanent failure. ### Why We observed this op code when the TSS tries submitting an XLM payment via SAC, where the transfer brings the balance below 0 after fees. In general, we want any contract execution failures (`function_trapped`) to be marked as a failure. ### Known limitations N/A ### Checklist - [x] Title follows `SDP-1234: Add new feature` or `Chore: Refactor package xyz` format. The Jira ticket code was included if available. - [x] PR has a focused scope and doesn't mix features with refactoring - [x] Tests are included (if applicable) - [ ] `CHANGELOG.md` is updated (if applicable) - [ ] CONFIG/SECRETS changes are updated in helmcharts and deployments (if applicable) - [ ] Preview deployment works as expected - [ ] Ready for production
### What Add missing database indexes to support embedded wallet flows: - `embedded_wallets_contract_address_idx`: used by `GET /embedded-wallets/profile` to resolve the wallet/receiver by `contract_address`. - `payments_receiver_wallet_type_status_updated_at_idx`: used by `GET /embedded-wallets/profile` when verification is pending, to fetch the latest in‑progress disbursement asset for the wallet. - `embedded_wallets_status_updated_at_idx`: used by the embedded wallet submission job. - `sponsored_transactions_status_updated_at_idx`: used by the sponsored transaction submission job. ### Why The embedded wallet feature introduced new query paths that require new indexes. ### Known limitations N/A ### Checklist - [x] Title follows `SDP-1234: Add new feature` or `Chore: Refactor package xyz` format. The Jira ticket code was included if available. - [x] PR has a focused scope and doesn't mix features with refactoring - [ ] Tests are included (if applicable) - [ ] `CHANGELOG.md` is updated (if applicable) - [ ] CONFIG/SECRETS changes are updated in helmcharts and deployments (if applicable) - [ ] Preview deployment works as expected - [ ] Ready for production
### What This simulates sponsored transactions before persisting them in TSS. ### Why To catch invalid or failing contract invocations earlier and return clearer client errors instead of creating sponsored transactions that would later fail. ### Known limitations N/A ### Checklist - [x] Title follows `SDP-1234: Add new feature` or `Chore: Refactor package xyz` format. The Jira ticket code was included if available. - [x] PR has a focused scope and doesn't mix features with refactoring - [x] Tests are included (if applicable) - [ ] `CHANGELOG.md` is updated (if applicable) - [ ] CONFIG/SECRETS changes are updated in helmcharts and deployments (if applicable) - [ ] Preview deployment works as expected - [ ] Ready for production
Chore: Merge `develop` into `feature/c-accounts` and update `CHANGELOG.md`
### What This PR adds a manual workflow to build contract WASMs and generate attestations, updates the release/PR checklists to ensure WASMs are attached when contracts change, and documents the WASM update step in the PR process. ### Why We want to build contracts with attestations so their source code can be verified via SEP-55. We also need an easily accessible copy of the WASMs for testnet/pubnet outside of releases; if we only upload them to releases when they change, locating the correct WASM is harder. Keeping the WASMs in the repo makes them easy to find, and their size is small enough that this is acceptable. ### Known limitations N/A ### Checklist - [x] Title follows `SDP-1234: Add new feature` or `Chore: Refactor package xyz` format. The Jira ticket code was included if available. - [x] PR has a focused scope and doesn't mix features with refactoring - [ ] Tests are included (if applicable) - [ ] `CHANGELOG.md` is updated (if applicable) - [ ] CONFIG/SECRETS changes are updated in helmcharts and deployments (if applicable) - [ ] Preview deployment works as expected - [ ] Ready for production
| CREATE TABLE embedded_wallets ( | ||
| token VARCHAR(36) PRIMARY KEY, | ||
| wasm_hash VARCHAR(64), | ||
| contract_address VARCHAR(56), |
There was a problem hiding this comment.
We're missing some index / unique constraints here I think. contract_address should be unique right ? It is also used for lookups.
There was a problem hiding this comment.
You're right. We have an index, but it should be unique too.
| WalletStatus: data.PendingWalletStatus, | ||
| } | ||
|
|
||
| embeddedWallet, err := e.sdpModels.EmbeddedWallets.Insert(ctx, e.sdpModels.DBConnectionPool, insert) |
There was a problem hiding this comment.
Do we need to pass in dbTx here instead of the connection pool ?
| SELECT ` + SponsoredTransactionColumnNames("", "") + ` | ||
| FROM sponsored_transactions | ||
| WHERE id = $1 | ||
| AND account = $2 |
There was a problem hiding this comment.
Do we have a unique index for both id and account to avoid dupes ?
There was a problem hiding this comment.
id is the primary key, so I don't think duplicate records are possible.
| transactions := make([]store.Transaction, 0, len(wallets)) | ||
| for _, wallet := range wallets { | ||
| if wallet.PublicKey == "" || wallet.WasmHash == "" { | ||
| log.Ctx(ctx).Warnf("embedded wallet %s is missing required data, skipping", wallet.Token) |
There was a problem hiding this comment.
What happens to these wallets ? Do they get stuck in this state ?
It may be ok because we're logging a warning here.
If there is no chance of recovery, we can consider setting them to failed.
There was a problem hiding this comment.
The public key is set when the user creates their passkey, so we should leave those records pending, but the Wasm hash should always be present. Rather than marking the records as failed, we can enforce non-null at the DB level. WDYT?
| return | ||
| } | ||
|
|
||
| contractAddress, err := getInvokeContractAddress(reqBody.OperationXDR) |
There was a problem hiding this comment.
❓Are we also validating at some point that the invoker is correct ? (matches wallet contract address from JWT).
Do we also need to validate InvokeContract.FunctionName to limit the type of functions allowed: only allow transfer.
There was a problem hiding this comment.
There's no concept of an invoker in Soroban, but if we limit the functions to transfers only, we can check that the first address argument is the wallet. I think this is a good idea.
There was a problem hiding this comment.
Pull request overview
This PR integrates embedded wallet functionality into the develop branch, enabling users to create and manage Stellar smart contract wallets through the platform. The implementation includes SEP-45 authentication support, WebAuthn passkey integration, and new transaction submission pipelines for wallet creation and sponsored transactions.
Changes:
- Adds embedded wallet service with smart contract deployment capabilities
- Implements SEP-45 web authentication for contract-based wallets
- Introduces WebAuthn passkey authentication support
- Extends transaction submission system to handle wallet creation and sponsored transactions
Reviewed changes
Copilot reviewed 147 out of 218 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/services/sep45_service_mock.go | Generated mock for SEP-45 service testing |
| internal/services/sep10_service_test.go | Adds nonce store to SEP-10 service and tests nonce replay protection |
| internal/services/send_receiver_wallets_invite_service.go | Updates invitation service to support embedded wallet deep links |
| internal/services/paymentdispatchers/stellar_payment_dispatcher.go | Restructures transaction format for TSS compatibility |
| internal/services/payment_from_submitter_service.go | Adds transaction type filtering for payment syncing |
| internal/services/nonce_store.go | Implements nonce storage for replay attack prevention |
| internal/services/mocks/*.go | Generated mocks for wallet creation and sponsored transaction services |
| internal/serve/middleware/wallet_auth_middleware.go | New middleware for wallet JWT authentication |
| internal/serve/httphandler/wallets_handler.go | Adds embedded wallet filtering and validation |
| internal/serve/httphandler/wallet_creation_handler.go | New handler for embedded wallet creation endpoints |
| internal/serve/httphandler/verify_receiver_registration_handler.go | Updates to use renamed WebAuth claims methods |
| internal/serve/httphandler/stellar_toml_handler.go | Adds SEP-45 contract information to TOML |
| internal/serve/httphandler/sep45_handler.go | New handler for SEP-45 challenge/validation endpoints |
| internal/serve/httphandler/sep24_handler.go | Updates to use unified WebAuth claims |
| internal/serve/httphandler/rpc_proxy_handler.go | New handler for proxying RPC requests |
| internal/serve/httphandler/embedded_wallet_profile_handler.go | New handler for embedded wallet profile endpoints |
| internal/serve/httphandler/disbursement_handler.go | Updates validation to support embedded wallets without verification |
| internal/sepauth/webauth_auth_middleware.go | New unified middleware supporting both SEP-10 and SEP-45 tokens |
| internal/sepauth/sep24_jwt_claims.go | Updates to support contract addresses in claims |
| internal/sepauth/jwt_manager.go | Adds SEP-45 token generation and parsing |
| internal/sdpcontext/context.go | Adds wallet contract address context helpers |
| internal/scheduler/scheduler.go | Registers new jobs for embedded wallet sync |
| internal/scheduler/jobs/*.go | New jobs for wallet creation and sponsored transaction sync |
| internal/monitor/tss_*.go | Adds metrics for wallet creation and sponsored transactions |
| internal/dependencyinjection/*.go | New dependency injection for WebAuthn and RPC client |
| internal/data/*.go | Database models and migrations for embedded wallets, nonces, and passkey sessions |
| helmchart/sdp/values.yaml | Configuration for embedded wallet features |
| go.mod | Adds WebAuthn and CBOR dependencies |
| contracts/smart-wallet/* | Smart contract implementation for embedded wallets |
| db/migrations/* | Database schema changes for embedded wallet support |
| dev/* | Development environment updates for embedded wallet testing |
| cmd/*.go | Command-line updates for embedded wallet configuration |
|
|
||
| func (c *SEP24JWTClaims) SEP10StellarMemo() string { | ||
| func (c *SEP24JWTClaims) Memo() string { | ||
| // The SEP-10 account will be in the format "account:memo", in case there's a memo. |
There was a problem hiding this comment.
The comment still references 'SEP-10 account' but should also mention SEP-45 since the method now supports both authentication types. Update to: 'The SEP-10 or SEP-45 account will be in the format "account:memo", in case there's a memo.'
| // The SEP-10 account will be in the format "account:memo", in case there's a memo. | |
| // The SEP-10 or SEP-45 account will be in the format "account:memo", in case there's a memo. |
| TenantBaseURL string | ||
| // TenantUIBaseURL is the base URL for the tenant UI that the receiver wallet belongs to. | ||
| TenantUIBaseURL string | ||
| // Token is a unique token that identifies identifies a receiver wallet creation request. |
There was a problem hiding this comment.
Corrected duplicate word 'identifies' to single occurrence.
| // Token is a unique token that identifies identifies a receiver wallet creation request. | |
| // Token is a unique token that identifies a receiver wallet creation request. |
| type ColumnType int | ||
|
|
||
| const ( | ||
| String ColumnType = iota | ||
| Float64 | ||
| ) |
There was a problem hiding this comment.
The exported type 'ColumnType' and its constants 'String' and 'Float64' use generic names that could conflict with built-in types or common identifiers. Consider prefixing with the package context, e.g., 'SQLColumnType', 'SQLColumnString', 'SQLColumnFloat64'.
|
|
||
| tc := customSetterTestCase[[]string]{ | ||
| name: "returns an error if ui base url is empty and it's required", | ||
| args: []string{"--sdp-ui-base-url", " "}, // Workaround to test empty values |
There was a problem hiding this comment.
The workaround comment appears twice (lines 481 and 595). Consider extracting this test pattern into a helper function to avoid duplication and make the workaround's purpose clearer.
| TWILIO_SERVICE_SID: MY_TWILIO_SERVICE_SID | ||
| EC256_PRIVATE_KEY: "-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdo6o+tdFkF94B7z8\nnoybH6/zO3PryLLjLbj54/zOi4WhRANCAAQncc2mE8AQoe+1GOyXkqPBz21MypLa\nmZg3JusuzFnpy5C+DbKIShdmLE/ZwnvtywcKVcLpxvXBCn8E0YO8Yqg+\n-----END PRIVATE KEY-----" | ||
| SEP24_JWT_SECRET: jwt_secret_1234567890 | ||
| SEP24_JWT_SECRET: jwt_secret_ducrCcqnKmIqG6mYG48Hqlf9TWb7CJh4 |
There was a problem hiding this comment.
The SEP24_JWT_SECRET appears to be a hardcoded secret in a docker-compose file. While this may be acceptable for testing, ensure this secret is not used in production environments and consider adding a comment indicating this is for testing only.
| SEP24_JWT_SECRET: jwt_secret_ducrCcqnKmIqG6mYG48Hqlf9TWb7CJh4 | |
| # SEP24 JWT secret for E2E tests only; must be provided via environment and must not be reused in production | |
| SEP24_JWT_SECRET: ${SEP24_JWT_SECRET:?SEP24_JWT_SECRET environment variable is required for E2E tests} |
### What This addresses the database-related comments mentioned in #1019. - Make `contract_address` unique in `embedded_wallets` - Make `wasm_hash` non-null in `embedded_wallets` - Use the DB transaction instead of the connection pool in the sponsored transaction service. ### Why N/A ### Known limitations N/A ### Checklist - [x] Title follows `SDP-1234: Add new feature` or `Chore: Refactor package xyz` format. The Jira ticket code was included if available. - [x] PR has a focused scope and doesn't mix features with refactoring - [x] Tests are included (if applicable) - [ ] `CHANGELOG.md` is updated (if applicable) - [ ] CONFIG/SECRETS changes are updated in helmcharts and deployments (if applicable) - [ ] Preview deployment works as expected - [ ] Ready for production
## Bumps the all-actions group with 2 updates - [docker/login-action](https://github.com/docker/login-action) - [docker/build-push-action](https://github.com/docker/build-push-action) --- ## docker/login-action: 4.2.0 → 4.4.0 ### Release notes (v4.4.0) - Skip empty `registry-auth` secret mask by @crazy-max in #1035 - Bump `@aws-sdk/client-ecr` and `@aws-sdk/client-ecr-public` to 3.1077.0 in #1034 **Full Changelog:** docker/login-action@v4.3.0...v4.4.0 --- ### Release notes (v4.3.0) - Preserve names in esbuild bundle by @crazy-max in #1022 - Bump `@aws-sdk/client-ecr` and `@aws-sdk/client-ecr-public` to 3.1076.0 in #999 and #1030 - Bump `@docker/actions-toolkit` from 0.90.0 to 0.92.0 in #1004 and #1027 - Bump `@sigstore/core` from 3.1.0 to 3.2.1 in #1023 - Bump `@sigstore/verify` from 3.1.0 to 3.1.1 in #1029 - Bump http-proxy-agent and https-proxy-agent to 9.1.0 in #1017 - Bump js-yaml from 4.1.1 to 5.2.0 in #1028 - Bump sigstore from 4.1.0 to 4.1.1 in #1031 - Bump tmp from 0.2.5 to 0.2.7 in #1002 - Bump undici from 6.24.1 to 6.27.0 in #1020 - Bump vite from 7.3.3 to 7.3.6 in #1019 **Full Changelog:** docker/login-action@v4.2.0...v4.3.0 --- ## docker/build-push-action: 7.2.0 → 7.3.0 ### Release notes (v7.3.0) - Preserve names in esbuild bundle by @crazy-max in #1567 - Bump `@docker/actions-toolkit` from 0.90.0 to 0.92.0 in #1545 and #1572 - Bump `@sigstore/core` from 3.1.0 to 3.2.1 in #1568 - Bump js-yaml from 4.1.1 to 4.3.0 in #1566 - Bump tmp from 0.2.5 to 0.2.7 in #1547 - Bump undici from 6.24.1 to 6.27.0 in #1564 - Bump vite from 7.3.2 to 7.3.6 in #1563 **Full Changelog:** docker/build-push-action@v7.2.0...v7.3.0
What
This merges the embedded wallet feature into
developWhy
N/A
Known limitations
N/A
Checklist
SDP-1234: Add new featureorChore: Refactor package xyzformat. The Jira ticket code was included if available.CHANGELOG.mdis updated (if applicable)