https://github.com/stacks-archive/stacks-utils
Utilities for the Stacks blockchain.
https://github.com/stacks-archive/stacks-utils
blockchain stacks
Last synced: about 2 months ago
JSON representation
Utilities for the Stacks blockchain.
- Host: GitHub
- URL: https://github.com/stacks-archive/stacks-utils
- Owner: stacks-network
- Created: 2018-11-26T18:32:13.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-09-11T14:13:04.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T11:50:54.840Z (about 1 year ago)
- Topics: blockchain, stacks
- Language: JavaScript
- Homepage: https://stacks-utils.now.sh
- Size: 2.09 MB
- Stars: 6
- Watchers: 19
- Forks: 6
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Stacks Utilities
[](https://npmjs.com/stacks-utils)
[](https://npmjs.com/stacks-utils)
[](https://npmjs.com/stacks-utils)
[](https://npmjs.com/stacks-utils)## 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
```jsx
import { validateStacksAddress } from "stacks-utils";const isValid = validateStacksAddress(stacksAddress);
```#### Stacks to Bitcoin
```jsx
import { stacksAddressToBtcAddress } from "stacks-utils";const btcAddress = stacksAddressToBtcAddress(stacksAddress);
```#### Bitcoin to Stacks
```jsx
import { btcAddressToStacksAddress } from "stacks-utils";const stacksAddress = btcAddressToStacksAddress(btcAddress);
```## Transactions
#### Decode raw Bitcoin Transaction
```jsx
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:
```jsx
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.
```jsx
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](https://docs.blockstack.org/core/wire-format.html)
```jsx
import { getOperationType } from "stacks-utils";const opcode = "$";
const operation = getOperationType(opcode); // TOKEN_TRANSFER
```## Data Fetching
### Fetch all data associated with a Stacks Address
```jsx
import { fetchStacksAddressData } from "stacks-utils";const data = await fetchStacksAddressData(stacksAddress);
```### Fetch Stacks Address data from the Blockstack Explorer API
```jsx
import { fetchStacksAddressDetails } from "stacks-utils";const data = await fetchStacksAddressDetails(stacksAddress);
```### Fetch all data associated with a BTC Address
```jsx
import { fetchBtcAddressData } from "stacks-utils";const data = await fetchBtcAddressData(btcAddress);
```## Units
### Microstacks to Stacks
```jsx
import { microToStacks } from "stacks-utils";const stacksAmount = microToStacks(1); // 0.000001
```### Stacks to Microstacks
```jsx
import { stacksToMicro } from "stacks-utils";const microStacksAmount = stacksToMicro(0.000001); // 1
```