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— requiredstringthe hex string of psbt to signoptions— optionalobjectautoFinalized— optionalboolean: whether finalize psbt after signing, default istruetoSignInputs— 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?