ncantu cad73cb265 UTXO-list: dates/blockTime historiques, récupération frais depuis ancrages, diagnostic Bloc Rewards
**Motivations:**
- Ajouter dates manquantes dans hash_list.txt et compléter historique
- Compléter blockTime manquants dans utxo_list.txt et compléter historique
- Récupérer frais depuis transactions d'ancrage (OP_RETURN) et les stocker
- Bouton UI pour déclencher récupération frais
- Diagnostic Bloc Rewards (pourquoi ~4700 BTC au lieu de 50 BTC)

**Root causes:**
- hash_list.txt sans date (format ancien)
- utxo_list.txt blockTime souvent vide
- Frais absents du fichier (métadonnées OP_RETURN non stockées)
- Pas de moyen de récupérer/compléter frais depuis UI

**Correctifs:**
- hash_list.txt : format étendu avec date (rétrocompatible)
- utxo_list.txt : blockTime complété automatiquement lors écritures
- fees_list.txt : nouveau fichier pour stocker frais
- updateFeesFromAnchors() : récupère frais depuis OP_RETURN ancrages
- Endpoint /api/utxo/fees/update pour déclencher récupération
- Bouton "Récupérer les frais depuis les ancrages" dans section Frais (spinner)
- Scripts batch : complete-hash-list-dates.js, complete-utxo-list-blocktime.js
- Script diagnostic : diagnose-bloc-rewards.js (subsidy, coinbase, listunspent)

**Evolutions:**
- Frais chargés depuis fees_list.txt dans getUtxoList
- Complétion automatique dates/blockTime lors écritures futures

**Pages affectées:**
- signet-dashboard/src/bitcoin-rpc.js
- signet-dashboard/src/server.js
- signet-dashboard/public/utxo-list.html
- scripts/complete-hash-list-dates.js
- scripts/complete-utxo-list-blocktime.js
- scripts/diagnose-bloc-rewards.js
- features/utxo-list-fees-update-and-historical-completion.md
2026-01-26 01:59:46 +01:00

