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

153 lines
5.5 KiB
Markdown

# 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** :
```json
{
"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) :
```python
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) :
```python
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** :
```bash
# 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 ?