@catalabs/bitcoin-widget

0.0.1 • Public • Published

Catalabs Bitcoin Deposit Widget

The Catalabs deposit widget provides several ways to help manage a Crosscats deposit address.

Generating an address consists of two parts:

  • Generating a 3 word order slug
  • Generating a date string for the current date

These two pieces of information paired with a users VM private key allow Bitcoin deposit addresses to be generated in a recoverable way. The two pieces of information and utilized in a disclaimer indicating to the user to keep the information to recover this address. The order slug, date string, and disclaimer are then used to generate a signature that serves as the seed for the Bitcoin wallet private key.

What does this support?

  • Creating Order Slugs
  • Creating Date Strings
  • Formatting Disclaimer Text
  • Creating BIP21 Bitcoin Links
  • Scannable Bitcoin QR Code
  • Generating ECPair, Address, and Bitcoin Wallet
  • Querying Bitcoin address balance
  • Sending Bitcoin
  • Creating Bitcoin Wallets from WIF, Signatures, or Private Keys

Examples

A minimal example of how to create a Deposit Widget is provided in an Example. This example only shows how to provide a signing function to generate a Bitcoin wallet. The QR code is available stand alone or with an address displayed.

Generating a Wallet

async function signData(
  dataStruct: DataStruct,
  value: OrderAttestationValue,
): Promise<string> {
  return ethers.signTypedData(
    {
      name: "Catalabs Widget Example",
    },
    dataStruct,
    value,
  );
}

const { wallet, address } = await generateKeyPair({ signData });

The generated wallet can then be used to utilie the Bitcoin QR Component or with the Deposit Widget.

Using the Wallet

The Bitcoin Wallet has three functions:

  • Get Balance
  • Send
  • Send All

When monitoring addresses, the getBalance method may be polled to determin whene a generated address has any inputs (including unconfirmed inputs). Coins can then be moved by using send or sendAll - these functions will utilize unconfirmed inputs as well, allowing coins to immediately be sent when balance is detected.

Recovering Wallets

Any wallet can be recovered by reproducing the steps laid out above. It is important as stated in the disclaimer that users should capture their date string and order slug should they wish to recover their wallet in the case of any issue - assuming this information is not stored by the part implementing the wallet.

Dependents (0)

Package Sidebar

Install

npm i @catalabs/bitcoin-widget

Weekly Downloads

0

Version

0.0.1

License

none

Unpacked Size

22.3 kB

Total Files

30

Last publish

Collaborators

  • reednaa
  • tomiiide
  • hellojintao