Sats Connect - Wallet API for Bitcoin & Stacks
  • Introduction
  • Wallet Providers
    • getInfo
    • getProviders & getProviderById
  • Connecting to the wallet
    • Connect to Xverse Wallet
    • Disconnect from Xverse Wallet
    • Connect to other wallets
      • Manage a user's default wallet
    • [Legacy ⚠️] getAccounts
  • Wallet Methods
    • request methods
    • wallet_getAccount
    • wallet_getNetwork
    • wallet_changeNetwork
    • Xverse Custom Methods
  • Xverse Wallet Permissions
  • Xverse Wallet events
  • BITCOIN METHODS
    • 🟠getAddresses
    • 🟠signMessage
    • 🟠signPsbt
    • 🟠sendTransfer
    • 🟠signMultipleTransactions
    • 🟠getBalance
    • 🎨createInscription
    • 🎨createRepeatInscriptions
    • 🎨ord_getInscriptions
    • 🎨ord_sendInscriptions
    • 🔲runes_getBalance
    • 🔲runes_transfer
    • 🔲Mint Runes
      • runes_estimateMint
      • runes_mint
    • 🔲Etch Runes
      • runes_estimateEtch
      • runes_etch
    • 🔲runes_getOrder
    • 🔲Speed up a Rune Mint or Etch order
      • 🔲runes_estimateRbfOrder
      • 🔲runes_rbfOrder
  • STACKS METHODS
    • 🔴stx_getAccounts
    • 🔴stx_signMessage
    • 🔴stx_signStructuredMessage
    • 🔴stx_transferStx
    • 🔴stx_signTransaction
    • 🔴stx_callContract
    • 🔴stx_deployContract
  • GUIDES
    • Verify Bitcoin message signatures
    • Creating Bitcoin PSBTs
    • 📱Mobile Integration
    • Next.js support
  • RESOURCES
    • App Template
    • Demo App
    • Changelog
    • Github Issues
    • Developer forum
    • BIP322
Powered by GitBook
On this page
  1. BITCOIN METHODS

getAddresses

Get addresses for the currently active account

PreviousXverse Wallet eventsNextsignMessage

Last updated 7 months ago

Your app can request the current account's Bitcoin addresses with getAddresses. The app must have first and obtained

  • Apps can specify which wallet addresses they require: Bitcoin ordinals address, Bitcoin payment address or Stacks address, using the purposes request parameter

  • The message request param gives apps the option to display a message the user when requesting their addresses.

request parameters
Description

purposes

Array of strings used to specify the purpose of the address(es) to request:

  • 'ordinals' is preferably used to manage the user’s ordinals

  • 'payment' is preferably used to manage the user’s bitcoin

Example: ['ordinals', 'payment']

message

import { request } from "sats-connect";

try {
  const response = await request("getAddresses", null);
  console.log("getAccounts ~ response:", response);
  if (response.status === "success") {
    const paymentAddressItem = response.result.find(
      (address) => address.purpose === AddressPurpose.Payment,
    );
    const ordinalsAddressItem = response.result.find(
      (address) => address.purpose === AddressPurpose.Ordinals,
    );
    const stacksAddressItem = response.result.find(
      (address) => address.purpose === AddressPurpose.Stacks,
    );
  } else {
    if (response.error.code === RpcErrorCode.USER_REJECTION) {
      // handle user cancellation error
    } else {
      // handle error
    }
  }
} catch (err) {
  alert(err.error.message);
}

Once resolved, the method returns GetAccountResult: an array of the user’s wallet address objects, defined as:

type address = {
    address: string;
    publicKey: string;
    purpose: "payment" | "ordinals" | "stacks";
    addressType: "p2tr" | "p2wpkh" | "p2sh" | "stacks";
}

Currently, apps can retrieve two types of Bitcoin addresses, the user's Bitcoin payment address and the Ordinals address which is a taproot address.

An example response:

GetAccountResult: [
  {
    address: "tb1pzwa68q3udj0f7g5xtdakgecvf45dvssu66ry7y3at22w7vus20vq3sgw62",
    publicKey: "b9907521ddb85e0e6a37622b7c685efbdc8ae53a334928adbd12cf204ad4e717",
    purpose: "ordinals",
    addressType: "p2tr",
    walletType: "software"
  },
  {
    address: "2NBfRKCUpafbatj5gV9T82uau3igdSf9BXJ",
    publicKey: "02818b7ff740a40f311d002123087053d5d9e0e1546674aedb10e15a5b57fd3985",
    purpose: "payment",
    addressType: "p2sh",
    walletType: "software"
  }
]

Where:

address field
Description

address

string - the user’s connected wallet address

publicKey

A hex string representing the bytes of the public key of the account. You can use this to construct partially signed Bitcoin transactions (PSBT).

purpose

string - The purpose of the address:

  • ordinals is preferably used to manage the user’s ordinals

  • payment is preferably used to manage the user’s bitcoin

addressType

string - the address’s format:

  • P2TR for ordinals

  • P2SH for payment

  • P2WPKH for payment using Ledger

network

string - the network where the address is being used:

  • mainnet for Bitcoin Mainnet

  • testnet for Bitcoin Testnet

  • Signet for Bitcoin Signet

walletType

string - the type of wallet used for the account

  • ledger if the user's account is using a Ledger device

  • software otherwise

Optional a message to be displayed to the user in the request prompt.

Apps can use these addresses to make further requests such as , , etc.

🟠
connected to the wallet
account read permissions.
signing a message
signing a transaction
ℹ️