@blockstack/stacks-utils
v0.1.6
Published
Utilities for the Stacks blockchain.
Downloads
11
Readme
Stacks Utilities
Getting started
npm install stacks-utils
# or
yarn add stacks-utils
Table of Contents
- Addresses
- Transactions
- Hardware Wallets
- Data Fetching
- Units
Addresses
Validate Stacks Address
import { validateStacksAddress } from "stacks-utils";
const isValid = validateStacksAddress(stacksAddress);
Stacks to Bitcoin
import { stacksAddressToBtcAddress } from "stacks-utils";
const btcAddress = stacksAddressToBtcAddress(stacksAddress);
Bitcoin to Stacks
import { btcAddressToStacksAddress } from "stacks-utils";
const stacksAddress = btcAddressToStacksAddress(btcAddress);
Transactions
Decode raw Bitcoin Transaction
import { decodeRawTx } from "stacks-utils";
const fetchFees = false; // if true, the BTC fees will be fetched and calculated
async () => {
const tx = await decodeRawTx(rawTx, fetchFees);
console.log(tx);
};
This will return an object as such:
const tx = {
sender, // sender STX address
senderBitcoinAddress, // sender BTC address
recipient, // recipient STX address
recipientBitcoinAddress, // recipient BTC address
opcode, // $
operation, // TOKEN_TRANSFER
consensusHash, // df1631913bbf485ce6a25f26bccfc8d3
tokenType, // "STACKS"
tokenAmount, // BigInteger
tokenAmountReadable, // 0.000001
memo, // Message
fees // BTC tx fees in satoshis (if fetchFees = true)
};
Decode an array of transactions
This is mostly to be used in conjunction with fetchBtcAddressData
. This will take an array of BTC transactions (with a hex
key in each object) and decode the raw transaction and combine the two.
import { decodeRawTxs } from "stacks-utils";
const fetchFees = false; // if true, the BTC fees will be fetched and calculated
(async () => {
const txs = [...];
const transactions = await decodeRawTx(txs, fetchFees);
console.log(transactions)
})
Get readable operation type
See: https://docs.blockstack.org/core/wire-format.html
import { getOperationType } from "stacks-utils";
const opcode = "$";
const operation = getOperationType(opcode); // TOKEN_TRANSFER
Data Fetching
Fetch all data associated with a Stacks Address
import { fetchStacksAddressData } from "stacks-utils";
const data = await fetchStacksAddressData(stacksAddress);
Fetch Stacks Address data from the Blockstack Explorer API
import { fetchStacksAddressDetails } from "stacks-utils";
const data = await fetchStacksAddressDetails(stacksAddress);
Fetch all data associated with a BTC Address
import { fetchBtcAddressData } from "stacks-utils";
const data = await fetchBtcAddressData(btcAddress);
Units
Microstacks to Stacks
import { microToStacks } from "stacks-utils";
const stacksAmount = microToStacks(1); // 0.000001
Stacks to Microstacks
import { stacksToMicro } from "stacks-utils";
const microStacksAmount = stacksToMicro(0.000001); // 1