Skip to content

feat: implement BitGo signing in SDK#8624

Draft
alextse-bg wants to merge 3 commits intomasterfrom
WCN-217
Draft

feat: implement BitGo signing in SDK#8624
alextse-bg wants to merge 3 commits intomasterfrom
WCN-217

Conversation

@alextse-bg
Copy link
Copy Markdown
Contributor

@alextse-bg alextse-bg commented Apr 23, 2026

Commit 1: allowing trading wallet transaction signing on Trading Account Objects

make wallet passphrase optional when signing OFC transactions.
if not present, the SDK attempts to sign using the wallet's BitGo key instead.

Commit 2: allowing trading wallet transaction signing on Wallet and Coins object

The following are all of the currently valid methods to create a signature on an OFC wallet's payload string

  1. ofcToken.signMessage({prv}, message): encrypts the message locally using prv
  2. ofcToken.signTransaction(params): signs a half signed transaction by calling the above method
  3. wallet.baseCoin.signMessage: see above
  4. wallet.baseCoin.signTransaction: see above
  5. wallet.signTransaction(params): signs a half signed transaction by getting the prv through a wallet passphrase then calling this.baseCoin.signTransaction
  6. wallet.prebuildAndSignTransaction(params): builds and sign a transaction by calling wallet.signTransaction
  7. all other wallet methods that calls wallet.prebuildAndSignTransaction (e.g. sendMany)
  8. wallet.toTradingAccount().signPayload: signs a half signed transaction using the wallet passphrase

Changes in commit 1 address path 8 already.

For paths that creates the signature using methods of wallet object (i.e. 5-7), all of them eventually calls wallet.signTransaction, which pass itself this as an argument to wallet.baseCoin.signTransaction (see here), allowing us to sign via BitGo key if we add the implementation to ofcToken

As for ofcToken.signMessage, add overloads to the method to allow SDK user to pass in the wallet object instead, which creates the signature via the BitGo key.

Note that the walletPassphrase is already an optional parameter when calling wallet level methods.

@linear
Copy link
Copy Markdown

linear Bot commented Apr 23, 2026

allow wallet and coins object to sign using the BitGo key
if the passphrase is not provided during signing

Ticket: WCN-217-2
When no walletPassphrase is present in the request body or environment,
pass undefined to tradingAccount.signPayload() instead of throwing.
The SDK routes passphrase-less signing through KMS internally.

Ticket: WCN-215-1
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