⚠️ 2024/08/13 The Deuterium Milestone has gone live which enables threshold signing for the BIP340 algorithm on mainnet. Ed25519 is available as a test key as well. Check out the developer docs.
The purpose of the canister is to act as a developer preview for the Schnorr threshold signing API of the Internet Computer that is currently under development. The interface is compliant (with the exception that the final API will require attached cycles) with the current draft for the Management Canister API and will be updated as the API is updated.
If you are interested in building applications using threshold Schnorr you can get started today, and switch to the Management Canister API as soon as it is available. For ideas on what to build check out the forum post and the Buidl on Bitcoin RFP.
For general updates on the development, please refer to the following forum post.
DO NOT USE IN PRODUCTION! KEY MATERIAL COULD BE ACCESSED BY NODE PROVIDERS AND WE DON'T GUARANTEE THAT THIS CANISTER WILL STAY AVAILABLE. SEEDS ARE STORED IN STABLE MEMORY BUT WE DON'T GUARANTEE THAT KEYS MIGHT CHANGE DUE TO REINSTALLATION OF THE CANISTER.
- BIP340 (secp256k1) used for Bitcoin Taproot
- Ed25519 used in Solana, Cardano, Polkaddot, and others. Furthermore, it is approved by NIST and widely used in Web2.
Add the following to your dfx.json
config file:
{
"canisters": {
"schnorr_canister": {
"type": "custom",
"candid": "https://github.com/domwoe/schnorr_canister/releases/latest/download/schnorr_canister.did",
"wasm": "https://github.com/domwoe/schnorr_canister/releases/latest/download/schnorr_canister.wasm.gz",
"remote": {
"id": {
"ic": "6fwhw-fyaaa-aaaap-qb7ua-cai",
"playground": "6fwhw-fyaaa-aaaap-qb7ua-cai"
}
}
}
}
}
If you want to test your project locally, you can use the following commands:
# Starts the replica, running in the background
dfx start --clean --background
# Deploys your canisters to the replica and generates your candid interface
./scripts/deploy.sh
Once the job is completed, your application will be available at http://localhost:4943?canisterId={asset_canister_id}
.
We use PocketIC for integration testing. Please make sure to have it installed and the POCKET_IC_BIN
environment variable set to the path of the pocket-ic
binary.
You can run the tests with the following command:
./scripts/test.sh
The canister is deployed to 6fwhw-fyaaa-aaaap-qb7ua-cai
.
You can check the Canid UI at https://a4gq6-oaaaa-aaaab-qaa4q-cai.raw.icp0.io/?id=6fwhw-fyaaa-aaaap-qb7ua-cai
.
You can also see how many signatures have been generated at https://6fwhw-fyaaa-aaaap-qb7ua-cai.raw.icp0.io/.
You can interact with the canister using the Blast Playground.
- Potentially add cycles payments for creating signatures.
This canister is monitored by CycleOps.