Signers
Signers are descriptors that you can share with contacts (or with other users) to simplify the process of policies creation.
The SmartVaults signer
The SmartVaults signer it's derived from your local seed.
It's use the following derivation path: m/86'/<coin>'/784923' (the coin depends on the selected network)
use smartvaults_sdk::prelude::*; #[tokio::main] async fn main() { let client = ...; // The client that you before constructed // Save the SmartVaults signer (if not exists) client.save_smartvaults_signer().await?; }
External signers
You can save external signers (like AirGap devices).
use std::str::FromStr; use smartvaults_sdk::prelude::*; #[tokio::main] async fn main() { let client = ...; // The client that you before constructed let fingerprint = Fingerprint::from_str("7356e457")?; let descriptor: Descriptor<DescriptorPublicKey> = Descriptor::from_str("[7356e457/86'/1'/784923']tpubDCvLwbJPseNux9EtPbrbA2tgDayzptK4HNkky14Cw6msjHuqyZCE88miedZD86TZUb29Rof3sgtREU4wtzofte7QDSWDiw8ZU6ZYHmAxY9d/0/*")?; let signer = Signer::airgap("Coldcard", "Description", fingerprint, descriptor)?; client.save_signer(signer).await?; }
Note: only taproot descriptors are supported
Share a signer
use smartvaults_sdk::prelude::*; #[tokio::main] async fn main() { let client = ...; // The client that you before constructed // Get my signers let signers: Vec<GetSigner> = client.get_signers().await?; // Get the first signer let signer_id = signers.first().unwrap().signer_id; // Public key of the user to share the signer let public_key: XOnlyPublicKey = ...; // Share client.share_signer(signer_id, public_key).await?; }