Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@fireblocks/psbt-sdk

Package Overview
Dependencies
Maintainers
0
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fireblocks/psbt-sdk

SDK for signing Partially Signed Bitcoin Transactions (PSBTs) using Fireblocks

  • 0.0.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Fireblocks

npm version

Fireblocks PSBT SDK

Warning
This package is in an alpha stage and should be used at your own risk.
The provided interfaces might go through backwards-incompatibale changes.
For a more stable library (without explicit PSBT support) you can use the Fireblocks Typescript SDK

The Fireblocks PSBT SDK makes it easy to sign PSBTs (Partially Signed Bitcoin Transactions) using Fireblocks.

Features

  • Sign all inputs of a PSBT
  • Sign specific inputs of a PSBT
  • ECDSA signatures

Taproot (Schnorr) signatures are on the roadmap and will be supported in a future release.

Installation

To install the Fireblocks PSBT SDK, run the following command:

npm install @fireblocks/psbt-sdk

Usage

You can choose between:

  1. Signing a PSBT with PsbtSigner
  2. Using FireblocksSigner with bitcoinjs-lib

Additionally you have two options for passing the Fireblocks SDK configuration parameters:

  1. As environment variables (see .env.example)
  2. As a configuration object with apiKey and secretKey properties passed to the create method under the fireblocks property

PsbtSigner

import { PsbtSigner } from "@fireblocks/psbt-sdk";

const psbtSigner: PsbtSigner = PsbtSigner.create({
  assetId: "BTC",
  vaultId: "0",
});

// Sign a PSBT in base64 format
const signedPsbtBase64 = await psbtSigner.signBase64("cHNid...AAA==");

// Sign a PSBT in hex format
const signedPsbtHex = await psbtSigner.signHex("70736...70000");

// Sign a bitcoin.Psbt object
const signedPsbt = await psbtSigner.signPsbt(bitcoin.Psbt.fromBase64("cHNid...AAA=="));

FireblocksSigner

import { FireblocksSigner } from "@fireblocks/psbt-sdk";
import * as bitcoin from "bitcoinjs-lib";

const psbt = bitcoin.Psbt.fromBase64("cHNid...AAA==");

const fireblocksSigner: FireblocksSigner = await FireblocksSigner.create({
  assetId: "BTC",
  vaultId: "0",
  addressIndex: 0,
  note: `Signing PSBT: ${psbt.toBase64()}`, // Optional note to add to the transaction
});

// Sign the first input
await psbt.signInputAsync(0, fireblocksSigner);

// Or sign all inputs
await psbt.signAllInputsAsync(fireblocksSigner);

console.log("Signed PSBT:", psbt.toBase64());

psbt.finalizeAllInputs();
console.log("Signed transaction:", psbt.extractTransaction().toHex());

Optional Parameters

Both PsbtSigner.create and FireblocksSigner.create accept the following optional parameters:

  • note: A note to add to the Fireblocks transaction.

PsbtSigner.create accepts the following optional parameters:

  • batch: Whether to batch the signatures into a single transaction. Defaults to true. When set to false, each signature is sent to Fireblocks as a separate transaction.
    When set to true, if a PSBT requires multiple signatures (for example, a PSBT with multiple inputs that need to be signed), all the signatures are sent to Fireblocks as a single batched raw signing transaction.
  • limit: The maximum number of addresses to retrieve from the Fireblocks vault, ordered in descending order by their balance. Defaults to 10.
  • addressIndexes: The vault's BIP44 address indexes to use for signing. If not provided, the top limit addresses in terms of balance will be used.

Co-Signer Verification

For programmatic verification of PSBT signature requests in your co-signer callback, if you either:

  • Use PsbtSigner
  • Or include the base64-encoded PSBT in the FireblocksSigner's note parameter

The PSBT will be available for your co-signer callback under: extraParameters.rawMessageData.psbt

Examples

Testing

To run the tests, execute the following command:

npm test

Make sure to copy .env.example to .env and fill in the Fireblocks API key and secret before running the tests. Your workspace is expected to have a BTC or BTC_TEST vault with a non-zero balance.

In addition, if you'd like to have the debug logs printed out to the console, make sure to set the DEBUG environment variable:
DEBUG=fireblocks_psbt_sdk:*

Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.

License

The Fireblocks PSBT SDK is licensed under the MIT License.

Keywords

FAQs

Package last updated on 22 Aug 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc