This project is a Typescrypt & Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital signature algorithm) for Teleport bridge protocol.
CAUTION: Current project is for testing in local environment without any containers, and will be updated soon
The library was built with four core design principles in mind:
- Multi-protocol support
- Build mpc oracle nodes for teleport bridge
- Testing purpose
-
You need Rust and GMP library (optionally) to be installed on your computer.
-
- Run
cargo build --release --examples
- Don't have GMP installed? Use this command instead:
But keep in mind that it will be less efficient.
cargo build --release --examples --no-default-features --features curv-kzen/num-bigint
Either of commands will produce binaries into
./target/release/examples/
folder. - Run
- Run
cd sm_manager
- Run
cargo build --release --examples
- Run
./target/release/examples/gg18_sm_manager
- Run
cd mpc_node_0
- Run
pnpm install
- Run
cd ./src/multiparty
build multiparty library
- Run
cargo build --release --examples
Once build is done, move /target/release/examples and edit client name i.e. gg18_sign_client -> gg18_sign_client0 (0 is index of mpc node)
edit env variables according to example.env file
Build second node accordig to above instruction
Once two sm_sign_manager, and two mpc nodes are running successfully, you can test sign function by send http request Please refer to ./requests
[1] https://eprint.iacr.org/2017/552.pdf
[2] https://eprint.iacr.org/2019/114.pdf