Skip to Content
dApps
On this page

signPsbt

This method will traverse all inputs that match the current address to sign.

Wallet & Address Type Compatibility

Wallet TypeModelAddress Types Supported
Software Wallet-p2wpkh (Native Segwit), p2tr (Taproot)
Hardware WalletPro, Classic1Sp2tr (Taproot)

Method

declare function signPsbt( psbtHex: string, options?: { autoFinalized?: boolean; toSignInputs?: Array<{ index: number; address?: string; publicKey?: string; sighashTypes?: number[]; disableTweakSigner?: boolean; useTweakedSigner?: boolean; }>; } ): Promise<string>

Params

  • psbtHex — required string the hex string of psbt to sign
  • options — optional object
    • autoFinalized — optional boolean: whether finalize psbt after signing, default is true
    • toSignInputs — optional Array: specify which inputs to sign
      • index — required number: which input to sign
      • address — optional string: (specify either address or publicKey) which corresponding private key to use for signing
      • publicKey — optional string: (specify either address or publicKey) which corresponding private key to use for signing
      • sighashTypes — optional number[]: optional sighash types for the input
      • disableTweakSigner — optional boolean: default is false. Set true to use original private key when signing taproot inputs
      • useTweakedSigner — optional boolean: force whether to use tweaked signer. Higher priority than disableTweakSigner

Returns

Promise<string> — the hex string of signed psbt

Example

const provider = (window.$onekey && window.$onekey.btc) || window.unisat; try { // Basic signing const signedBasic = await provider.signPsbt("70736274ff01007d...."); // Advanced signing with options const signedAdvanced = await provider.signPsbt( "70736274ff01007d....", { autoFinalized: false, toSignInputs: [ { index: 0, address: "bc1qxxx...xxx", }, { index: 1, publicKey: "02xxx...xxx", sighashTypes: [1] }, { index: 2, publicKey: "02xxx...xxx", disableTweakSigner: true } ] } ); console.log('Signed PSBT:', signedAdvanced); } catch (error) { console.error('Failed to sign PSBT:', error); // Handle signing errors appropriately }

Demo

Open example 

Wallet and address compatibility depends on the wallet and firmware version. Confirm support for the target account before relying on the compatibility table.

The abbreviated PSBTs, addresses, and public keys above are placeholders. Replace them with complete values. The published provider interface exposes autoFinalized; additional toSignInputs options depend on the wallet implementation and should be verified with your target version. Signing does not broadcast a transaction.

Last updated on