Update documentation with new UTXO features
**Motivations:** - Mettre à jour la documentation pour refléter les nouvelles fonctionnalités UTXO - Documenter les nouvelles routes API - Expliquer les fonctionnalités de pagination, tri et consolidation **Root causes:** - La documentation n'était pas à jour avec les nouvelles fonctionnalités - Les nouvelles routes API n'étaient pas documentées - Les utilisateurs n'étaient pas informés des nouvelles capacités **Correctifs:** - Mise à jour de learn.html avec section sur la gestion des UTXOs - Ajout de la documentation des nouvelles routes API dans api-docs.html - Mise à jour de docs/DASHBOARD.md avec les nouvelles fonctionnalités **Evolutions:** - learn.html : Section sur la gestion des UTXOs (pagination, tri, consolidation, capacité d'ancrage) - api-docs.html : Documentation des routes : - GET /api/utxo/list : Liste des UTXOs avec compteurs - GET /api/utxo/small-info : Infos sur les petits UTXOs - POST /api/utxo/consolidate : Consolidation des petits UTXOs - Documentation de l'erreur "too-long-mempool-chain" (503) - docs/DASHBOARD.md : Mise à jour de la section UTXO avec pagination, tri, consolidation, capacité d'ancrage restante **Pages affectées:** - signet-dashboard/public/learn.html: Section gestion des UTXOs - signet-dashboard/public/api-docs.html: Documentation des nouvelles routes API et erreur too-long-mempool-chain - docs/DASHBOARD.md: Mise à jour fonctionnalités UTXO et endpoints
This commit is contained in:
parent
3e3bfc72d3
commit
64cba050a8
@ -44,9 +44,9 @@ Le Dashboard Bitcoin Signet est une interface web de supervision et de test acce
|
|||||||
|
|
||||||
- **Statistiques d'Ancrage**
|
- **Statistiques d'Ancrage**
|
||||||
- Nombre total d'ancrages
|
- Nombre total d'ancrages
|
||||||
- Nombre d'ancrages aujourd'hui
|
- **Capacité d'ancrage restante** : Nombre d'ancrages possibles avec les UTXOs disponibles
|
||||||
- Nombre d'ancrages cette semaine
|
- Affiche le nombre total d'ancrages possibles
|
||||||
- Nombre d'ancrages ce mois
|
- Affiche le nombre d'UTXOs confirmés disponibles (sous-titre)
|
||||||
|
|
||||||
#### Section Test de l'API d'Ancrage
|
#### Section Test de l'API d'Ancrage
|
||||||
- **Saisie de Texte**
|
- **Saisie de Texte**
|
||||||
@ -108,16 +108,26 @@ Le Dashboard Bitcoin Signet est une interface web de supervision et de test acce
|
|||||||
**Fichier :** `signet-dashboard/public/utxo-list.html`
|
**Fichier :** `signet-dashboard/public/utxo-list.html`
|
||||||
|
|
||||||
**Fonctionnalités :**
|
**Fonctionnalités :**
|
||||||
- Liste de tous les UTXO du wallet
|
- Liste de tous les UTXO du wallet, catégorisés par type :
|
||||||
|
- 💰 Bloc Rewards (récompenses de minage)
|
||||||
|
- 🔗 Ancrages (transactions d'ancrage, 2500 sats chacun)
|
||||||
|
- 🔄 Changes (monnaie de retour)
|
||||||
|
- 💸 Frais (transactions avec frais onchain)
|
||||||
- Informations pour chaque UTXO :
|
- Informations pour chaque UTXO :
|
||||||
- TXID
|
- TXID (lien vers mempool.4nkweb.com)
|
||||||
- Index de sortie (vout)
|
- Index de sortie (vout)
|
||||||
- Montant
|
- Montant (en BTC et sats)
|
||||||
- Adresse
|
- Adresse
|
||||||
- Confirmations
|
- Confirmations
|
||||||
- Type de script
|
- Statut (Disponible, Verrouillé, Dépensé onchain)
|
||||||
- Filtrage par montant, confirmations, etc.
|
- **Pagination** : 100 UTXOs par page avec contrôles précédent/suivant
|
||||||
- Export des données
|
- **Tri** : Tri par montant ou confirmations (croissant/décroissant) en cliquant sur les en-têtes
|
||||||
|
- **Capacité d'ancrage restante** : Affiche le nombre d'ancrages possibles et le nombre d'UTXOs confirmés disponibles
|
||||||
|
- **Consolidation** : Bouton pour consolider les petits UTXOs (< 2500 sats) en un gros UTXO
|
||||||
|
- Affiche dynamiquement le nombre d'UTXOs et le montant total concernés
|
||||||
|
- Désactivé si aucun UTXO à consolider
|
||||||
|
- **Filtrage confirmés** : Seuls les UTXOs avec au moins 1 confirmation sont affichés (pour éviter les erreurs "too-long-mempool-chain")
|
||||||
|
- Export des données (fichier texte téléchargeable)
|
||||||
|
|
||||||
### 4. Page Rejoindre le Réseau (`/join-signet`)
|
### 4. Page Rejoindre le Réseau (`/join-signet`)
|
||||||
|
|
||||||
@ -231,7 +241,11 @@ Le dashboard utilise les endpoints suivants :
|
|||||||
- `GET /api/blockchain/info` : Informations sur la blockchain
|
- `GET /api/blockchain/info` : Informations sur la blockchain
|
||||||
- `GET /api/blockchain/latest-block` : Dernier bloc miné
|
- `GET /api/blockchain/latest-block` : Dernier bloc miné
|
||||||
- `GET /api/wallet/balance` : Solde du wallet
|
- `GET /api/wallet/balance` : Solde du wallet
|
||||||
- `GET /api/wallet/utxos` : Liste des UTXO
|
- `GET /api/utxo/list` : Liste des UTXO (catégorisés par type)
|
||||||
|
- Retourne : blocRewards, anchors, changes, fees
|
||||||
|
- Compteurs : total, availableForAnchor, confirmedAvailableForAnchor
|
||||||
|
- `GET /api/utxo/small-info` : Informations sur les petits UTXOs (< 2500 sats) disponibles pour consolidation
|
||||||
|
- `POST /api/utxo/consolidate` : Consolide les petits UTXOs en un gros UTXO
|
||||||
- `GET /api/network/peers` : Nombre de pairs
|
- `GET /api/network/peers` : Nombre de pairs
|
||||||
- `GET /api/anchor/count` : Nombre d'ancrages
|
- `GET /api/anchor/count` : Nombre d'ancrages
|
||||||
- `GET /api/hash/list` : Liste des hash ancrés
|
- `GET /api/hash/list` : Liste des hash ancrés
|
||||||
|
|||||||
@ -373,6 +373,7 @@
|
|||||||
<li><span class="status-code status-400">400</span> Requête invalide - Hash manquant ou format incorrect</li>
|
<li><span class="status-code status-400">400</span> Requête invalide - Hash manquant ou format incorrect</li>
|
||||||
<li><span class="status-code status-401">401</span> Non autorisé - Clé API manquante ou invalide</li>
|
<li><span class="status-code status-401">401</span> Non autorisé - Clé API manquante ou invalide</li>
|
||||||
<li><span class="status-code status-402">402</span> Solde insuffisant - Pas assez de fonds pour créer la transaction</li>
|
<li><span class="status-code status-402">402</span> Solde insuffisant - Pas assez de fonds pour créer la transaction</li>
|
||||||
|
<li><span class="status-code status-503">503</span> Service indisponible - Erreur "too-long-mempool-chain" (trop d'ancêtres non confirmés)</li>
|
||||||
<li><span class="status-code status-500">500</span> Erreur serveur - Erreur interne lors de la création de la transaction</li>
|
<li><span class="status-code status-500">500</span> Erreur serveur - Erreur interne lors de la création de la transaction</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -386,6 +387,28 @@
|
|||||||
}</pre>
|
}</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="error-box">
|
||||||
|
<h4>Exemple d'erreur (503 Service Unavailable) - Too Long Mempool Chain</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>{
|
||||||
|
"error": "Service Unavailable",
|
||||||
|
"message": "too-long-mempool-chain, too many unconfirmed ancestors [limit: 25]"
|
||||||
|
}</pre>
|
||||||
|
</div>
|
||||||
|
<p style="margin-top: 10px;">Cette erreur se produit lorsque l'API tente d'utiliser un UTXO non confirmé qui a trop d'ancêtres non confirmés dans le mempool. Bitcoin Core limite la chaîne d'ancêtres à 25 transactions pour éviter les attaques par spam.</p>
|
||||||
|
<p><strong>Solution :</strong> L'API utilise maintenant uniquement des UTXOs confirmés (au moins 1 confirmation) pour éviter cette erreur. Attendez qu'un bloc soit miné pour que les UTXOs soient confirmés.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-box">
|
||||||
|
<h4>ℹ️ Gestion des UTXOs</h4>
|
||||||
|
<ul style="margin-left: 20px; margin-top: 10px;">
|
||||||
|
<li>L'API utilise uniquement des UTXOs <strong>confirmés</strong> (au moins 1 confirmation) pour éviter les erreurs "too-long-mempool-chain"</li>
|
||||||
|
<li>Les UTXOs non confirmés sont automatiquement exclus de la sélection</li>
|
||||||
|
<li>Chaque transaction d'ancrage provisionne automatiquement 7 UTXOs de 2500 sats pour les ancrages futurs</li>
|
||||||
|
<li>Les UTXOs provisionnés deviendront utilisables après confirmation dans un bloc</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@ -970,6 +993,170 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!-- Endpoint: UTXO List -->
|
||||||
|
<section class="api-docs-section">
|
||||||
|
<div class="endpoint-card">
|
||||||
|
<div class="endpoint-header">
|
||||||
|
<span class="method-badge method-get">GET</span>
|
||||||
|
<span class="endpoint-path">/api/utxo/list</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="endpoint-description">
|
||||||
|
<p>Obtient la liste complète des UTXOs du wallet, catégorisés par type (bloc rewards, ancrages, changes, frais).</p>
|
||||||
|
<p><strong>Base URL :</strong> <code>https://dashboard.certificator.4nkweb.com</code></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Exemple de requête</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>curl -X GET https://dashboard.certificator.4nkweb.com/api/utxo/list</pre>
|
||||||
|
</div>
|
||||||
|
<button class="copy-button" onclick="copyCode(this)">📋 Copier</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Réponse (200 OK)</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>{
|
||||||
|
"blocRewards": [...],
|
||||||
|
"anchors": [...],
|
||||||
|
"changes": [...],
|
||||||
|
"fees": [...],
|
||||||
|
"counts": {
|
||||||
|
"blocRewards": 10,
|
||||||
|
"anchors": 150,
|
||||||
|
"changes": 25,
|
||||||
|
"fees": 5,
|
||||||
|
"total": 190,
|
||||||
|
"availableForAnchor": 180,
|
||||||
|
"confirmedAvailableForAnchor": 175
|
||||||
|
}
|
||||||
|
}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-box">
|
||||||
|
<h4>ℹ️ Notes importantes</h4>
|
||||||
|
<ul style="margin-left: 20px; margin-top: 10px;">
|
||||||
|
<li>Seuls les UTXOs avec au moins 1 confirmation sont retournés (pour éviter les erreurs "too-long-mempool-chain")</li>
|
||||||
|
<li><code>availableForAnchor</code> : Nombre d'UTXOs disponibles pour l'ancrage (> 2000 sats, non dépensés, non verrouillés)</li>
|
||||||
|
<li><code>confirmedAvailableForAnchor</code> : Nombre d'UTXOs confirmés disponibles pour l'ancrage</li>
|
||||||
|
<li>Les UTXOs sont triés par montant décroissant par défaut</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Endpoint: Small UTXOs Info -->
|
||||||
|
<section class="api-docs-section">
|
||||||
|
<div class="endpoint-card">
|
||||||
|
<div class="endpoint-header">
|
||||||
|
<span class="method-badge method-get">GET</span>
|
||||||
|
<span class="endpoint-path">/api/utxo/small-info</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="endpoint-description">
|
||||||
|
<p>Obtient les informations sur les UTXOs de moins de 2500 sats disponibles pour consolidation (nombre et montant total).</p>
|
||||||
|
<p><strong>Base URL :</strong> <code>https://dashboard.certificator.4nkweb.com</code></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Exemple de requête</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>curl -X GET https://dashboard.certificator.4nkweb.com/api/utxo/small-info</pre>
|
||||||
|
</div>
|
||||||
|
<button class="copy-button" onclick="copyCode(this)">📋 Copier</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Réponse (200 OK)</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>{
|
||||||
|
"count": 45,
|
||||||
|
"totalAmount": 0.0001125,
|
||||||
|
"totalSats": 11250
|
||||||
|
}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-box">
|
||||||
|
<h4>ℹ️ Notes importantes</h4>
|
||||||
|
<ul style="margin-left: 20px; margin-top: 10px;">
|
||||||
|
<li>Seuls les UTXOs confirmés (< 2500 sats, non dépensés, non verrouillés) sont comptés</li>
|
||||||
|
<li><code>count</code> : Nombre d'UTXOs disponibles pour consolidation</li>
|
||||||
|
<li><code>totalAmount</code> : Montant total en BTC</li>
|
||||||
|
<li><code>totalSats</code> : Montant total en satoshis</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Endpoint: Consolidate UTXOs -->
|
||||||
|
<section class="api-docs-section">
|
||||||
|
<div class="endpoint-card">
|
||||||
|
<div class="endpoint-header">
|
||||||
|
<span class="method-badge method-post">POST</span>
|
||||||
|
<span class="endpoint-path">/api/utxo/consolidate</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="endpoint-description">
|
||||||
|
<p>Consolide tous les UTXOs de moins de 2500 sats en un seul gros UTXO. Cette opération optimise le wallet en réduisant le nombre de petits UTXOs.</p>
|
||||||
|
<p><strong>Base URL :</strong> <code>https://dashboard.certificator.4nkweb.com</code></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Exemple de requête</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>curl -X POST https://dashboard.certificator.4nkweb.com/api/utxo/consolidate</pre>
|
||||||
|
</div>
|
||||||
|
<button class="copy-button" onclick="copyCode(this)">📋 Copier</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Réponse (200 OK) - Succès</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>{
|
||||||
|
"success": true,
|
||||||
|
"txid": "a1b2c3d4e5f6...",
|
||||||
|
"inputCount": 45,
|
||||||
|
"totalInputAmount": 0.0001125,
|
||||||
|
"changeAmount": 0.0001025,
|
||||||
|
"estimatedFee": 0.00001
|
||||||
|
}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Réponse (500) - Erreur</h4>
|
||||||
|
<div class="code-block">
|
||||||
|
<pre>{
|
||||||
|
"success": false,
|
||||||
|
"error": "No small UTXOs available for consolidation"
|
||||||
|
}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="response-example">
|
||||||
|
<h4>Codes de statut possibles</h4>
|
||||||
|
<ul style="margin-left: 20px;">
|
||||||
|
<li><span class="status-code status-200">200</span> Succès - Consolidation effectuée</li>
|
||||||
|
<li><span class="status-code status-500">500</span> Erreur - Aucun UTXO disponible ou erreur lors de la consolidation</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info-box">
|
||||||
|
<h4>ℹ️ Notes importantes</h4>
|
||||||
|
<ul style="margin-left: 20px; margin-top: 10px;">
|
||||||
|
<li>Seuls les UTXOs confirmés de moins de 2500 sats sont consolidés</li>
|
||||||
|
<li>Les UTXOs verrouillés ou déjà dépensés sont exclus</li>
|
||||||
|
<li>La transaction est envoyée au mempool immédiatement</li>
|
||||||
|
<li>Le montant consolidé est retourné comme change (moins les frais estimés)</li>
|
||||||
|
<li>Cette opération optimise le wallet en réduisant le nombre de petits UTXOs</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<!-- Section Informations -->
|
<!-- Section Informations -->
|
||||||
<section class="api-docs-section">
|
<section class="api-docs-section">
|
||||||
<div class="endpoint-card">
|
<div class="endpoint-card">
|
||||||
@ -1034,8 +1221,8 @@ API ClamAV : https://antivir.certificator.4nkweb.com</pre>
|
|||||||
<footer>
|
<footer>
|
||||||
<p>Bitcoin Ancrage Dashboard - Équipe 4NK</p>
|
<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">
|
<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">
|
<svg class="git-icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
||||||
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
<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>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@ -648,6 +648,28 @@ Change renvoyé: 38 800 sats
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<h3>Gestion des UTXOs dans le Dashboard</h3>
|
||||||
|
<div class="concept-explanation">
|
||||||
|
<p>Le dashboard offre plusieurs fonctionnalités pour gérer et visualiser les UTXOs :</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Capacité d'ancrage restante</strong> : Affiche le nombre d'ancrages possibles avec les UTXOs disponibles (confirmés uniquement pour éviter les erreurs)</li>
|
||||||
|
<li><strong>Pagination</strong> : Les listes d'UTXOs sont paginées par 100 éléments pour une navigation facile</li>
|
||||||
|
<li><strong>Tri</strong> : Possibilité de trier les UTXOs par montant ou confirmations (croissant/décroissant) en cliquant sur les en-têtes de colonnes</li>
|
||||||
|
<li><strong>Consolidation</strong> : Fonction pour consolider les petits UTXOs (< 2500 sats) en un gros UTXO pour optimiser le wallet</li>
|
||||||
|
<li><strong>Filtrage confirmés</strong> : Seuls les UTXOs avec au moins 1 confirmation sont utilisés pour éviter les erreurs "too-long-mempool-chain"</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="example-box">
|
||||||
|
<h4>Types de UTXOs dans le Wallet</h4>
|
||||||
|
<ul style="margin-left: 20px;">
|
||||||
|
<li><strong>💰 Bloc Rewards</strong> : UTXOs provenant des transactions coinbase (récompenses de minage)</li>
|
||||||
|
<li><strong>🔗 Ancrages</strong> : UTXOs créés par les transactions d'ancrage (2500 sats chacun)</li>
|
||||||
|
<li><strong>🔄 Changes</strong> : UTXOs provenant de la monnaie de retour des transactions</li>
|
||||||
|
<li><strong>💸 Frais</strong> : Transactions avec frais onchain enregistrés</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button class="interactive-button" onclick="loadUtxoList()">📥 Charger la Liste des UTXO</button>
|
<button class="interactive-button" onclick="loadUtxoList()">📥 Charger la Liste des UTXO</button>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user