Stellar Two-Party Threshold Signature Library
Stellar Javascript two party threshold signature SDK
Installation
- If on Linux, install needed packages:
$ sudo apt-get update$ sudo apt-get install libgmp3-dev pkg-config libssl-dev clang libclang-dev
- Install Node.js
(tested on Node 10) - Install nightly Rust
(tested on rustc 1.38.0-nightly (0b680cfce 2019-07-09))
$ rustup toolchain install nightly-2019-07-10$ rustup default nightly-2019-07-10-x86_64-unknown-linux-gnu # or value from `rustup show` command $ rustc --version# rustc 1.38.0-nightly (0b680cfce 2019-07-09)
- Install the package:
$ npm i stellar-thresh-sig-js
Alternatively, clone it:
$ git clone https://github.com/dolcalmi/stellar-thresh-sig-js$ cd stellar-thresh-sig-js$ npm install
if you have problems getting a keypair please check this issue.
Usage
This library extends Keypair
, Transaction
and TransactionBuilder
from Stellar SDK.
You can use it in the same way that you use the Stellar SDK.
Initialization
;
Server Party1 Initialization
Before use threshold signatures with this library you must initialize server (party 1)
;start;
from examples:
$ node ./examples/thresh-sig-server.js
with specific port and log mode:
# log options (off, debug, normal, critical) $ ROCKET_PORT=8001 ROCKET_LOG=normal node ./examples/thresh-sig-server.js
If you want to more information about ENV variables go to Rocket ENV variables
Keypair
Create a new random key pair with two-party threshold signature:
const keypair = await Keypair;// orconst keypair = await Keypair;
Export key pair:
const keypairJSON = keypair;await ;
Restore from json:
const keypairJSON = await ;const keypair = Keypair;
Sign data:
const signature = await keypair;
Full example in ./examples/keypair.js
$ node ./examples/keypair.js
Transaction and TransactionBuilder
Use it in the same way as StellarSdk
;const transaction = senderfeenetworkPassphrase: StellarSdkNetworksTESTNET;// the only difference is that sign is an async function.await transaction;
Full example in ./examples/send-payment.js
$ node ./examples/send-payment.js
Development
Run all tests:
$ npm i$ npm test
Run a single test suite:
$ npm run mocha -- test/lib/keypair.spec.js
Run a single test (case sensitive):
$ npm run mocha -- test/lib/keypair.spec.js --grep 'sign'
Library based on Two Party signatures JS SDK