L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

bitcoin-libraries-miniscript-rs

bitcoin-libraries-miniscript-rs

rust-miniscript: Rust crate for Miniscript and descriptor handling. Policy compilation, satisfaction analysis, descriptor parsing for legacy + Tapscript. USE WHEN: working with descriptors / miniscript in Rust, building wallets that compose spending conditions.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: bitcoin-libraries-miniscript-rs description: | rust-miniscript: Rust crate for Miniscript and descriptor handling. Policy compilation, satisfaction analysis, descriptor parsing for legacy + Tapscript. USE WHEN: working with descriptors / miniscript in Rust, building wallets that compose spending conditions. allowed-tools: Read, Grep, Glob

rust-miniscript

Reference implementation of Miniscript + descriptor language in Rust.

Repo: github.com/rust-bitcoin/rust-miniscript.

Install

[dependencies]
miniscript = "13"

As of September 2026 the current line is 13.1.0 (June 2026); 13.0.0 landed October 2025. The 12.x line still gets patches (12.3.7, May 2026) but is no longer the current major. MSRV is Rust 1.63.0. Policy compilation lives behind the non-default compiler cargo feature.

Quick examples

Parse descriptor

use miniscript::Descriptor;
use bitcoin::secp256k1::Secp256k1;

let desc_str = "wpkh([d34db33f/84h/0h/0h]xpub.../<0;1>/*)";
let desc: Descriptor<_> = desc_str.parse()?;

let secp = Secp256k1::new();
for i in 0..10 {
    let script = desc.at_derivation_index(i)?.script_pubkey();
    println!("script[{}]: {}", i, script);
}

Compile policy → miniscript → script

use miniscript::policy::Concrete;
use miniscript::Segwitv0;

let policy: Concrete<bitcoin::PublicKey> =
    "and(pk(02abc...),older(144))".parse()?;
let ms = policy.compile::<Segwitv0>()?;   // `compiler` feature
let script = ms.encode();

Satisfy

use miniscript::Satisfier;

let satisfier = ...;
let witness = ms.satisfy(&satisfier)?;

Descriptor types supported

  • pkh, wpkh, sh(wpkh), wsh(), tr().
  • multi, sortedmulti, multi_a.
  • addr, raw, combo.
  • Multipath descriptors (<0;1>).

Use cases

  • Wallet that supports complex spending conditions.
  • Coordinator for multisig / vault / time-locked schemes.
  • Static analysis of scripts (sigops, max sat size).

Common pitfalls

  • Miniscript version mismatch with rust-bitcoin: pin compatible versions. As of September 2026 the pairing is miniscript 13.x and 12.x -> bitcoin = "0.32" (13.1.0 pins ^0.32.6), 11.x -> 0.31, 10.x -> 0.30. The 13.0.0 break was miniscript's own API, not a rust-bitcoin bump.
  • Tapscript miniscript different fragment set vs legacy.
  • Descriptor checksum: re-add after modifications.

See also

Skills enregistrées