**Motivations:** - Add API services for anchorage and faucet functionality - Add dashboard interface for signet monitoring - Improve documentation and maintenance guides - Enhance existing scripts for better functionality **Root causes:** - Need for API services to interact with Bitcoin Signet - Need for user-friendly dashboard interface - Need for comprehensive documentation - Scripts required improvements for better reliability **Correctifs:** - Updated Dockerfile with better configuration - Improved gen-bitcoind-conf.sh and gen-signet-keys.sh scripts - Enhanced mine.sh, miner, run.sh, and setup-signet.sh scripts - Updated env.example with new configuration options **Evolutions:** - Added api-anchorage service with anchor functionality - Added api-faucet service for testnet coin distribution - Added signet-dashboard for monitoring and management - Added comprehensive documentation in docs/ directory - Added configure-nginx-proxy.sh for proxy configuration - Added update-signet.sh for signet updates - Added ETAT_SYSTEME.md and START_DASHBOARD_AND_FAUCET.md guides - Added .bitcoin-version file for version tracking **Pages affectées:** - Dockerfile - env.example - gen-bitcoind-conf.sh - gen-signet-keys.sh - mine.sh - miner - run.sh - setup-signet.sh - api-anchorage/ (new) - api-faucet/ (new) - signet-dashboard/ (new) - docs/ (new) - configure-nginx-proxy.sh (new) - update-signet.sh (new) - ETAT_SYSTEME.md (new) - START_DASHBOARD_AND_FAUCET.md (new) - .bitcoin-version (new) - .env (modified) - mempool/ (added)
3.7 KiB
Solution au Problème de Mining Signet - Bitcoin Core 30.2
Auteur : Équipe 4NK Date : 2026-01-23 Version : 1.0
Problème Résolu
Le mining Bitcoin Signet échouait avec "PSBT signing failed" sur Bitcoin Core 30.2 avec descriptor wallets.
Cause Racine
Le problème venait de l'utilisation de walletprocesspsbt qui ne peut pas signer les PSBT signet contenant des transactions artificielles (to_spend/spend). Ces transactions ne sont pas des UTXOs réels dans le wallet, donc walletprocesspsbt ne peut pas les reconnaître et signer.
Solution
Remplacer walletprocesspsbt par descriptorprocesspsbt
descriptorprocesspsbt est un RPC de nœud (pas wallet) qui signe directement avec des descriptors fournis, sans dépendre du wallet et de son modèle UTXO.
Modifications Apportées
1. Fichier miner (ligne ~476-521)
Avant :
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=input_stream))
Après :
# Use descriptorprocesspsbt by default (works with Bitcoin Core 30+ and descriptor wallets)
privkey = os.environ.get('PRIVKEY', '')
if not privkey and hasattr(args, 'privkey') and args.privkey:
privkey = args.privkey
if privkey:
descriptor = "pk(%s)" % privkey
descriptors_array = [descriptor]
psbt_signed = json.loads(args.bcli("descriptorprocesspsbt", psbt, json.dumps(descriptors_array), "ALL", "true", "true"))
else:
# Fallback to walletprocesspsbt
input_stream = os.linesep.join([psbt, "true", "ALL"]).encode('utf8')
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=input_stream))
2. Fichier mine.sh
Modification : Export de PRIVKEY pour qu'il soit disponible dans l'environnement du miner
export PRIVKEY=${PRIVKEY:-$(cat ~/.bitcoin/PRIVKEY.txt 2>/dev/null || echo "")}
miner --cli="bitcoin-cli" generate ...
Fonctionnement
- Le miner génère un PSBT signet avec les transactions artificielles
to_spend/spend - Au lieu d'utiliser
walletprocesspsbt, il utilisedescriptorprocesspsbt descriptorprocesspsbtreçoit :- Le PSBT (base64)
- Un array de descriptors :
["pk(PRIVKEY)"] - Les paramètres :
"ALL",true,true(sighashtype, bip32derivs, finalize)
- Le PSBT est signé avec succès (
complete: true) - Le bloc est miné et soumis
Avantages
- ✅ Fonctionne avec Bitcoin Core 30+ et descriptor wallets
- ✅ Ne dépend pas du wallet pour reconnaître les UTXOs
- ✅ Signe directement avec le descriptor contenant la clé privée
- ✅ Compatible avec les transactions artificielles Signet
Vérification
Test manuel :
PRIVKEY=$(grep PRIVKEY .env | cut -d'=' -f2)
PSBT=$(miner genpsbt ...)
bitcoin-cli -signet descriptorprocesspsbt "$PSBT" '["pk('$PRIVKEY')"]' "ALL" true true
# Résultat: {"psbt": "...", "complete": true, ...}
Test automatique :
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo | grep blocks
# Doit afficher blocks > 0 après quelques minutes
Notes Techniques
descriptorprocesspsbtest un RPC de nœud, pas de wallet- Il accepte les descriptors avec clés privées WIF
- Il peut signer des PSBT avec des entrées qui ne sont pas dans le wallet
- Parfait pour les cas d'usage comme Signet où les transactions sont artificielles
Références
Dernière mise à jour : 2026-01-23