stellar-thresh-sig
v0.1.1
Published
Stellar Javascript two party threshold signature SDK
Downloads
8
Maintainers
Readme
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
import { Keypair, Transaction, TransactionBuilder } from 'stellar-thresh-sig-js';
Server Party1 Initialization
Before use threshold signatures with this library you must initialize server (party 1)
import { ThresholdSigServer } from 'stellar-thresh-sig-js';
new ThresholdSigServer().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.randomLocalPartyThreshSig();
// or
const keypair = await Keypair.randomLocalPartyThreshSig('http://your-server.com:8000');
Export key pair:
const keypairJSON = keypair.toJSON();
await saveToFileOrDB(keypairJSON);
Restore from json:
const keypairJSON = await loadFromFileOrDB();
const keypair = Keypair.fromJSON(keypairJSON);
Sign data:
const signature = await keypair.sign(data);
Full example in ./examples/keypair.js
$ node ./examples/keypair.js
Transaction and TransactionBuilder
Use it in the same way as StellarSdk
import { TransactionBuilder } from 'stellar-thresh-sig-js';
const transaction = new TransactionBuilder(sender, {
fee,
networkPassphrase: StellarSdk.Networks.TESTNET,
})
.addOperation(...)
.setTimeout(30)
.build();
// the only difference is that sign is an async function.
await transaction.sign(senderKeypair);
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