#bitcoin #wallet #descriptor #build #composite #exposing #rust-c-ffi

stackmate

Rust-C FFI exposing composite functionality to build bitcoin descriptor wallets

7 releases

0.8.0 Mar 10, 2022
0.7.15 Nov 15, 2021
0.7.0 Oct 28, 2021

#11 in #exposing

MIT license

145KB
3K SLoC

LIBSTACKMATE

A Rust-C FFI library exposing composite functionality from rust-bitcoin & bdk; to create cross-platform descriptor wallets.

Currently used by Stackmate Wallet.

Table of Contents

Acknowledgements

Immense love to our friend and sponsor Prashant Balani for being patient and supportive throughout the 3 years of R&D that was required to make this project come to life!

Massive thanks to the bdk & cyphernode teams for all the support and feedback which saved us a lot of time and improved the quality of our work.

Overview

The entire ffi uses a string interface; defined in src/lib.rs

  1. Inputs are converted into native rust types as the first sanitization step.

  2. Native types are then used in pure rust modules.

  3. All native structs being returned (responses and errors) impl a c_stringify method which converts the native struct into stringified JSON outputted as a CString.

Test

Test everything!

bash tests/test.sh

Test individual units with printing.

cargo test -- --nocapture <test_name>

Build

bash resources/build.sh

Currently only supports android builds.

Binaries are zipped into resources/builds.zip.

Documentation

Docs.rs

This library expects the client to build a policy (string) by themselves - refer to http://bitcoin.sipa.be/miniscript/ for more info.

More documentation can be found in resources/docs.

Contributions

We are looking for active contributions in the following areas:

  • General code review

  • IOS builds

  • Taproot support

  • Neutrino support

  • Lightning support

Community

Join us on the Bitcoin-only India group where we are openly working on tools required for a Bitcoin standard, within the context of India.

Discord: https://discord.gg/PdRERkyNt4

Maintainers

ishi

mocodesmo

License

MIT

Dependencies

~17–23MB
~384K SLoC