Fusion is a multi-chain smart contract wallet that leverages zero-knowledge proofs for cross-chain deployments and authentication.
Pre-requisites:
Shamir_generate_2_3 circuit is used to generate a 2-of-3 Shamir secret sharing scheme.
| Inputs | Type | Size | Visibility |
|---|---|---|---|
| secret | u64[] | 32 | private |
| a1 | u64[] | 32 | private |
| returns | Share[] | 3 | public |
Shamir_reconstruct_2_3 circuit is used to reconstruct a 2-of-3 Shamir secret sharing scheme.
| Inputs | Type | Size | Visibility |
|---|---|---|---|
| share | Share[] | 2 | private |
| returns | Field | 32 | public |
Shamir_prove circuit is used to prove the correctness of the Shamir secret sharing scheme with the hash of the reconstructed secret.
| Inputs | Type | Size | Visibility |
|---|---|---|---|
| shares | Share[] | 2 | private |
| message | u8[] | 32 | private |
| hash | Field | 1 | public |
| verifying_address | Field | 1 | public |
| signing_address | Field | 1 | public |
Helper function to hash inputs
| Inputs | Type | Size | Visibility |
|---|---|---|---|
| inputs | Field[] | 32 | private |
| returns | Field | 1 | public |
# Executing deploy_prove circuit
cd deploy_prove
nargo execute
# Checking constraints
nargo info
# Testing circuits
nargo check
# Generate zk-proof
nargo prove
# generate Solidity Verifier
nargo codegen-verifier