This project is still in Alpha. We are happy to answer questions if they are raised as issues in this github repo.
A cross-chain decentralized multisignature platform built for the Internet Computer Protocol (ICP). Keygate simplifies the management of multi-party digital assets by providing a secure, flexible, and user-friendly infrastructure for creating and managing multisignature wallets.
Keygate is an innovative multisignature platform built natively for the Internet Computer Protocol (ICP) with cross-chain capabilities. Inspired by traditional banking's multi-approval systems, Keygate aims to bring enterprise-grade security and flexibility to digital asset management, enabling both individuals and organizations to manage their assets with customizable approval workflows.
Our vision with Keygate is to democratize institutional-grade digital asset management. The multisignature wallet is our flagship application, demonstrating the potential of ICP's secure architecture while providing essential functionality for multi-party asset management. The core of our innovation lies in the platform's flexibility, which enables users to create anything from simple dual-signature wallets to complex enterprise approval systems.
block-beta
columns 1
block:FRONTEND
dashboard["Dashboard Canister<br />(User Interface)"]
central["Central Canister<br />Wallet Management"]
end
space
block:CORE
account["Account Canister<br/>Multi-signature Logic"]
end
space
block:LEDGER
icp["ICP Ledger<br />Native Transfers"]
icrc["ICRC Ledger<br />Token Standards"]
end
dashboard --> account
central --> account
account --> icp
account --> icrc
style account stroke:#00ffcc,stroke-width:2px
style dashboard stroke:#00ffcc,stroke-width:2px
style central stroke:#00ffcc,stroke-width:2px
Please make sure you have the following installed:
Clone and setup:
git clone git@github.com:keygate-vault/multisignature.git
cd multisignature
npm install
Deploy locally:
dfx start --clean --background
./deployment.sh
Test ICP transfers:
dfx ledger transfer <vault_account_id> --amount 100 --memo 1 --network local --identity minter --fee 0
Test ICRC1 operations:
# Transfer
dfx canister call icrc1_ledger_canister icrc1_transfer '(
record {
from_subaccount = null;
to = record {
owner = principal "avqkn-guaaa-aaaaa-qaaea-cai"
};
amount = 200_000_000_000;
fee = opt 0;
memo = null;
created_at_time = null;
}
)'
# Check balance
dfx canister call icrc1_ledger_canister icrc1_balance_of '(
record {
owner = principal "avqkn-guaaa-aaaaa-qaaea-cai";
subaccount = null;
}
)'
This project is currently in beta and welcomes contributions. Please read our Contributing Guidelines before submitting pull requests.
If you find this project valuable, please give it a star ⭐️
Your support motivates us to continue improving the platform and bringing institutional-grade security to digital asset management.