signPsbt
This method will traverse all inputs that match the current address to sign.
Wallet & Address Type Compatibility
Software Wallet
-
p2wpkh (Native Segwit), p2tr (Taproot)
Hardware Wallet
Pro, Classic1S
p2tr (Taproot)
Method
async 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
— requiredstring
the hex string of psbt to signoptions
— optionalobject
autoFinalized
— optionalboolean
: whether finalize psbt after signing, default istrue
toSignInputs
— optionalArray
: specify which inputs to signindex
— requirednumber
: which input to signaddress
— optionalstring
: (specify either address or publicKey) which corresponding private key to use for signingpublicKey
— optionalstring
: (specify either address or publicKey) which corresponding private key to use for signingsighashTypes
— optionalnumber[]
: optional sighash types for the inputdisableTweakSigner
— optionalboolean
: default is false. Set true to use original private key when signing taproot inputsuseTweakedSigner
— optionalboolean
: 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
Last updated
Was this helpful?