0.1.0 • Published 26 days ago

@swan-bitcoin/bdk-node v0.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
26 days ago

bdk-node

This package is a wrapper around the Bitcoin Dev Kit made with Napi-RS.

Installation

npm install @swan-bitcoin/bdk-node
# or
yarn add @swan-bitcoin/bdk-node
# or
pnpm install @swan-bitcoin/bdk-node

Usage

import { ... } from '@swan-bitcoin/bdk-node';

TODO: Add usage examples

Contributing

The Rust code that gets build is inside src/lib.rs. When you run pnpm build this file gets compiled and NAPI spit out the Typescript file and JS with the biddings.

Publishing

Napi comes out of the box with a release process that is documented here: https://napi.rs/docs/introduction/simple-package

To publish a new version of the package you need to:

# Make sure you start on the main branch and main is up-to-date
git checkout main
git pull

# check out a new branch and give it a good name using <initials>/<branch-name>, such as:
git checkout -b jdf/publish-new-package-version

# Patch version and push to github, 'major' and 'minor' can also be used in place of 'patch' (if appropriate)
npm version patch
git push --follow-tags

then, open and merge a pull request. The version bump must be the most recent commit on this branch when merging for publishing to occur.

Manual Testing

yes, we need a better testing system.

check out: https://github.com/turkycat/fulcrum-regtest

from fulcrum-regtest/

docker compose up -d  
./prepare_btc1.sh  
./send_to_address.sh   bcrt1q8vw3juyk7gm7elt8rut87mghe50sxc32njs7zn9fqv6ynsxr52xq4h2uu0 10  
./mine_blocks.sh 1  

the above commands will:

  • set up two bitcoin nodes in regtest and a fulcrum server that connects to them.
  • create a bitcoin wallet with the first node and mine 101 blocks to it (making 50 bitcoin available)
  • send 10 bitcoin to the address bcrt1q8vw3juyk7gm7elt8rut87mghe50sxc32njs7zn9fqv6ynsxr52xq4h2uu0 -- this address was obtained with the BDK instructions below
  • mine 1 block to confirm the transaction

for some extra fun:

docker logs -f fulcrum - watch fulcrum as it processes new blocks, receives transactions, and other stuff

docker exec -it btc1 /bin/bash - execute commands with bitcoin-cli

BDK instructions:
to interact with this wallet in BDK use the following command:

bdk-cli --network regtest repl --server localhost:50001 --descriptor "wsh(multi(2,[5708531c/84h/1h/0h/2h]tpubDFE8F7LxXBEQEMPxed7QxhUJn6HMZg9keYLiXTCFbAkP3bRAneGZjNW44gwWcVj8yzwE9F7i55m78ZqdVsrmdJXXsh2iZCHjoon7LRAjXcu/0/*,[946d4c49/84h/1h/0h/2h]tpubDFXJS31fJep45UaMw4EUUqNhL6qUYL3BUW5TuHyXn4A4yCkXcJMy7ba6uT9cqX6KjMBgeVRqb56TuQ5oRxW5QUQ3ffhMqEy44ECvyxhwUFk/0/*,[4c69896e/84h/1h/0h/2h]tpubDE159ZNvnVj5Dv7Eo8EmnTjUdvJZYQ8fNp7R3K29a5FjZkmd4priKbdePGWU7XJMERG7LPQnh3Fi7Hjv1JrmXUrxuNaWXfULj8hDG7biXqh/0/*))" --change_descriptor "wsh(multi(2,[5708531c/84h/1h/0h/2h]tpubDFE8F7LxXBEQEMPxed7QxhUJn6HMZg9keYLiXTCFbAkP3bRAneGZjNW44gwWcVj8yzwE9F7i55m78ZqdVsrmdJXXsh2iZCHjoon7LRAjXcu/1/*,[946d4c49/84h/1h/0h/2h]tpubDFXJS31fJep45UaMw4EUUqNhL6qUYL3BUW5TuHyXn4A4yCkXcJMy7ba6uT9cqX6KjMBgeVRqb56TuQ5oRxW5QUQ3ffhMqEy44ECvyxhwUFk/1/*,[4c69896e/84h/1h/0h/2h]tpubDE159ZNvnVj5Dv7Eo8EmnTjUdvJZYQ8fNp7R3K29a5FjZkmd4priKbdePGWU7XJMERG7LPQnh3Fi7Hjv1JrmXUrxuNaWXfULj8hDG7biXqh/1/*))"

then, in the REPL you can do the following interesting things

wallet get_new_address- returns the next unused address ( which will be bcrt1q8vw3juyk7gm7elt8rut87mghe50sxc32njs7zn9fqv6ynsxr52xq4h2uu0 index 0 if used before wallet sync or before spending)

wallet sync

wallet get_balance - need to sync first to get accurate info

help

wallet help

bdk-cli will create a local database in ~/.bdk-bitcoin by default, so you may need to clean those up if you need to restart.

0.1.0

26 days ago

0.0.21

4 months ago

0.0.20

5 months ago

0.0.19

5 months ago

0.0.13

9 months ago

0.0.14

9 months ago

0.0.15

9 months ago

0.0.9

10 months ago

0.0.16

6 months ago

0.0.8

11 months ago

0.0.5

11 months ago

0.0.6

11 months ago

0.0.4

11 months ago

0.0.3

11 months ago

0.0.1

11 months ago