From 11c089b2530f0aa60f6cff8bc5d846aa96674e67 Mon Sep 17 00:00:00 2001 From: hypnogaba <116596247+hypnogaba@users.noreply.github.com> Date: Mon, 20 Jul 2026 18:51:03 +0200 Subject: [PATCH 1/2] docs: add edge-solana-root multicast group Added root shreds information for edge subscriber. --- docs/Edge Subscriber Connection.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Edge Subscriber Connection.md b/docs/Edge Subscriber Connection.md index e4b68aa..6746dac 100644 --- a/docs/Edge Subscriber Connection.md +++ b/docs/Edge Subscriber Connection.md @@ -262,6 +262,10 @@ doublezero multicast group list - `edge-solana-shreds`: `233.84.178.1:7733` +### Root Shreds + +- `edge-solana-root`: `233.84.178.16:7733` + ### Retransmit Shreds - `edge-solana-retrans-eu`: `233.84.178.12:7733` From 5600154e7984fc2883108ddaf0b87b239b80f78a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:01:49 +0000 Subject: [PATCH 2/2] chore: auto-translate docs --- docs/Edge Subscriber Connection.es.md | 343 ++++++++++++++++++++++++++ docs/Edge Subscriber Connection.fr.md | 343 ++++++++++++++++++++++++++ docs/Edge Subscriber Connection.it.md | 343 ++++++++++++++++++++++++++ docs/Edge Subscriber Connection.ja.md | 343 ++++++++++++++++++++++++++ docs/Edge Subscriber Connection.ko.md | 343 ++++++++++++++++++++++++++ docs/Edge Subscriber Connection.pt.md | 343 ++++++++++++++++++++++++++ docs/Edge Subscriber Connection.zh.md | 343 ++++++++++++++++++++++++++ 7 files changed, 2401 insertions(+) create mode 100644 docs/Edge Subscriber Connection.es.md create mode 100644 docs/Edge Subscriber Connection.fr.md create mode 100644 docs/Edge Subscriber Connection.it.md create mode 100644 docs/Edge Subscriber Connection.ja.md create mode 100644 docs/Edge Subscriber Connection.ko.md create mode 100644 docs/Edge Subscriber Connection.pt.md create mode 100644 docs/Edge Subscriber Connection.zh.md diff --git a/docs/Edge Subscriber Connection.es.md b/docs/Edge Subscriber Connection.es.md new file mode 100644 index 0000000..715749c --- /dev/null +++ b/docs/Edge Subscriber Connection.es.md @@ -0,0 +1,343 @@ +--- +description: Configure un suscriptor edge para recibir feeds de shreds de DoubleZero, incluyendo la configuración del cliente y las reglas de firewall para GRE, BGP, PIM y tráfico de shreds. +--- + +# Conexión de Suscriptor Edge +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Uso de DoubleZero](https://doublezero.xyz/terms-protocol). Tenga en cuenta que los datos son solo para sus fines internos y no pueden ser retransmitidos (véase la Sección 2(e))." + +## Paso 1: Configuración de DoubleZero + +### 1. Completar la Configuración + +Instale la [CLI de Solana](https://docs.anza.xyz/cli/install). + +Siga las instrucciones de [configuración](setup.md) para instalar y configurar el cliente de DoubleZero. + +Si ha configurado DoubleZero previamente, asegúrese de tener la última versión de la CLI Doublezero-Solana con `sudo apt update && sudo apt install doublezero-solana` + +### 2. Configurar el Firewall + +Permita el tráfico GRE, BGP, PIM y de shreds. + +**iptables:** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW:** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. Habilitar el Reconciliador + +El reconciliador monitorea el estado onchain y aprovisiona automáticamente los túneles cuando se le asigna su asiento. No está habilitado por defecto. + +```bash +doublezero enable +``` + +### 4. Obtener la Identidad DoubleZero del Servidor + +Revise su Identidad DoubleZero. Esta identidad se utilizará para crear la conexión entre su máquina y DoubleZero. + +```bash +doublezero address +``` + +**Salida:** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## Paso 2: Configurar Su Wallet + +### 1. Crear un Par de Claves de Solana + +La CLI `doublezero-solana` utiliza un par de claves estándar de Solana para la gestión de asientos onchain. Si no tiene uno: + +```bash +solana-keygen new +``` + +Esto se escribe en `~/.config/solana/id.json`. Para usar una ruta diferente, pase `--keypair ` a cualquier comando de `doublezero-solana`. + +Imprima la dirección de su wallet: + +```bash +solana address +``` + +### 2. Fondear Su Wallet + +Su wallet necesita dos tokens: + +- **SOL** — para las tarifas de transacción de Solana. Transfiera SOL a la dirección del wallet impresa anteriormente. +- **USDC** — para el fondeo del asiento. La CLI extrae de la Cuenta de Token Asociada (ATA) de su wallet para el mint de USDC en mainnet (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`). + +--- + +## Paso 3: Comprar un Asiento + +### 1. Encontrar Su Dispositivo Más Cercano + +Antes de comprar un asiento, identifique el dispositivo con la menor latencia desde su máquina: + +```bash +doublezero latency +``` + +Anote el código del dispositivo del resultado con menor latencia (por ejemplo, ``). Lo usará al comprar un asiento. + +### 2. Verificar Precios + +Consulte los precios actuales del dispositivo antes de comprometer fondos. Los precios tienen dos componentes: un **precio base de metro** y una **prima por dispositivo**. Los precios se actualizan cada época. También puede ver precios y disponibilidad [aquí](https://data.malbeclabs.com/dz/shreds/devices). + +**Todos los dispositivos:** + +```bash +doublezero-solana shreds price +``` + +**Dispositivo específico:** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**Todos los dispositivos en un metro:** + +```bash +doublezero-solana shreds price --metro +``` + +Columnas de salida: `Device Code`, `Metro Code`, `Metro Name`, `Status`, `Settled Seats`, `Available Seats`, `Base Price (USDC)`, `Premium (USDC)`, `Epoch Price (USDC)`. + +El precio por época es el costo total por época para un asiento en ese dispositivo (base + prima). Use `--wide` para mostrar las claves públicas completas, o `--json` para salida en JSON. + +### 3. Comprar un Asiento + +Compre un asiento con un solo comando. Esto inicializa su asiento, fondea el escrow y solicita la asignación: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**Parámetros:** + +| Flag | Descripción | +|------|-------------| +| `--device ` | Dispositivo objetivo por clave pública (mutuamente excluyente con `--device-code`) | +| `--device-code ` | Dispositivo objetivo por código legible (por ejemplo, ``) | +| `--client-ip ` | La dirección IPv4 pública de su máquina | +| `--amount ` | USDC a fondear (formato decimal, por ejemplo `100` = 100 USDC). Debe cumplir con el precio mínimo por época. | +| `--source-token-account ` | Cuenta de origen USDC personalizada (por defecto usa la ATA de su wallet) | +| `--accept-partial-epoch` | Omitir la advertencia de época restante (ver más abajo) | +| `--fee-payer ` | Usar un wallet diferente para las tarifas de transacción en SOL | +| `--dry-run` | Simular la transacción sin ejecutarla | +| `--with-compute-unit-price ` | Establecer un precio de unidad de cómputo para una inclusión más rápida durante congestión | + +Una vez que su asiento sea asignado, el daemon establece el túnel GRE automáticamente. Verifique su conexión con: + +```bash +doublezero status +``` + +### Temporización de Épocas + +Los asientos se asignan por época de Solana (~2 días). Si queda menos del 10% de la época actual cuando usted paga, la CLI advierte que su asiento se asignará inmediatamente pero solo cubre el resto de la época actual. Se deducirá un pago separado de su escrow cuando comience la siguiente época. + +!!! info "Es recomendable fondear para más de 1 época a la vez para no perder su asiento. Puede verificar el tiempo restante en una época [aquí](https://explorer.solana.com/)." + +Puede omitir esta advertencia con `--accept-partial-epoch`. + +### Mantener Su Escrow Fondeado + +!!! warning "Si el saldo de su escrow está por debajo del precio por época en el momento de la liquidación, su asiento no será asignado, el túnel será desconectado y perderá su antigüedad acumulada. La antigüedad determina su prioridad para épocas futuras — perderla significa que compite como un nuevo participante de nuevo." + +Puede sobrecargar esta cuenta para fondear múltiples épocas. Cada liquidación deduce el precio de una época de su escrow, y el saldo restante se transfiere. Por ejemplo, fondear 5 veces el precio por época mantiene su asiento activo hasta por 5 épocas sin necesidad de volver a fondear. + +Para recargar su escrow, ejecute `shreds pay` nuevamente en cualquier momento: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +Tenga en cuenta que la `Target_IP` debe ser una dirección IPv4 pública en la máquina que recibirá los shreds. Puede encontrarla ejecutando un comando como `curl -4 ifconfig.me` en la máquina destino. + +### Monitorear Asientos + +Esta sección detalla cómo ver asientos a través de la CLI. También puede usar [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs) para monitorear asientos y ayudar en la gestión de su cuenta escrow. + +Vea sus asientos activos y saldos de escrow: + +**Todos sus asientos:** + +```bash +doublezero-solana shreds list +``` + +**Filtrar por dispositivo:** + +```bash +doublezero-solana shreds list --device-code +``` + +**Filtrar por IP del cliente:** + +```bash +doublezero-solana shreds list --client-ip +``` + +**Filtrar por wallet:** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +Columnas de salida: `Device Code`, `Client IP`, `Tenure`, `Balance (USDC)`, `Est. Epochs Paid`. + +La columna "Est. Epochs Paid" muestra cuántas épocas cubre su saldo actual a los precios vigentes. Si los precios cambian, esta estimación se ajusta. + +### Retirar Fondos + +Cierre su escrow y reembolse el USDC restante a su wallet: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +Puede identificar el dispositivo mediante `--device ` o `--device-code `, igual que en otros comandos. + +Para enviar el reembolso a una cuenta de token diferente: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "Retirar significa que pierde su asiento y la antigüedad acumulada." + +--- + +## Direcciones de Shreds (IP vs Puerto) + +Los Shreds de Líder y los Shreds de Retransmisión de alto stake llegarán por el puerto `7733`, a través de la interfaz `doublezero1`. La interfaz `doublezero0` es para tráfico unicast. El puerto `5765` es un monitor de heartbeat de los publicadores de shreds — este no contendrá shreds. + +Para el consumo de shreds, la **dirección IP** identifica el flujo multicast y el **puerto** identifica el servicio UDP en ese flujo. +Todos los flujos de shreds a continuación usan el puerto UDP `7733` en `doublezero1`. + +Puede examinar las IPs de cualquier grupo multicast con: + +```bash +doublezero multicast group list +``` + +### Shreds de Líder + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### Shreds de Raíz + +- `edge-solana-root`: `233.84.178.16:7733` + +### Shreds de Retransmisión + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## Encabezado del Túnel GRE — XDP + +!!! note "El tráfico de shreds entregado a través de la red está encapsulado en GRE. Es posible que necesite eliminar el encabezado GRE antes de alimentar los datos en su pipeline existente (por ejemplo, un deshredder basado en XDP)." + +--- + +## Herramientas y Dashboards + +### [Marcador Edge](https://data.malbeclabs.com/dz/shreds/scoreboard) + +El marcador compara la velocidad de entrega de shreds entre DoubleZero Edge y otros proveedores, utilizando datos a nivel de slot para comparar el rendimiento en tiempo real. Use este dashboard para ver las tasas de victoria de los shreds de Edge contra otros proveedores. Puede ver resultados solo para shreds de líder, además de la comparación del feed completo. También puede desglosar por región para ver el rendimiento esperado. + +### [Publicadores Edge](https://data.malbeclabs.com/dz/shreds/publishers) + +La métrica "Publishing Shreds" en la parte superior izquierda del dashboard muestra el porcentaje total del peso de stake de todos los validadores de Solana que publican shreds de líder en DoubleZero Edge. Puede ver los detalles de cada publicador en la red. + +### [Suscriptores, Dispositivos y Actividad Edge](https://data.malbeclabs.com/dz/shreds/subscribers) + +Puede buscar fácilmente su IP de Cliente en esta página para asientos suscritos y ver el estado. Haga clic en suscripciones de asientos específicos para ver el historial de pagos y la actividad. También puede ver los dispositivos disponibles en la página de [Dispositivos](https://data.malbeclabs.com/dz/shreds/devices) y toda la actividad reciente en la página de [Actividad](https://data.malbeclabs.com/dz/shreds/activity). + +### Documentación de la API de Datos + +Para acceso programático a los endpoints de datos, consulte la documentación de la API: [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs). + +--- + +## Solución de Problemas + +Si encuentra un problema no cubierto aquí, comuníquese a través de su canal existente antes de intentar solucionarlo por su cuenta. Si no tiene un canal, busque en [Discord](https://discord.gg/U2fEb4Jq) y abra un ticket si es necesario. + +### Asegúrese de que su Cliente esté actualizado: + +Ejecute: `sudo apt update && sudo apt install doublezero-solana` + +### Saldo de escrow insuficiente + +Si el saldo de su escrow está por debajo del precio por época en el momento de la liquidación, el asiento no se asigna, el túnel se desconecta y la antigüedad se pierde. Recargue con `shreds pay` antes de la próxima liquidación. + +### Asiento no asignado después de pagar + +- Es posible que haya pagado tarde en la época — el asiento se activa en la siguiente época. +- Todos los asientos del dispositivo pueden estar ocupados por titulares con mayor antigüedad. Verifique los asientos disponibles con `shreds price`. +- Si retiró fondos antes de la liquidación, el asiento no era elegible. + +### El túnel no se establece + +1. Verifique que el daemon esté ejecutándose: `sudo systemctl status doublezerod` +2. Verifique que el reconciliador esté habilitado: `doublezero enable` +3. Verifique que las reglas del firewall estén configuradas (GRE, BGP, PIM, tráfico de shreds en `doublezero1`, puerto 44880 en `doublezero0`) +4. Verifique que su asiento esté activo para la época actual: `doublezero-solana shreds list` +5. Verifique el estado de su conexión: `doublezero status` + +La IP del cliente del daemon se descubre automáticamente desde la IP pública de su host — verifique que coincida con el `--client-ip` utilizado en sus comandos de asiento. + +### Aviso de época + +La CLI advierte cuando queda menos del 10% de la época. Sus opciones son: + +- Aceptar con `--accept-partial-epoch` si desea el asiento inmediatamente +- Esperar a la siguiente época para obtener la cobertura de una época completa + +### "Amount is below the current price" + +El comando `pay` valida su monto contra el precio mínimo por época (base del metro + prima del dispositivo). Use `shreds price` para verificar los precios actuales y aumente su monto. + +### "Multicast user already exists" + +Ya tiene una suscripción activa a través de una ruta diferente. Desconéctese primero con `doublezero disconnect`, luego vuelva a intentar `shreds pay`. \ No newline at end of file diff --git a/docs/Edge Subscriber Connection.fr.md b/docs/Edge Subscriber Connection.fr.md new file mode 100644 index 0000000..a8b521a --- /dev/null +++ b/docs/Edge Subscriber Connection.fr.md @@ -0,0 +1,343 @@ +--- +description: Configurez un abonné edge pour recevoir les flux de shreds DoubleZero, incluant la configuration du client et les règles de pare-feu pour GRE, BGP, PIM et le trafic de shreds. +--- + +# Connexion d'un abonné Edge +!!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'utilisation de DoubleZero](https://doublezero.xyz/terms-protocol). Veuillez noter que les données sont destinées à votre usage interne uniquement et ne peuvent pas être retransmises (voir Section 2(e))." + +## Étape 1 : Configuration de DoubleZero + +### 1. Compléter la configuration + +Installez la [CLI Solana](https://docs.anza.xyz/cli/install). + +Suivez les instructions de [configuration](setup.md) pour installer et configurer le client DoubleZero. + +Si vous avez déjà configuré DoubleZero, assurez-vous de disposer de la dernière version de la CLI Doublezero-Solana avec `sudo apt update && sudo apt install doublezero-solana` + +### 2. Configurer le pare-feu + +Autorisez le trafic GRE, BGP, PIM et de shreds. + +**iptables :** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW :** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. Activer le réconciliateur + +Le réconciliateur surveille l'état onchain et provisionne automatiquement les tunnels lorsque votre siège est attribué. Il n'est pas activé par défaut. + +```bash +doublezero enable +``` + +### 4. Récupérer l'identité DoubleZero du serveur + +Consultez votre identité DoubleZero. Cette identité sera utilisée pour créer la connexion entre votre machine et DoubleZero. + +```bash +doublezero address +``` + +**Sortie :** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## Étape 2 : Configurer votre portefeuille + +### 1. Créer une paire de clés Solana + +La CLI `doublezero-solana` utilise une paire de clés Solana standard pour la gestion des sièges onchain. Si vous n'en avez pas : + +```bash +solana-keygen new +``` + +Ceci écrit dans `~/.config/solana/id.json`. Pour utiliser un chemin différent, passez `--keypair ` à n'importe quelle commande `doublezero-solana`. + +Affichez l'adresse de votre portefeuille : + +```bash +solana address +``` + +### 2. Approvisionner votre portefeuille + +Votre portefeuille nécessite deux tokens : + +- **SOL** — pour les frais de transaction Solana. Transférez des SOL à l'adresse du portefeuille affichée ci-dessus. +- **USDC** — pour le financement des sièges. La CLI prélève depuis le compte de token associé (ATA) de votre portefeuille pour le mint USDC mainnet (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`). + +--- + +## Étape 3 : Acheter un siège + +### 1. Trouver votre appareil le plus proche + +Avant d'acheter un siège, identifiez l'appareil avec la latence la plus faible depuis votre machine : + +```bash +doublezero latency +``` + +Notez le code de l'appareil du résultat ayant la latence la plus faible (par ex., ``). Vous l'utiliserez lors de l'achat d'un siège. + +### 2. Vérifier les tarifs + +Consultez les tarifs actuels des appareils avant d'engager des fonds. La tarification comporte deux composantes : un **prix de base métro** et une **prime par appareil**. Les prix sont mis à jour à chaque epoch. Vous pouvez également consulter les tarifs et la disponibilité [ici](https://data.malbeclabs.com/dz/shreds/devices). + +**Tous les appareils :** + +```bash +doublezero-solana shreds price +``` + +**Appareil spécifique :** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**Tous les appareils d'un métro :** + +```bash +doublezero-solana shreds price --metro +``` + +Colonnes de sortie : `Device Code`, `Metro Code`, `Metro Name`, `Status`, `Settled Seats`, `Available Seats`, `Base Price (USDC)`, `Premium (USDC)`, `Epoch Price (USDC)`. + +Le prix par epoch est le coût total par epoch pour un siège sur cet appareil (base + prime). Utilisez `--wide` pour afficher les clés publiques complètes, ou `--json` pour une sortie JSON. + +### 3. Acheter un siège + +Achetez un siège avec une seule commande. Ceci initialise votre siège, approvisionne l'escrow et demande l'attribution : + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**Paramètres :** + +| Drapeau | Description | +|---------|-------------| +| `--device ` | Appareil cible par clé publique (mutuellement exclusif avec `--device-code`) | +| `--device-code ` | Appareil cible par code lisible (par ex., ``) | +| `--client-ip ` | Adresse IPv4 publique de votre machine | +| `--amount ` | USDC à déposer (format décimal, par ex. `100` = 100 USDC). Doit respecter le prix minimum par epoch. | +| `--source-token-account ` | Compte source USDC personnalisé (par défaut l'ATA de votre portefeuille) | +| `--accept-partial-epoch` | Ignorer l'avertissement d'epoch restant (voir ci-dessous) | +| `--fee-payer ` | Utiliser un portefeuille différent pour les frais de transaction SOL | +| `--dry-run` | Simuler la transaction sans l'exécuter | +| `--with-compute-unit-price ` | Définir un prix d'unité de calcul pour une inclusion plus rapide en période de congestion | + +Une fois votre siège attribué, le daemon établit automatiquement le tunnel GRE. Vérifiez votre connexion avec : + +```bash +doublezero status +``` + +### Timing des epochs + +Les sièges sont attribués par epoch Solana (~2 jours). S'il reste moins de 10 % de l'epoch en cours lorsque vous payez, la CLI vous avertit que votre siège sera attribué immédiatement mais ne couvrira que le reste de l'epoch en cours. Un paiement séparé sera déduit de votre escrow au début de l'epoch suivant. + +!!! info "Il est conseillé de financer pour plus d'un epoch à la fois afin de ne pas perdre votre siège. Vous pouvez vérifier le temps restant dans un epoch [ici](https://explorer.solana.com/)." + +Vous pouvez contourner cet avertissement avec `--accept-partial-epoch`. + +### Maintenir votre escrow approvisionné + +!!! warning "Si le solde de votre escrow est inférieur au prix de l'epoch lors du règlement, votre siège ne sera pas attribué, le tunnel sera démonté et vous perdrez votre ancienneté accumulée. L'ancienneté détermine votre priorité pour les epochs futurs — la perdre signifie que vous êtes à nouveau en concurrence en tant que nouveau venu." + +Vous pouvez surfinancer ce compte pour couvrir plusieurs epochs. Chaque règlement déduit le prix d'un epoch de votre escrow, et le solde restant est reporté. Par exemple, financer 5x le prix par epoch maintient votre siège actif pendant 5 epochs maximum sans réapprovisionnement. + +Pour réapprovisionner votre escrow, exécutez à nouveau `shreds pay` à tout moment : + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +Notez que le `Target_IP` doit être une adresse IPv4 publique sur la machine qui recevra les shreds. Vous pouvez la trouver en exécutant une commande comme `curl -4 ifconfig.me` sur la machine cible. + +### Surveiller les sièges + +Cette section détaille comment visualiser les sièges via la CLI. Vous pouvez également utiliser [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs) pour surveiller les sièges et vous aider à gérer votre compte escrow. + +Consultez vos sièges actifs et les soldes escrow : + +**Tous vos sièges :** + +```bash +doublezero-solana shreds list +``` + +**Filtrer par appareil :** + +```bash +doublezero-solana shreds list --device-code +``` + +**Filtrer par IP client :** + +```bash +doublezero-solana shreds list --client-ip +``` + +**Filtrer par portefeuille :** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +Colonnes de sortie : `Device Code`, `Client IP`, `Tenure`, `Balance (USDC)`, `Est. Epochs Paid`. + +La colonne « Est. Epochs Paid » indique combien d'epochs votre solde actuel couvre aux tarifs en vigueur. Si les prix changent, cette estimation s'ajuste. + +### Retirer des fonds + +Fermez votre escrow et récupérez les USDC restants dans votre portefeuille : + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +Vous pouvez identifier l'appareil par `--device ` ou `--device-code `, comme pour les autres commandes. + +Pour envoyer le remboursement vers un compte de token différent : + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "Retirer des fonds signifie que vous perdez votre siège et l'ancienneté accumulée." + +--- + +## Adresses de shreds (IP vs Port) + +Les shreds Leader et les shreds Retransmit à haut stake arriveront sur le port `7733`, via l'interface `doublezero1`. L'interface `doublezero0` est destinée au trafic unicast. Le port `5765` est un moniteur de heartbeat provenant des éditeurs de shreds — il ne contiendra pas de shreds. + +Pour la consommation de shreds, l'**adresse IP** identifie le flux multicast et le **port** identifie le service UDP sur ce flux. +Tous les flux de shreds ci-dessous utilisent le port UDP `7733` sur `doublezero1`. + +Vous pouvez examiner les IPs de n'importe quel groupe multicast avec : + +```bash +doublezero multicast group list +``` + +### Shreds Leader + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### Shreds Root + +- `edge-solana-root`: `233.84.178.16:7733` + +### Shreds Retransmit + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## En-tête du tunnel GRE — XDP + +!!! note "Le trafic de shreds livré sur le réseau est encapsulé en GRE. Vous devrez peut-être retirer l'en-tête GRE avant d'injecter les données dans votre pipeline existant (par ex. un deshredder basé sur XDP)." + +--- + +## Outils et tableaux de bord + +### [Tableau de bord Edge](https://data.malbeclabs.com/dz/shreds/scoreboard) + +Le tableau de bord évalue la vitesse de livraison des shreds à travers DoubleZero Edge et d'autres fournisseurs, en utilisant des données au niveau des slots pour comparer les performances en temps réel. Utilisez ce tableau de bord pour voir les taux de victoire des shreds Edge par rapport aux autres fournisseurs. Vous pouvez consulter les résultats pour les shreds leader uniquement, en plus de la comparaison du flux complet. Vous pouvez également filtrer par région pour voir les performances attendues. + +### [Éditeurs Edge](https://data.malbeclabs.com/dz/shreds/publishers) + +La métrique « Publishing Shreds » en haut à gauche du tableau de bord montre le pourcentage total du poids de stake de tous les validateurs Solana publiant des shreds leader sur DoubleZero Edge. Vous pouvez voir les détails de chaque éditeur sur le réseau. + +### [Abonnés, appareils et activité Edge](https://data.malbeclabs.com/dz/shreds/subscribers) + +Vous pouvez facilement rechercher votre IP client sur cette page pour les sièges souscrits et consulter le statut. Cliquez sur des souscriptions de sièges spécifiques pour voir l'historique des paiements et l'activité. Vous pouvez également consulter les appareils disponibles sur la page [Appareils](https://data.malbeclabs.com/dz/shreds/devices) et toute l'activité récente sur la page [Activité](https://data.malbeclabs.com/dz/shreds/activity). + +### Documentation de l'API de données + +Pour un accès programmatique aux endpoints de données, consultez la documentation de l'API : [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs). + +--- + +## Dépannage + +Si vous rencontrez un problème non couvert ici, veuillez nous contacter via votre canal existant avant de tenter une solution de contournement. Si vous n'avez pas de canal, veuillez rechercher sur [Discord](https://discord.gg/U2fEb4Jq) et ouvrir un ticket si nécessaire. + +### Assurez-vous que votre client est à jour : + +Exécutez : `sudo apt update && sudo apt install doublezero-solana` + +### Solde escrow insuffisant + +Si le solde de votre escrow est inférieur au prix de l'epoch lors du règlement, le siège n'est pas attribué, le tunnel est démonté et l'ancienneté est perdue. Réapprovisionnez avec `shreds pay` avant le prochain règlement. + +### Siège non attribué après paiement + +- Vous avez peut-être payé tard dans l'epoch — le siège prend effet à l'epoch suivant. +- Tous les sièges de l'appareil peuvent être occupés par des titulaires ayant une ancienneté supérieure. Vérifiez les sièges disponibles avec `shreds price`. +- Si vous avez retiré vos fonds avant le règlement, le siège n'était pas éligible. + +### Le tunnel ne s'établit pas + +1. Vérifiez que le daemon est en cours d'exécution : `sudo systemctl status doublezerod` +2. Vérifiez que le réconciliateur est activé : `doublezero enable` +3. Vérifiez que les règles de pare-feu sont en place (GRE, BGP, PIM, trafic de shreds sur `doublezero1`, port 44880 sur `doublezero0`) +4. Vérifiez que votre siège est actif pour l'epoch en cours : `doublezero-solana shreds list` +5. Vérifiez le statut de votre connexion : `doublezero status` + +L'IP client du daemon est découverte automatiquement à partir de l'IP publique de votre hôte — vérifiez qu'elle correspond au `--client-ip` utilisé dans vos commandes de siège. + +### Avertissement de prompt d'epoch + +La CLI vous avertit lorsqu'il reste moins de 10 % de l'epoch. Vos options : + +- Accepter avec `--accept-partial-epoch` si vous voulez le siège immédiatement +- Attendre l'epoch suivant pour obtenir une couverture complète d'un epoch + +### « Amount is below the current price » + +La commande `pay` valide votre montant par rapport au prix minimum par epoch (base métro + prime appareil). Utilisez `shreds price` pour vérifier les tarifs actuels et augmentez votre montant. + +### « Multicast user already exists » + +Vous avez déjà un abonnement actif via un chemin différent. Déconnectez-vous d'abord avec `doublezero disconnect`, puis réessayez `shreds pay`. \ No newline at end of file diff --git a/docs/Edge Subscriber Connection.it.md b/docs/Edge Subscriber Connection.it.md new file mode 100644 index 0000000..b2be4db --- /dev/null +++ b/docs/Edge Subscriber Connection.it.md @@ -0,0 +1,343 @@ +--- +description: Configura un edge subscriber per ricevere i feed di shred DoubleZero, inclusa la configurazione del client e le regole firewall per GRE, BGP, PIM e il traffico shred. +--- + +# Connessione Edge Subscriber +!!! warning "Collegandomi a DoubleZero accetto i [Termini di Utilizzo di DoubleZero](https://doublezero.xyz/terms-protocol). Si prega di notare che i dati sono esclusivamente per uso interno e non possono essere ritrasmessi (vedi Sezione 2(e))." + +## Passaggio 1: Configurazione di DoubleZero + +### 1. Completare la Configurazione + +Installare la [Solana CLI](https://docs.anza.xyz/cli/install). + +Seguire le istruzioni di [configurazione](setup.md) per installare e configurare il client DoubleZero. + +Se hai già configurato DoubleZero in precedenza, assicurati di avere l'ultima versione della CLI Doublezero-Solana con `sudo apt update && sudo apt install doublezero-solana` + +### 2. Configurare il Firewall + +Consentire il traffico GRE, BGP, PIM e shred. + +**iptables:** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW:** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. Abilitare il Reconciler + +Il reconciler monitora lo stato onchain e provisiona automaticamente i tunnel quando il tuo seat viene allocato. Non è abilitato di default. + +```bash +doublezero enable +``` + +### 4. Recuperare l'Identità DoubleZero del Server + +Verifica la tua Identità DoubleZero. Questa identità verrà utilizzata per creare la connessione tra la tua macchina e DoubleZero. + +```bash +doublezero address +``` + +**Output:** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## Passaggio 2: Configurare il Wallet + +### 1. Creare un Keypair Solana + +La CLI `doublezero-solana` utilizza un keypair Solana standard per la gestione onchain dei seat. Se non ne hai uno: + +```bash +solana-keygen new +``` + +Questo scrive su `~/.config/solana/id.json`. Per utilizzare un percorso diverso, passa `--keypair ` a qualsiasi comando `doublezero-solana`. + +Stampa l'indirizzo del tuo wallet: + +```bash +solana address +``` + +### 2. Finanziare il Wallet + +Il tuo wallet necessita di due token: + +- **SOL** — per le commissioni delle transazioni Solana. Trasferisci SOL all'indirizzo del wallet stampato sopra. +- **USDC** — per il finanziamento del seat. La CLI preleva dall'Associated Token Account (ATA) del tuo wallet per il mint USDC mainnet (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`). + +--- + +## Passaggio 3: Acquistare un Seat + +### 1. Trovare il Device Più Vicino + +Prima di acquistare un seat, identifica il device con la latenza più bassa dalla tua macchina: + +```bash +doublezero latency +``` + +Annota il codice del device dal risultato con la latenza più bassa (es., ``). Lo utilizzerai durante l'acquisto di un seat. + +### 2. Verificare i Prezzi + +Visualizza i prezzi attuali dei device prima di impegnare fondi. I prezzi hanno due componenti: un **prezzo base metro** e un **sovrapprezzo per device**. I prezzi si aggiornano ad ogni epoch. Puoi anche visualizzare prezzi e disponibilità [qui](https://data.malbeclabs.com/dz/shreds/devices). + +**Tutti i device:** + +```bash +doublezero-solana shreds price +``` + +**Device specifico:** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**Tutti i device in un metro:** + +```bash +doublezero-solana shreds price --metro +``` + +Colonne di output: `Device Code`, `Metro Code`, `Metro Name`, `Status`, `Settled Seats`, `Available Seats`, `Base Price (USDC)`, `Premium (USDC)`, `Epoch Price (USDC)`. + +Il prezzo per epoch è il costo totale per epoch per un seat su quel device (base + sovrapprezzo). Usa `--wide` per mostrare le pubkey complete, o `--json` per output JSON. + +### 3. Acquistare un Seat + +Acquista un seat con un singolo comando. Questo inizializza il tuo seat, finanzia l'escrow e richiede l'allocazione: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**Parametri:** + +| Flag | Descrizione | +|------|-------------| +| `--device ` | Device target per chiave pubblica (mutuamente esclusivo con `--device-code`) | +| `--device-code ` | Device target per codice leggibile (es., ``) | +| `--client-ip ` | Indirizzo IPv4 pubblico della tua macchina | +| `--amount ` | USDC da finanziare (formato decimale, es. `100` = 100 USDC). Deve soddisfare il prezzo minimo per epoch. | +| `--source-token-account ` | Account sorgente USDC personalizzato (predefinito: ATA del tuo wallet) | +| `--accept-partial-epoch` | Salta l'avviso sull'epoch rimanente (vedi sotto) | +| `--fee-payer ` | Usa un wallet diverso per le commissioni delle transazioni SOL | +| `--dry-run` | Simula la transazione senza eseguirla | +| `--with-compute-unit-price ` | Imposta un prezzo per compute unit per un'inclusione più rapida durante la congestione | + +Una volta allocato il tuo seat, il daemon stabilisce automaticamente il tunnel GRE. Verifica la tua connessione con: + +```bash +doublezero status +``` + +### Tempistica dell'Epoch + +I seat vengono allocati per epoch Solana (~2 giorni). Se rimane meno del 10% dell'epoch corrente quando effettui il pagamento, la CLI avvisa che il tuo seat verrà allocato immediatamente ma coprirà solo il resto dell'epoch corrente. Un pagamento separato verrà detratto dal tuo escrow quando inizia l'epoch successivo. + +!!! info "È consigliabile finanziare per più di 1 epoch alla volta per non perdere il tuo seat. Puoi verificare il tempo rimanente in un epoch [qui](https://explorer.solana.com/)." + +Puoi ignorare questo avviso con `--accept-partial-epoch`. + +### Mantenere l'Escrow Finanziato + +!!! warning "Se il saldo del tuo escrow è inferiore al prezzo per epoch al momento del settlement, il tuo seat non verrà allocato, il tunnel verrà abbattuto e perderai la tenure accumulata. La tenure determina la tua priorità per gli epoch futuri — perderla significa competere nuovamente come nuovo arrivato." + +Puoi sovra-finanziare questo account per coprire più epoch. Ogni settlement detrae il prezzo di un epoch dal tuo escrow, e il saldo rimanente viene riportato. Ad esempio, finanziare 5 volte il prezzo per epoch mantiene il tuo seat attivo per un massimo di 5 epoch senza ri-finanziamento. + +Per ricaricare il tuo escrow, esegui nuovamente `shreds pay` in qualsiasi momento: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +Nota che il `Target_IP` deve essere un indirizzo ipv4 pubblico sulla macchina che riceverà gli shred. Puoi trovarlo eseguendo un comando come `curl -4 ifconfig.me` sulla macchina target. + +### Monitorare i Seat + +Questa sezione descrive come visualizzare i seat tramite la CLI. Puoi anche utilizzare [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs) per monitorare i seat e assistere nella gestione del tuo account escrow. + +Visualizza i tuoi seat attivi e i saldi escrow: + +**Tutti i tuoi seat:** + +```bash +doublezero-solana shreds list +``` + +**Filtrare per device:** + +```bash +doublezero-solana shreds list --device-code +``` + +**Filtrare per IP client:** + +```bash +doublezero-solana shreds list --client-ip +``` + +**Filtrare per wallet:** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +Colonne di output: `Device Code`, `Client IP`, `Tenure`, `Balance (USDC)`, `Est. Epochs Paid`. + +La colonna "Est. Epochs Paid" mostra quanti epoch copre il tuo saldo attuale ai prezzi correnti. Se i prezzi cambiano, questa stima si adegua. + +### Prelevare Fondi + +Chiudi il tuo escrow e ricevi il rimborso degli USDC rimanenti nel tuo wallet: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +Puoi identificare il device sia tramite `--device ` che `--device-code `, come per gli altri comandi. + +Per inviare il rimborso a un token account diverso: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "Prelevare significa perdere il tuo seat e la tenure accumulata." + +--- + +## Indirizzi Shred (IP vs Porta) + +I Leader Shred e i Retransmit Shred ad alto stake arriveranno sulla porta `7733`, attraverso l'interfaccia `doublezero1`. L'interfaccia `doublezero0` è per il traffico unicast. La porta `5765` è un monitor heartbeat dai publisher degli shred — non conterrà shred. + +Per il consumo degli shred, l'**indirizzo IP** identifica lo stream multicast e la **porta** identifica il servizio UDP su quello stream. +Tutti gli stream shred sottostanti utilizzano la porta UDP `7733` su `doublezero1`. + +Puoi esaminare gli IP di qualsiasi gruppo multicast con: + +```bash +doublezero multicast group list +``` + +### Leader Shred + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### Root Shred + +- `edge-solana-root`: `233.84.178.16:7733` + +### Retransmit Shred + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## Header del Tunnel GRE — XDP + +!!! note "Il traffico shred consegnato sulla rete è incapsulato in GRE. Potrebbe essere necessario rimuovere l'header GRE prima di alimentare i dati nella tua pipeline esistente (es. un deshredder basato su XDP)." + +--- + +## Strumenti e Dashboard + +### [Edge Scoreboard](https://data.malbeclabs.com/dz/shreds/scoreboard) + +Lo Scoreboard confronta la velocità di consegna degli shred tra DoubleZero Edge e altri provider, utilizzando dati a livello di slot per comparare le prestazioni in tempo reale. Usa questa dashboard per visualizzare i tassi di vittoria degli shred Edge rispetto ad altri provider. Puoi visualizzare i risultati solo per i leader shred, oltre al confronto del feed completo. Puoi anche approfondire per regione per vedere le prestazioni attese. + +### [Edge Publisher](https://data.malbeclabs.com/dz/shreds/publishers) + +La metrica "Publishing Shreds" in alto a sinistra della dashboard mostra la percentuale totale di peso dello stake di tutti i validatori Solana che pubblicano leader shred su DoubleZero Edge. Puoi vedere i dettagli per ogni publisher sulla rete. + +### [Edge Subscriber, Device e Attività](https://data.malbeclabs.com/dz/shreds/subscribers) + +Puoi facilmente cercare il tuo Client IP su questa pagina per i seat sottoscritti e visualizzarne lo stato. Clicca sulle specifiche sottoscrizioni dei seat per visualizzare la cronologia dei pagamenti e l'attività. Puoi anche visualizzare i device disponibili nella pagina [Device](https://data.malbeclabs.com/dz/shreds/devices) e tutte le attività recenti nella pagina [Attività](https://data.malbeclabs.com/dz/shreds/activity). + +### Documentazione API Dati + +Per l'accesso programmatico agli endpoint dati, consulta la documentazione API: [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs). + +--- + +## Risoluzione dei Problemi + +Se riscontri un problema non trattato qui, contattaci attraverso il tuo canale esistente prima di cercare soluzioni alternative. Se non disponi di un canale, cerca su [Discord](https://discord.gg/U2fEb4Jq) e apri un ticket se necessario. + +### Assicurati che il tuo Client sia aggiornato: + +Esegui: `sudo apt update && sudo apt install doublezero-solana` + +### Saldo escrow insufficiente + +Se il saldo del tuo escrow è inferiore al prezzo per epoch al momento del settlement, il seat non viene allocato, il tunnel viene abbattuto e la tenure viene persa. Ricarica con `shreds pay` prima del prossimo settlement. + +### Seat non allocato dopo il pagamento + +- Potresti aver pagato tardi nell'epoch — il seat diventa effettivo nell'epoch successivo. +- Tutti i seat sul device potrebbero essere occupati da titolari con tenure superiore. Verifica i seat disponibili con `shreds price`. +- Se hai prelevato prima del settlement, il seat non era eleggibile. + +### Il tunnel non si attiva + +1. Verifica che il daemon sia in esecuzione: `sudo systemctl status doublezerod` +2. Verifica che il reconciler sia abilitato: `doublezero enable` +3. Verifica che le regole del firewall siano configurate (GRE, BGP, PIM, traffico shred su `doublezero1`, porta 44880 su `doublezero0`) +4. Verifica che il tuo seat sia attivo per l'epoch corrente: `doublezero-solana shreds list` +5. Controlla lo stato della tua connessione: `doublezero status` + +L'IP client del daemon viene rilevato automaticamente dall'IP pubblico del tuo host — verifica che corrisponda al `--client-ip` utilizzato nei tuoi comandi seat. + +### Prompt di avviso sull'epoch + +La CLI avvisa quando rimane meno del 10% dell'epoch. Le tue opzioni sono: + +- Accettare con `--accept-partial-epoch` se vuoi il seat immediatamente +- Attendere l'epoch successivo per ottenere una copertura completa dell'epoch + +### "Amount is below the current price" + +Il comando `pay` valida l'importo rispetto al prezzo minimo per epoch (base metro + sovrapprezzo device). Usa `shreds price` per verificare i prezzi attuali e aumenta il tuo importo. + +### "Multicast user already exists" + +Hai già una sottoscrizione attiva attraverso un percorso diverso. Disconnettiti prima con `doublezero disconnect`, poi riprova `shreds pay`. \ No newline at end of file diff --git a/docs/Edge Subscriber Connection.ja.md b/docs/Edge Subscriber Connection.ja.md new file mode 100644 index 0000000..a601962 --- /dev/null +++ b/docs/Edge Subscriber Connection.ja.md @@ -0,0 +1,343 @@ +--- +description: DoubleZero シュレッドフィードを受信するためのエッジサブスクライバーのセットアップ。クライアントのセットアップおよび GRE、BGP、PIM、シュレッドトラフィックのファイアウォールルールを含みます。 +--- + +# エッジサブスクライバー接続 +!!! warning "DoubleZero に接続することにより、[DoubleZero 利用規約](https://doublezero.xyz/terms-protocol)に同意したものとみなされます。データはお客様の内部利用目的に限定され、再送信は禁止されていることにご注意ください(第2条(e)参照)。" + +## ステップ 1: DoubleZero のセットアップ + +### 1. セットアップの完了 + +[Solana CLI](https://docs.anza.xyz/cli/install) をインストールします。 + +[セットアップ](setup.md)の手順に従って、DoubleZero クライアントをインストールおよび設定します。 + +以前に DoubleZero をセットアップ済みの場合は、`sudo apt update && sudo apt install doublezero-solana` で最新の Doublezero-Solana CLI を入手してください。 + +### 2. ファイアウォールの設定 + +GRE、BGP、PIM、およびシュレッドトラフィックを許可します。 + +**iptables:** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW:** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. リコンサイラーの有効化 + +リコンサイラーはオンチェーンの状態を監視し、シートが割り当てられたときに自動的にトンネルをプロビジョニングします。デフォルトでは有効になっていません。 + +```bash +doublezero enable +``` + +### 4. サーバーの DoubleZero アイデンティティの取得 + +DoubleZero アイデンティティを確認します。このアイデンティティは、お使いのマシンと DoubleZero 間の接続を作成するために使用されます。 + +```bash +doublezero address +``` + +**出力:** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## ステップ 2: ウォレットのセットアップ + +### 1. Solana キーペアの作成 + +`doublezero-solana` CLI は、オンチェーンのシート管理に標準的な Solana キーペアを使用します。キーペアをお持ちでない場合: + +```bash +solana-keygen new +``` + +これにより `~/.config/solana/id.json` に書き込まれます。別のパスを使用する場合は、任意の `doublezero-solana` コマンドに `--keypair ` を渡してください。 + +ウォレットアドレスを表示: + +```bash +solana address +``` + +### 2. ウォレットへの資金投入 + +ウォレットには2種類のトークンが必要です: + +- **SOL** — Solana のトランザクション手数料用。上記で表示されたウォレットアドレスに SOL を送金してください。 +- **USDC** — シートの資金調達用。CLI はメインネット USDC ミント (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`) のウォレットの Associated Token Account (ATA) から引き出します。 + +--- + +## ステップ 3: シートの購入 + +### 1. 最寄りのデバイスを見つける + +シートを購入する前に、お使いのマシンからレイテンシーが最も低いデバイスを特定します: + +```bash +doublezero latency +``` + +最もレイテンシーが低い結果のデバイスコード(例: ``)をメモしてください。シート購入時に使用します。 + +### 2. 料金の確認 + +資金をコミットする前に、現在のデバイス料金を確認します。料金は**基本メトロ料金**と**デバイスごとのプレミアム**の2つの要素で構成されます。料金はエポックごとに更新されます。料金と空き状況は[こちら](https://data.malbeclabs.com/dz/shreds/devices)でも確認できます。 + +**全デバイス:** + +```bash +doublezero-solana shreds price +``` + +**特定のデバイス:** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**メトロ内の全デバイス:** + +```bash +doublezero-solana shreds price --metro +``` + +出力カラム: `Device Code`、`Metro Code`、`Metro Name`、`Status`、`Settled Seats`、`Available Seats`、`Base Price (USDC)`、`Premium (USDC)`、`Epoch Price (USDC)`。 + +エポック料金は、そのデバイスのシートあたりのエポックごとの合計コスト(基本 + プレミアム)です。`--wide` を使用するとフルの公開鍵が表示され、`--json` を使用すると JSON 出力になります。 + +### 3. シートの購入 + +1つのコマンドでシートを購入します。これによりシートの初期化、エスクローへの資金投入、および割り当てリクエストが行われます: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**パラメータ:** + +| フラグ | 説明 | +|------|-------------| +| `--device ` | 公開鍵でターゲットデバイスを指定(`--device-code` と排他) | +| `--device-code ` | 人間が読めるコードでターゲットデバイスを指定(例: ``) | +| `--client-ip ` | お使いのマシンのパブリック IPv4 アドレス | +| `--amount ` | 投入する USDC(10進数形式、例: `100` = 100 USDC)。最低エポック料金を満たす必要があります。 | +| `--source-token-account ` | カスタム USDC ソースアカウント(デフォルトはウォレットの ATA) | +| `--accept-partial-epoch` | エポック残り時間の警告をスキップ(下記参照) | +| `--fee-payer ` | SOL トランザクション手数料に別のウォレットを使用 | +| `--dry-run` | 実行せずにトランザクションをシミュレート | +| `--with-compute-unit-price ` | 混雑時により早く含まれるようにコンピュートユニット価格を設定 | + +シートが割り当てられると、デーモンが自動的に GRE トンネルを確立します。接続を確認するには: + +```bash +doublezero status +``` + +### エポックのタイミング + +シートは Solana のエポックごと(約2日)に割り当てられます。支払い時に現在のエポックの残りが 10% 未満の場合、CLI はシートが即座に割り当てられるものの現在のエポックの残りのみをカバーする旨の警告を表示します。次のエポック開始時にエスクローから別途支払いが差し引かれます。 + +!!! info "シートを失わないよう、一度に1エポック分以上の資金を投入することをお勧めします。エポックの残り時間は[こちら](https://explorer.solana.com/)で確認できます。" + +この警告は `--accept-partial-epoch` でバイパスできます。 + +### エスクローの資金を維持する + +!!! warning "決済時にエスクロー残高がエポック料金を下回っている場合、シートは割り当てられず、トンネルは切断され、蓄積されたテニュアが失われます。テニュアは将来のエポックでの優先順位を決定するため、失うと新規参入者として再度競争することになります。" + +このアカウントに複数エポック分の資金を投入することができます。各決済でエスクローからエポック1回分の料金が差し引かれ、残りの残高は繰り越されます。例えば、エポックあたりの料金の5倍を投入すると、再投入なしで最大5エポック分シートがアクティブに保たれます。 + +エスクローに追加資金を投入するには、いつでも `shreds pay` を再度実行してください: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +`Target_IP` はシュレッドを受信するマシンのパブリック IPv4 アドレスである必要があります。ターゲットマシンで `curl -4 ifconfig.me` のようなコマンドを実行して確認できます。 + +### シートの監視 + +このセクションでは、CLI を使用してシートを確認する方法を説明します。[https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs) を使用してシートの監視やエスクローアカウントの管理を支援することもできます。 + +アクティブなシートとエスクロー残高を表示: + +**すべてのシート:** + +```bash +doublezero-solana shreds list +``` + +**デバイスでフィルター:** + +```bash +doublezero-solana shreds list --device-code +``` + +**クライアント IP でフィルター:** + +```bash +doublezero-solana shreds list --client-ip +``` + +**ウォレットでフィルター:** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +出力カラム: `Device Code`、`Client IP`、`Tenure`、`Balance (USDC)`、`Est. Epochs Paid`。 + +「Est. Epochs Paid」カラムは、現在の料金で現在の残高が何エポック分をカバーするかを示します。料金が変更されると、この推定値も調整されます。 + +### 資金の引き出し + +エスクローを閉じ、残りの USDC をウォレットに返金: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +他のコマンドと同様に、`--device ` または `--device-code ` のいずれかでデバイスを指定できます。 + +別のトークンアカウントに返金する場合: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "引き出しを行うと、シートおよび蓄積されたテニュアが失われます。" + +--- + +## シュレッドアドレス(IP vs ポート) + +リーダーシュレッドおよび高ステークのリトランスミットシュレッドは、`doublezero1` インターフェースを介してポート `7733` で到着します。`doublezero0` インターフェースはユニキャストトラフィック用です。ポート `5765` はシュレッドパブリッシャーからのハートビートモニターであり、シュレッドは含まれません。 + +シュレッド消費において、**IP アドレス**はマルチキャストストリームを識別し、**ポート**はそのストリーム上の UDP サービスを識別します。 +以下のすべてのシュレッドストリームは `doublezero1` 上の UDP ポート `7733` を使用します。 + +マルチキャストグループの IP は以下のコマンドで確認できます: + +```bash +doublezero multicast group list +``` + +### リーダーシュレッド + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### ルートシュレッド + +- `edge-solana-root`: `233.84.178.16:7733` + +### リトランスミットシュレッド + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## GRE トンネルヘッダー — XDP + +!!! note "ネットワーク上で配信されるシュレッドトラフィックは GRE カプセル化されています。既存のパイプライン(例: XDP ベースのデシュレッダー)にデータを入力する前に、GRE ヘッダーを除去する必要がある場合があります。" + +--- + +## ツールとダッシュボード + +### [Edge スコアボード](https://data.malbeclabs.com/dz/shreds/scoreboard) + +スコアボードは、DoubleZero Edge と他のプロバイダー間のシュレッド配信速度をベンチマークし、スロットレベルのデータを使用してリアルタイムでパフォーマンスを比較します。このダッシュボードを使用して、他のプロバイダーに対する Edge シュレッドの勝率を確認できます。リーダーシュレッドのみの結果やフルフィード比較を表示できます。また、地域別にドリルダウンして予想されるパフォーマンスを確認することもできます。 + +### [Edge パブリッシャー](https://data.malbeclabs.com/dz/shreds/publishers) + +ダッシュボード左上の「Publishing Shreds」メトリックは、DoubleZero Edge 上でリーダーシュレッドを公開しているすべての Solana バリデーターの合計ステークウェイトの割合を示します。ネットワーク上の各パブリッシャーの詳細を確認できます。 + +### [Edge サブスクライバー、デバイスおよびアクティビティ](https://data.malbeclabs.com/dz/shreds/subscribers) + +このページでクライアント IP を簡単に検索して、購読中のシートとステータスを確認できます。特定のシートサブスクリプションをクリックすると、支払い履歴とアクティビティを表示できます。また、利用可能なデバイスは [Devices](https://data.malbeclabs.com/dz/shreds/devices) ページで、最近のすべてのアクティビティは [Activity](https://data.malbeclabs.com/dz/shreds/activity) ページで確認できます。 + +### Data API ドキュメント + +データエンドポイントへのプログラムによるアクセスについては、API ドキュメントを参照してください: [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs)。 + +--- + +## トラブルシューティング + +ここでカバーされていない問題が発生した場合は、回避策を講じる前に既存のチャネルを通じてお問い合わせください。チャネルをお持ちでない場合は、[Discord](https://discord.gg/U2fEb4Jq) を検索し、必要に応じてチケットを開いてください。 + +### クライアントが最新であることを確認: + +実行: `sudo apt update && sudo apt install doublezero-solana` + +### エスクロー残高不足 + +決済時にエスクロー残高がエポック料金を下回っている場合、シートは割り当てられず、トンネルは切断され、テニュアが失われます。次の決済前に `shreds pay` で追加資金を投入してください。 + +### 支払い後にシートが割り当てられない + +- エポックの後半に支払った可能性があります — シートは次のエポックから有効になります。 +- デバイス上のすべてのシートがテニュアの高い既存ユーザーに占有されている可能性があります。`shreds price` で空きシートを確認してください。 +- 決済前に引き出しを行った場合、シートは対象外となります。 + +### トンネルが起動しない + +1. デーモンが実行中か確認: `sudo systemctl status doublezerod` +2. リコンサイラーが有効か確認: `doublezero enable` +3. ファイアウォールルールが設定されているか確認(GRE、BGP、PIM、`doublezero1` 上のシュレッドトラフィック、`doublezero0` 上のポート 44880) +4. 現在のエポックでシートがアクティブか確認: `doublezero-solana shreds list` +5. 接続状態を確認: `doublezero status` + +デーモンのクライアント IP はホストのパブリック IP から自動検出されます — シートコマンドで使用した `--client-ip` と一致しているか確認してください。 + +### エポック警告プロンプト + +エポックの残りが 10% 未満の場合、CLI が警告を表示します。選択肢: + +- シートを即座に取得したい場合は `--accept-partial-epoch` で受け入れる +- フルエポック分のカバレッジを得るために次のエポックまで待つ + +### 「Amount is below the current price」 + +`pay` コマンドは、最低エポック料金(メトロ基本料金 + デバイスプレミアム)に対して金額を検証します。`shreds price` で現在の料金を確認し、金額を増やしてください。 + +### 「Multicast user already exists」 + +別の経路でアクティブなサブスクリプションが既に存在します。まず `doublezero disconnect` で切断してから、`shreds pay` を再試行してください。 \ No newline at end of file diff --git a/docs/Edge Subscriber Connection.ko.md b/docs/Edge Subscriber Connection.ko.md new file mode 100644 index 0000000..b1a2f72 --- /dev/null +++ b/docs/Edge Subscriber Connection.ko.md @@ -0,0 +1,343 @@ +--- +description: DoubleZero 쉬레드 피드를 수신하기 위한 엣지 구독자 설정, 클라이언트 설정 및 GRE, BGP, PIM, 쉬레드 트래픽을 위한 방화벽 규칙 포함. +--- + +# 엣지 구독자 연결 +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 이용약관](https://doublezero.xyz/terms-protocol)에 동의합니다. 데이터는 내부 목적으로만 사용해야 하며 재전송이 금지됩니다(제2조(e) 참조)." + +## 1단계: DoubleZero 설정 + +### 1. 설정 완료 + +[Solana CLI](https://docs.anza.xyz/cli/install)를 설치합니다. + +[설정](setup.md) 안내를 따라 DoubleZero 클라이언트를 설치하고 구성합니다. + +이전에 DoubleZero를 설정한 적이 있다면, `sudo apt update && sudo apt install doublezero-solana` 명령으로 최신 Doublezero-Solana CLI가 설치되어 있는지 확인하세요. + +### 2. 방화벽 구성 + +GRE, BGP, PIM 및 쉬레드 트래픽을 허용합니다. + +**iptables:** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW:** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. 리컨사일러 활성화 + +리컨사일러는 온체인 상태를 모니터링하고 시트가 할당되면 자동으로 터널을 프로비저닝합니다. 기본적으로 활성화되어 있지 않습니다. + +```bash +doublezero enable +``` + +### 4. 서버의 DoubleZero ID 확인 + +DoubleZero ID를 확인합니다. 이 ID는 머신과 DoubleZero 간의 연결을 생성하는 데 사용됩니다. + +```bash +doublezero address +``` + +**출력:** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## 2단계: 지갑 설정 + +### 1. Solana 키페어 생성 + +`doublezero-solana` CLI는 온체인 시트 관리를 위해 표준 Solana 키페어를 사용합니다. 키페어가 없는 경우: + +```bash +solana-keygen new +``` + +이 명령은 `~/.config/solana/id.json`에 파일을 생성합니다. 다른 경로를 사용하려면 `doublezero-solana` 명령에 `--keypair `를 전달하세요. + +지갑 주소 출력: + +```bash +solana address +``` + +### 2. 지갑 충전 + +지갑에 두 가지 토큰이 필요합니다: + +- **SOL** — Solana 트랜잭션 수수료용. 위에서 출력된 지갑 주소로 SOL을 전송하세요. +- **USDC** — 시트 펀딩용. CLI는 메인넷 USDC 민트(`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`)에 대한 지갑의 Associated Token Account(ATA)에서 인출합니다. + +--- + +## 3단계: 시트 구매 + +### 1. 가장 가까운 장치 찾기 + +시트를 구매하기 전에 머신에서 가장 낮은 지연 시간을 가진 장치를 확인합니다: + +```bash +doublezero latency +``` + +가장 낮은 지연 시간 결과에서 장치 코드(예: ``)를 기록하세요. 시트 구매 시 사용됩니다. + +### 2. 가격 확인 + +자금을 투입하기 전에 현재 장치 가격을 확인합니다. 가격은 두 가지 구성 요소로 이루어집니다: **기본 메트로 가격**과 **장치별 프리미엄**. 가격은 각 에포크마다 업데이트됩니다. [여기](https://data.malbeclabs.com/dz/shreds/devices)에서 가격 및 가용성을 확인할 수도 있습니다. + +**모든 장치:** + +```bash +doublezero-solana shreds price +``` + +**특정 장치:** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**메트로 내 모든 장치:** + +```bash +doublezero-solana shreds price --metro +``` + +출력 열: `Device Code`, `Metro Code`, `Metro Name`, `Status`, `Settled Seats`, `Available Seats`, `Base Price (USDC)`, `Premium (USDC)`, `Epoch Price (USDC)`. + +에포크 가격은 해당 장치의 시트당 에포크별 총 비용(기본 + 프리미엄)입니다. `--wide`를 사용하면 전체 공개키를 표시하고, `--json`을 사용하면 JSON 출력을 할 수 있습니다. + +### 3. 시트 구매 + +단일 명령으로 시트를 구매합니다. 이 명령은 시트를 초기화하고, 에스크로에 자금을 입금하고, 할당을 요청합니다: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**매개변수:** + +| 플래그 | 설명 | +|------|-------------| +| `--device ` | 공개키로 대상 장치 지정(`--device-code`와 상호 배타적) | +| `--device-code ` | 사람이 읽을 수 있는 코드로 대상 장치 지정(예: ``) | +| `--client-ip ` | 머신의 공개 IPv4 주소 | +| `--amount ` | 펀딩할 USDC(소수점 형식, 예: `100` = 100 USDC). 최소 에포크 가격을 충족해야 합니다. | +| `--source-token-account ` | 사용자 정의 USDC 소스 계정(기본값: 지갑의 ATA) | +| `--accept-partial-epoch` | 에포크 잔여 경고 건너뛰기(아래 참조) | +| `--fee-payer ` | SOL 트랜잭션 수수료에 다른 지갑 사용 | +| `--dry-run` | 트랜잭션을 실행하지 않고 시뮬레이션 | +| `--with-compute-unit-price ` | 혼잡 시 더 빠른 포함을 위해 컴퓨트 유닛 가격 설정 | + +시트가 할당되면 데몬이 자동으로 GRE 터널을 설정합니다. 다음 명령으로 연결을 확인하세요: + +```bash +doublezero status +``` + +### 에포크 타이밍 + +시트는 Solana 에포크(약 2일)별로 할당됩니다. 결제 시 현재 에포크의 10% 미만이 남아 있으면 CLI에서 시트가 즉시 할당되지만 현재 에포크의 나머지 기간만 커버한다는 경고를 표시합니다. 다음 에포크가 시작되면 에스크로에서 별도의 결제가 차감됩니다. + +!!! info "시트를 잃지 않으려면 한 번에 1 에포크 이상을 충전하는 것이 좋습니다. 현재 에포크의 남은 시간은 [여기](https://explorer.solana.com/)에서 확인할 수 있습니다." + +`--accept-partial-epoch`로 이 경고를 무시할 수 있습니다. + +### 에스크로 잔액 유지 + +!!! warning "정산 시 에스크로 잔액이 에포크 가격 미만이면 시트가 할당되지 않고, 터널이 해제되며, 누적된 재직 기간이 소멸됩니다. 재직 기간은 향후 에포크에 대한 우선순위를 결정하므로, 이를 잃으면 신규 참가자와 동일하게 경쟁하게 됩니다." + +이 계정에 초과 충전하여 여러 에포크를 펀딩할 수 있습니다. 각 정산 시 에스크로에서 1 에포크 가격이 차감되며, 나머지 잔액은 이월됩니다. 예를 들어, 에포크당 가격의 5배를 충전하면 재충전 없이 최대 5 에포크 동안 시트를 유지할 수 있습니다. + +에스크로를 추가 충전하려면 언제든지 `shreds pay`를 다시 실행하세요: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +`Target_IP`는 쉬레드를 수신할 머신의 공개 IPv4 주소여야 합니다. 대상 머신에서 `curl -4 ifconfig.me`와 같은 명령을 실행하여 확인할 수 있습니다. + +### 시트 모니터링 + +이 섹션에서는 CLI를 통해 시트를 조회하는 방법을 설명합니다. [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs)를 사용하여 시트를 모니터링하고 에스크로 계정 관리를 보조할 수도 있습니다. + +활성 시트 및 에스크로 잔액 조회: + +**모든 시트:** + +```bash +doublezero-solana shreds list +``` + +**장치별 필터:** + +```bash +doublezero-solana shreds list --device-code +``` + +**클라이언트 IP별 필터:** + +```bash +doublezero-solana shreds list --client-ip +``` + +**지갑별 필터:** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +출력 열: `Device Code`, `Client IP`, `Tenure`, `Balance (USDC)`, `Est. Epochs Paid`. + +"Est. Epochs Paid" 열은 현재 가격 기준으로 현재 잔액이 몇 에포크를 커버하는지 표시합니다. 가격이 변경되면 이 추정치도 조정됩니다. + +### 자금 인출 + +에스크로를 닫고 남은 USDC를 지갑으로 환불합니다: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +다른 명령과 동일하게 `--device ` 또는 `--device-code `로 장치를 식별할 수 있습니다. + +환불을 다른 토큰 계정으로 보내려면: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "인출하면 시트와 누적된 재직 기간을 잃게 됩니다." + +--- + +## 쉬레드 주소 (IP vs 포트) + +리더 쉬레드와 고스테이크 재전송 쉬레드는 `doublezero1` 인터페이스를 통해 포트 `7733`으로 도착합니다. `doublezero0` 인터페이스는 유니캐스트 트래픽용입니다. 포트 `5765`는 쉬레드 퍼블리셔의 하트비트 모니터이며 — 쉬레드를 포함하지 않습니다. + +쉬레드 소비의 경우, **IP 주소**는 멀티캐스트 스트림을 식별하고 **포트**는 해당 스트림의 UDP 서비스를 식별합니다. +아래 모든 쉬레드 스트림은 `doublezero1`에서 UDP 포트 `7733`을 사용합니다. + +다음 명령으로 멀티캐스트 그룹의 IP를 확인할 수 있습니다: + +```bash +doublezero multicast group list +``` + +### 리더 쉬레드 + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### 루트 쉬레드 + +- `edge-solana-root`: `233.84.178.16:7733` + +### 재전송 쉬레드 + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## GRE 터널 헤더 — XDP + +!!! note "네트워크를 통해 전달되는 쉬레드 트래픽은 GRE로 캡슐화되어 있습니다. 기존 파이프라인(예: XDP 기반 디쉬레더)에 데이터를 공급하기 전에 GRE 헤더를 제거해야 할 수 있습니다." + +--- + +## 도구 및 대시보드 + +### [엣지 스코어보드](https://data.malbeclabs.com/dz/shreds/scoreboard) + +스코어보드는 슬롯 수준 데이터를 사용하여 DoubleZero Edge와 다른 공급자 간의 쉬레드 전달 속도를 실시간으로 비교합니다. 이 대시보드를 사용하여 다른 공급자 대비 Edge 쉬레드의 승률을 확인할 수 있습니다. 리더 쉬레드만의 결과와 전체 피드 비교를 모두 볼 수 있습니다. 또한 지역별로 드릴다운하여 예상 성능을 확인할 수 있습니다. + +### [엣지 퍼블리셔](https://data.malbeclabs.com/dz/shreds/publishers) + +대시보드 왼쪽 상단의 "Publishing Shreds" 지표는 DoubleZero Edge에서 리더 쉬레드를 게시하는 모든 Solana 밸리데이터의 총 스테이크 가중치 비율을 보여줍니다. 네트워크의 각 퍼블리셔에 대한 세부 정보를 확인할 수 있습니다. + +### [엣지 구독자, 장치 및 활동](https://data.malbeclabs.com/dz/shreds/subscribers) + +이 페이지에서 클라이언트 IP로 쉽게 검색하여 구독된 시트를 확인하고 상태를 볼 수 있습니다. 특정 시트 구독을 클릭하여 결제 내역과 활동을 확인할 수 있습니다. [장치](https://data.malbeclabs.com/dz/shreds/devices) 페이지에서 사용 가능한 장치를 확인하고 [활동](https://data.malbeclabs.com/dz/shreds/activity) 페이지에서 모든 최근 활동을 볼 수도 있습니다. + +### 데이터 API 문서 + +데이터 엔드포인트에 대한 프로그래밍 방식 접근은 API 문서를 참조하세요: [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs). + +--- + +## 문제 해결 + +여기에서 다루지 않는 문제가 발생하면, 임시 해결 방법을 시도하기 전에 기존 채널을 통해 문의하세요. 채널이 없는 경우 [Discord](https://discord.gg/U2fEb4Jq)에서 검색하고 필요 시 티켓을 열어주세요. + +### 클라이언트가 최신 버전인지 확인: + +실행: `sudo apt update && sudo apt install doublezero-solana` + +### 에스크로 잔액 부족 + +정산 시 에스크로 잔액이 에포크 가격 미만이면 시트가 할당되지 않고, 터널이 해제되며, 재직 기간이 소멸됩니다. 다음 정산 전에 `shreds pay`로 충전하세요. + +### 결제 후 시트가 할당되지 않음 + +- 에포크 후반에 결제했을 수 있습니다 — 시트는 다음 에포크에 적용됩니다. +- 해당 장치의 모든 시트가 더 높은 재직 기간을 가진 기존 사용자에 의해 점유되었을 수 있습니다. `shreds price`로 사용 가능한 시트를 확인하세요. +- 정산 전에 인출한 경우 시트가 자격을 잃게 됩니다. + +### 터널이 연결되지 않음 + +1. 데몬이 실행 중인지 확인: `sudo systemctl status doublezerod` +2. 리컨사일러가 활성화되어 있는지 확인: `doublezero enable` +3. 방화벽 규칙이 설정되어 있는지 확인(GRE, BGP, PIM, `doublezero1`의 쉬레드 트래픽, `doublezero0`의 포트 44880) +4. 현재 에포크에 시트가 활성 상태인지 확인: `doublezero-solana shreds list` +5. 연결 상태 확인: `doublezero status` + +데몬의 클라이언트 IP는 호스트의 공개 IP에서 자동으로 검색됩니다 — 시트 명령에서 사용한 `--client-ip`와 일치하는지 확인하세요. + +### 에포크 경고 프롬프트 + +에포크의 10% 미만이 남았을 때 CLI에서 경고합니다. 선택 사항: + +- 즉시 시트를 원하면 `--accept-partial-epoch`로 수락 +- 전체 에포크의 커버리지를 위해 다음 에포크를 기다리기 + +### "Amount is below the current price" + +`pay` 명령은 최소 에포크 가격(메트로 기본 + 장치 프리미엄)에 대해 금액을 검증합니다. `shreds price`로 현재 가격을 확인하고 금액을 늘리세요. + +### "Multicast user already exists" + +다른 경로를 통한 활성 구독이 이미 있습니다. 먼저 `doublezero disconnect`로 연결을 해제한 후 `shreds pay`를 다시 시도하세요. \ No newline at end of file diff --git a/docs/Edge Subscriber Connection.pt.md b/docs/Edge Subscriber Connection.pt.md new file mode 100644 index 0000000..cbf4c89 --- /dev/null +++ b/docs/Edge Subscriber Connection.pt.md @@ -0,0 +1,343 @@ +--- +description: Configure um assinante de borda para receber feeds de shreds DoubleZero, incluindo configuração do cliente e regras de firewall para GRE, BGP, PIM e tráfego de shreds. +--- + +# Conexão de Assinante de Borda +!!! warning "Ao conectar-se ao DoubleZero, eu concordo com os [Termos de Uso do DoubleZero](https://doublezero.xyz/terms-protocol). Observe que os dados são apenas para seus fins internos e não podem ser retransmitidos (consulte a Seção 2(e))." + +## Passo 1: Configuração do DoubleZero + +### 1. Concluir a Configuração + +Instale o [Solana CLI](https://docs.anza.xyz/cli/install). + +Siga as instruções de [configuração](setup.md) para instalar e configurar o cliente DoubleZero. + +Se você já configurou o DoubleZero anteriormente, certifique-se de ter a versão mais recente do Doublezero-Solana CLI com `sudo apt update && sudo apt install doublezero-solana` + +### 2. Configurar o Firewall + +Permita tráfego GRE, BGP, PIM e de shreds. + +**iptables:** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW:** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. Habilitar o Reconciliador + +O reconciliador monitora o estado onchain e provisiona túneis automaticamente quando seu assento é alocado. Ele não é habilitado por padrão. + +```bash +doublezero enable +``` + +### 4. Recuperar a Identidade DoubleZero do Servidor + +Verifique sua Identidade DoubleZero. Esta identidade será usada para criar a conexão entre sua máquina e o DoubleZero. + +```bash +doublezero address +``` + +**Saída:** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## Passo 2: Configurar Sua Carteira + +### 1. Criar um Par de Chaves Solana + +O CLI `doublezero-solana` usa um par de chaves Solana padrão para gerenciamento de assentos onchain. Se você não tiver um: + +```bash +solana-keygen new +``` + +Isso grava em `~/.config/solana/id.json`. Para usar um caminho diferente, passe `--keypair ` para qualquer comando `doublezero-solana`. + +Imprima o endereço da sua carteira: + +```bash +solana address +``` + +### 2. Financiar Sua Carteira + +Sua carteira precisa de dois tokens: + +- **SOL** — para taxas de transação Solana. Transfira SOL para o endereço da carteira exibido acima. +- **USDC** — para financiamento do assento. O CLI utiliza a Conta de Token Associada (ATA) da sua carteira para o mint USDC da mainnet (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`). + +--- + +## Passo 3: Comprar um Assento + +### 1. Encontrar o Dispositivo Mais Próximo + +Antes de comprar um assento, identifique o dispositivo com a menor latência a partir da sua máquina: + +```bash +doublezero latency +``` + +Anote o código do dispositivo com o resultado de menor latência (ex.: ``). Você usará isso ao comprar um assento. + +### 2. Verificar Preços + +Consulte os preços atuais dos dispositivos antes de comprometer fundos. Os preços têm dois componentes: um **preço base do metro** e um **prêmio por dispositivo**. Os preços são atualizados a cada época. Você também pode consultar preços e disponibilidade [aqui](https://data.malbeclabs.com/dz/shreds/devices). + +**Todos os dispositivos:** + +```bash +doublezero-solana shreds price +``` + +**Dispositivo específico:** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**Todos os dispositivos em um metro:** + +```bash +doublezero-solana shreds price --metro +``` + +Colunas da saída: `Device Code`, `Metro Code`, `Metro Name`, `Status`, `Settled Seats`, `Available Seats`, `Base Price (USDC)`, `Premium (USDC)`, `Epoch Price (USDC)`. + +O preço da época é o custo total por época para um assento naquele dispositivo (base + prêmio). Use `--wide` para exibir chaves públicas completas, ou `--json` para saída em JSON. + +### 3. Comprar um Assento + +Compre um assento com um único comando. Isso inicializa seu assento, financia o escrow e solicita a alocação: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**Parâmetros:** + +| Flag | Descrição | +|------|-----------| +| `--device ` | Dispositivo alvo por chave pública (mutuamente exclusivo com `--device-code`) | +| `--device-code ` | Dispositivo alvo por código legível (ex.: ``) | +| `--client-ip ` | Endereço IPv4 público da sua máquina | +| `--amount ` | USDC a financiar (formato decimal, ex.: `100` = 100 USDC). Deve atender ao preço mínimo da época. | +| `--source-token-account ` | Conta USDC de origem personalizada (padrão é a ATA da sua carteira) | +| `--accept-partial-epoch` | Ignorar o aviso de época restante (veja abaixo) | +| `--fee-payer ` | Usar uma carteira diferente para taxas de transação SOL | +| `--dry-run` | Simular a transação sem executá-la | +| `--with-compute-unit-price ` | Definir um preço de unidade de computação para inclusão mais rápida durante congestionamento | + +Assim que seu assento for alocado, o daemon estabelece o túnel GRE automaticamente. Verifique sua conexão com: + +```bash +doublezero status +``` + +### Temporização de Época + +Os assentos são alocados por época Solana (~2 dias). Se restar menos de 10% da época atual quando você pagar, o CLI avisa que seu assento será alocado imediatamente, mas cobre apenas o restante da época atual. Um pagamento separado será deduzido do seu escrow quando a próxima época começar. + +!!! info "É aconselhável financiar para mais de 1 época por vez para não perder seu assento. Você pode verificar o tempo restante na época atual [aqui](https://explorer.solana.com/)." + +Você pode ignorar este aviso com `--accept-partial-epoch`. + +### Mantenha Seu Escrow Financiado + +!!! warning "Se o saldo do seu escrow estiver abaixo do preço da época no momento da liquidação, seu assento não será alocado, o túnel será encerrado e você perderá sua antiguidade acumulada. A antiguidade determina sua prioridade para épocas futuras — perdê-la significa que você compete como um novato novamente." + +Você pode sobrefinanciar esta conta para financiar múltiplas épocas. Cada liquidação deduz o preço de uma época do seu escrow, e o saldo restante é transportado para a próxima. Por exemplo, financiar 5x o preço por época mantém seu assento ativo por até 5 épocas sem refinanciamento. + +Para reabastecer seu escrow, execute `shreds pay` novamente a qualquer momento: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +Observe que o `Target_IP` deve ser um endereço IPv4 público na máquina que receberá os shreds. Você pode encontrá-lo executando um comando como `curl -4 ifconfig.me` na máquina de destino. + +### Monitorar Assentos + +Esta seção detalha como visualizar assentos via CLI. Você também pode usar [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs) para monitorar assentos e auxiliar no gerenciamento da sua conta de escrow. + +Visualize seus assentos ativos e saldos de escrow: + +**Todos os seus assentos:** + +```bash +doublezero-solana shreds list +``` + +**Filtrar por dispositivo:** + +```bash +doublezero-solana shreds list --device-code +``` + +**Filtrar por IP do cliente:** + +```bash +doublezero-solana shreds list --client-ip +``` + +**Filtrar por carteira:** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +Colunas da saída: `Device Code`, `Client IP`, `Tenure`, `Balance (USDC)`, `Est. Epochs Paid`. + +A coluna "Est. Epochs Paid" mostra quantas épocas seu saldo atual cobre nos preços atuais. Se os preços mudarem, esta estimativa se ajusta. + +### Retirar Fundos + +Feche seu escrow e reembolse o USDC restante para sua carteira: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +Você pode identificar o dispositivo por `--device ` ou `--device-code `, assim como nos outros comandos. + +Para enviar o reembolso para uma conta de token diferente: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "Retirar significa que você perde seu assento e a antiguidade acumulada." + +--- + +## Endereços de Shred (IP vs Porta) + +Shreds de Líder e Shreds de Retransmissão de alto stake chegarão pela porta `7733`, na interface `doublezero1`. A interface `doublezero0` é para tráfego unicast. A porta `5765` é um monitor de heartbeat dos publicadores de shreds — esta não conterá shreds. + +Para consumo de shreds, o **endereço IP** identifica o fluxo multicast e a **porta** identifica o serviço UDP nesse fluxo. +Todos os fluxos de shreds abaixo usam a porta UDP `7733` em `doublezero1`. + +Você pode examinar os IPs de qualquer grupo multicast com: + +```bash +doublezero multicast group list +``` + +### Shreds de Líder + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### Shreds de Raiz + +- `edge-solana-root`: `233.84.178.16:7733` + +### Shreds de Retransmissão + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## Cabeçalho do Túnel GRE — XDP + +!!! note "O tráfego de shreds entregue pela rede é encapsulado em GRE. Pode ser necessário remover o cabeçalho GRE antes de alimentar os dados no seu pipeline existente (ex.: um deshredder baseado em XDP)." + +--- + +## Ferramentas e Painéis + +### [Placar do Edge](https://data.malbeclabs.com/dz/shreds/scoreboard) + +O Placar compara a velocidade de entrega de shreds entre o DoubleZero Edge e outros provedores, usando dados em nível de slot para comparar o desempenho em tempo real. Use este painel para ver as taxas de vitória dos shreds do Edge em comparação com outros provedores. Você pode visualizar resultados apenas para shreds de líder, além de comparação do feed completo. Você também pode detalhar por região para ver o desempenho esperado. + +### [Publicadores do Edge](https://data.malbeclabs.com/dz/shreds/publishers) + +A métrica "Publishing Shreds" no canto superior esquerdo do painel mostra a porcentagem total de peso de stake de todos os validadores Solana publicando shreds de líder no DoubleZero Edge. Você pode ver detalhes de cada publicador na rede. + +### [Assinantes, Dispositivos e Atividade do Edge](https://data.malbeclabs.com/dz/shreds/subscribers) + +Você pode facilmente pesquisar seu IP de Cliente nesta página para assentos inscritos e visualizar o status. Clique em assinaturas específicas de assentos para visualizar histórico de pagamentos e atividade. Você também pode visualizar dispositivos disponíveis na página [Dispositivos](https://data.malbeclabs.com/dz/shreds/devices) e toda a atividade recente na página [Atividade](https://data.malbeclabs.com/dz/shreds/activity). + +### Documentação da API de Dados + +Para acesso programático aos endpoints de dados, consulte a documentação da API: [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs). + +--- + +## Solução de Problemas + +Se você encontrar um problema não coberto aqui, entre em contato pelo seu canal existente antes de tentar contorná-lo. Se você não tiver um canal, pesquise no [Discord](https://discord.gg/U2fEb4Jq) e abra um ticket se necessário. + +### Certifique-se de que seu Cliente está atualizado: + +Execute: `sudo apt update && sudo apt install doublezero-solana` + +### Saldo de escrow insuficiente + +Se o saldo do seu escrow estiver abaixo do preço da época no momento da liquidação, o assento não é alocado, o túnel é encerrado e a antiguidade é perdida. Recarregue com `shreds pay` antes da próxima liquidação. + +### Assento não alocado após pagamento + +- Você pode ter pago tarde na época — o assento entra em vigor na próxima época. +- Todos os assentos no dispositivo podem estar ocupados por titulares com maior antiguidade. Verifique os assentos disponíveis com `shreds price`. +- Se você retirou antes da liquidação, o assento não era elegível. + +### Túnel não está subindo + +1. Verifique se o daemon está em execução: `sudo systemctl status doublezerod` +2. Verifique se o reconciliador está habilitado: `doublezero enable` +3. Verifique se as regras de firewall estão configuradas (GRE, BGP, PIM, tráfego de shreds em `doublezero1`, porta 44880 em `doublezero0`) +4. Verifique se seu assento está ativo para a época atual: `doublezero-solana shreds list` +5. Verifique o status da sua conexão: `doublezero status` + +O IP do cliente do daemon é descoberto automaticamente a partir do IP público do seu host — verifique se ele corresponde ao `--client-ip` usado nos seus comandos de assento. + +### Aviso de época + +O CLI avisa quando resta menos de 10% da época. Suas opções: + +- Aceitar com `--accept-partial-epoch` se você quiser o assento imediatamente +- Aguardar a próxima época para obter a cobertura de uma época completa + +### "Amount is below the current price" + +O comando `pay` valida seu valor contra o preço mínimo da época (base do metro + prêmio do dispositivo). Use `shreds price` para verificar os preços atuais e aumente seu valor. + +### "Multicast user already exists" + +Você já possui uma assinatura ativa através de um caminho diferente. Desconecte primeiro com `doublezero disconnect`, depois tente `shreds pay` novamente. \ No newline at end of file diff --git a/docs/Edge Subscriber Connection.zh.md b/docs/Edge Subscriber Connection.zh.md new file mode 100644 index 0000000..a699e6d --- /dev/null +++ b/docs/Edge Subscriber Connection.zh.md @@ -0,0 +1,343 @@ +--- +description: 设置边缘订阅者以接收 DoubleZero 分片数据流,包括客户端设置以及 GRE、BGP、PIM 和分片流量的防火墙规则。 +--- + +# 边缘订阅者连接 +!!! warning "连接到 DoubleZero 即表示我同意 [DoubleZero 使用条款](https://doublezero.xyz/terms-protocol)。请注意,数据仅供您内部使用,不得转发(参见第 2(e) 条)。" + +## 步骤 1:DoubleZero 设置 + +### 1. 完成设置 + +安装 [Solana CLI](https://docs.anza.xyz/cli/install)。 + +按照[设置](setup.md)说明安装和配置 DoubleZero 客户端。 + +如果您之前已经设置过 DoubleZero,请确保您拥有最新的 Doublezero-Solana CLI,运行 `sudo apt update && sudo apt install doublezero-solana` + +### 2. 配置防火墙 + +允许 GRE、BGP、PIM 和分片流量。 + +**iptables:** + +```bash +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero1 -p pim -j ACCEPT +sudo iptables -A INPUT -i doublezero1 -p udp --dport 7733 -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +**UFW:** + +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero1 proto pim from any to any +sudo ufw allow in on doublezero1 to any port 7733 proto udp +sudo ufw allow in on doublezero0 to any port 44880 proto udp +``` + +### 3. 启用调节器 + +调节器监控链上状态,并在您的席位被分配时自动配置隧道。默认情况下未启用。 + +```bash +doublezero enable +``` + +### 4. 获取服务器的 DoubleZero 身份 + +查看您的 DoubleZero 身份。此身份将用于创建您的机器与 DoubleZero 之间的连接。 + +```bash +doublezero address +``` + +**输出:** +``` +YourDoubleZeroAddress11111111111111111111111111111 +``` + +--- + +## 步骤 2:设置您的钱包 + +### 1. 创建 Solana 密钥对 + +`doublezero-solana` CLI 使用标准 Solana 密钥对进行链上席位管理。如果您还没有密钥对: + +```bash +solana-keygen new +``` + +这将写入 `~/.config/solana/id.json`。要使用不同的路径,请在任何 `doublezero-solana` 命令中传递 `--keypair `。 + +打印您的钱包地址: + +```bash +solana address +``` + +### 2. 为钱包充值 + +您的钱包需要两种代币: + +- **SOL** — 用于 Solana 交易费用。将 SOL 转账到上面打印的钱包地址。 +- **USDC** — 用于席位充值。CLI 从您钱包的关联代币账户 (ATA) 中提取主网 USDC 铸币 (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`)。 + +--- + +## 步骤 3:购买席位 + +### 1. 找到最近的设备 + +在购买席位之前,找到距离您机器延迟最低的设备: + +```bash +doublezero latency +``` + +记下延迟最低结果中的设备代码(例如 ``)。购买席位时将用到它。 + +### 2. 查看定价 + +在投入资金之前查看当前设备定价。定价由两部分组成:**基础都会区价格**和**每设备溢价**。价格每个纪元更新。您也可以在[这里](https://data.malbeclabs.com/dz/shreds/devices)查看定价和可用性。 + +**所有设备:** + +```bash +doublezero-solana shreds price +``` + +**特定设备:** + +```bash +doublezero-solana shreds price --device-code +doublezero-solana shreds price --device +``` + +**都会区内所有设备:** + +```bash +doublezero-solana shreds price --metro +``` + +输出列:`Device Code`、`Metro Code`、`Metro Name`、`Status`、`Settled Seats`、`Available Seats`、`Base Price (USDC)`、`Premium (USDC)`、`Epoch Price (USDC)`。 + +纪元价格是该设备上每个席位每纪元的总费用(基础 + 溢价)。使用 `--wide` 显示完整公钥,或使用 `--json` 获取 JSON 输出。 + +### 3. 购买席位 + +使用单个命令购买席位。这将初始化您的席位、为托管账户充值并请求分配: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount +``` + +**参数:** + +| 标志 | 描述 | +|------|-------------| +| `--device ` | 通过公钥指定目标设备(与 `--device-code` 互斥) | +| `--device-code ` | 通过人类可读代码指定目标设备(例如 ``) | +| `--client-ip ` | 您机器的公共 IPv4 地址 | +| `--amount ` | 充值的 USDC 金额(十进制格式,例如 `100` = 100 USDC)。必须达到最低纪元价格。 | +| `--source-token-account ` | 自定义 USDC 源账户(默认为您钱包的 ATA) | +| `--accept-partial-epoch` | 跳过纪元剩余时间警告(见下文) | +| `--fee-payer ` | 使用不同的钱包支付 SOL 交易费用 | +| `--dry-run` | 模拟交易而不实际执行 | +| `--with-compute-unit-price ` | 设置计算单元价格以在拥堵时加快交易确认 | + +一旦您的席位被分配,守护进程将自动建立 GRE 隧道。使用以下命令检查您的连接: + +```bash +doublezero status +``` + +### 纪元时间 + +席位按 Solana 纪元(约 2 天)分配。如果在您付款时当前纪元剩余不到 10%,CLI 会警告您的席位将立即分配,但仅覆盖当前纪元的剩余部分。下一个纪元开始时,将从您的托管账户中扣除单独的付款。 + +!!! info "建议一次充值超过 1 个纪元的费用,以免失去席位。您可以在[这里](https://explorer.solana.com/)查看当前纪元的剩余时间。" + +您可以使用 `--accept-partial-epoch` 绕过此警告。 + +### 保持托管账户余额充足 + +!!! warning "如果您的托管账户余额在结算时低于纪元价格,您的席位将不会被分配,隧道将被拆除,您将失去累积的任期。任期决定了您在未来纪元中的优先级——失去任期意味着您将作为新用户重新竞争。" + +您可以超额充值此账户以支付多个纪元。每次结算从您的托管账户中扣除一个纪元的价格,剩余余额将结转。例如,充值 5 倍的每纪元价格可使您的席位在最多 5 个纪元内保持活跃而无需重新充值。 + +要随时追加托管账户余额,再次运行 `shreds pay`: + +```bash +doublezero-solana shreds pay \ + --device-code \ + --client-ip \ + --amount 500 +``` + +请注意,`Target_IP` 必须是接收分片数据的机器上的公共 IPv4 地址。您可以在目标机器上运行类似 `curl -4 ifconfig.me` 的命令来获取。 + +### 监控席位 + +本节详细介绍如何通过 CLI 查看席位。您也可以使用 [https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs) 来监控席位并协助管理您的托管账户。 + +查看您的活跃席位和托管余额: + +**您的所有席位:** + +```bash +doublezero-solana shreds list +``` + +**按设备筛选:** + +```bash +doublezero-solana shreds list --device-code +``` + +**按客户端 IP 筛选:** + +```bash +doublezero-solana shreds list --client-ip +``` + +**按钱包筛选:** + +```bash +doublezero-solana shreds list --withdraw-authority +``` + +输出列:`Device Code`、`Client IP`、`Tenure`、`Balance (USDC)`、`Est. Epochs Paid`。 + +"Est. Epochs Paid" 列显示按当前定价您的余额可以覆盖多少个纪元。如果价格变动,此估算值会相应调整。 + +### 提取资金 + +关闭您的托管账户并将剩余 USDC 退回您的钱包: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip +``` + +您可以通过 `--device ` 或 `--device-code ` 来指定设备,与其他命令相同。 + +要将退款发送到不同的代币账户: + +```bash +doublezero-solana shreds withdraw \ + --device-code \ + --client-ip \ + --refund-token-account +``` + +!!! warning "提取资金意味着您将失去席位和累积的任期。" + +--- + +## 分片地址(IP 与端口) + +领导者分片和高质押转发分片将通过 `doublezero1` 接口的端口 `7733` 到达。`doublezero0` 接口用于单播流量。端口 `5765` 是来自分片发布者的心跳监控——不包含分片数据。 + +对于分片消费,**IP 地址**标识组播流,**端口**标识该流上的 UDP 服务。 +以下所有分片流均使用 `doublezero1` 上的 UDP 端口 `7733`。 + +您可以使用以下命令查看任何组播组的 IP: + +```bash +doublezero multicast group list +``` + +### 领导者分片 + +- `edge-solana-shreds`: `233.84.178.1:7733` + +### 根分片 + +- `edge-solana-root`: `233.84.178.16:7733` + +### 转发分片 + +- `edge-solana-retrans-eu`: `233.84.178.12:7733` +- `edge-solana-retrans-apac`: `233.84.178.13:7733` +- `edge-solana-retrans-amer`: `233.84.178.14:7733` + + +## GRE 隧道头部 — XDP + +!!! note "通过网络传输的分片流量是 GRE 封装的。在将数据送入现有管道(例如基于 XDP 的反分片器)之前,您可能需要剥离 GRE 头部。" + +--- + +## 工具和仪表板 + +### [边缘排行榜](https://data.malbeclabs.com/dz/shreds/scoreboard) + +排行榜使用插槽级数据对 DoubleZero Edge 和其他提供商的分片传输速度进行基准测试,实时比较性能。使用此仪表板查看 Edge 分片相对于其他提供商的胜率。您可以查看仅限领导者分片的结果,以及完整数据流对比。您还可以按区域深入查看预期性能。 + +### [边缘发布者](https://data.malbeclabs.com/dz/shreds/publishers) + +仪表板左上角的"Publishing Shreds"指标显示在 DoubleZero Edge 上发布领导者分片的所有 Solana 验证者的总质押权重百分比。您可以查看网络上每个发布者的详细信息。 + +### [边缘订阅者、设备和活动](https://data.malbeclabs.com/dz/shreds/subscribers) + +您可以在此页面上轻松搜索您的客户端 IP 以查看已订阅的席位和状态。点击特定席位订阅可查看付款历史和活动记录。您还可以在[设备](https://data.malbeclabs.com/dz/shreds/devices)页面查看可用设备,在[活动](https://data.malbeclabs.com/dz/shreds/activity)页面查看所有最近的活动。 + +### 数据 API 文档 + +如需以编程方式访问数据端点,请参阅 API 文档:[https://data.malbeclabs.com/api/v1/docs](https://data.malbeclabs.com/api/v1/docs)。 + +--- + +## 故障排除 + +如果您遇到此处未涵盖的问题,请在采取变通方案之前先通过现有渠道联系我们。如果您没有沟通渠道,请在 [Discord](https://discord.gg/U2fEb4Jq) 上搜索并在需要时提交工单。 + +### 确保您的客户端是最新版本: + +运行:`sudo apt update && sudo apt install doublezero-solana` + +### 托管余额不足 + +如果您的托管账户余额在结算时低于纪元价格,席位将不会被分配,隧道将被拆除,任期将丢失。请在下次结算前使用 `shreds pay` 充值。 + +### 付款后席位未分配 + +- 您可能在纪元后期付款——席位将在下一个纪元生效。 +- 该设备上的所有席位可能已被任期更高的现有用户占据。使用 `shreds price` 检查可用席位。 +- 如果您在结算前提取了资金,则席位不符合分配条件。 + +### 隧道未建立 + +1. 验证守护进程正在运行:`sudo systemctl status doublezerod` +2. 验证调节器已启用:`doublezero enable` +3. 验证防火墙规则已到位(GRE、BGP、PIM、`doublezero1` 上的分片流量、`doublezero0` 上的端口 44880) +4. 验证您的席位在当前纪元处于活跃状态:`doublezero-solana shreds list` +5. 检查您的连接状态:`doublezero status` + +守护进程的客户端 IP 会从您主机的公共 IP 自动发现——请验证它与您在席位命令中使用的 `--client-ip` 一致。 + +### 纪元警告提示 + +当纪元剩余不到 10% 时,CLI 会发出警告。您的选择: + +- 如果您想立即获得席位,使用 `--accept-partial-epoch` 接受 +- 等待下一个纪元以获得完整纪元的覆盖 + +### "金额低于当前价格" + +`pay` 命令会根据最低纪元价格(都会区基础价 + 设备溢价)验证您的金额。使用 `shreds price` 检查当前定价并增加您的金额。 + +### "组播用户已存在" + +您已经通过不同路径拥有一个活跃订阅。请先使用 `doublezero disconnect` 断开连接,然后重试 `shreds pay`。 \ No newline at end of file