@summa-tx/rmn-btc
v0.1.0-alpha2rmn-btc-wasm
This crate generates wrappers suitable for use with wasm-bindgen around the
riemann-bitcoin
crate. The wrappers implement passthrough methods for most
functionality, and the resulting wasm libraries can be run in a browser and in
node.js.
This crate is under active development, and the API may change.
The interface aims to be as faithful to riemann-bitcoin
as possible, however
a few compromises have been made.
- Crossing the WASM/JS barrier has generally been implemented as
clone()
. This prevents unsafe use of the WASM memory. This means that most structs are de facto passed by value.- example:
vin.push(txin)
clones the txin. Further modifications totxin
will not be propagated to the clone in theVin
. - example:
let txin = vin.get(0)
will clone the txin before returning it. Modifying thattxin
will not modify the original copy in the vin. Instead you must make the modifications, and then callvin.set(0, txin)
.
- example:
Script
,ScriptPubkey
, andScriptSig
are represented asUint8Array
s until we get around to implementing a wrapper type.wasm-bindgen
does not seem to support indexing getters and setters on rust objects, so.get()
and.set()
methods have been provided- We have not yet implemented iterator support.
Interface
You should use the standard network interface:
const btc = require('@summa-tx/rmn-btc-wasm');
const addr = "bc1q....";
let tx = btc.BitcoinMainnet.tx_builder()
.version(2)
.spend(btc.BitcoinOutpoint.null(), 0xfffffffd)
.pay(3000000n, addr)
.locktime(0x87878787)
.build();
Building
cargo build
- install wasm-pack
wasm-pack build
- specify
--target nodejs
for use in node.
- specify
- build the docs:
$ cargo rustdoc
npm i @summa-tx/rmn-btc
Metadata
- LGPL-3.0-or-later
- Whatever
- Unknown
- released 5/5/2020