@stacks/rx

Reactive client library for the Stacks blockchain

Usage no npm install needed!

<script type="module">
  import stacksRx from 'https://cdn.skypack.dev/@stacks/rx';
</script>

README

@stacks/rx

Build and test status

Reactive Extensions client for the Stacks Blockchain 🚀

Getting Started

yarn add @stacks/rx rxjs
import { RxStacks, HIRO_API_URL } from '@stacks/rx';

const client = new RxStacks({ url: HIRO_API_URL });

client.blocks$.subscribe(block => console.log('New block: ', block.height));

Demo App

git clone https://github.com/blockstack/rx
cd demo/demo-app
yarn && yarn start

Open http://localhost:3000 to view it in your browser.

Tutorial

Broadcasting a transaction

Tutorial

Using @stacks/rx to follow a transaction's lifecycle

const { broadcastTx } = new RxStacks({ url });

broadcastTx(transaction)
  .pipe(
    concatMap(txid => {
      notifyBroadcastSuccess(tx);
      return mempoolTxs$.pipe(filterByTxid(txid));
    }),
    concatMap(memTx => {
      notifyTxInMempool(mempoolTx);
      return txs$.pipe(filterByTxid(txid));
    })
  )
  .subscribe(tx => notifyTransactionConfirm(tx));
const txid = await broadcastTx(transaction)({
  onBroadcastSuccess(),
  onBroadcastError(),
  onMempoolInclusion(),
  onTransactionConfirmedInBlock(),
})

Resources