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. Connecting to the wallet

[Legacy ⚠️] getAccounts

PreviousManage a user's default walletNextWallet Methods

Last updated 7 months ago

🚀 Attention Developers: Upgrade to the method 🚀

A new method is now available to connect to user's wallets and request permissions to access their accounts.

While the legacy version documented here remains supported, we urge you to upgrade for access to the latest features and a more smoother user experience.

Your application can request to connect to the user’s wallet with the getAccounts method, which prompts them to share their Bitcoin and Stacks addresses.

  • You can specify which wallet addresses you require, Bitcoin ordinals address, Bitcoin payment address or Stacks address, using the purposes request parameter

  • The message request param gives you the option to display a message the user when requesting their addresses. You can use it to present your app and explain why you require access to 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

  • 'stacks' is used to interact with the stacks ecosystem

Example: ['ordinals', 'payment', 'stacks']

message

import {request} from "sats-connect";

try {

  const response = await request('getAccounts', 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);
}
  • your app logo, if it is specified in your app manifest

  • the wallet addresses that your app required

  • the message which you specified. Note that this message will be cut beyond 80 characters.

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, you 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

  • stacks is used to interact with the stacks ecosystem

addressType

string - the address’s format:

  • P2TR for ordinals

  • P2SH for payment

  • P2WPKH for payment using Ledger

  • stacks for Stacks

walletType

string - the type of wallet used for the account

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

  • software otherwise

If the user declines the request or closes the pop-up, the promise will reject (throw when awaited).

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

The getAddresss method returns a that resolves if the user approves the connection request. The user will see a Connection Request prompt in their wallet. The prompt will display:

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

connect
connect
Promise
signing a message
signing a transaction
ℹ️