anchorage_layer_simple/docs/PROMPT_IA_RECHERCHE.md
ncantu 20d115a31c feat: Add APIs, dashboard, documentation and improve scripts
**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)
2026-01-24 02:40:25 +01:00

5.5 KiB

Prompt pour Recherche IA - Problème Mining Signet Bitcoin Core 30.2

Contexte : Problème de mining Bitcoin Signet avec Bitcoin Core 30.2 et descriptor wallets


PROMPT COMPLET

Je rencontre un problème avec le mining Bitcoin Signet sur Bitcoin Core 30.2 utilisant des descriptor wallets. Le miner échoue systématiquement avec "PSBT signing failed" malgré une configuration apparemment correcte.

Contexte Technique

Environnement :

  • Bitcoin Core 30.2 (dernière version)
  • Descriptor wallets (legacy wallets non supportés depuis Bitcoin Core 30+)
  • Bitcoin Signet custom
  • Docker container (Debian Bookworm)
  • Script de mining Python basé sur contrib/signet/miner.py de Bitcoin Core

Configuration Actuelle

SIGNETCHALLENGE : 5121028b8d4cea1b3d8582babc8405bc618fbbb281c0f64e6561aa85968251931cd0a651ae

  • Format : 5121[PUBKEY]51ae (script P2PK)
  • Clé publique : 028b8d4cea1b3d8582babc8405bc618fbbb281c0f64e6561aa85968251931cd0a6

PRIVKEY : cVCKcgQf2ewV5miairzhrHJCPv4kMbMMBZeJvW5SMhFMSWVtCvXS

  • Format WIF (Wallet Import Format)
  • Dérive correctement vers la clé publique du SIGNETCHALLENGE

Wallet Descriptor :

{
  "desc": "pk(028b8d4cea1b3d8582babc8405bc618fbbb281c0f64e6561aa85968251931cd0a6)#vflt9jvv",
  "timestamp": 1,
  "active": false,
  "has_private_keys": true,
  "is_solvable": true
}

Problème Observé

Le miner Bitcoin Signet utilise walletprocesspsbt pour signer des transactions spéciales vers le SIGNETCHALLENGE. Le processus échoue à chaque tentative :

Logs :

PSBT signing failed
Delay before next block 600 seconds.

Code du miner (ligne 476-482) :

psbt = generate_psbt(tmpl, reward_spk, blocktime=mine_time)
input_stream = os.linesep.join([psbt, "true", "ALL"]).encode('utf8')
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=input_stream))
if not psbt_signed.get("complete",False):
    logging.debug("Generated PSBT: %s" % (psbt,))
    sys.stderr.write("PSBT signing failed\n")
    return 1

Structure du PSBT Signet

Le miner crée un PSBT spécial qui contient :

  1. Une transaction to_spend vers le SIGNETCHALLENGE (script P2PK)
  2. Une transaction spend qui dépense to_spend
  3. Le bloc à miner dans un champ propriétaire PSBT (PSBT_SIGNET_BLOCK)

Code de génération (ligne 134-166) :

def signet_txs(block, challenge):
    # ... crée to_spend et spend transactions
    to_spend.vout = [CTxOut(0, challenge)]  # challenge est le SIGNETCHALLENGE (P2PK script)
    return spend, to_spend

Vérifications Effectuées

Compatibilité des clés :

  • La PRIVKEY dérive correctement vers la clé publique du SIGNETCHALLENGE
  • Le descriptor pk() est importé dans le wallet
  • hasprivatekeys: true et issolvable: true

Import du descriptor :

  • Utilisation de importdescriptors avec pk($PRIVKEY)#$CHECKSUM
  • Le descriptor est présent dans le wallet (mais active: false)

Problème :

  • walletprocesspsbt retourne complete: false
  • Le wallet ne peut pas signer le PSBT signet

Tentatives de Résolution

  1. Import comme pk() au lieu de wpkh()

    • Nécessaire car SIGNETCHALLENGE utilise P2PK, pas P2WPKH
    • Le descriptor est importé avec succès
  2. Tentative d'activation du descriptor

    • Erreur : "Active descriptors must be ranged"
    • Les descriptors non-rangés ne peuvent pas être actifs
  3. Vérification de compatibilité

    • Les clés sont compatibles
    • Pas besoin de régénérer la chaîne

Questions Spécifiques

  1. Bitcoin Core 30.2 et descriptor wallets :

    • Y a-t-il des limitations connues pour signer des transactions P2PK avec des descriptors pk() non-actifs ?
    • Le wallet peut-il signer des transactions vers des scripts qui ne sont pas dans son UTXO set ?
  2. PSBT Signet et walletprocesspsbt :

    • walletprocesspsbt peut-il signer des PSBT spéciaux contenant des transactions virtuelles (comme to_spend dans signet) ?
    • Y a-t-il des paramètres spécifiques nécessaires pour signer des PSBT signet ?
  3. Descriptor pk() non-actif :

    • Un descriptor pk() avec active: false peut-il être utilisé pour signer ?
    • Faut-il importer la clé différemment pour le mining signet ?
  4. Alternatives :

    • Existe-t-il une autre méthode pour signer les blocs signet avec Bitcoin Core 30.2 ?
    • Faut-il utiliser une approche différente pour les descriptor wallets ?

Informations Supplémentaires

Version Bitcoin Core : 30.2.0 Type de wallet : Descriptor wallet (sqlite) Méthode d'import : importdescriptors avec descriptor pk($PRIVKEY)#$CHECKSUM Script de mining : Basé sur contrib/signet/miner.py de Bitcoin Core

Commandes de test :

# Vérifier le descriptor
bitcoin-cli listdescriptors | grep "pk("

# Tester walletprocesspsbt (échoue)
miner --cli="bitcoin-cli" generate --nbits=1e0377ae --set-block-time=$(date +%s)

Résultat Attendu

Le wallet devrait pouvoir signer le PSBT signet via walletprocesspsbt, permettant au miner de créer et soumettre des blocs sur le signet.

Ressources Consultées

  • Documentation Bitcoin Core RPC : walletprocesspsbt, importdescriptors
  • Code source : contrib/signet/miner.py
  • Documentation descriptor wallets Bitcoin Core 30+

Question principale : Comment faire fonctionner le mining Bitcoin Signet avec Bitcoin Core 30.2 et descriptor wallets lorsque walletprocesspsbt échoue à signer le PSBT signet malgré un descriptor pk() correctement importé avec les clés privées ?