436 lines
18 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rejoindre le Réseau Signet Custom - Bitcoin Ancrage</title>
<link rel="stylesheet" href="styles.css">
<style>
.join-section {
margin-bottom: 40px;
}
.config-section {
background: var(--card-background);
padding: 30px;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
margin-bottom: 30px;
}
.config-section h2 {
color: var(--primary-color);
margin-bottom: 20px;
font-size: 1.8em;
}
.config-code {
background: #1e1e1e;
color: #d4d4d4;
padding: 20px;
border-radius: 5px;
font-family: 'Courier New', monospace;
font-size: 0.9em;
line-height: 1.6;
overflow-x: auto;
white-space: pre;
margin: 20px 0;
}
.copy-button {
background: var(--primary-color);
color: white;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
font-size: 1em;
margin-top: 10px;
transition: background 0.3s;
}
.copy-button:hover {
background: #e0820d;
}
.copy-button:active {
transform: scale(0.98);
}
.payment-section {
background: var(--card-background);
padding: 30px;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
margin-bottom: 30px;
text-align: center;
}
.payment-section h2 {
color: var(--primary-color);
margin-bottom: 20px;
font-size: 1.8em;
}
.payment-info {
margin: 20px 0;
}
.payment-amount {
font-size: 1.5em;
font-weight: bold;
color: var(--primary-color);
margin: 10px 0;
}
.payment-address {
font-family: 'Courier New', monospace;
background: #f5f5f5;
padding: 15px;
border-radius: 5px;
margin: 15px 0;
word-break: break-all;
font-size: 0.9em;
}
.nostr-profile-link {
display: inline-block;
margin-top: 15px;
padding: 10px 20px;
background: var(--primary-color);
color: white;
text-decoration: none;
border-radius: 5px;
transition: background 0.3s;
}
.nostr-profile-link:hover {
background: #e0820d;
}
.wallet-section {
background: var(--card-background);
padding: 30px;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
margin-bottom: 30px;
}
.wallet-section h2 {
color: var(--primary-color);
margin-bottom: 20px;
font-size: 1.8em;
}
.wallet-checkbox {
display: flex;
align-items: center;
margin: 20px 0;
padding: 15px;
background: #f5f5f5;
border-radius: 5px;
}
.wallet-checkbox input[type="checkbox"] {
width: 20px;
height: 20px;
margin-right: 15px;
cursor: pointer;
}
.wallet-checkbox label {
cursor: pointer;
font-size: 1.1em;
}
.info-box {
background: #e7f3ff;
border-left: 4px solid #2196F3;
padding: 15px;
margin: 20px 0;
border-radius: 5px;
}
.info-box p {
margin: 5px 0;
}
.success-message {
background: #d4edda;
border-left: 4px solid var(--success-color);
padding: 15px;
margin: 20px 0;
border-radius: 5px;
color: #155724;
display: none;
}
.back-link {
display: inline-block;
margin-bottom: 20px;
color: var(--primary-color);
text-decoration: none;
font-weight: bold;
}
.back-link:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class="container">
<a href="/" class="back-link">← Retour au Dashboard</a>
<header>
<h1>Rejoindre le Réseau Signet Custom</h1>
<p class="subtitle">Configuration et accès au réseau Bitcoin Signet personnalisé</p>
</header>
<main>
<!-- Section Configuration -->
<section class="join-section">
<div class="config-section">
<h2>📋 Configuration bitcoin.conf</h2>
<p>Copiez cette configuration dans votre fichier <code>bitcoin.conf</code> pour rejoindre le réseau Signet custom :</p>
<div class="config-code" id="bitcoin-config">signet=1
txindex=1
blockfilterindex=1
peerblockfilters=1
coinstatsindex=1
dnsseed=0
persistmempool=1
uacomment=CustomSignet
[signet]
daemon=1
listen=1
server=1
discover=1
signetchallenge=5121028b8d4cea1b3d8582babc8405bc618fbbb281c0f64e6561aa85968251931cd0a651ae
rpcbind=0.0.0.0:38332
rpcallowip=0.0.0.0/0
whitelist=0.0.0.0/0
fallbackfee=0.0002
addnode=anchorage.certificator.4nkweb.com:38333</div>
<button class="copy-button" onclick="copyConfig()">📋 Copier la configuration</button>
<div class="info-box">
<p><strong>Note importante :</strong></p>
<p>• Remplacez <code>rpcuser</code> et <code>rpcpassword</code> par vos propres identifiants RPC</p>
<p>• Le port P2P par défaut est <code>38333</code></p>
<p>• Le port RPC par défaut est <code>38332</code></p>
<p>• L'adresse <code>anchorage.certificator.4nkweb.com:38333</code> est le nœud principal du réseau</p>
</div>
</div>
</section>
<!-- Section Paiement Wallet de Mining -->
<section class="join-section">
<div class="payment-section">
<h2>💳 Accès au Wallet de Mining</h2>
<p>Pour recevoir le wallet de mining et les clés nécessaires pour miner sur le réseau, effectuez un paiement de :</p>
<div class="payment-amount">0,0065 BTC</div>
<p>Envoyez le paiement via Nostr à :</p>
<div class="payment-address" id="wallet-npub">npub18s03s39fa80ce2n3cmm0zme3jqehc82h6ld9sxq03uejqm3d05gsae0fuu</div>
<button class="copy-button" onclick="copyNpub('wallet-npub')">📋 Copier la npub</button>
<a href="https://yakihonne.com/profile/fancy-wallaby-90@rizful.com" target="_blank" rel="noopener noreferrer" class="nostr-profile-link">
🔗 Voir le profil Nostr
</a>
<div class="wallet-checkbox">
<input type="checkbox" id="wallet-request" onchange="updatePaymentMessage('wallet')">
<label for="wallet-request">Je souhaite recevoir le wallet de mining après le paiement</label>
</div>
<div class="info-box" id="wallet-payment-info">
<p><strong>Instructions :</strong></p>
<p>1. Effectuez le paiement de 0,0065 BTC via Nostr à la npub ci-dessus</p>
<p>2. Cochez la case ci-dessus si vous souhaitez recevoir le wallet de mining</p>
<p>3. Après confirmation du paiement, vous recevrez le wallet de mining sur Nostr</p>
</div>
<div class="success-message" id="wallet-payment-success">
<p><strong>✅ Paiement reçu !</strong></p>
<p>Votre demande a été enregistrée. Vous recevrez le wallet de mining sur Nostr sous peu.</p>
</div>
</div>
</section>
<!-- Section Paiement Clé API -->
<section class="join-section">
<div class="payment-section">
<h2>🔑 Accès à une Clé API</h2>
<p>Pour recevoir une clé API permettant d'utiliser les services d'ancrage et de filigrane, effectuez un paiement de :</p>
<div class="payment-amount">0,0065 BTC</div>
<p>Envoyez le paiement via Nostr à :</p>
<div class="payment-address" id="api-npub">npub18s03s39fa80ce2n3cmm0zme3jqehc82h6ld9sxq03uejqm3d05gsae0fuu</div>
<button class="copy-button" onclick="copyNpub('api-npub')">📋 Copier la npub</button>
<a href="https://yakihonne.com/profile/fancy-wallaby-90@rizful.com" target="_blank" rel="noopener noreferrer" class="nostr-profile-link">
🔗 Voir le profil Nostr
</a>
<div class="wallet-checkbox">
<input type="checkbox" id="api-request" onchange="updatePaymentMessage('api')">
<label for="api-request">Je souhaite recevoir la clé API après le paiement</label>
</div>
<div class="info-box" id="api-payment-info">
<p><strong>Instructions :</strong></p>
<p>1. Effectuez le paiement de 0,0065 BTC via Nostr à la npub ci-dessus</p>
<p>2. Cochez la case ci-dessus si vous souhaitez recevoir la clé API</p>
<p>3. Après confirmation du paiement, vous recevrez la clé API sur Nostr</p>
</div>
<div class="success-message" id="api-payment-success">
<p><strong>✅ Paiement reçu !</strong></p>
<p>Votre demande a été enregistrée. Vous recevrez la clé API sur Nostr sous peu.</p>
</div>
</div>
</section>
<!-- Section Informations Supplémentaires -->
<section class="join-section">
<div class="wallet-section">
<h2> Informations Supplémentaires</h2>
<div class="info-box">
<p><strong>Qu'est-ce que le wallet de mining ?</strong></p>
<p>Le wallet de mining contient :</p>
<ul style="margin-left: 20px; margin-top: 10px;">
<li>La clé privée (PRIVKEY) nécessaire pour miner des blocs</li>
<li>Les paramètres de configuration pour le mining (NBITS, BLOCKPRODUCTIONDELAY)</li>
<li>Les instructions complètes pour configurer votre nœud en mode mining</li>
</ul>
</div>
<div class="info-box">
<p><strong>Que se passe-t-il après le paiement ?</strong></p>
<p>Une fois le paiement confirmé, vous recevrez sur Nostr :</p>
<ul style="margin-left: 20px; margin-top: 10px;">
<li>Les fichiers de configuration complets</li>
<li>La clé privée du signet (si vous avez coché la case pour le wallet de mining)</li>
<li>La clé API (si vous avez coché la case pour la clé API)</li>
<li>Les instructions détaillées pour démarrer votre nœud ou utiliser l'API</li>
</ul>
</div>
<div class="info-box">
<p><strong>Besoin d'aide ?</strong></p>
<p>Pour toute question, consultez la documentation complète dans le dépôt GitHub ou contactez l'équipe.</p>
</div>
</div>
</section>
</main>
<footer>
<p>Bitcoin Ancrage Dashboard - Équipe 4NK</p>
<a href="https://git.4nkweb.com/4nk/anchorage_layer_simple.git" target="_blank" rel="noopener noreferrer" class="git-link" title="Voir le code source sur Git">
<svg class="git-icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
<path d="M23.546 10.93L13.067.452c-.604-.603-1.582-.603-2.188 0L8.708 2.627l2.76 2.76c.645-.215 1.379-.07 1.889.441.516.515.658 1.258.438 1.9l2.658 2.66c.645-.223 1.387-.083 1.9.435.721.72.721 1.884 0 2.604-.719.719-1.881.719-2.6 0-.539-.541-.674-1.337-.404-1.996L12.86 8.955v6.525c.176.086.342.203.488.348.713.721.713 1.883 0 2.6-.719.721-1.884.721-2.599 0-.72-.719-.72-1.879 0-2.598.182-.18.387-.316.605-.406V8.835c-.217-.091-.424-.222-.6-.401-.545-.545-.676-1.342-.396-2.011L7.636 3.7.45 10.881c-.6.605-.6 1.584 0 2.189l10.48 10.477c.604.604 1.582.604 2.186 0l10.43-10.43c.605-.603.605-1.582 0-2.187"/>
</svg>
</a>
</footer>
</div>
<script>
const NOSTR_NPUB = 'npub18s03s39fa80ce2n3cmm0zme3jqehc82h6ld9sxq03uejqm3d05gsae0fuu';
const NOSTR_PROFILE_URL = 'https://yakihonne.com/profile/fancy-wallaby-90@rizful.com';
const PAYMENT_AMOUNT = 0.0065;
function copyConfig() {
const configText = document.getElementById('bitcoin-config')?.textContent || '';
navigator.clipboard.writeText(configText).then(() => {
const button = event?.target;
if (button) {
const originalText = button.textContent;
button.textContent = '✅ Copié !';
setTimeout(() => {
button.textContent = originalText;
}, 2000);
}
}).catch(err => {
console.error('Erreur lors de la copie:', err);
alert('Erreur lors de la copie. Veuillez sélectionner et copier manuellement.');
});
}
function copyNpub(elementId) {
const npubElement = document.getElementById(elementId);
const npub = npubElement?.textContent || NOSTR_NPUB;
navigator.clipboard.writeText(npub).then(() => {
const button = event?.target;
if (button) {
const originalText = button.textContent;
button.textContent = '✅ Copié !';
setTimeout(() => {
button.textContent = originalText;
}, 2000);
}
}).catch(err => {
console.error('Erreur lors de la copie:', err);
alert('Erreur lors de la copie. Veuillez sélectionner et copier manuellement.');
});
}
function updatePaymentMessage(type) {
if (type === 'wallet') {
const checkbox = document.getElementById('wallet-request');
const paymentInfo = document.getElementById('wallet-payment-info');
if (checkbox && paymentInfo) {
if (checkbox.checked) {
paymentInfo.innerHTML = `
<p><strong>Instructions :</strong></p>
<p>1. Effectuez le paiement de 0,0065 BTC via Nostr à la npub ci-dessus</p>
<p>2. ✅ Vous recevrez le wallet de mining après confirmation du paiement</p>
<p>3. Le wallet vous sera envoyé sur Nostr</p>
`;
} else {
paymentInfo.innerHTML = `
<p><strong>Instructions :</strong></p>
<p>1. Effectuez le paiement de 0,0065 BTC via Nostr à la npub ci-dessus</p>
<p>2. Cochez la case ci-dessus si vous souhaitez recevoir le wallet de mining</p>
<p>3. Après confirmation du paiement, vous recevrez le wallet de mining sur Nostr</p>
`;
}
}
} else if (type === 'api') {
const checkbox = document.getElementById('api-request');
const paymentInfo = document.getElementById('api-payment-info');
if (checkbox && paymentInfo) {
if (checkbox.checked) {
paymentInfo.innerHTML = `
<p><strong>Instructions :</strong></p>
<p>1. Effectuez le paiement de 0,0065 BTC via Nostr à la npub ci-dessus</p>
<p>2. ✅ Vous recevrez la clé API après confirmation du paiement</p>
<p>3. La clé API vous sera envoyée sur Nostr</p>
`;
} else {
paymentInfo.innerHTML = `
<p><strong>Instructions :</strong></p>
<p>1. Effectuez le paiement de 0,0065 BTC via Nostr à la npub ci-dessus</p>
<p>2. Cochez la case ci-dessus si vous souhaitez recevoir la clé API</p>
<p>3. Après confirmation du paiement, vous recevrez la clé API sur Nostr</p>
`;
}
}
}
}
</script>
</body>
</html>