For full specification details, see BIP375.
The multi-signer example demonstrates three parties collaborating to create a silent payment transaction.
cd python/examples/multi-signer
python3 alice_creates.py
python3 bob_signs.py
python3 charlie_finalizes.pyYou'll see Alice create a PSBT and sign input 0, Bob verify and sign input 1, and Charlie complete the ECDH coverage, compute output scripts, and extract the final transaction.
cd rust
# Run GUI
cargo run -p multi-signer
# Run CLI
cargo run -p multi-signer -- --cliThe workflow demonstrates BIP375's key features:
- Per-input ECDH: Each party computes ECDH shares only for inputs they control
- DLEQ Proofs: Each party generates proofs that others verify (prevents malicious hardware attacks)
- Progressive Coverage: ECDH shares accumulate until all inputs are covered
- Output Scripts: Computed only when ECDH coverage is complete
- Signing: Inputs signed only after output scripts are computed
- Use
justto explore rust examples and tools - Try the hardware signer example to see DLEQ proof validation in action
- Read REFERENCE.md for concepts and terminology
- Explore the library code in
python/psbt_sp/orrust/crates/
Build errors (Rust): Ensure you have Rust 1.88+ with rustc --version
DLEQ verification failures: The example uses hardcoded keys - modifications to input keys will cause verification to fail