On this page
signPsbt
This method will traverse all inputs that match the current address to sign.
Wallet & Address Type Compatibility
| Wallet Type | Model | Address Types Supported |
|---|---|---|
| Software Wallet | - | p2wpkh (Native Segwit), p2tr (Taproot) |
| Hardware Wallet | Pro, Classic1S | p2tr (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— 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
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