diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index a856a5f..4eb9a4b 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/setup-python@v5 with: python-version: 3.12 - - run: pip install mkdocs-material + - run: pip install mkdocs-material mkdocs-static-i18n - run: mkdocs build - run: cd /home/runner/work/docs/docs/site && tar --dereference -cvf "/home/runner/work/_temp/artifact.tar" . - uses: actions/upload-artifact@v4 diff --git a/.github/workflows/translate.yml b/.github/workflows/translate.yml new file mode 100644 index 0000000..9cf3071 --- /dev/null +++ b/.github/workflows/translate.yml @@ -0,0 +1,59 @@ +name: Auto-translate docs + +on: + push: + branches: [main] + paths: + - 'docs/**.md' + +jobs: + translate: + runs-on: ubuntu-latest + # Prevent infinite loop: skip when the bot itself pushes translations + if: github.event.head_commit.author.name != 'github-actions[bot]' + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - run: pip install anthropic + + - name: Find changed source docs + id: changed + run: | + BASE=$(git rev-parse HEAD~1 2>/dev/null || git hash-object -t tree /dev/null) + # Only source .md files — exclude already-translated ones (e.g. index.es.md) + CHANGED=$(git diff --name-only "$BASE" HEAD -- docs/ \ + | grep '\.md$' \ + | grep -vE '\.[a-z]{2,3}\.md$' \ + || true) + echo "Source files changed:" + echo "$CHANGED" + { + echo "files<> "$GITHUB_OUTPUT" + + - name: Translate + if: steps.changed.outputs.files != '' + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + CHANGED_FILES: ${{ steps.changed.outputs.files }} + LANGUAGES: "zh,ja,ko,pt,es,fr,it" + run: python scripts/translate.py + + - name: Commit translations + if: steps.changed.outputs.files != '' + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add docs/ + git diff --cached --quiet || git commit -m "chore: auto-translate docs" + git push diff --git a/README.md b/README.md index b9d0653..ac2fa21 100644 --- a/README.md +++ b/README.md @@ -1 +1,15 @@ -# docs-demo \ No newline at end of file +# Malbec Labs Docs + +## Local development + +Install the required plugin so `mkdocs serve` works: + +```bash +pip install mkdocs-static-i18n +``` + +Then run: + +```bash +mkdocs serve +``` \ No newline at end of file diff --git a/docs/DZ Mainnet-beta Connection.es.md b/docs/DZ Mainnet-beta Connection.es.md new file mode 100644 index 0000000..4934243 --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.es.md @@ -0,0 +1,262 @@ +# Conexión de Validador a Mainnet-Beta en modo IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Servicio de DoubleZero](https://doublezero.xyz/terms-protocol)" + + + +### Conectando a Mainnet-Beta en modo IBRL + +!!! Note inline end + El modo IBRL no requiere reiniciar los clientes de validadores, ya que usa su dirección IP pública existente. + +Los Validadores Mainnet de Solana completarán la conexión a DoubleZero Mainnet-beta, que se detalla en esta página. + +Cada validador Solana tiene su propio **keypair de identidad**; de él se extrae la clave pública conocida como el **node ID**. Esta es la huella digital única del validador en la red Solana. + +Con el DoubleZeroID y el node ID identificados, demostrará la propiedad de su máquina. Esto se hace creando un mensaje que incluye el DoubleZeroID firmado con la clave de identidad del validador. La firma criptográfica resultante sirve como prueba verificable de que controla el validador. + +Finalmente, enviará una **solicitud de conexión a DoubleZero**. Esta solicitud comunica: *"Aquí está mi identidad, aquí está la prueba de propiedad y aquí está cómo pretendo conectarme."* DoubleZero valida esta información, acepta la prueba y provisiona acceso a la red para el validador en DoubleZero. + +Esta guía permite que 1 Validador Primario se registre a sí mismo, y hasta 3 máquinas de respaldo/failover al mismo tiempo. + +## Requisitos Previos + +- CLI de Solana instalada y en $PATH +- Para validadores: Permiso para acceder al archivo keypair de identidad del validador (por ejemplo, validator-keypair.json) bajo el usuario sol +- Para validadores: Verificar que la clave de identidad del validador Solana que se conecta tiene al menos 1 SOL +- Las reglas del firewall permiten conexiones salientes para DoubleZero y Solana RPC según sea necesario, incluyendo GRE (ip proto 47) y BGP (169.254.0.0/16 en tcp/179) + +!!! info + El ID del Validador se verificará contra el gossip de Solana para determinar la IP objetivo. La IP objetivo y el ID DoubleZero se utilizarán luego para abrir un túnel GRE entre su máquina y el Dispositivo DoubleZero objetivo. + + Considere: En el caso en que tenga un ID junk y un ID Primario en la misma IP, solo el ID Primario se usará en el registro de la máquina. Esto se debe a que el ID junk no aparecerá en el gossip y, por lo tanto, no puede usarse para verificar la IP de la máquina objetivo. + +## 1. Configuración del Entorno + +Siga las instrucciones de [configuración](setup.md) antes de continuar. + +El último paso en la configuración fue desconectarse de la red. Esto es para asegurar que solo un túnel esté abierto en su máquina hacia DoubleZero, y que ese túnel esté en la red correcta. + +
+ +Para configurar el CLI DoubleZero (`doublezero`) y el daemon (`doublezerod`) para conectarse a **DoubleZero mainnet-beta**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Debería ver la siguiente salida: +` +✅ doublezerod configured for environment mainnet-beta +` + +Después de aproximadamente 30 segundos verá los dispositivos DoubleZero disponibles: + +```bash +doublezero latency +``` + +
+ +## 2. Abrir el puerto 44880 + +Los usuarios necesitan abrir el puerto 44880 para utilizar algunas [funciones de enrutamiento](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Para abrir el puerto 44880 puede actualizar IP tables de la siguiente manera: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +note los flags `-i doublezero0`, `-o doublezero0` que restringen esta regla únicamente a la interfaz DoubleZero + +O UFW de la siguiente manera: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +note los flags `in on doublezero0`, `out on doublezero0` que restringen esta regla únicamente a la interfaz DoubleZero + +## 3. Atestar la Propiedad del Validador + +
+ +Con su Entorno DoubleZero configurado, es hora de atestar la Propiedad de su Validador. + +El ID DoubleZero que creó en la [configuración](setup.md) de su validador primario debe usarse en todas las máquinas de respaldo. + +El ID en su máquina primaria se puede encontrar con `doublezero address`. El mismo ID debe estar en `~/.config/doublezero/id.json` en todas las máquinas del clúster. + +Para lograr esto, primero verificará que la máquina desde la que ejecuta los comandos sea su **Validador Primario** con: + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Esto verifica que el validador esté registrado en el gossip y aparezca en el cronograma de líderes. + +Salida esperada: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + El mismo flujo de trabajo se usa para una o muchas máquinas. + Para registrar una máquina, excluya los argumentos "--backup-validator-ids" o "backup_ids=" de cualquier comando en esta página. + +Ahora, en todas las máquinas de respaldo en las que planea ejecutar su **Validador Primario**, ejecute lo siguiente: +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Esta salida es esperada. El nodo de respaldo no puede estar en el cronograma de líderes en el momento de la creación del pase. + +
+ + +
+ +### Preparar la Conexión + +Ejecute el siguiente comando en la máquina del **Validador Primario**. Esta es la máquina en la que tiene stake activo, que está en el cronograma de líderes con su ID de validador primario en el gossip de Solana en la máquina desde la que ejecuta el comando: + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + +Note la salida al final de este comando. Es la estructura para el siguiente paso. + +
+ +## 4. Generar Firma + +
+ +Al final del último paso, recibimos una salida preformateada para `solana sign-offchain-message`. + +Desde la salida anterior ejecutaremos este comando en la máquina del **Validador Primario**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Salida:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Iniciar una Solicitud de Conexión en DoubleZero + +
+ +Use el comando `request-validator-access` para crear una cuenta en Solana para la solicitud de conexión. El agente Sentinel de DoubleZero detecta la nueva cuenta, valida su identidad y firma, y crea el pase de acceso en DoubleZero para que el servidor pueda establecer una conexión. + +Use el node ID, el DoubleZeroID y la firma. + +!!! note inline end + En este ejemplo usamos `-k /home/user/.config/solana/id.json` para encontrar la Identidad del validador. Use la ubicación apropiada para su despliegue local. + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Salida:** + +Esta salida puede usarse para ver la transacción en un explorador Solana. Asegúrese de cambiar el explorador a mainnet. Esta verificación es opcional. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +Si tiene éxito, DoubleZero registrará el primario con sus respaldos. Ahora puede hacer failover entre las IPs registradas en el pase de acceso. DoubleZero mantendrá la conectividad automáticamente al cambiar a nodos de respaldo registrados de esta manera. + +
+ +## 6. Conectarse en modo IBRL + +
+ +En el servidor, con el usuario que se conectará a DoubleZero, ejecute el comando `connect` para establecer la conexión a DoubleZero. + +``` +doublezero connect ibrl +``` + +Debería ver una salida que indique el aprovisionamiento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Espere un minuto para que el túnel GRE termine de configurarse. Hasta que el túnel GRE esté configurado, su salida de estado puede devolver "down" o "Unknown". + +Verifique su conexión: + +```bash +doublezero status +``` + +**Salida:** +!!! note inline end + Examine esta salida. Note que `Tunnel src` y `DoubleZero IP` coinciden con la dirección IPv4 pública de su máquina. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +Un estado de `up` significa que está conectado correctamente. + +Podrá ver las rutas propagadas por otros usuarios en DoubleZero ejecutando: + +``` +ip route +``` + +
+ +### Siguiente Paso: Publicar Shreds mediante Multicast + +Si ha completado esta configuración y planea publicar shreds mediante multicast, continúe a la [siguiente página](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Mainnet-beta Connection.fr.md b/docs/DZ Mainnet-beta Connection.fr.md new file mode 100644 index 0000000..e950441 --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.fr.md @@ -0,0 +1,340 @@ +# Connexion Validateur Mainnet-Beta en Mode IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'Utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" + + + +### Connexion à Mainnet-Beta en Mode IBRL + +!!! Note inline end + Le mode IBRL ne nécessite pas de redémarrer les clients validateurs, car il utilise votre adresse IP publique existante. + +Les validateurs Solana Mainnet complèteront la connexion au Mainnet-beta DoubleZero, qui est décrite sur cette page. + +Chaque validateur Solana possède sa propre **keypair d'identité** ; à partir de celle-ci, extrayez la clé publique connue sous le nom d'**ID de nœud**. Il s'agit de l'empreinte unique du validateur sur le réseau Solana. + +Avec le DoubleZeroID et l'ID de nœud identifiés, vous prouverez la propriété de votre machine. Cela se fait en créant un message incluant le DoubleZeroID signé avec la clé d'identité du validateur. La signature cryptographique résultante sert de preuve vérifiable que vous contrôlez le validateur. + +Enfin, vous soumettrez une **demande de connexion à DoubleZero**. Cette demande communique : *« Voici mon identité, voici la preuve de propriété, et voici comment j'entends me connecter. »* DoubleZero valide ces informations, accepte la preuve et provisionne l'accès réseau pour le validateur sur DoubleZero. + +Ce guide permet à 1 Validateur Principal de s'enregistrer lui-même, et jusqu'à 3 machines de sauvegarde/basculement en même temps. + +## Prérequis + +- CLI Solana installée et dans $PATH +- Pour les validateurs : Permission d'accéder au fichier keypair d'identité du validateur (p. ex., validator-keypair.json) sous l'utilisateur sol +- Pour les validateurs : Vérifier que la clé d'identité du validateur Solana connecté possède au moins 1 SOL +- Les règles de pare-feu permettent les connexions sortantes pour DoubleZero et Solana RPC selon les besoins, y compris GRE (ip proto 47) et BGP (169.254.0.0/16 sur tcp/179) + +!!! info + L'ID Validateur sera vérifié par rapport au gossip Solana pour déterminer l'IP cible. L'IP cible et le DoubleZero ID seront ensuite utilisés lors de l'ouverture d'un tunnel GRE entre votre machine et le DoubleZero Device cible. + + À considérer : Dans le cas où vous avez un ID factice et un ID principal sur la même IP, seul l'ID principal sera utilisé lors de l'enregistrement de la machine. En effet, l'ID factice n'apparaîtra pas dans le gossip et ne pourra donc pas être utilisé pour vérifier l'IP de la machine cible. + +## 1. Configuration de l'Environnement + +Veuillez suivre les instructions de [configuration](setup.md) avant de procéder. + +La dernière étape de la configuration consistait à se déconnecter du réseau. Cela garantit qu'un seul tunnel est ouvert sur votre machine vers DoubleZero, et que ce tunnel est sur le bon réseau. + +
+ +Pour configurer la CLI Client DoubleZero (`doublezero`) et le daemon (`doublezerod`) afin de se connecter au **mainnet-beta DoubleZero** : +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Vous devriez voir la sortie suivante : +` +✅ doublezerod configured for environment mainnet-beta +` + +Après environ 30 secondes, vous verrez les dispositifs DoubleZero disponibles : + +```bash +doublezero latency +``` +Exemple de sortie (Mainnet-Beta) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +La sortie du testnet sera identique dans sa structure, mais avec moins de dispositifs. + + +
+ +## 2. Ouvrir le port 44880 + +Les utilisateurs doivent ouvrir le port 44880 pour utiliser certaines [fonctionnalités de routage](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Pour ouvrir le port 44880, vous pouvez mettre à jour les tables IP comme suit : + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +notez les flags `-i doublezero0`, `-o doublezero0` qui restreignent cette règle uniquement à l'interface DoubleZero + +Ou UFW comme suit : + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +notez les flags `in on doublezero0`, `out on doublezero0` qui restreignent cette règle uniquement à l'interface DoubleZero + +## 3. Attester la Propriété du Validateur + +
+ +Avec votre environnement DoubleZero configuré, il est maintenant temps d'attester la propriété de votre Validateur. + +Le DoubleZero ID que vous avez créé lors de la [configuration](setup.md) de votre validateur principal doit être utilisé sur toutes les machines de sauvegarde. + +L'ID sur votre machine principale peut être trouvé avec `doublezero address`. Le même ID doit être dans `~/.config/doublezero/id.json` sur toutes les machines du cluster. + +Pour accomplir cela, vous vérifierez d'abord que la machine sur laquelle vous exécutez les commandes est votre **Validateur Principal** avec : + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Cela vérifie que le validateur est enregistré dans le gossip et apparaît dans le planning des leaders. + +Sortie attendue : + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + Le même workflow est utilisé pour une ou plusieurs machines. + Pour enregistrer une seule machine, excluez les arguments "--backup-validator-ids" ou "backup_ids=" de toutes les commandes de cette page. + +Maintenant, sur toutes les machines de sauvegarde sur lesquelles vous avez l'intention d'exécuter votre **Validateur Principal**, exécutez ce qui suit : +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Sortie attendue : + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +Cette sortie est attendue. Le nœud de sauvegarde ne peut pas être dans le planning des leaders au moment de la création du pass. + +Vous allez maintenant exécuter cette commande sur **toutes les machines de sauvegarde** sur lesquelles vous prévoyez d'utiliser le compte de vote et l'identité de votre **Validateur Principal**. + +
+ + +
+ +### Préparer la Connexion + +Exécutez la commande suivante sur la machine du **Validateur Principal**. C'est la machine sur laquelle vous avez une mise en jeu active, qui est dans le planning des leaders avec votre ID de validateur principal dans le gossip Solana sur la machine depuis laquelle vous exécutez la commande : + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +Exemple de sortie : + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: mainnet-beta + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +Notez la sortie à la fin de cette commande. C'est la structure pour l'étape suivante. + +
+ +## 4. Générer la Signature + +
+ +À la fin de la dernière étape, nous avons reçu une sortie pré-formatée pour `solana sign-offchain-message` + +À partir de la sortie ci-dessus, nous allons exécuter cette commande sur la machine du **Validateur Principal**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Sortie :** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Initier une Demande de Connexion dans DoubleZero + +
+ +Utilisez la commande `request-validator-access` pour créer un compte sur Solana pour la demande de connexion. L'agent DoubleZero Sentinel détecte le nouveau compte, valide son identité et sa signature, et crée le pass d'accès dans DoubleZero pour que le serveur puisse établir une connexion. + + +Utilisez l'ID de nœud, le DoubleZeroID et la signature. + +!!! note inline end + Dans cet exemple, nous utilisons `-k /home/user/.config/solana/id.json` pour trouver l'identité du validateur. Utilisez l'emplacement approprié pour votre déploiement local. + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Sortie :** + +Cette sortie peut être utilisée pour voir la transaction sur un explorateur Solana. Assurez-vous de changer l'explorateur sur mainnet. Cette vérification est optionnelle. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +En cas de succès, DoubleZero enregistrera le principal avec ses sauvegardes. Vous pouvez maintenant basculer entre les IP enregistrées dans le pass d'accès. DoubleZero maintiendra automatiquement la connectivité lors du basculement vers les nœuds de sauvegarde enregistrés de cette manière. + +
+ +## 6. Se Connecter en Mode IBRL + +
+ +Sur le serveur, avec l'utilisateur qui se connectera à DoubleZero, exécutez la commande `connect` pour établir la connexion à DoubleZero. + +``` +doublezero connect ibrl +``` + +Vous devriez voir une sortie indiquant le provisionnement, telle que : + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendez une minute que le tunnel GRE finisse de s'établir. Jusqu'à ce que le tunnel GRE soit configuré, votre sortie de statut peut indiquer "down" ou "Unknown" + +Vérifiez votre connexion : + +```bash +doublezero status +``` + +**Sortie :** +!!! note inline end + Examinez cette sortie. Notez que le `Tunnel src` et le `DoubleZero IP` correspondent à l'adresse IPv4 publique de votre machine. + + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +Un statut `up` signifie que vous êtes connecté avec succès. + +Vous pourrez voir les routes propagées par d'autres utilisateurs sur DoubleZero en exécutant : + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Prochaine Étape : Publication de Shreds via Multicast + +Si vous avez terminé cette configuration et prévoyez de publier des shreds via multicast, passez à la [page suivante](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Mainnet-beta Connection.it.md b/docs/DZ Mainnet-beta Connection.it.md new file mode 100644 index 0000000..6d204d8 --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.it.md @@ -0,0 +1,339 @@ +# Connessione Validatore Mainnet-Beta in Modalità IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Connettendomi a DoubleZero accetto i [Termini di Servizio DoubleZero](https://doublezero.xyz/terms-protocol)" + + + +### Connessione a Mainnet-Beta in Modalità IBRL + +!!! Note inline end + La modalità IBRL non richiede il riavvio dei client validatori, perché utilizza il tuo indirizzo IP pubblico esistente. + +I validatori Solana Mainnet completeranno la connessione a DoubleZero Mainnet-beta, che è dettagliata su questa pagina. + +Ogni validatore Solana ha il proprio **keypair di identità**; da questo, estrai la chiave pubblica nota come **node ID**. Questa è l'impronta digitale univoca del validatore sulla rete Solana. + +Con il DoubleZeroID e il node ID identificati, dimostrerai la proprietà della tua macchina. Questo viene fatto creando un messaggio che include il DoubleZeroID firmato con la chiave di identità del validatore. La firma crittografica risultante serve come prova verificabile che controlli il validatore. + +Infine, invierai una **richiesta di connessione a DoubleZero**. Questa richiesta comunica: *"Ecco la mia identità, ecco la prova di proprietà, ed ecco come intendo connettermi."* DoubleZero valida queste informazioni, accetta la prova e fornisce l'accesso alla rete per il validatore su DoubleZero. + +Questa guida consente a 1 Validatore Primario di registrarsi, e fino a 3 macchine di backup/failover contemporaneamente. + +## Prerequisiti + +- Solana CLI installata e nel $PATH +- Per i validatori: Permesso di accesso al file keypair di identità del validatore (es. validator-keypair.json) sotto l'utente sol +- Per i validatori: Verifica che la chiave Identity del validatore Solana che si connette abbia almeno 1 SOL +- Le regole firewall permettono le connessioni in uscita per DoubleZero e Solana RPC come necessario, inclusi GRE (ip proto 47) e BGP (169.254.0.0/16 su tcp/179) + +!!! info + L'ID Validatore verrà verificato con Solana gossip per determinare l'IP target. L'IP target e il DoubleZero ID verranno poi utilizzati per aprire un tunnel GRE tra la tua macchina e il DoubleZero Device target. + + Considera: Nel caso in cui tu abbia un ID junk e un ID Primario allo stesso IP, solo l'ID Primario verrà usato nella registrazione della macchina. Questo perché l'ID junk non apparirà nel gossip, e quindi non può essere usato per verificare l'IP della macchina target. + +## 1. Configurazione dell'Ambiente + +Segui le istruzioni di [setup](setup.md) prima di procedere. + +L'ultimo passo del setup era disconnettersi dalla rete. Questo serve a garantire che sia aperto solo un tunnel sulla tua macchina verso DoubleZero, e che quel tunnel sia sulla rete corretta. + +
+ +Per configurare la CLI DoubleZero Client (`doublezero`) e il daemon (`doublezerod`) per connettersi al **mainnet-beta DoubleZero**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Dovresti vedere il seguente output: +` +✅ doublezerod configured for environment mainnet-beta +` + +Dopo circa 30 secondi vedrai i dispositivi DoubleZero disponibili: + +```bash +doublezero latency +``` +Esempio di output (Mainnet-Beta) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +L'output del Testnet sarà identico nella struttura, ma con meno dispositivi. + + +
+ +## 2. Apri la porta 44880 + +Gli utenti devono aprire la porta 44880 per utilizzare alcune [funzionalità di routing](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Per aprire la porta 44880 puoi aggiornare le IP tables come: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +nota i flag `-i doublezero0`, `-o doublezero0` che limitano questa regola solo all'interfaccia DoubleZero + +O UFW come: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +nota i flag `in on doublezero0`, `out on doublezero0` che limitano questa regola solo all'interfaccia DoubleZero + +## 3. Attesta la Proprietà del Validatore + +
+ +Con il tuo ambiente DoubleZero impostato, è ora il momento di attestare la proprietà del tuo Validatore. + +Il DoubleZero ID creato nel [setup](setup.md) del tuo validatore primario deve essere utilizzato su tutte le macchine di backup. + +L'ID sulla tua macchina primaria può essere trovato con `doublezero address`. Lo stesso ID deve essere in `~/.config/doublezero/id.json` su tutte le macchine del cluster. + +Per fare questo verificherai prima che la macchina da cui stai eseguendo i comandi sia il tuo **Validatore Primario** con: + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Questo verifica che il validatore sia registrato nel gossip e appaia nel programma leader. + +Output atteso: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + Lo stesso flusso di lavoro viene utilizzato per una o più macchine. + Per registrare una macchina, escludi gli argomenti "--backup-validator-ids" o "backup_ids=" da qualsiasi comando in questa pagina. + +Ora, su tutte le macchine di backup su cui intendi eseguire il tuo **Validatore Primario**, esegui il seguente comando: +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Output atteso: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +Questo output è atteso. Il nodo di backup non può essere nel programma leader al momento della creazione del pass. + +Eseguirai ora questo comando su **tutte le macchine di backup** su cui intendi utilizzare l'account di voto e l'identità del tuo **Validatore Primario**. + +
+ + +
+ +### Prepara la Connessione + +Esegui il seguente comando sulla macchina del **Validatore Primario**. Questa è la macchina su cui hai stake attivo, che è nel programma leader con il tuo ID validatore primario nel gossip Solana sulla macchina da cui stai eseguendo il comando: + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +Esempio di output: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: mainnet-beta + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +Nota l'output alla fine di questo comando. È la struttura per il passo successivo. + +
+ +## 4. Genera la Firma + +
+ +Alla fine dell'ultimo passo, abbiamo ricevuto un output pre-formattato per `solana sign-offchain-message` + +Dall'output sopra eseguiremo questo comando sulla macchina del **Validatore Primario**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Output:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Avvia una Richiesta di Connessione in DoubleZero + +
+ +Usa il comando `request-validator-access` per creare un account su Solana per la richiesta di connessione. L'agente DoubleZero Sentinel rileva il nuovo account, valida la sua identità e firma, e crea il pass di accesso in DoubleZero in modo che il server possa stabilire una connessione. + + +Usa il node ID, il DoubleZeroID e la firma. + +!!! note inline end + In questo esempio usiamo `-k /home/user/.config/solana/id.json` per trovare l'Identità del validatore. Usa la posizione appropriata per il tuo deployment locale. + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Output:** + +Questo output può essere usato per vedere la transazione su un explorer Solana. Assicurati di cambiare l'explorer su mainnet. Questa verifica è facoltativa. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +Se ha successo, DoubleZero registrerà il primario con i suoi backup. Ora puoi fare failover tra gli IP registrati nel pass di accesso. DoubleZero manterrà automaticamente la connettività quando passi ai nodi di backup registrati in questo modo. + +
+ +## 6. Connettiti in Modalità IBRL + +
+ +Sul server, con l'utente che si connetterà a DoubleZero, esegui il comando `connect` per stabilire la connessione a DoubleZero. + +``` +doublezero connect ibrl +``` + +Dovresti vedere un output che indica il provisioning, come: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendi un minuto per il completamento del tunnel GRE. Finché il tunnel GRE non è completato, l'output dello stato potrebbe restituire "down" o "Unknown" + +Verifica la tua connessione: + +```bash +doublezero status +``` + +**Output:** +!!! note inline end + Esamina questo output. Nota che il `Tunnel src` e il `DoubleZero IP` corrispondono all'indirizzo IPv4 pubblico sulla tua macchina. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +Uno stato `up` significa che sei connesso con successo. + +Potrai visualizzare le route propagate da altri utenti su DoubleZero eseguendo: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Passo Successivo: Pubblicazione degli Shred via Multicast + +Se hai completato questa configurazione e prevedi di pubblicare shred via multicast, procedi alla [pagina successiva](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Mainnet-beta Connection.ja.md b/docs/DZ Mainnet-beta Connection.ja.md new file mode 100644 index 0000000..eb7b275 --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.ja.md @@ -0,0 +1,338 @@ +# IBRLモードでのバリデーターメインネットベータ接続 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZeroに接続することで、[DoubleZeroサービス利用規約](https://doublezero.xyz/terms-protocol)に同意します" + + + +### IBRLモードでのメインネットベータ接続 + +!!! Note inline end + IBRLモードは既存のパブリックIPアドレスを使用するため、バリデータークライアントの再起動が不要です。 + +SolanaメインネットバリデーターはDoubleZeroメインネットベータへの接続を完了します。詳細はこのページに記載されています。 + +各Solanaバリデーターには独自の**アイデンティティキーペア**があります。そこから**ノードID**として知られる公開鍵を抽出します。これはSolanaネットワーク上のバリデーターの一意のフィンガープリントです。 + +DoubleZeroIDとノードIDが特定されると、マシンの所有権を証明します。これは、DoubleZeroIDを含むメッセージをバリデーターのアイデンティティキーで署名することによって行われます。生成された暗号署名は、バリデーターを制御していることの検証可能な証明として機能します。 + +最後に、**DoubleZeroへの接続リクエストを送信**します。このリクエストは「*こちらが私のアイデンティティ、こちらが所有権の証明、そしてこちらが接続方法です。*」というメッセージを伝えます。DoubleZeroはこの情報を検証し、証明を受け入れ、DoubleZero上のバリデーターのネットワークアクセスをプロビジョニングします。 + +このガイドでは、1台のプライマリバリデーターが自身を登録し、同時に最大3台のバックアップ/フェイルオーバーマシンを登録できます。 + +## 前提条件 + +- Solana CLIがインストールされ、$PATHに設定されていること +- バリデーターの場合:solユーザー下のバリデーターアイデンティティキーペアファイル(例:validator-keypair.json)にアクセスする権限 +- バリデーターの場合:接続するSolanaバリデーターのアイデンティティキーに少なくとも1 SOLがあることを確認 +- ファイアウォールルールがDoubleZeroとSolana RPCのアウトバウンド接続を許可していること(GRE(ipプロト47)とBGP(169.254.0.0/16のtcp/179)を含む) + +!!! info + バリデーターIDはSolanaゴシップに対して確認され、ターゲットIPが決定されます。ターゲットIPとDoubleZero IDは、マシンとターゲットDoubleZeroデバイス間のGREトンネルを開く際に使用されます。 + + 注意:同じIPにジャンクIDとプライマリIDがある場合、マシンの登録にはプライマリIDのみが使用されます。これはジャンクIDがゴシップに表示されず、ターゲットマシンのIPを確認するために使用できないためです。 + +## 1. 環境設定 + +続行する前に[セットアップ](setup.md)手順に従ってください。 + +セットアップの最後のステップはネットワークから切断することでした。これにより、マシン上のDoubleZeroへのトンネルが1つだけ開いており、そのトンネルが正しいネットワーク上にあることを確認します。 + +
+ +DoubleZeroクライアントCLI(`doublezero`)とデーモン(`doublezerod`)を**DoubleZeroメインネットベータ**に接続するように設定するには: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +次の出力が表示されるはずです: +` +✅ doublezerod configured for environment mainnet-beta +` + +約30秒後に利用可能なDoubleZeroデバイスが表示されます: + +```bash +doublezero latency +``` +メインネットベータの出力例: +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +テストネットの出力は構造が同じですが、デバイス数が少なくなります。 + +
+ +## 2. ポート44880を開く + +一部の[ルーティング機能](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md)を利用するには、ユーザーはポート44880を開く必要があります。 + +ポート44880を開くには、例えば次のようにIPテーブルを更新できます: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +このルールをDoubleZeroインターフェースのみに制限する`-i doublezero0`、`-o doublezero0`フラグに注意してください。 + +またはUFWの場合: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +このルールをDoubleZeroインターフェースのみに制限する`in on doublezero0`、`out on doublezero0`フラグに注意してください。 + +## 3. バリデーター所有権の証明 + +
+ +DoubleZero環境が設定されたので、バリデーター所有権の証明を行います。 + +プライマリバリデーターの[セットアップ](setup.md)で作成したDoubleZero IDをすべてのバックアップマシンで使用する必要があります。 + +プライマリマシンのIDは`doublezero address`で確認できます。同じIDがクラスター内のすべてのマシンの`~/.config/doublezero/id.json`に必要です。 + +これを実現するために、まずコマンドを実行しているマシンが**プライマリバリデーター**であることを次のコマンドで確認します: + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +これにより、バリデーターがゴシップに登録され、リーダースケジュールに表示されることを確認します。 + +期待される出力: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + 同じワークフローが1台でも複数台のマシンでも使用されます。 + 1台のマシンを登録する場合は、このページのコマンドから"--backup-validator-ids"または"backup_ids="引数を除外してください。 + +次に、**プライマリバリデーター**を実行する予定のすべてのバックアップマシンで以下を実行します: +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +期待される出力: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +この出力は正常です。バックアップノードはパス作成時にリーダースケジュールに含まれることができません。 + +次に、**プライマリバリデーター**の投票アカウントとアイデンティティを使用する予定の**すべてのバックアップマシン**でこのコマンドを実行します。 + +
+ + +
+ +### 接続の準備 + +**プライマリバリデーター**マシンで次のコマンドを実行します。これはコマンドを実行しているマシンのSolanaゴシップに、プライマリバリデーターIDを持つアクティブなステークがあり、リーダースケジュールに含まれているマシンです: + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +出力例: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: mainnet-beta + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +このコマンドの最後の出力に注意してください。次のステップの構造になっています。 + +
+ +## 4. 署名の生成 + +
+ +前のステップの最後に、`solana sign-offchain-message`のための事前フォーマットされた出力を受け取りました。 + +上記の出力から**プライマリバリデーター**マシンでこのコマンドを実行します。 + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**出力:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. DoubleZeroでの接続リクエストの開始 + +
+ +`request-validator-access`コマンドを使用して、接続リクエストのためにSolana上にアカウントを作成します。DoubleZero Sentinelエージェントが新しいアカウントを検出し、アイデンティティと署名を検証し、サーバーが接続を確立できるようにDoubleZeroにアクセスパスを作成します。 + + +ノードID、DoubleZeroID、署名を使用します。 + +!!! note inline end + この例では`-k /home/user/.config/solana/id.json`を使用してバリデーターアイデンティティを見つけます。ローカルデプロイメントの適切な場所を使用してください。 + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**出力:** + +この出力はSolanaエクスプローラーでトランザクションを確認するために使用できます。エクスプローラーをメインネットに変更することを忘れずに。この確認はオプションです。 + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +成功した場合、DoubleZeroはプライマリをバックアップとともに登録します。アクセスパスに登録されたIPの間でフェイルオーバーできるようになります。DoubleZeroはこのように登録されたバックアップノードへの切り替え時に接続を自動的に維持します。 + +
+ +## 6. IBRLモードでの接続 + +
+ +DoubleZeroに接続するユーザーで、サーバー上で`connect`コマンドを実行してDoubleZeroへの接続を確立します。 + +``` +doublezero connect ibrl +``` + +以下のようなプロビジョニングを示す出力が表示されます: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +GREトンネルのセットアップが完了するまで1分待ちます。GREトンネルのセットアップが完了するまで、ステータス出力が「down」または「Unknown」を返す場合があります。 + +接続を確認します: + +```bash +doublezero status +``` + +**出力:** +!!! note inline end + この出力を確認してください。`Tunnel src`と`DoubleZero IP`がマシンのパブリックIPv4アドレスと一致していることに注意してください。 + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +`up`のステータスは正常に接続されていることを意味します。 + +次のコマンドを実行することでDoubleZero上の他のユーザーによって伝搬されたルートを確認できます: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 次のステップ:マルチキャストによるシュレッドの公開 + +このセットアップを完了してマルチキャストでシュレッドを公開する予定の場合は、[次のページ](Validator%20Multicast%20Connection.md)に進んでください。 diff --git a/docs/DZ Mainnet-beta Connection.ko.md b/docs/DZ Mainnet-beta Connection.ko.md new file mode 100644 index 0000000..8ec26b2 --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.ko.md @@ -0,0 +1,339 @@ +# IBRL 모드 검증자 메인넷-베타 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 서비스 약관](https://doublezero.xyz/terms-protocol)에 동의합니다" + + + +### IBRL 모드로 메인넷-베타에 연결 + +!!! Note inline end + IBRL 모드는 기존 공개 IP 주소를 사용하므로 검증자 클라이언트를 재시작할 필요가 없습니다. + +Solana 메인넷 검증자는 이 페이지에 자세히 설명된 DoubleZero 메인넷-베타 연결을 완료합니다. + +각 Solana 검증자에는 고유한 **신원 키쌍**이 있으며, 이로부터 **노드 ID**로 알려진 공개 키를 추출합니다. 이것이 Solana 네트워크에서 검증자의 고유 지문입니다. + +DoubleZeroID와 노드 ID가 확인되면 기계의 소유권을 증명해야 합니다. 이는 검증자의 신원 키로 서명된 DoubleZeroID를 포함하는 메시지를 생성하여 수행됩니다. 결과적인 암호화 서명은 검증자를 제어한다는 검증 가능한 증거로 사용됩니다. + +마지막으로 **DoubleZero에 연결 요청을 제출**합니다. 이 요청은 다음을 전달합니다: *"제 신원이 여기 있고, 소유권 증거가 여기 있으며, 연결 방법이 여기 있습니다."* DoubleZero는 이 정보를 검증하고 증거를 수락하며 DoubleZero에서 검증자의 네트워크 액세스를 프로비저닝합니다. + +이 가이드를 통해 1개의 기본 검증자가 자신을 등록하고 동시에 최대 3개의 백업/장애 조치 기계를 등록할 수 있습니다. + +## 사전 요구사항 + +- Solana CLI 설치 및 $PATH 등록 +- 검증자의 경우: sol 사용자 하에 검증자 신원 키쌍 파일(예: validator-keypair.json)에 대한 액세스 권한 +- 검증자의 경우: 연결할 Solana 검증자의 신원 키에 최소 1 SOL이 있는지 확인 +- 방화벽 규칙이 DoubleZero 및 Solana RPC에 대한 아웃바운드 연결을 허용해야 함 (GRE(ip proto 47) 및 BGP(169.254.0.0/16의 tcp/179) 포함) + +!!! info + 검증자 ID는 Solana 가십에 대해 확인되어 대상 IP를 결정합니다. 대상 IP와 DoubleZero ID는 기계와 대상 DoubleZero 장치 간에 GRE 터널을 열 때 사용됩니다. + + 고려사항: 동일한 IP에 정크 ID와 기본 ID가 있는 경우 기본 ID만 기계 등록에 사용됩니다. 정크 ID는 가십에 나타나지 않으므로 대상 기계의 IP를 확인하는 데 사용할 수 없습니다. + +## 1. 환경 구성 + +진행하기 전에 [설정](setup.md) 지침을 따르세요. + +설정의 마지막 단계는 네트워크에서 연결을 해제하는 것이었습니다. 이는 기계에 DoubleZero에 대한 터널이 하나만 열려 있고 해당 터널이 올바른 네트워크에 있도록 하기 위한 것입니다. + +
+ +**DoubleZero 메인넷-베타**에 연결하도록 DoubleZero 클라이언트 CLI(`doublezero`) 및 데몬(`doublezerod`)을 구성하려면: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +다음 출력이 표시되어야 합니다: +` +✅ doublezerod configured for environment mainnet-beta +` + +약 30초 후 DoubleZero 장치를 볼 수 있습니다: + +```bash +doublezero latency +``` +예시 출력 (메인넷-베타) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +테스트넷 출력은 구조가 동일하지만 장치 수가 더 적습니다. + + +
+ +## 2. 포트 44880 열기 + +사용자는 일부 [라우팅 기능](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md)을 활용하기 위해 포트 44880을 열어야 합니다. + +포트 44880을 열려면 다음과 같이 IP 테이블을 업데이트할 수 있습니다: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +이 규칙을 DoubleZero 인터페이스로만 제한하는 `-i doublezero0`, `-o doublezero0` 플래그에 주의하세요. + +또는 UFW를 사용할 수 있습니다: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +이 규칙을 DoubleZero 인터페이스로만 제한하는 `in on doublezero0`, `out on doublezero0` 플래그에 주의하세요. + +## 3. 검증자 소유권 증명 + +
+ +DoubleZero 환경이 설정되었으면 이제 검증자 소유권을 증명할 차례입니다. + +기본 검증자의 [설정](setup.md)에서 생성한 DoubleZero ID는 모든 백업 기계에서 사용해야 합니다. + +기본 기계의 ID는 `doublezero address`로 찾을 수 있습니다. 동일한 ID가 클러스터의 모든 기계의 `~/.config/doublezero/id.json`에 있어야 합니다. + +이를 위해 먼저 명령을 실행 중인 기계가 **기본 검증자**인지 다음 명령으로 확인합니다: + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +이는 검증자가 가십에 등록되어 있고 리더 스케줄에 나타나는지 확인합니다. + +예상 출력: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + 동일한 워크플로우가 하나 또는 여러 기계에 사용됩니다. + 하나의 기계를 등록하려면 모든 명령에서 "--backup-validator-ids" 또는 "backup_ids=" 인수를 제외하세요. + +이제 **기본 검증자**를 실행할 모든 백업 기계에서 다음을 실행합니다: +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +예상 출력: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +이 출력은 예상된 것입니다. 백업 노드는 패스 생성 시 리더 스케줄에 있을 수 없습니다. + +이제 **기본 검증자** 투표 계정과 신원을 사용할 계획인 **모든 백업 기계**에서 이 명령을 실행합니다. + +
+ + +
+ +### 연결 준비 + +**기본 검증자** 기계에서 다음 명령을 실행합니다. 이는 활성 지분이 있고, 리더 스케줄에 있으며, 명령을 실행 중인 기계의 Solana 가십에 기본 검증자 ID가 있는 기계입니다: + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +예시 출력: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: mainnet-beta + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +이 명령의 끝에 있는 출력에 주목하세요. 이것이 다음 단계의 구조입니다. + +
+ +## 4. 서명 생성 + +
+ +마지막 단계에서 `solana sign-offchain-message`에 대한 미리 형식화된 출력을 받았습니다. + +위 출력에서 **기본 검증자** 기계에서 이 명령을 실행합니다. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**출력:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. DoubleZero에서 연결 요청 시작 + +
+ +`request-validator-access` 명령을 사용하여 연결 요청을 위한 Solana 계정을 생성합니다. DoubleZero Sentinel 에이전트가 새 계정을 감지하고 신원과 서명을 검증한 후 서버가 연결을 설정할 수 있도록 DoubleZero에 액세스 패스를 생성합니다. + + +노드 ID, DoubleZeroID, 서명을 사용합니다. + +!!! note inline end + 이 예시에서는 검증자 신원을 찾기 위해 `-k /home/user/.config/solana/id.json`을 사용합니다. 로컬 배포에 적합한 위치를 사용하세요. + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**출력:** + +이 출력은 Solana 탐색기에서 트랜잭션을 확인하는 데 사용할 수 있습니다. 탐색기를 메인넷으로 변경해야 합니다. 이 확인은 선택 사항입니다. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +성공하면 DoubleZero가 기본을 백업과 함께 등록합니다. 이제 액세스 패스에 등록된 IP 간에 장애 조치할 수 있습니다. DoubleZero는 이 방식으로 등록된 백업 노드로 전환할 때 자동으로 연결을 유지합니다. + +
+ +## 6. IBRL 모드로 연결 + +
+ +서버에서 DoubleZero에 연결할 사용자로 `connect` 명령을 실행하여 DoubleZero에 연결을 설정하세요. + +``` +doublezero connect ibrl +``` + +다음과 같은 프로비저닝을 나타내는 출력이 표시되어야 합니다: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +GRE 터널이 완료될 때까지 1분 기다리세요. 터널이 완료될 때까지 상태 출력이 "down" 또는 "Unknown"을 반환할 수 있습니다. + +연결을 확인하세요: + +```bash +doublezero status +``` + +**출력:** +!!! note inline end + 이 출력을 확인하세요. `Tunnel src`와 `DoubleZero IP`가 기계의 공개 IPv4 주소와 일치하는지 주목하세요. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +`up` 상태는 성공적으로 연결되었음을 의미합니다. + +다음을 실행하여 DoubleZero의 다른 사용자가 전파한 경로를 볼 수 있습니다: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 다음 단계: 멀티캐스트를 통한 Shred 발행 + +이 설정을 완료하고 멀티캐스트를 통한 Shred 발행을 계획하고 있다면 [다음 페이지](Validator%20Multicast%20Connection.md)로 진행하세요. diff --git a/docs/DZ Mainnet-beta Connection.pt.md b/docs/DZ Mainnet-beta Connection.pt.md new file mode 100644 index 0000000..16fddaa --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.pt.md @@ -0,0 +1,262 @@ +# Conexão do Validador ao Mainnet-Beta no Modo IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Ao conectar ao DoubleZero, concordo com os [Termos de Serviço do DoubleZero](https://doublezero.xyz/terms-protocol)" + + + +### Conectando ao Mainnet-Beta no Modo IBRL + +!!! Note inline end + O modo IBRL não requer reinicialização dos clientes validadores, pois usa seu endereço IP público existente. + +Os Validadores Mainnet da Solana completarão a conexão ao DoubleZero Mainnet-beta, detalhada nesta página. + +Cada validador Solana tem seu próprio **keypair de identidade**; dele é extraída a chave pública conhecida como o **node ID**. Esta é a impressão digital única do validador na rede Solana. + +Com o DoubleZeroID e o node ID identificados, você provará a propriedade da sua máquina. Isso é feito criando uma mensagem que inclui o DoubleZeroID assinado com a chave de identidade do validador. A assinatura criptográfica resultante serve como prova verificável de que você controla o validador. + +Por fim, você enviará uma **solicitação de conexão ao DoubleZero**. Esta solicitação comunica: *"Aqui está minha identidade, aqui está a prova de propriedade e aqui está como pretendo me conectar."* O DoubleZero valida essas informações, aceita a prova e provisiona acesso à rede para o validador no DoubleZero. + +Este guia permite que 1 Validador Primário se registre e até 3 máquinas de backup/failover ao mesmo tempo. + +## Pré-requisitos + +- CLI da Solana instalado e no $PATH +- Para validadores: Permissão para acessar o arquivo keypair de identidade do validador (por exemplo, validator-keypair.json) sob o usuário sol +- Para validadores: Verificar que a chave de identidade do validador Solana conectado tem pelo menos 1 SOL +- As regras de firewall permitem conexões de saída para DoubleZero e Solana RPC conforme necessário, incluindo GRE (ip proto 47) e BGP (169.254.0.0/16 na tcp/179) + +!!! info + O ID do Validador será verificado contra o gossip da Solana para determinar o IP alvo. O IP alvo e o ID DoubleZero serão então usados para abrir um túnel GRE entre sua máquina e o Dispositivo DoubleZero alvo. + + Considere: No caso em que você tem um ID junk e um ID Primário no mesmo IP, apenas o ID Primário será usado no registro da máquina. Isso ocorre porque o ID junk não aparecerá no gossip e, portanto, não pode ser usado para verificar o IP da máquina alvo. + +## 1. Configuração do Ambiente + +Siga as instruções de [configuração](setup.md) antes de continuar. + +O último passo na configuração foi desconectar da rede. Isso é para garantir que apenas um túnel esteja aberto na sua máquina para o DoubleZero, e que esse túnel esteja na rede correta. + +
+ +Para configurar o CLI do DoubleZero (`doublezero`) e o daemon (`doublezerod`) para se conectar ao **DoubleZero mainnet-beta**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Você deve ver a seguinte saída: +` +✅ doublezerod configured for environment mainnet-beta +` + +Após aproximadamente 30 segundos, você verá os dispositivos DoubleZero disponíveis: + +```bash +doublezero latency +``` + +
+ +## 2. Abrir a porta 44880 + +Os usuários precisam abrir a porta 44880 para utilizar alguns [recursos de roteamento](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Para abrir a porta 44880 você pode atualizar as regras do iptables da seguinte forma: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +observe os flags `-i doublezero0`, `-o doublezero0` que restringem esta regra apenas à interface DoubleZero + +Ou UFW da seguinte forma: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +observe os flags `in on doublezero0`, `out on doublezero0` que restringem esta regra apenas à interface DoubleZero + +## 3. Atestar a Propriedade do Validador + +
+ +Com seu Ambiente DoubleZero configurado, é hora de atestar a Propriedade do seu Validador. + +O ID DoubleZero que você criou na [configuração](setup.md) do seu validador primário deve ser usado em todas as máquinas de backup. + +O ID na sua máquina primária pode ser encontrado com `doublezero address`. O mesmo ID deve estar em `~/.config/doublezero/id.json` em todas as máquinas do cluster. + +Para conseguir isso, você primeiro verificará que a máquina da qual está executando os comandos é seu **Validador Primário** com: + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Isso verifica que o validador está registrado no gossip e aparece no cronograma de líderes. + +Saída esperada: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + O mesmo fluxo de trabalho é usado para uma ou muitas máquinas. + Para registrar uma máquina, exclua os argumentos "--backup-validator-ids" ou "backup_ids=" de qualquer comando nesta página. + +Agora, em todas as máquinas de backup nas quais você planeja executar seu **Validador Primário**, execute o seguinte: +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +Esta saída é esperada. O nó de backup não pode estar no cronograma de líderes no momento da criação do passe. + +
+ + +
+ +### Preparar a Conexão + +Execute o seguinte comando na máquina do **Validador Primário**. Esta é a máquina na qual você tem stake ativo, que está no cronograma de líderes com seu ID de validador primário no gossip da Solana na máquina da qual você está executando o comando: + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + +Observe a saída no final deste comando. É a estrutura para o próximo passo. + +
+ +## 4. Gerar Assinatura + +
+ +No final do último passo, recebemos uma saída pré-formatada para `solana sign-offchain-message`. + +Da saída anterior executaremos este comando na máquina do **Validador Primário**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Saída:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Iniciar uma Solicitação de Conexão no DoubleZero + +
+ +Use o comando `request-validator-access` para criar uma conta na Solana para a solicitação de conexão. O agente Sentinel do DoubleZero detecta a nova conta, valida sua identidade e assinatura, e cria o passe de acesso no DoubleZero para que o servidor possa estabelecer uma conexão. + +Use o node ID, o DoubleZeroID e a assinatura. + +!!! note inline end + Neste exemplo usamos `-k /home/user/.config/solana/id.json` para encontrar a Identidade do validador. Use o local apropriado para sua implantação local. + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Saída:** + +Esta saída pode ser usada para ver a transação em um explorador Solana. Certifique-se de mudar o explorador para mainnet. Esta verificação é opcional. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +Se bem-sucedido, o DoubleZero registrará o primário com seus backups. Agora você pode fazer failover entre os IPs registrados no passe de acesso. O DoubleZero manterá a conectividade automaticamente ao mudar para nós de backup registrados desta forma. + +
+ +## 6. Conectar no Modo IBRL + +
+ +No servidor, com o usuário que se conectará ao DoubleZero, execute o comando `connect` para estabelecer a conexão com o DoubleZero. + +``` +doublezero connect ibrl +``` + +Você deve ver uma saída indicando o provisionamento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Aguarde um minuto para o túnel GRE terminar de ser configurado. Até que o túnel GRE esteja configurado, sua saída de status pode retornar "down" ou "Unknown". + +Verifique sua conexão: + +```bash +doublezero status +``` + +**Saída:** +!!! note inline end + Examine esta saída. Observe que `Tunnel src` e `DoubleZero IP` correspondem ao endereço IPv4 público da sua máquina. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +Um status de `up` significa que você está conectado com sucesso. + +Você poderá visualizar as rotas propagadas por outros usuários no DoubleZero executando: + +``` +ip route +``` + +
+ +### Próximo Passo: Publicando Shreds via Multicast + +Se você completou esta configuração e planeja publicar shreds via multicast, continue para a [próxima página](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Mainnet-beta Connection.zh.md b/docs/DZ Mainnet-beta Connection.zh.md new file mode 100644 index 0000000..a627164 --- /dev/null +++ b/docs/DZ Mainnet-beta Connection.zh.md @@ -0,0 +1,339 @@ +# 验证器以IBRL模式连接主网Beta +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "通过连接到DoubleZero,我同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" + + + +### 以IBRL模式连接到主网Beta + +!!! Note inline end + IBRL模式不需要重启验证器客户端,因为它使用您现有的公共IP地址。 + +Solana主网验证器将完成到DoubleZero主网Beta的连接,详情请见本页面。 + +每个Solana验证器都有其自己的**身份密钥对**;从中提取称为**节点ID**的公钥。这是验证器在Solana网络上的唯一指纹。 + +确认DoubleZero ID和节点ID后,您将证明您对机器的所有权。这通过创建包含使用验证器身份密钥签名的DoubleZero ID的消息来完成。由此产生的加密签名作为您控制该验证器的可验证证明。 + +最后,您将向DoubleZero提交**连接请求**。此请求传达:*"这是我的身份,这是所有权证明,这是我打算如何连接。"* DoubleZero验证此信息,接受证明,并为DoubleZero上的验证器配置网络访问。 + +本指南允许1个主验证器注册自身,以及同时注册最多3台备份/故障转移机器。 + +## 前提条件 + +- Solana CLI已安装并在$PATH中 +- 对于验证器:有权访问sol用户下的验证器身份密钥对文件(如validator-keypair.json) +- 对于验证器:验证正在连接的Solana验证器的身份密钥上至少有1 SOL +- 防火墙规则允许DoubleZero和Solana RPC所需的出站连接,包括GRE(ip proto 47)和BGP(169.254.0.0/16上的tcp/179) + +!!! info + 验证器ID将与Solana gossip进行核对以确定目标IP。然后将使用目标IP和DoubleZero ID在您的机器和目标DoubleZero设备之间建立GRE隧道。 + + 注意:如果您在同一IP上同时有垃圾ID和主ID,只有主ID将用于机器注册。这是因为垃圾ID不会出现在gossip中,因此无法用于验证目标机器的IP。 + +## 1. 环境配置 + +请在继续之前按照[设置](setup.md)说明操作。 + +设置的最后一步是断开与网络的连接。这是为了确保您的机器上只有一个到DoubleZero的隧道处于开放状态,并且该隧道在正确的网络上。 + +
+ +要配置DoubleZero客户端CLI(`doublezero`)和守护程序(`doublezerod`)连接到**DoubleZero主网Beta**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +您应该看到以下输出: +` +✅ doublezerod configured for environment mainnet-beta +` + +大约30秒后,您将看到可用的DoubleZero设备: + +```bash +doublezero latency +``` +示例输出(主网Beta) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +测试网输出结构相同,但设备较少。 + + +
+ +## 2. 开放44880端口 + +用户需要开放44880端口以使用某些[路由功能](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md)。 + +要开放44880端口,您可以更新IP表,例如: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +注意`-i doublezero0`、`-o doublezero0`标志,这些标志将此规则限制为仅DoubleZero接口。 + +或UFW,例如: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +注意`in on doublezero0`、`out on doublezero0`标志,这些标志将此规则限制为仅DoubleZero接口。 + +## 3. 证明验证器所有权 + +
+ +设置好DoubleZero环境后,现在是证明您的验证器所有权的时候了。 + +您在主验证器[设置](setup.md)中创建的DoubleZero ID必须用于所有备份机器。 + +您主机器上的ID可以通过`doublezero address`找到。相同的ID必须在集群中所有机器的`~/.config/doublezero/id.json`中。 + +为了实现这一点,您首先需要通过以下命令验证您正在运行命令的机器是您的**主验证器**: + +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +这验证了验证器已在gossip中注册并出现在领导者时间表中。 + +预期输出: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +!!! info + 无论是一台还是多台机器,工作流程相同。 + 要注册一台机器,请从本页上的任何命令中排除参数"--backup-validator-ids"或"backup_ids="。 + +现在,在您打算运行**主验证器**的所有备份机器上执行以下命令: +``` +doublezero-solana passport find-validator -u mainnet-beta +``` + +预期输出: + +``` +Connected to Solana: mainnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +此输出是预期的。备份节点在通行证创建时不能在领导者时间表中。 + +现在您将在您计划使用**主验证器**投票账户和身份的**所有备份机器**上运行此命令。 + +
+ + +
+ +### 准备连接 + +在**主验证器**机器上运行以下命令。这是您拥有活跃质押的机器,该机器在您正在运行命令的机器上Solana gossip中以您的主验证器ID在领导者时间表中: + +``` +doublezero-solana passport prepare-validator-access -u mainnet-beta \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +示例输出: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: mainnet-beta + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +注意此命令末尾的输出。这是下一步的结构。 + +
+ +## 4. 生成签名 + +
+ +在上一步结束时,我们收到了`solana sign-offchain-message`的预格式化输出。 + +从上述输出中,我们将在**主验证器**机器上运行此命令。 + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**输出:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. 在DoubleZero中发起连接请求 + +
+ +使用`request-validator-access`命令在Solana上为连接请求创建账户。DoubleZero Sentinel代理检测新账户,验证其身份和签名,并在DoubleZero中创建访问通行证,使服务器能够建立连接。 + + +使用节点ID、DoubleZero ID和签名。 + +!!! note inline end + 在此示例中,我们使用`-k /home/user/.config/solana/id.json`来查找验证器身份。请使用适合您本地部署的位置。 + +``` +doublezero-solana passport request-validator-access -k -u mainnet-beta \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**输出:** + +此输出可用于在Solana浏览器中查看交易。确保将浏览器切换到主网。此验证是可选的。 + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +如果成功,DoubleZero将注册主验证器及其备份。您现在可以在访问通行证中注册的IP之间进行故障转移。以这种方式注册备份节点时,DoubleZero将自动维护连接。 + +
+ +## 6. 以IBRL模式连接 + +
+ +在服务器上,使用将连接到DoubleZero的用户,运行`connect`命令建立到DoubleZero的连接。 + +``` +doublezero connect ibrl +``` + +您应该看到表示配置的输出,例如: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +等待一分钟让GRE隧道完成设置。在GRE隧道完成设置之前,您的状态输出可能返回"down"或"Unknown"。 + +验证您的连接: + +```bash +doublezero status +``` + +**输出:** +!!! note inline end + 检查此输出。注意`Tunnel src`和`DoubleZero IP`与您机器上的公共IPv4地址匹配。 + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | mainnet-beta +``` +状态`up`表示您已成功连接。 + +您可以通过运行以下命令查看DoubleZero上其他用户传播的路由: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 下一步:通过多播发布碎片 + +如果您已完成此设置并计划通过多播发布碎片,请继续访问[下一页](Validator%20Multicast%20Connection.md)。 diff --git a/docs/DZ Testnet Connection.es.md b/docs/DZ Testnet Connection.es.md new file mode 100644 index 0000000..96cffec --- /dev/null +++ b/docs/DZ Testnet Connection.es.md @@ -0,0 +1,382 @@ +# Conexión de Validador a Testnet en modo IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "Al conectarme a DoubleZero testnet acepto los términos del Acuerdo de Evaluación establecido aquí (haga clic para expandir)" + DoubleZero Testnet + Acuerdo de Evaluación + + Al acceder o usar la Solución (definida a continuación), usted acepta a partir de la primera fecha de dicho acceso (la "**Fecha de Vigencia**") que este Acuerdo de Evaluación (el "**Acuerdo**") establece los términos y condiciones bajo los cuales la Fundación DoubleZero ("**DZF**") le proporcionará acceso a la Solución en base de evaluación. En consideración de las promesas mutuas aquí contenidas, usted acepta lo siguiente: + + 1. DEFINICIONES. + + 1.1 "**Información Confidencial**" significa cualquier y toda la información divulgada por cualquiera de las partes a la otra que esté designada como confidencial, o que de otra manera deba entenderse como confidencial, incluyendo pero no limitado a, la Solución, planes de productos, planes de negocios, secretos comerciales, tecnología, u otra información propietaria. + + 1.2 "**Solución**" significa la versión testnet de la infraestructura de red de alto rendimiento de DoubleZero para proyectos web3 ("**Testnet**") y el servicio de filtrado de borde integrado con ancho de banda ("**Servicio de Información**") el Software DZ (definido a continuación), todos y cada uno de los materiales proporcionados por DZF en relación con el Software DZ ("**Documentación**"), y otros materiales que DZF proporciona al Usuario en virtud del presente. + + 2. ACCESO. + + 2.1 ^^Acceso a la Solución^^. Sujeto a los términos y condiciones de este Acuerdo, DZF proporcionará al Usuario acceso a la Solución a través de Internet. El acceso del Usuario es un uso no exclusivo, no transferible y limitado de la Solución para permitir al Usuario evaluar el Servicio de Información únicamente. Con respecto a cualquier software que comprenda la Solución ("**Software DZ**"), DZF otorga al Usuario una licencia limitada y revocable, durante el Período de Evaluación, para copiar, descargar, hacer un número razonable de copias, ejecutar y desplegar (según corresponda) dicho Software DZ únicamente según lo contemplado en la Documentación. + + 2.2 ^^Restricciones^^. El Usuario puede usar la Solución de acuerdo con este Acuerdo desde la Fecha de Vigencia hasta que DZF lo termine (el "**Período de Evaluación**"). El Usuario entiende que cualquier derecho a usar la Solución más allá del Período de Evaluación estará sujeto a un acuerdo comercial separado entre las partes al respecto, incluyendo el pago de tarifas. El Usuario no deberá, y no permitirá que ningún tercero: (i) modifique o cree obras derivadas basadas en la Solución o cualquier parte de ella; (ii) reproduzca la Solución excepto según lo permitido expresamente por este Acuerdo; (iii) sublicencie, distribuya, venda, preste, arriende, transfiera o conceda cualquier derecho sobre toda o cualquier parte de la Solución o proporcione acceso a la Solución a terceros, ya sea mediante servicios o de otra manera, excepto como oferta de los Servicios de Información a través de o en conexión con la plataforma o producto del Usuario y no de forma independiente; o (iv) use la Solución de otra forma que no sea la prevista en el presente. + + 2.3 ^^Propiedad^^. DZF conserva todos los derechos, títulos e intereses, incluidos los derechos de propiedad intelectual, sobre la Solución. + + 3 COMENTARIOS. + DZF puede solicitar periódicamente que el Usuario proporcione, y el Usuario acepta proporcionar a DZF, comentarios sobre el uso, operación y funcionalidad de la Solución ("Comentarios"). El Usuario otorga a DZF un derecho y licencia no exclusivos, mundiales, perpetuos, irrevocables, libres de regalías, totalmente pagados, completamente sublicenciables y transferibles para usar e incorporar los Comentarios en cualquier producto y servicio, para fabricar, usar, vender, ofrecer en venta, importar y explotar de otra manera dichos productos y servicios, y para usar, copiar, distribuir y explotar de otra manera los Comentarios sin restricción. + + 4. PLAZO Y RESCISIÓN. + + 4.1 ^^Plazo^^. Este Acuerdo comenzará a partir de la Fecha de Vigencia y permanecerá en pleno vigor y efecto durante el Período de Evaluación. Cualquiera de las partes puede rescindir este Acuerdo de inmediato por conveniencia, por cualquier razón o sin razón alguna, mediante notificación escrita a la otra parte (el correo electrónico será suficiente). + + 4.1 ^^Efectos de la Rescisión^^. Al momento de la rescisión de este Acuerdo por cualquier razón: (i) los derechos otorgados al Usuario en el presente terminarán de inmediato; (ii) el Usuario deberá cesar de inmediato cualquier uso de la Solución y deberá devolver o destruir toda la Documentación y cualquier Software DZ bajo su control; (iii) cada parte devolverá o destruirá de inmediato toda la Información Confidencial y propiedad de la otra parte; y (iv) las Secciones 2.2, 2.3, 3, 4.2 y 5 a 8 sobrevivirán. + + 5. CONFIDENCIALIDAD. + Cada parte acepta que usará la Información Confidencial de la otra parte únicamente para cumplir con sus obligaciones y ejercer sus derechos bajo este Acuerdo y no divulgará, ni permitirá que se divulgue, la misma, excepto según se permita de otra manera en el presente. Sin embargo, cualquiera de las partes puede divulgar Información Confidencial a su personal, abogados y otros representantes que tengan necesidad de conocerla y estén sujetos a obligaciones de confidencialidad no menos protectoras que las establecidas en este Acuerdo; y según lo requiera la ley (en cuyo caso la parte receptora proporcionará a la parte divulgadora notificación previa al respecto y oportunidad de impugnar dicha divulgación, y minimizará dicha divulgación en la medida permitida por la ley aplicable). Las obligaciones de confidencialidad en esta Sección 5 no se aplicarán a la información que: (a) sea o se vuelva generalmente conocida o esté disponible públicamente sin culpa de la parte receptora; (b) era conocida apropiadamente por la parte receptora, sin restricción, antes de la divulgación por la parte divulgadora; (c) fue apropiadamente divulgada a la parte receptora, sin restricción, por otra persona con la autoridad legal para hacerlo; o (d) es desarrollada de forma independiente por la parte receptora sin uso de ni referencia a la Información Confidencial de la parte divulgadora. + + 6. DESCARGO DE GARANTÍAS; LIMITACIÓN DE RESPONSABILIDAD. + + 6.1 ^^DESCARGO DE GARANTÍAS^^. LA SOLUCIÓN SE PROPORCIONA "TAL CUAL" SIN GARANTÍA DE NINGÚN TIPO. DZF NO OFRECE GARANTÍAS, YA SEAN EXPRESAS, IMPLÍCITAS, ESTATUTARIAS O DE OTRO TIPO CON RESPECTO A LA SOLUCIÓN Y LA DOCUMENTACIÓN, INCLUYENDO SU CONDICIÓN, CONFORMIDAD CON CUALQUIER REPRESENTACIÓN O DESCRIPCIÓN, Y DZF RECHAZA ESPECÍFICAMENTE TODAS LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR, TÍTULO Y NO INFRACCIÓN. + + 6.2 ^^LIMITACIÓN DE RESPONSABILIDAD^^. + EXCEPTO POR UNA VIOLACIÓN DE LAS SECCIONES 2.1, 2.2 Y 5, EN NINGÚN CASO NINGUNA DE LAS PARTES SERÁ RESPONSABLE ANTE LA OTRA POR DAÑOS INDIRECTOS, INCIDENTALES, ESPECIALES U OTROS DAÑOS CONSECUENTES, INCLUYENDO SIN LIMITACIÓN DAÑOS POR PÉRDIDA DE GANANCIAS O USO O PÉRDIDA DE DATOS, INCURRIDOS POR USTED O CUALQUIER TERCERO, QUE SURJAN DE O ESTÉN RELACIONADOS CON ESTE ACUERDO, YA SEA EN UNA ACCIÓN CONTRACTUAL, POR AGRAVIO O DE OTRO MODO, INCLUSO SI LA OTRA PARTE HA SIDO ADVERTIDA DE LA POSIBILIDAD DE DICHOS DAÑOS. EN NINGÚN CASO LA RESPONSABILIDAD AGREGADA DE DZF QUE SURJA DE O ESTÉ RELACIONADA CON ESTE ACUERDO EXCEDERÁ CIEN DÓLARES (\$100), YA SEA EN UNA ACCIÓN CONTRACTUAL, POR AGRAVIO O DE OTRO MODO. + + 7. LEY APLICABLE. + Este Acuerdo y todos los asuntos que surjan de o estén relacionados con este Acuerdo se regirán, interpretarán y construirán de acuerdo con las leyes de las Islas Caimán. + + 8. DISPOSICIONES GENERALES. + Este Acuerdo no puede ser transferido o cedido por el Usuario sin el consentimiento previo por escrito de DZF. DZF puede ceder libremente este Acuerdo. Todos los avisos que deban enviarse en virtud del presente se enviarán por correo electrónico (a DZF: legal@doublezero.xyz) y se considerarán recibidos el día siguiente al envío (con confirmación de transmisión). + + + +### Conexión a Testnet en modo IBRL + + +!!! Note inline end + El modo IBRL no requiere reiniciar los clientes de validadores, ya que usa su dirección IP pública existente. + +Los Validadores de Testnet de Solana completarán la conexión a DoubleZero Testnet, que se detalla en esta página. + +Cada validador Solana tiene su propio **keypair de identidad**; de él se extrae la clave pública conocida como el **node ID**. Esta es la huella digital única del validador en la red Solana. + +Con el DoubleZeroID y el node ID identificados, demostrará la propiedad de su máquina. Esto se hace creando un mensaje que incluye el DoubleZeroID firmado con la clave de identidad del validador. La firma criptográfica resultante sirve como prueba verificable de que controla el validador. + +Finalmente, enviará una **solicitud de conexión a DoubleZero**. Esta solicitud comunica: *"Aquí está mi identidad, aquí está la prueba de propiedad y aquí está cómo pretendo conectarme."* DoubleZero valida esta información, acepta la prueba y provisiona acceso a la red para el validador en DoubleZero. + +Esta guía permite que 1 Validador Primario se registre a sí mismo, y hasta 3 máquinas de respaldo/failover al mismo tiempo. + +## Requisitos Previos + +- CLI de Solana instalada y en $PATH +- Para validadores: Permiso para acceder al archivo keypair de identidad del validador (por ejemplo, validator-keypair.json) bajo el usuario sol +- Para validadores: Verificar que la clave de identidad del validador Solana que se conecta tiene al menos 1 SOL +- Las reglas del firewall permiten conexiones salientes para DoubleZero y Solana RPC según sea necesario, incluyendo GRE (ip proto 47) y BGP (169.254.0.0/16 en tcp/179) + +!!! info + El ID del Validador se verificará contra el gossip de Solana para determinar la IP objetivo. La IP objetivo y el ID DoubleZero se utilizarán luego para abrir un túnel GRE entre su máquina y el Dispositivo DoubleZero objetivo. + + Considere: En el caso en que tenga un ID junk y un ID Primario en la misma IP, solo el ID Primario se usará en el registro de la máquina. Esto se debe a que el ID junk no aparecerá en el gossip y, por lo tanto, no puede usarse para verificar la IP de la máquina objetivo. + +## 1. Configuración del Entorno + +Siga las instrucciones de [configuración](setup.md) antes de continuar. + +El último paso en la configuración fue desconectarse de la red. Esto es para asegurar que solo un túnel esté abierto en su máquina hacia DoubleZero, y que ese túnel esté en la red correcta. + +
+ +Para configurar el CLI DoubleZero (`doublezero`) y el daemon (`doublezerod`) para conectarse a **DoubleZero testnet**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Debería ver la siguiente salida: +``` +✅ doublezerod configured for environment testnet +``` + +Después de aproximadamente 30 segundos verá los dispositivos DoubleZero disponibles: + + +```bash +doublezero latency +``` +Ejemplo de salida (testnet) +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+La salida de mainnet tendrá la misma estructura, pero con muchos más dispositivos disponibles. + + + + +## 2. Abrir el puerto 44880 + +Los usuarios necesitan abrir el puerto 44880 para utilizar algunas [funciones de enrutamiento](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Para abrir el puerto 44880 puede actualizar IP tables de la siguiente manera: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +note los flags `-i doublezero0`, `-o doublezero0` que restringen esta regla únicamente a la interfaz DoubleZero + +O UFW de la siguiente manera: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +note los flags `in on doublezero0`, `out on doublezero0` que restringen esta regla únicamente a la interfaz DoubleZero + +## 3. Atestar la Propiedad del Validador + +
+ +Con su Entorno DoubleZero configurado, es hora de atestar la Propiedad de su Validador. + +El ID DoubleZero que creó en la [configuración](setup.md) de su validador primario debe usarse en todas las máquinas de respaldo. + +El ID en su máquina primaria se puede encontrar con `doublezero address`. El mismo ID debe estar en `~/.config/doublezero/id.json` en todas las máquinas del clúster. + +Para lograr esto, primero verificará que la máquina desde la que ejecuta los comandos sea su **Validador Primario** con: + +``` +doublezero-solana passport find-validator -ut +``` + +Esto verifica que el validador esté registrado en el gossip y aparezca en el cronograma de líderes. + +Salida esperada: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` +!!! info + El mismo flujo de trabajo se usa para una o muchas máquinas. + Para registrar una máquina, excluya los argumentos "--backup-validator-ids" o "backup_ids=" de cualquier comando en esta página. + +Ahora, en todas las máquinas de respaldo en las que planea ejecutar su **Validador Primario**, ejecute lo siguiente: + +``` +doublezero-solana passport find-validator -ut +``` + +Salida esperada: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +Esta salida es esperada. El nodo de respaldo no puede estar en el cronograma de líderes en el momento de la creación del pase. + +Ahora ejecutará este comando en **todas las máquinas de respaldo** que planea usar con la cuenta de votación e identidad de su **Validador Primario**. + +
+ + +
+ +### Preparar la Conexión + +Ejecute el siguiente comando en la máquina del **Validador Primario**. Esta es la máquina en la que tiene stake activo, que está en el cronograma de líderes con su ID de validador primario en el gossip de Solana en la máquina desde la que ejecuta el comando: + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +Ejemplo de salida: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: testnet + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +Note la salida al final de este comando. Es la estructura para el siguiente paso. + +
+ +## 4. Generar Firma + +
+ +Al final del último paso, recibimos una salida preformateada para `solana sign-offchain-message`. + +Desde la salida anterior ejecutaremos este comando en la máquina del **Validador Primario**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Salida:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Iniciar una Solicitud de Conexión en DoubleZero + +
+ +Use el comando `request-validator-access` para crear una cuenta en Solana para la solicitud de conexión. El agente Sentinel de DoubleZero detecta la nueva cuenta, valida su identidad y firma, y crea el pase de acceso en DoubleZero para que el servidor pueda establecer una conexión. + +Use el node ID, el DoubleZeroID y la firma. + +!!! note inline end + En este ejemplo usamos `-k /home/user/.config/solana/id.json` para encontrar la Identidad del validador. Use la ubicación apropiada para su despliegue local. + +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Salida:** + +Esta salida puede usarse para ver la transacción en un explorador Solana. Asegúrese de cambiar el explorador a testnet. Esta verificación es opcional. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +Si tiene éxito, DoubleZero registrará el primario con sus respaldos. Ahora puede hacer failover entre las IPs registradas en el pase de acceso. DoubleZero mantendrá la conectividad automáticamente al cambiar a nodos de respaldo registrados de esta manera. + +
+ +## 6. Conectarse en modo IBRL + +
+ +En el servidor, con el usuario que se conectará a DoubleZero, ejecute el comando `connect` para establecer la conexión a DoubleZero. + +``` +doublezero connect ibrl +``` + +Debería ver una salida que indique el aprovisionamiento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Espere un minuto para que el túnel GRE termine de configurarse. Hasta que el túnel GRE esté configurado, su salida de estado puede devolver "down" o "Unknown". + +Verifique su conexión: + +```bash +doublezero status +``` + +**Salida:** +!!! note inline end + Examine esta salida. Note que `Tunnel src` y `DoubleZero IP` coinciden con la dirección IPv4 pública de su máquina. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` +Un estado de `up` significa que está conectado correctamente. + +Podrá ver las rutas propagadas por otros usuarios en DoubleZero ejecutando: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Siguiente Paso: Publicar Shreds mediante Multicast + +Si ha completado esta configuración y planea publicar shreds mediante multicast, continúe a la [siguiente página](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Testnet Connection.fr.md b/docs/DZ Testnet Connection.fr.md new file mode 100644 index 0000000..3dd79fa --- /dev/null +++ b/docs/DZ Testnet Connection.fr.md @@ -0,0 +1,384 @@ +# Connexion Validateur Testnet en Mode IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "En me connectant au testnet DoubleZero, j'accepte les termes du Contrat d'Évaluation définis ici (cliquer pour développer)" + Testnet DoubleZero + Contrat d'Évaluation + + En accédant ou en utilisant la Solution (définie ci-dessous), vous acceptez à compter de la première date d'un tel accès (la «**Date d'Effet**») que le présent Contrat d'Évaluation (le «**Contrat**») définit les termes et conditions selon lesquels la DoubleZero Foundation («**DZF**») vous fournira («**Utilisateur**» ou «**vous**») l'accès à la Solution sur une base d'évaluation. En contrepartie des promesses mutuelles contenues dans les présentes, vous acceptez ce qui suit : + + 1. DÉFINITIONS. + + 1.1 «**Informations Confidentielles**» désigne toutes les informations divulguées par l'une ou l'autre partie à l'autre qui sont désignées comme confidentielles, ou qui devraient autrement être comprises comme confidentielles, incluant mais sans s'y limiter, la Solution, les plans de produits, les plans d'affaires, les secrets commerciaux, la technologie ou toute autre information propriétaire. + + 1.2 «**Solution**» désigne la version testnet de l'infrastructure réseau haute performance DoubleZero pour les projets web3 («**Testnet**») et le service de filtration en périphérie associé avec bande passante intégrée («**Service d'Information**»), le Logiciel DZ (défini ci-dessous), tous les matériaux fournis par DZF relatifs au Logiciel DZ («**Documentation**») et autres matériaux que DZF fournit à l'Utilisateur dans les présentes. + + 2. ACCÈS. + + 2.1 ^^Accès à la Solution^^. Sous réserve des termes et conditions du présent Contrat, DZF fournira à l'Utilisateur l'accès à la Solution via Internet. L'accès de l'Utilisateur est un usage limité, non exclusif et non transférable de la Solution pour permettre à l'Utilisateur d'évaluer le Service d'Information uniquement. En ce qui concerne tout logiciel constituant la Solution («**Logiciel DZ**»), DZF accorde par les présentes à l'Utilisateur une licence limitée et révocable, pendant la Période d'Évaluation, pour copier, télécharger, faire un nombre raisonnable de copies, exécuter et déployer (le cas échéant) ce Logiciel DZ uniquement comme prévu par la Documentation. + + 2.2 ^^Restrictions^^. L'Utilisateur peut utiliser la Solution conformément au présent Contrat à compter de la Date d'Effet jusqu'à résiliation par DZF (la «**Période d'Évaluation**»). L'Utilisateur comprend que tout droit d'utiliser la Solution au-delà de la Période d'Évaluation sera soumis à un accord commercial séparé entre les parties à cet égard, incluant le paiement de frais. L'Utilisateur ne doit pas, et ne doit pas permettre à un tiers de : (i) modifier ou créer des œuvres dérivées basées sur la Solution ou une partie de celle-ci ; (ii) reproduire la Solution sauf dans la mesure expressément autorisée par le présent Contrat ; (iii) sous-licencier, distribuer, vendre, prêter, louer, transférer ou accorder des droits dans ou sur tout ou partie de la Solution ou fournir un accès à la Solution à des tiers, sur la base d'un bureau de service ou autrement, sauf en tant qu'offre des Services d'Information via ou en relation avec la plateforme ou le produit de l'Utilisateur et non de manière autonome ; ou (iv) utiliser la Solution autrement que tel que prévu dans les présentes. + + 2.3 ^^Propriété^^. DZF conserve tous les droits, titres et intérêts, y compris les droits de propriété intellectuelle, dans et sur la Solution. + + 3 RETOUR D'EXPÉRIENCE. + DZF peut périodiquement demander à l'Utilisateur de fournir, et l'Utilisateur accepte de fournir à DZF, des retours d'expérience concernant l'utilisation, le fonctionnement et la fonctionnalité de la Solution («Retours d'Expérience»). L'Utilisateur accorde par les présentes à DZF un droit et une licence non exclusifs, mondiaux, perpétuels, irrévocables, libres de redevances, entièrement payés, entièrement sous-licenciables et transférables pour utiliser et incorporer les Retours d'Expérience dans tout produit et service, pour fabriquer, utiliser, vendre, offrir à la vente, importer et autrement exploiter ces produits et services, et autrement utiliser, copier, distribuer et autrement exploiter les Retours d'Expérience sans restriction. + + 4. DURÉE ET RÉSILIATION. + + 4.1 ^^Durée^^. Le présent Contrat prendra effet à compter de la Date d'Effet et restera en vigueur pendant toute la Période d'Évaluation. L'une ou l'autre partie peut résilier le présent Contrat immédiatement pour des raisons de commodité, pour quelque raison ou sans raison que ce soit, moyennant un préavis écrit à l'autre partie (l'e-mail étant suffisant). + + 4.1 ^^Effets de la Résiliation^^. À la résiliation du présent Contrat pour quelque raison que ce soit : (i) les droits accordés à l'Utilisateur dans les présentes prendront fin immédiatement ; (ii) l'Utilisateur cessera immédiatement toute utilisation de la Solution et retournera ou détruira toute Documentation et tout Logiciel DZ sous son contrôle ; (iii) chaque partie retournera ou détruira promptement toutes les Informations Confidentielles et biens de l'autre partie ; et (iv) les Sections 2.2, 2.3, 3, 4.2 et 5 à 8 survivront. + + 5. CONFIDENTIALITÉ. + Chaque partie accepte qu'elle utilisera les Informations Confidentielles de l'autre partie uniquement pour exécuter ses obligations et exercer ses droits en vertu du présent Contrat et qu'elle ne divulguera pas, ni ne permettra la divulgation de celles-ci, sauf dans la mesure autorisée par les présentes. Cependant, l'une ou l'autre partie peut divulguer des Informations Confidentielles à son personnel, ses avocats et autres représentants qui ont besoin d'en connaître et sont liés par des obligations de confidentialité au moins aussi protectrices que celles énoncées dans le présent Contrat ; et tel que requis par la loi (auquel cas la partie réceptrice fournira à la partie divulgatrice un préavis avant de procéder à une telle divulgation et l'occasion de contester cette divulgation, et minimisera cette divulgation dans la mesure permise par la loi applicable). Les obligations de confidentialité énoncées dans cette Section 5 ne s'appliqueront pas aux informations qui : (a) sont ou deviennent généralement connues ou accessibles au public sans faute de la partie réceptrice ; (b) étaient dûment connues de la partie réceptrice, sans restriction, avant la divulgation par la partie divulgatrice ; (c) ont été dûment divulguées à la partie réceptrice, sans restriction, par une autre personne ayant l'autorité légale de le faire ; ou (d) sont développées indépendamment par la partie réceptrice sans utiliser ni référencer les Informations Confidentielles de la partie divulgatrice. Chaque partie accepte d'exercer la diligence raisonnable pour protéger les Informations Confidentielles de l'autre partie contre toute utilisation et divulgation non autorisées. En cas de violation réelle ou menacée des dispositions de cette Section ou des licences contenues dans les présentes, la partie non violante aura droit à une injonction immédiate et à tout autre recours équitable, sans renoncer à tout autre droit ou recours dont elle dispose. L'Utilisateur est responsable du maintien de la Solution et du secret de tout mot de passe, phrase de passe ou code donnant accès à la Solution en tant qu'Informations Confidentielles de DZF. Rien dans les présentes ne limite ou ne restreint le droit ou la capacité de DZF d'utiliser les données relatives aux performances, à la disponibilité, à l'utilisation, à l'intégrité et à la sécurité de la Solution. Si l'une ou l'autre partie viole, ou menace de violer les dispositions de cette Section 5, chaque partie accepte que la partie non violante n'aura aucun recours adéquat en droit et est donc en droit d'une injonction immédiate et d'autres mesures équitables, sans cautionnement et sans nécessité de démontrer des dommages monétaires réels. + + 6. EXCLUSION DE GARANTIE ; LIMITATION DE RESPONSABILITÉ. + + 6.1 ^^EXCLUSION DE GARANTIE^^. LA SOLUTION EST FOURNIE « EN L'ÉTAT » SANS AUCUNE GARANTIE D'AUCUNE SORTE. DZF NE FOURNIT AUCUNE GARANTIE, QU'ELLE SOIT EXPRESSE, IMPLICITE, LÉGALE OU AUTRE EN CE QUI CONCERNE LA SOLUTION ET LA DOCUMENTATION, Y COMPRIS LEUR ÉTAT, LEUR CONFORMITÉ À TOUTE REPRÉSENTATION OU DESCRIPTION, ET DZF EXCLUT SPÉCIFIQUEMENT TOUTES LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER, DE TITRE ET DE NON-CONTREFAÇON. + + 6.2 ^^LIMITATION DE RESPONSABILITÉ^^. + SAUF POUR UNE VIOLATION DES SECTIONS 2.1, 2.2 ET 5, EN AUCUN CAS L'UNE OU L'AUTRE PARTIE NE SERA RESPONSABLE ENVERS L'AUTRE POUR DES DOMMAGES INDIRECTS, ACCESSOIRES, SPÉCIAUX OU AUTRES DOMMAGES CONSÉCUTIFS, Y COMPRIS SANS LIMITATION LES DOMMAGES POUR PERTE DE BÉNÉFICES OU D'UTILISATION OU DE PERTE DE DONNÉES, SUBIS PAR VOUS OU PAR UN TIERS, DÉCOULANT DE OU LIÉS AU PRÉSENT CONTRAT QU'IL S'AGISSE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, MÊME SI L'AUTRE PARTIE A ÉTÉ INFORMÉE DE LA POSSIBILITÉ DE TELS DOMMAGES. EN AUCUN CAS LA RESPONSABILITÉ GLOBALE DE DZF DÉCOULANT DE OU LIÉE AU PRÉSENT CONTRAT N'EXCÉDERA CENT DOLLARS (\$100), QU'IL S'AGISSE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE. **LES LIMITATIONS CI-DESSUS S'APPLIQUERONT NONOBSTANT L'ÉCHEC DE L'OBJECTIF ESSENTIEL DE TOUT RECOURS LIMITÉ PRÉVU AUX PRÉSENTES.** LES PARTIES CONVIENNENT QUE LES LIMITATIONS CI-DESSUS REPRÉSENTENT UNE RÉPARTITION RAISONNABLE DES RISQUES EN VERTU DU PRÉSENT CONTRAT. + + 7. DROIT APPLICABLE. + Le présent Contrat et toutes les questions découlant de ou liées au présent Contrat seront régis, interprétés et construits conformément aux lois des Îles Caïmans. Si une controverse, un différend ou une réclamation survient de ou en relation avec le présent Contrat («Différend»), la partie concernée, selon le cas, doit donner un préavis de 30 jours d'un tel Différend à l'autre partie (le «Avis de Différend»). Si le Différend n'est pas résolu à l'expiration de 30 jours après la signification de l'Avis de Différend, la partie concernée peut engager une procédure d'arbitrage comme prévu dans les présentes. Si le Différend persiste à l'expiration de 30 jours après la signification de l'Avis de Différend, le Différend sera réglé par arbitrage administré par le Centre International de Médiation et d'Arbitrage des Caïmans (CI-MAC) conformément aux Règles d'Arbitrage CI-MAC en vigueur à la date du présent Contrat, lesquelles Règles d'Arbitrage sont réputées être incorporées par référence à cette clause, et régies par la Loi sur l'Arbitrage (telle que modifiée). L'arbitrage aura son siège à George Town, Grand Caïman, Îles Caïmans et sera régi par le droit des Îles Caïmans. La langue de l'arbitrage sera l'anglais. L'arbitrage sera déterminé par un arbitre unique à nommer conformément aux Règles d'Arbitrage. Toute sentence ou décision rendue par l'arbitre sera rédigée par écrit et sera définitive et contraignante pour les parties sans aucun droit d'appel, et le jugement sur toute sentence ainsi obtenu pourra être saisi ou exécuté par tout tribunal compétent. Aucune action en justice ou en équité basée sur une réclamation découlant de ou liée au présent Contrat ne sera intentée devant un tribunal d'une quelconque juridiction. Si un litige ou un arbitrage est nécessaire pour faire respecter les termes du présent Contrat, la partie qui obtient gain de cause aura droit au remboursement de ses honoraires d'avocat par l'autre partie. Chaque partie renonce à tout droit qu'elle pourrait avoir d'invoquer la doctrine du forum non conveniens, d'affirmer qu'elle n'est pas soumise à la compétence de cet arbitrage ou de ces tribunaux ou de s'opposer au lieu dans la mesure où toute procédure est engagée conformément aux présentes. + + 8. DISPOSITIONS GÉNÉRALES. + Le présent Contrat ne peut être transféré ou cédé par l'Utilisateur sans le consentement écrit préalable de DZF. DZF peut librement céder le présent Contrat. Tous les avis devant être envoyés dans les présentes seront envoyés par e-mail (à DZF : legal@doublezero.xyz) et seront considérés comme reçus le lendemain de l'envoi (avec confirmation de transmission). Si une disposition du présent Contrat est jugée invalide ou inapplicable, les dispositions restantes du présent Contrat resteront en vigueur. La renonciation par l'une ou l'autre partie à tout défaut ou violation du présent Contrat ne constituera pas une renonciation à tout autre défaut ou violation ultérieur. Aucune des parties ne sera responsable d'un retard ou d'un manquement dans l'exécution dû à des cas de force majeure, des tremblements de terre, des pénuries d'approvisionnement, des difficultés de transport, des conflits du travail, des émeutes, des guerres, des incendies, des épidémies et des événements similaires échappant à son contrôle, qu'ils soient ou non prévisibles. Le présent Contrat ainsi que toutes les pièces jointes constituent l'accord complet entre les parties et remplacent tous les accords ou représentations antérieurs ou contemporains, écrits ou oraux, concernant l'objet des présentes. Le présent Contrat ne peut être modifié ou amendé que par écrit signé par un représentant dûment autorisé de chaque partie. + + + +### Connexion au Testnet en Mode IBRL + + +!!! Note inline end + Le mode IBRL ne nécessite pas de redémarrer les clients validateurs, car il utilise votre adresse IP publique existante. + +Les validateurs Solana Testnet complèteront la connexion au Testnet DoubleZero, qui est décrite sur cette page. + +Chaque validateur Solana possède sa propre **keypair d'identité** ; à partir de celle-ci, extrayez la clé publique connue sous le nom d'**ID de nœud**. Il s'agit de l'empreinte unique du validateur sur le réseau Solana. + +Avec le DoubleZeroID et l'ID de nœud identifiés, vous prouverez la propriété de votre machine. Cela se fait en créant un message incluant le DoubleZeroID signé avec la clé d'identité du validateur. La signature cryptographique résultante sert de preuve vérifiable que vous contrôlez le validateur. + +Enfin, vous soumettrez une **demande de connexion à DoubleZero**. Cette demande communique : *« Voici mon identité, voici la preuve de propriété, et voici comment j'entends me connecter. »* DoubleZero valide ces informations, accepte la preuve et provisionne l'accès réseau pour le validateur sur DoubleZero. + +Ce guide permet à 1 Validateur Principal de s'enregistrer lui-même, et jusqu'à 3 machines de sauvegarde/basculement en même temps. + +## Prérequis + +- CLI Solana installée et dans $PATH +- Pour les validateurs : Permission d'accéder au fichier keypair d'identité du validateur (p. ex., validator-keypair.json) sous l'utilisateur sol +- Pour les validateurs : Vérifier que la clé d'identité du validateur Solana connecté possède au moins 1 SOL +- Les règles de pare-feu permettent les connexions sortantes pour DoubleZero et Solana RPC selon les besoins, y compris GRE (ip proto 47) et BGP (169.254.0.0/16 sur tcp/179) + +!!! info + L'ID Validateur sera vérifié par rapport au gossip Solana pour déterminer l'IP cible. L'IP cible et le DoubleZero ID seront ensuite utilisés lors de l'ouverture d'un tunnel GRE entre votre machine et le DoubleZero Device cible. + + À considérer : Dans le cas où vous avez un ID factice et un ID principal sur la même IP, seul l'ID principal sera utilisé lors de l'enregistrement de la machine. En effet, l'ID factice n'apparaîtra pas dans le gossip et ne pourra donc pas être utilisé pour vérifier l'IP de la machine cible. + +## 1. Configuration de l'Environnement + +Veuillez suivre les instructions de [configuration](setup.md) avant de procéder. + +La dernière étape de la configuration consistait à se déconnecter du réseau. Cela garantit qu'un seul tunnel est ouvert sur votre machine vers DoubleZero, et que ce tunnel est sur le bon réseau. + +
+ +Pour configurer la CLI Client DoubleZero (`doublezero`) et le daemon (`doublezerod`) afin de se connecter au **testnet DoubleZero** : +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Vous devriez voir la sortie suivante : +``` +✅ doublezerod configured for environment testnet +``` + +Après environ 30 secondes, vous verrez les dispositifs DoubleZero disponibles : + + +```bash +doublezero latency +``` +Exemple de sortie (testnet) +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+La sortie du mainnet sera identique dans sa structure, mais avec beaucoup plus de dispositifs disponibles. + + + + +## 2. Ouvrir le port 44880 + +Les utilisateurs doivent ouvrir le port 44880 pour utiliser certaines [fonctionnalités de routage](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Pour ouvrir le port 44880, vous pouvez mettre à jour les tables IP comme suit : + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +notez les flags `-i doublezero0`, `-o doublezero0` qui restreignent cette règle uniquement à l'interface DoubleZero + +Ou UFW comme suit : + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +notez les flags `in on doublezero0`, `out on doublezero0` qui restreignent cette règle uniquement à l'interface DoubleZero + +## 3. Attester la Propriété du Validateur + +
+ +Avec votre environnement DoubleZero configuré, il est maintenant temps d'attester la propriété de votre Validateur. + +Le DoubleZero ID que vous avez créé lors de la [configuration](setup.md) de votre validateur principal doit être utilisé sur toutes les machines de sauvegarde. + +L'ID sur votre machine principale peut être trouvé avec `doublezero address`. Le même ID doit être dans `~/.config/doublezero/id.json` sur toutes les machines du cluster. + +Pour accomplir cela, vous vérifierez d'abord que la machine sur laquelle vous exécutez les commandes est votre **Validateur Principal** avec : + +``` +doublezero-solana passport find-validator -ut +``` + +Cela vérifie que le validateur est enregistré dans le gossip et apparaît dans le planning des leaders. + +Sortie attendue : + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` +!!! info + Le même workflow est utilisé pour une ou plusieurs machines. + Pour enregistrer une seule machine, excluez les arguments "--backup-validator-ids" ou "backup_ids=" de toutes les commandes de cette page. + +Maintenant, sur toutes les machines de sauvegarde sur lesquelles vous avez l'intention d'exécuter votre **Validateur Principal**, exécutez ce qui suit : + +``` +doublezero-solana passport find-validator -ut +``` + +Sortie attendue : + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +Cette sortie est attendue. Le nœud de sauvegarde ne peut pas être dans le planning des leaders au moment de la création du pass. + +Vous allez maintenant exécuter cette commande sur **toutes les machines de sauvegarde** sur lesquelles vous prévoyez d'utiliser le compte de vote et l'identité de votre **Validateur Principal**. + +
+ + +
+ +### Préparer la Connexion + +Exécutez la commande suivante sur la machine du **Validateur Principal**. C'est la machine sur laquelle vous avez une mise en jeu active, qui est dans le planning des leaders avec votre ID de validateur principal dans le gossip Solana sur la machine depuis laquelle vous exécutez la commande : + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +Exemple de sortie : + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: testnet + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +Notez la sortie à la fin de cette commande. C'est la structure pour l'étape suivante. + +
+ +## 4. Générer la Signature + +
+ +À la fin de la dernière étape, nous avons reçu une sortie pré-formatée pour `solana sign-offchain-message` + +À partir de la sortie ci-dessus, nous allons exécuter cette commande sur la machine du **Validateur Principal**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Sortie :** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Initier une Demande de Connexion dans DoubleZero + +
+ +Utilisez la commande `request-validator-access` pour créer un compte sur Solana pour la demande de connexion. L'agent DoubleZero Sentinel détecte le nouveau compte, valide son identité et sa signature, et crée le pass d'accès dans DoubleZero pour que le serveur puisse établir une connexion. + + +Utilisez l'ID de nœud, le DoubleZeroID et la signature. + +!!! note inline end + Dans cet exemple, nous utilisons `-k /home/user/.config/solana/id.json` pour trouver l'identité du validateur. Utilisez l'emplacement approprié pour votre déploiement local. + +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Sortie :** + +Cette sortie peut être utilisée pour voir la transaction sur un explorateur Solana. Assurez-vous de changer l'explorateur sur testnet. Cette vérification est optionnelle. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +En cas de succès, DoubleZero enregistrera le principal avec ses sauvegardes. Vous pouvez maintenant basculer entre les IP enregistrées dans le pass d'accès. DoubleZero maintiendra automatiquement la connectivité lors du basculement vers les nœuds de sauvegarde enregistrés de cette manière. + +
+ +## 6. Se Connecter en Mode IBRL + +
+ +Sur le serveur, avec l'utilisateur qui se connectera à DoubleZero, exécutez la commande `connect` pour établir la connexion à DoubleZero. + +``` +doublezero connect ibrl +``` + +Vous devriez voir une sortie indiquant le provisionnement, telle que : + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendez une minute que le tunnel GRE finisse de s'établir. Jusqu'à ce que le tunnel GRE soit configuré, votre sortie de statut peut indiquer "down" ou "Unknown" + +Vérifiez votre connexion : + +```bash +doublezero status +``` + +**Sortie :** +!!! note inline end + Examinez cette sortie. Notez que le `Tunnel src` et le `DoubleZero IP` correspondent à l'adresse IPv4 publique de votre machine. + + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` +Un statut `up` signifie que vous êtes connecté avec succès. + +Vous pourrez voir les routes propagées par d'autres utilisateurs sur DoubleZero en exécutant : + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Prochaine Étape : Publication de Shreds via Multicast + +Si vous avez terminé cette configuration et prévoyez de publier des shreds via multicast, passez à la [page suivante](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Testnet Connection.it.md b/docs/DZ Testnet Connection.it.md new file mode 100644 index 0000000..5aab605 --- /dev/null +++ b/docs/DZ Testnet Connection.it.md @@ -0,0 +1,284 @@ +# Connessione Validatore Testnet in Modalità IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "Connettendomi al testnet DoubleZero accetto i termini del Contratto di Valutazione indicati qui (clicca per espandere)" + DoubleZero Testnet + Contratto di Valutazione + + Accedendo o utilizzando la Soluzione (definita di seguito), accetti a partire dalla prima data di tale accesso (la "**Data di Efficacia**") che il presente Contratto di Valutazione (il "**Contratto**") stabilisce i termini e le condizioni in base ai quali DoubleZero Foundation ("**DZF**") ti fornirà ("**Utente**" o "**tu**") l'accesso alla Soluzione su base di valutazione. In considerazione delle reciproche promesse contenute nel presente, accetti quanto segue: + + 1. DEFINIZIONI. + + 1.1 "**Informazioni Riservate**" indica qualsiasi informazione divulgata da una parte all'altra che sia designata come riservata, o che dovrebbe altrimenti essere intesa come riservata, incluse, ma non limitate a, la Soluzione, piani di prodotto, piani aziendali, segreti commerciali, tecnologia o qualsiasi altra informazione proprietaria. + + 1.2 "**Soluzione**" indica la versione testnet dell'infrastruttura di rete ad alte prestazioni DoubleZero per progetti web3 ("**Testnet**") e il relativo servizio di filtraggio al margine con larghezza di banda integrata ("**Servizio Informativo**"), il Software DZ (definito di seguito), tutti i materiali forniti da DZF relativi al Software DZ ("**Documentazione**") e altri materiali che DZF fornisce all'Utente ai sensi del presente. + + 2. ACCESSO. + + 2.1 ^^Accesso alla Soluzione^^. Subordinatamente ai termini e alle condizioni del presente Contratto, DZF fornirà all'Utente l'accesso alla Soluzione tramite Internet. L'accesso dell'Utente è un uso limitato, non esclusivo e non trasferibile della Soluzione per consentire all'Utente di valutare il Servizio Informativo. Con riferimento a qualsiasi software che comprende la Soluzione ("**Software DZ**"), DZF concede all'Utente una licenza limitata, revocabile, durante il Periodo di Valutazione, per copiare, scaricare, fare un numero ragionevole di copie, eseguire e distribuire (ove applicabile) tale Software DZ esclusivamente come previsto dalla Documentazione. + + 2.2 ^^Restrizioni^^. L'Utente può utilizzare la Soluzione in conformità al presente Contratto dalla Data di Efficacia fino alla risoluzione da parte di DZF (il "**Periodo di Valutazione**"). L'Utente comprende che qualsiasi diritto di utilizzare la Soluzione oltre il Periodo di Valutazione sarà soggetto a un accordo commerciale separato tra le parti al riguardo, incluso il pagamento di commissioni. L'Utente non dovrà, e non dovrà consentire a terzi di: (i) modificare o creare opere derivate basate sulla Soluzione o su qualsiasi sua parte; (ii) riprodurre la Soluzione salvo quanto espressamente consentito dal presente Contratto; (iii) sublicenziare, distribuire, vendere, prestare, affittare, trasferire o concedere diritti sulla Soluzione o fornire accesso alla Soluzione a terzi, su base di service bureau o altrimenti; o (iv) utilizzare la Soluzione diversamente da quanto previsto nel presente. + + 2.3 ^^Proprietà^^. DZF conserva tutti i diritti, titoli e interessi, inclusi i diritti di proprietà intellettuale, nella e sulla Soluzione. + + 3. FEEDBACK. + DZF può periodicamente richiedere che l'Utente fornisca, e l'Utente accetta di fornire a DZF, feedback sull'uso, il funzionamento e la funzionalità della Soluzione ("Feedback"). L'Utente concede a DZF un diritto e una licenza non esclusivi, mondiali, perpetui, irrevocabili, esenti da royalty, completamente pagati, completamente sublicenziabili e trasferibili per utilizzare e incorporare il Feedback in qualsiasi prodotto e servizio, per produrre, usare, vendere, offrire in vendita, importare e altrimenti sfruttare tali prodotti e servizi, e per altrimenti usare, copiare, distribuire e sfruttare il Feedback senza restrizioni. + + 4. DURATA E RISOLUZIONE. + + 4.1 ^^Durata^^. Il presente Contratto avrà inizio alla Data di Efficacia e rimarrà in piena vigenza ed efficacia per il Periodo di Valutazione. Entrambe le parti possono risolvere il presente Contratto immediatamente per convenienza, per qualsiasi motivo o senza motivo, mediante notifica scritta all'altra parte (l'e-mail è sufficiente). + + 4.1 ^^Effetti della Risoluzione^^. Alla risoluzione del presente Contratto per qualsiasi motivo: (i) i diritti concessi all'Utente ai sensi del presente cesseranno immediatamente; (ii) l'Utente dovrà immediatamente interrompere qualsiasi uso della Soluzione e restituire o distruggere tutta la Documentazione e qualsiasi Software DZ sotto il suo controllo; (iii) ciascuna parte dovrà prontamente restituire o distruggere tutte le Informazioni Riservate e la proprietà dell'altra parte; e (iv) le Sezioni 2.2, 2.3, 3, 4.2 e da 5 a 8 sopravvivranno. + + 5. RISERVATEZZA. + Ciascuna parte accetta di utilizzare le Informazioni Riservate dell'altra parte esclusivamente per adempiere ai propri obblighi ed esercitare i propri diritti ai sensi del presente Contratto e non divulgherà, né permetterà la divulgazione, delle stesse, salvo quanto altrimenti consentito nel presente. Tuttavia, ciascuna parte può divulgare le Informazioni Riservate al proprio personale, avvocati e altri rappresentanti che abbiano necessità di conoscerle e siano vincolati da obblighi di riservatezza non meno protettivi di quelli stabiliti nel presente Contratto; e come richiesto dalla legge. + + 6. ESCLUSIONE DI GARANZIE; LIMITAZIONE DI RESPONSABILITÀ. + + 6.1 ^^ESCLUSIONE DI GARANZIE^^. LA SOLUZIONE VIENE FORNITA "COSÌ COM'È" SENZA GARANZIE DI ALCUN TIPO. DZF NON FORNISCE GARANZIE, ESPRESSE, IMPLICITE, LEGALI O DI ALTRO TIPO CON RIFERIMENTO ALLA SOLUZIONE E ALLA DOCUMENTAZIONE. + + 6.2 ^^LIMITAZIONE DI RESPONSABILITÀ^^. + SALVO PER UNA VIOLAZIONE DELLE SEZIONI 2.1, 2.2 E 5, IN NESSUN CASO ALCUNA PARTE SARÀ RESPONSABILE NEI CONFRONTI DELL'ALTRA PER DANNI INDIRETTI, INCIDENTALI, SPECIALI O ALTRI DANNI CONSEQUENZIALI. IN NESSUN CASO LA RESPONSABILITÀ AGGREGATA DI DZF SUPERERÀ CENTO DOLLARI (\$100). + + 7. LEGGE APPLICABILE. + Il presente Contratto e tutte le questioni derivanti da o relative al presente Contratto saranno regolati, interpretati e costruiti in conformità alle leggi delle Isole Cayman. Le eventuali controversie saranno risolte tramite arbitrato amministrato dal Cayman International Mediation & Arbitration Centre (CI-MAC). + + 8. DISPOSIZIONI GENERALI. + Il presente Contratto non può essere trasferito o ceduto dall'Utente senza il previo consenso scritto di DZF. DZF può liberamente cedere il presente Contratto. Il presente Contratto, insieme a eventuali allegati, costituisce l'accordo completo tra le parti. + + + +### Connessione al Testnet in Modalità IBRL + + +!!! Note inline end + La modalità IBRL non richiede il riavvio dei client validatori, perché utilizza il tuo indirizzo IP pubblico esistente. + +I validatori Solana Testnet completeranno la connessione al Testnet DoubleZero, che è dettagliata su questa pagina. + +Ogni validatore Solana ha il proprio **keypair di identità**; da questo, estrai la chiave pubblica nota come **node ID**. Questa è l'impronta digitale univoca del validatore sulla rete Solana. + +Con il DoubleZeroID e il node ID identificati, dimostrerai la proprietà della tua macchina. Questo viene fatto creando un messaggio che include il DoubleZeroID firmato con la chiave di identità del validatore. La firma crittografica risultante serve come prova verificabile che controlli il validatore. + +Infine, invierai una **richiesta di connessione a DoubleZero**. Questa richiesta comunica: *"Ecco la mia identità, ecco la prova di proprietà, ed ecco come intendo connettermi."* DoubleZero valida queste informazioni, accetta la prova e fornisce l'accesso alla rete per il validatore su DoubleZero. + +Questa guida consente a 1 Validatore Primario di registrarsi, e fino a 3 macchine di backup/failover contemporaneamente. + +## Prerequisiti + +- Solana CLI installata e nel $PATH +- Per i validatori: Permesso di accesso al file keypair di identità del validatore (es. validator-keypair.json) sotto l'utente sol +- Per i validatori: Verifica che la chiave Identity del validatore Solana che si connette abbia almeno 1 SOL +- Le regole firewall permettono le connessioni in uscita per DoubleZero e Solana RPC come necessario, inclusi GRE (ip proto 47) e BGP (169.254.0.0/16 su tcp/179) + +!!! info + L'ID Validatore verrà verificato con Solana gossip per determinare l'IP target. L'IP target e il DoubleZero ID verranno poi utilizzati per aprire un tunnel GRE tra la tua macchina e il DoubleZero Device target. + +## 1. Configurazione dell'Ambiente + +Segui le istruzioni di [setup](setup.md) prima di procedere. + +
+ +Per configurare la CLI DoubleZero Client (`doublezero`) e il daemon (`doublezerod`) per connettersi al **testnet DoubleZero**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Dovresti vedere il seguente output: +``` +✅ doublezerod configured for environment testnet +``` + +Dopo circa 30 secondi vedrai i dispositivi DoubleZero disponibili: + + +```bash +doublezero latency +``` +Esempio di output (testnet) +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+L'output del Mainnet sarà identico nella struttura, ma con molti più dispositivi disponibili. + + + + +## 2. Apri la porta 44880 + +Gli utenti devono aprire la porta 44880 per utilizzare alcune [funzionalità di routing](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +nota i flag `-i doublezero0`, `-o doublezero0` che limitano questa regola solo all'interfaccia DoubleZero + +O UFW: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +nota i flag `in on doublezero0`, `out on doublezero0` che limitano questa regola solo all'interfaccia DoubleZero + +## 3. Attesta la Proprietà del Validatore + +
+ +In ordine per fare questo verificherai prima che la macchina da cui stai eseguendo i comandi sia il tuo **Validatore Primario** con: + +``` +doublezero-solana passport find-validator -ut +``` + +Output atteso: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` + +Ora, su tutte le macchine di backup: + +``` +doublezero-solana passport find-validator -ut +``` + +Output atteso: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` + +
+ + +
+ +### Prepara la Connessione + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + +
+ +## 4. Genera la Firma + +
+ +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Output:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Avvia una Richiesta di Connessione in DoubleZero + +
+ +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Output:** + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +
+ +## 6. Connettiti in Modalità IBRL + +
+ +``` +doublezero connect ibrl +``` + +Dovresti vedere un output che indica il provisioning, come: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` + +Verifica la tua connessione: + +```bash +doublezero status +``` + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + +
+ +### Passo Successivo: Pubblicazione degli Shred via Multicast + +Se hai completato questa configurazione e prevedi di pubblicare shred via multicast, procedi alla [pagina successiva](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Testnet Connection.ja.md b/docs/DZ Testnet Connection.ja.md new file mode 100644 index 0000000..3a6fa1c --- /dev/null +++ b/docs/DZ Testnet Connection.ja.md @@ -0,0 +1,381 @@ +# IBRLモードでのバリデーターテストネット接続 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "DoubleZeroテストネットに接続することで、こちらに記載の評価契約の条件に同意します(クリックして展開)" + DoubleZeroテストネット + 評価契約 + + 本ソリューション(以下に定義)へのアクセスまたは使用により、当該アクセスの最初の日付時点(「**発効日**」)で、この評価契約(「**本契約**」)が、DoubleZero Foundation(「**DZF**」)が評価ベースでソリューションへのアクセスを提供する条件を定めることに同意するものとします。本契約中の相互の約束を約因として、以下に同意します: + + 1. 定義。 + + 1.1「**機密情報**」とは、一方の当事者が他方に開示した情報で、機密として指定されたもの、またはソリューション、製品計画、事業計画、企業秘密、技術、またはその他の独自情報を含むがこれらに限定されない、機密であると理解されるべきすべての情報を意味します。 + + 1.2「**ソリューション**」とは、web3プロジェクト向けDoubleZero高性能ネットワークインフラのテストネット版(「**テストネット**」)および統合帯域幅を持つ関連エッジフィルタリングサービス(「**情報サービス**」)、DZソフトウェア(以下に定義)、DZソフトウェアに関連するDZFが提供するすべての資料(「**ドキュメント**」)、およびDZFがここでユーザーに提供するその他の資料を意味します。 + + 2. アクセス。 + + 2.1 ^^ソリューションへのアクセス^^。本契約の条件に従い、DZFはインターネットを通じてユーザーにソリューションへのアクセスを提供します。ユーザーのアクセスは、情報サービスのみを評価するためのソリューションの非独占的、非譲渡可能、限定的な使用です。ソリューションを構成するソフトウェア(「**DZソフトウェア**」)に関して、DZFはここで評価期間中、ドキュメントで想定される範囲でのみ、DZソフトウェアをコピー、ダウンロード、合理的な数のコピーを作成、実行、デプロイ(該当する場合)するための限定的で取り消し可能なライセンスをユーザーに付与します。 + + 2.2 ^^制限^^。ユーザーは、発効日からDZFによって終了されるまで(「**評価期間**」)本契約に従いソリューションを使用できます。ユーザーは、評価期間を超えたソリューションの使用権は、手数料の支払いを含む当事者間の別途の商業契約に従うことを理解します。ユーザーは、第三者を許可した場合も含め、次のことを行ってはなりません:(i)ソリューションまたはその一部に基づいて改変や派生作品を作成すること;(ii)本契約で明示的に許可される場合を除き、ソリューションを複製すること;(iii)ソリューションのすべてまたは一部をサブライセンス、配布、販売、貸し出し、賃貸、リース、転送、または権利を付与すること、またはサービスビューロー等として第三者にアクセスを提供すること(ただし、スタンドアロンベースでなく、ユーザーのプラットフォームまたは製品を通じてまたは関連して情報サービスを提供する場合を除く);または(iv)ここに規定された以外の方法でソリューションを使用すること。 + + 2.3 ^^所有権^^。DZFはソリューションに関するすべての権利、権原、利益(知的財産権を含む)を保持します。 + + 3. フィードバック。 + DZFは定期的にユーザーにソリューションの使用、運用、機能に関するフィードバック(「フィードバック」)の提供を要求する場合があり、ユーザーはDZFにフィードバックを提供することに同意します。ユーザーはここで、フィードバックを製品やサービスに使用・組み込み、そのような製品やサービスを製造、使用、販売、販売の申し出、輸入などし、フィードバックを制限なく使用、コピー、配布、その他の方法で利用するための非独占的、世界的、永続的、取り消し不能、ロイヤルティフリー、完全に支払い済み、完全にサブライセンス可能かつ譲渡可能な権利とライセンスをDZFに付与します。 + + 4. 期間と終了。 + + 4.1 ^^期間^^。本契約は発効日から開始し、評価期間中有効です。いずれの当事者も、任意の理由または理由なしに、他方の当事者への書面による通知(電子メールで十分)により、本契約をいつでも終了できます。 + + 4.1 ^^終了の効力^^。理由を問わず本契約が終了した場合:(i)ユーザーに付与された権利は直ちに終了します;(ii)ユーザーはソリューションの使用を直ちに中止し、管理下にあるすべてのドキュメントとDZソフトウェアを返却または廃棄します;(iii)各当事者は他方の当事者のすべての機密情報と財産を速やかに返却または廃棄します;(iv)第2.2条、第2.3条、第3条、第4.2条、第5条から第8条が存続します。 + + 5. 機密保持。 + 各当事者は、他方の機密情報を本契約に基づく義務の履行と権利の行使のみに使用し、ここで許可される場合を除き、同情報を開示または開示を許可しないことに同意します。ただし、いずれの当事者も、知る必要があり本契約と同等以上の機密保持義務に拘束される自社の人員、弁護士、その他の代表者に機密情報を開示できます;また法律で要求される場合(この場合、受信当事者は開示前に開示当事者に事前通知と異議申立の機会を提供し、適用法の範囲で開示を最小限に抑えます)。第5条の機密保持義務は次の情報には適用されません:(a)受信当事者の過失なしに一般に知られるかまたは公開されるようになった情報;(b)開示当事者による開示前に受信当事者が制限なく適切に知っていた情報;(c)そうする法的権限を持つ別の人から受信当事者に制限なく適切に開示された情報;または(d)開示当事者の機密情報を使用または参照せずに受信当事者が独自に開発した情報。各当事者は、他方の機密情報を無許可の使用および開示から保護するために適切な注意を払うことに同意します。本条または本契約のライセンスの実際のまたは脅威となる違反が発生した場合、違反していない当事者は、利用可能な他の権利または救済を放棄することなく、即時の差し止めおよびその他の衡平法上の救済を求める権利を持ちます。 + + 6. 保証免責;責任制限。 + + 6.1 ^^保証免責^^。ソリューションは「現状のまま」(AS IS)で提供され、いかなる種類の保証もありません。DZFは、その状態、表明または説明への適合性を含むソリューションとドキュメントに関して、明示的、黙示的、法定またはその他のいかなる保証もなされず、DZFは特に商品性、特定目的への適合性、権原、および非侵害の黙示的保証をすべて否認します。 + + 6.2 ^^責任制限^^。 + 第2.1条、第2.2条、および第5条の違反を除き、いかなる場合においても、いずれの当事者も他方に対して、本契約から生じるまたは本契約に関連する契約、不法行為またはその他の訴訟において、相手方がそのような損害の可能性について通知を受けていた場合でも、利益の損失、使用または損失のデータを含むがこれに限定されない間接的、付随的、特別またはその他の結果的損害について責任を負いません。いかなる場合においても、本契約から生じるまたは本契約に関連するDZFの総責任は、契約、不法行為またはその他の訴訟において100ドルを超えません。**上記の制限は、ここに記載されたいかなる限定的救済の本質的目的の不履行にもかかわらず適用されます。**当事者は、上記の制限が本契約に基づくリスクの合理的な配分を表すことに同意します。 + + 7. 準拠法。 + 本契約および本契約から生じるまたは本契約に関するすべての事項は、ケイマン諸島の法律に従って統治、解釈、および構成されます。本契約に関連して論争、紛争または請求(「紛争」)が生じた場合、関係する当事者は適宜他の当事者に当該紛争の30日前の通知(「紛争の通知」)を提供する必要があります。紛争の通知から30日の期限切れまでに紛争が解決されない場合、関係する当事者はここに規定する仲裁手続きを開始できます。紛争の通知から30日の期限切れ後も紛争が残る場合、紛争はケイマン国際調停・仲裁センター(CI-MAC)によって、発効日時点で有効なCI-MAC仲裁規則(「仲裁規則」)に従って管理される仲裁によって解決され、仲裁規則はここで参照により組み込まれ、仲裁法(改正)によって統治されます。仲裁はケイマン諸島グランドケイマン、ジョージタウンを所在地とし、ケイマン諸島法によって統治されます。仲裁の言語は英語です。仲裁は仲裁規則に従って任命される単独仲裁人によって決定されます。仲裁人によるいかなる裁定や決定も書面によるものとし、上訴の権利なしに当事者間で最終的かつ拘束力を持ち、取得された裁定に基づく判決は管轄権を有するいかなる裁判所でも執行できます。本契約から生じるまたは本契約に関連するいかなる請求に基づく法的または衡平法上の訴訟も、いかなる管轄区域の裁判所にも提起できません。 + + 8. 一般規定。 + 本契約はDZFの事前書面による同意なしにユーザーによって移転または譲渡できません。DZFは本契約を自由に譲渡できます。ここで送付が必要なすべての通知は電子メールで送付され(DZF宛:legal@doublezero.xyz)、送付翌日に受信されたとみなされます(送信確認済み)。本契約のいずれかの規定が無効または執行不能と判断された場合、本契約の残りの規定は完全に有効です。いずれかの当事者によるデフォルトまたは本契約の違反の放棄は、他のまたはその後のデフォルトまたは違反の放棄を構成しません。いずれの当事者も、予見可能かどうかにかかわらず、天災、地震、物資不足、輸送困難、労働争議、暴動、戦争、火災、疫病、およびその管理を超える類似の事象による履行の遅延または失敗について責任を負いません。本契約はすべての添付と共に、当事者間の完全な合意を構成し、ここに記載された主題に関するすべての以前または同時の合意または表明(書面または口頭)に優先します。本契約は、各当事者の正式に授権された代表者が署名した書面によってのみ修正または変更できます。 + + + +### IBRLモードでのテストネット接続 + + +!!! Note inline end + IBRLモードは既存のパブリックIPアドレスを使用するため、バリデータークライアントの再起動が不要です。 + +SolanaテストネットバリデーターはDoubleZeroテストネットへの接続を完了します。詳細はこのページに記載されています。 + +各Solanaバリデーターには独自の**アイデンティティキーペア**があります。そこから**ノードID**として知られる公開鍵を抽出します。これはSolanaネットワーク上のバリデーターの一意のフィンガープリントです。 + +DoubleZeroIDとノードIDが特定されると、マシンの所有権を証明します。これは、DoubleZeroIDを含むメッセージをバリデーターのアイデンティティキーで署名することによって行われます。生成された暗号署名は、バリデーターを制御していることの検証可能な証明として機能します。 + +最後に、**DoubleZeroへの接続リクエストを送信**します。このリクエストは「*こちらが私のアイデンティティ、こちらが所有権の証明、そしてこちらが接続方法です。*」というメッセージを伝えます。DoubleZeroはこの情報を検証し、証明を受け入れ、DoubleZero上のバリデーターのネットワークアクセスをプロビジョニングします。 + +このガイドでは、1台のプライマリバリデーターが自身を登録し、同時に最大3台のバックアップ/フェイルオーバーマシンを登録できます。 + +## 前提条件 + +- Solana CLIがインストールされ、$PATHに設定されていること +- バリデーターの場合:solユーザー下のバリデーターアイデンティティキーペアファイル(例:validator-keypair.json)にアクセスする権限 +- バリデーターの場合:接続するSolanaバリデーターのアイデンティティキーに少なくとも1 SOLがあることを確認 +- ファイアウォールルールがDoubleZeroとSolana RPCのアウトバウンド接続を許可していること(GRE(ipプロト47)とBGP(169.254.0.0/16のtcp/179)を含む) + +!!! info + バリデーターIDはSolanaゴシップに対して確認され、ターゲットIPが決定されます。ターゲットIPとDoubleZero IDは、マシンとターゲットDoubleZeroデバイス間のGREトンネルを開く際に使用されます。 + + 注意:同じIPにジャンクIDとプライマリIDがある場合、マシンの登録にはプライマリIDのみが使用されます。これはジャンクIDがゴシップに表示されず、ターゲットマシンのIPを確認するために使用できないためです。 + +## 1. 環境設定 + +続行する前に[セットアップ](setup.md)手順に従ってください。 + +セットアップの最後のステップはネットワークから切断することでした。これにより、マシン上のDoubleZeroへのトンネルが1つだけ開いており、そのトンネルが正しいネットワーク上にあることを確認します。 + +
+ +DoubleZeroクライアントCLI(`doublezero`)とデーモン(`doublezerod`)を**DoubleZeroテストネット**に接続するように設定するには: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +次の出力が表示されるはずです: +``` +✅ doublezerod configured for environment testnet +``` + +約30秒後に利用可能なDoubleZeroデバイスが表示されます: + + +```bash +doublezero latency +``` +テストネットの出力例: +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+メインネットの出力は構造が同じですが、利用可能なデバイスが多くなります。 + + +## 2. ポート44880を開く + +一部の[ルーティング機能](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md)を利用するには、ユーザーはポート44880を開く必要があります。 + +ポート44880を開くには、例えば次のようにIPテーブルを更新できます: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +このルールをDoubleZeroインターフェースのみに制限する`-i doublezero0`、`-o doublezero0`フラグに注意してください。 + +またはUFWの場合: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +このルールをDoubleZeroインターフェースのみに制限する`in on doublezero0`、`out on doublezero0`フラグに注意してください。 + +## 3. バリデーター所有権の証明 + +
+ +DoubleZero環境が設定されたので、バリデーター所有権の証明を行います。 + +プライマリバリデーターの[セットアップ](setup.md)で作成したDoubleZero IDをすべてのバックアップマシンで使用する必要があります。 + +プライマリマシンのIDは`doublezero address`で確認できます。同じIDがクラスター内のすべてのマシンの`~/.config/doublezero/id.json`に必要です。 + +これを実現するために、まずコマンドを実行しているマシンが**プライマリバリデーター**であることを次のコマンドで確認します: + +``` +doublezero-solana passport find-validator -ut +``` + +これにより、バリデーターがゴシップに登録され、リーダースケジュールに表示されることを確認します。 + +期待される出力: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` +!!! info + 同じワークフローが1台でも複数台のマシンでも使用されます。 + 1台のマシンを登録する場合は、このページのコマンドから"--backup-validator-ids"または"backup_ids="引数を除外してください。 + +次に、**プライマリバリデーター**を実行する予定のすべてのバックアップマシンで以下を実行します: + +``` +doublezero-solana passport find-validator -ut +``` + +期待される出力: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +この出力は正常です。バックアップノードはパス作成時にリーダースケジュールに含まれることができません。 + +次に、**プライマリバリデーター**の投票アカウントとアイデンティティを使用する予定の**すべてのバックアップマシン**でこのコマンドを実行します。 + +
+ + +
+ +### 接続の準備 + +**プライマリバリデーター**マシンで次のコマンドを実行します。これはコマンドを実行しているマシンのSolanaゴシップに、プライマリバリデーターIDを持つアクティブなステークがあり、リーダースケジュールに含まれているマシンです: + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +出力例: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: testnet + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +このコマンドの最後の出力に注意してください。次のステップの構造になっています。 + +
+ +## 4. 署名の生成 + +
+ +前のステップの最後に、`solana sign-offchain-message`のための事前フォーマットされた出力を受け取りました。 + +上記の出力から**プライマリバリデーター**マシンでこのコマンドを実行します。 + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**出力:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. DoubleZeroでの接続リクエストの開始 + +
+ +`request-validator-access`コマンドを使用して、接続リクエストのためにSolana上にアカウントを作成します。DoubleZero Sentinelエージェントが新しいアカウントを検出し、アイデンティティと署名を検証し、サーバーが接続を確立できるようにDoubleZeroにアクセスパスを作成します。 + + +ノードID、DoubleZeroID、署名を使用します。 + +!!! note inline end + この例では`-k /home/user/.config/solana/id.json`を使用してバリデーターアイデンティティを見つけます。ローカルデプロイメントの適切な場所を使用してください。 + +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**出力:** + +この出力はSolanaエクスプローラーでトランザクションを確認するために使用できます。エクスプローラーをテストネットに変更することを忘れずに。この確認はオプションです。 + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +成功した場合、DoubleZeroはプライマリをバックアップとともに登録します。アクセスパスに登録されたIPの間でフェイルオーバーできるようになります。DoubleZeroはこのように登録されたバックアップノードへの切り替え時に接続を自動的に維持します。 + +
+ +## 6. IBRLモードでの接続 + +
+ +DoubleZeroに接続するユーザーで、サーバー上で`connect`コマンドを実行してDoubleZeroへの接続を確立します。 + +``` +doublezero connect ibrl +``` + +以下のようなプロビジョニングを示す出力が表示されます: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +GREトンネルのセットアップが完了するまで1分待ちます。GREトンネルのセットアップが完了するまで、ステータス出力が「down」または「Unknown」を返す場合があります。 + +接続を確認します: + +```bash +doublezero status +``` + +**出力:** +!!! note inline end + この出力を確認してください。`Tunnel src`と`DoubleZero IP`がマシンのパブリックIPv4アドレスと一致していることに注意してください。 + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` +`up`のステータスは正常に接続されていることを意味します。 + +次のコマンドを実行することでDoubleZero上の他のユーザーによって伝搬されたルートを確認できます: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 次のステップ:マルチキャストによるシュレッドの公開 + +このセットアップを完了してマルチキャストでシュレッドを公開する予定の場合は、[次のページ](Validator%20Multicast%20Connection.md)に進んでください。 diff --git a/docs/DZ Testnet Connection.ko.md b/docs/DZ Testnet Connection.ko.md new file mode 100644 index 0000000..df8ad0e --- /dev/null +++ b/docs/DZ Testnet Connection.ko.md @@ -0,0 +1,383 @@ +# IBRL 모드 검증자 테스트넷 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "DoubleZero 테스트넷에 연결함으로써 여기에 명시된 평가 계약 조건에 동의합니다 (클릭하여 확장)" + DoubleZero 테스트넷 + 평가 계약 + + 본 솔루션(아래 정의)에 액세스하거나 사용함으로써 귀하는 첫 번째 액세스 날짜("**발효일**")로부터 본 평가 계약("**계약**")이 DoubleZero Foundation("**DZF**")이 평가 기준으로 솔루션에 대한 액세스를 제공하는 조건을 규정함에 동의합니다. 상호 약속의 대가로 귀하는 다음에 동의합니다: + + 1. 정의. + + 1.1 "**기밀 정보**"는 기밀로 지정되었거나 솔루션, 제품 계획, 사업 계획, 영업 비밀, 기술 또는 기타 독점 정보를 포함하되 이에 국한되지 않는 기타 기밀로 이해되어야 하는 일방 당사자가 타방 당사자에게 공개한 모든 정보를 의미합니다. + + 1.2 "**솔루션**"은 web3 프로젝트를 위한 DoubleZero 고성능 네트워크 인프라의 테스트넷 버전("**테스트넷**") 및 통합 대역폭이 있는 관련 엣지 필터링 서비스("**정보 서비스**"), DZ 소프트웨어(아래 정의), DZ 소프트웨어와 관련하여 DZF가 제공하는 모든 자료("**문서**"), 및 DZF가 여기서 사용자에게 제공하는 기타 자료를 의미합니다. + + 2. 액세스. + + 2.1 ^^솔루션 액세스^^. 본 계약의 조건에 따라 DZF는 인터넷을 통해 사용자에게 솔루션 액세스를 제공합니다. 사용자의 액세스는 사용자가 정보 서비스를 평가할 수 있도록 하기 위한 솔루션의 비독점적, 비양도 가능한, 제한적 사용입니다. 솔루션을 구성하는 소프트웨어("**DZ 소프트웨어**")와 관련하여 DZF는 평가 기간 동안 사용자에게 문서에서 예상한 대로만 해당 DZ 소프트웨어를 복사, 다운로드, 합리적인 수의 사본 작성, 실행 및 배포(해당하는 경우)할 수 있는 제한적, 취소 가능한 라이선스를 부여합니다. + + 2.2 ^^제한^^. 사용자는 발효일부터 DZF가 종료할 때까지("**평가 기간**") 본 계약에 따라 솔루션을 사용할 수 있습니다. 사용자는 평가 기간 이후의 솔루션 사용 권리가 수수료 지불을 포함하여 당사자 간의 별도 상업 계약에 따를 것임을 이해합니다. 사용자는 다음을 하지 않아야 하며 제3자가 하도록 허용해서도 안 됩니다: (i) 솔루션 또는 그 일부를 기반으로 수정하거나 파생 저작물을 생성하는 것; (ii) 본 계약에서 명시적으로 허용된 경우를 제외하고 솔루션을 복제하는 것; (iii) 솔루션의 전부 또는 일부에 대한 권리를 서비스 기관 기준으로 또는 기타 방식으로 제3자에게 제공하는 것 (단, 독립적으로가 아닌 사용자의 플랫폼 또는 제품을 통해 또는 그와 관련하여 정보 서비스를 제공하는 경우는 제외); 또는 (iv) 여기에 제공된 것 이외의 방식으로 솔루션을 사용하는 것. + + 2.3 ^^소유권^^. DZF는 솔루션에 대한 모든 권리, 소유권 및 이익(지적 재산권 포함)을 보유합니다. + + 3 피드백. + DZF는 주기적으로 사용자에게 솔루션의 사용, 운영 및 기능에 관한 피드백("피드백")을 제공하도록 요청할 수 있으며 사용자는 DZF에 이를 제공하기로 동의합니다. 사용자는 DZF에 피드백을 제품 및 서비스에 사용하고 통합할 수 있는 비독점적, 전 세계적, 영구적, 취소 불가능한, 로열티 없는, 완전히 지불된, 완전히 서브라이선스 가능하고 양도 가능한 권리와 라이선스를 부여합니다. + + 4. 기간 및 해지. + + 4.1 ^^기간^^. 본 계약은 발효일부터 시작하여 평가 기간 동안 완전한 효력을 유지합니다. 어느 당사자든 서면 통지(이메일로 충분)를 통해 상대방에게 어떤 이유로든 즉시 본 계약을 해지할 수 있습니다. + + 4.1 ^^해지의 효과^^. 어떤 이유로든 본 계약이 해지되면: (i) 사용자에게 부여된 권리가 즉시 종료됩니다; (ii) 사용자는 솔루션 사용을 즉시 중단하고 그 통제 하에 있는 모든 문서 및 DZ 소프트웨어를 반환하거나 폐기해야 합니다; (iii) 각 당사자는 상대방의 모든 기밀 정보와 재산을 즉시 반환하거나 폐기해야 합니다; (iv) 섹션 2.2, 2.3, 3, 4.2, 5~8은 존속합니다. + + 5. 기밀 유지. + 각 당사자는 본 계약 하에서 의무를 이행하고 권리를 행사하기 위해서만 상대방의 기밀 정보를 사용하고 본 계약에서 달리 허용된 경우를 제외하고는 이를 공개하거나 공개되도록 허용하지 않기로 동의합니다. 다만, 어느 당사자든 알아야 할 필요가 있고 본 계약에 규정된 것보다 덜 보호적이지 않은 기밀 유지 의무에 구속되는 직원, 변호사 및 기타 대리인에게 기밀 정보를 공개할 수 있습니다; 법에서 요구하는 경우(수신 당사자는 공개 당사자에게 사전 통지를 제공하고 그러한 공개에 이의를 제기할 기회를 제공하며 적용 가능한 법이 허용하는 한 공개를 최소화합니다). 본 섹션 5의 기밀 유지 의무는 다음에는 적용되지 않습니다: (a) 수신 당사자의 과실 없이 일반적으로 알려지거나 공개적으로 이용 가능한 정보; (b) 공개 당사자의 공개 전에 수신 당사자에게 제한 없이 적절히 알려진 정보; (c) 법적 권한을 가진 다른 사람에 의해 제한 없이 수신 당사자에게 적절히 공개된 정보; (d) 공개 당사자의 기밀 정보를 사용하거나 참조하지 않고 수신 당사자가 독립적으로 개발한 정보. 각 당사자는 상대방의 기밀 정보를 무단 사용 및 공개로부터 보호하는 데 상당한 주의를 기울이기로 동의합니다. + + 6. 보증 면책; 책임 제한. + + 6.1 ^^보증 면책^^. 솔루션은 어떠한 종류의 보증도 없이 "있는 그대로" 제공됩니다. DZF는 솔루션 및 문서에 대해 명시적, 묵시적, 법적 또는 기타 보증을 제공하지 않으며 상품성, 특정 목적 적합성, 소유권 및 비침해에 대한 모든 묵시적 보증을 특별히 부인합니다. + + 6.2 ^^책임 제한^^. + 섹션 2.1, 2.2, 5 위반의 경우를 제외하고, 어떠한 경우에도 어느 당사자도 이익 손실 또는 사용 손실 또는 데이터 손실에 대한 손해배상을 포함하되 이에 국한되지 않는 간접적, 부수적, 특별 또는 기타 결과적 손해에 대해 계약 행위, 불법 행위 또는 기타의 경우에 상대방에 대해 책임을 지지 않습니다. 어떠한 경우에도 DZF의 총 책임은 계약 행위, 불법 행위 또는 기타의 경우에 $100를 초과하지 않습니다. + + 7. 준거법. + 본 계약 및 본 계약과 관련하여 발생하는 모든 사항은 케이맨 제도의 법률에 따라 관리, 해석 및 구성됩니다. 본 계약과 관련하여 분쟁이 발생하는 경우, 해당 당사자는 상대방 당사자에게 30일의 분쟁 통지를 해야 합니다. 분쟁이 해결되지 않는 경우, 케이맨 제도 조정 및 중재 센터(CI-MAC)에 의해 관리되는 중재로 분쟁을 해결합니다. 중재는 케이맨 제도 조지 타운에서 진행되며 케이맨 제도 법률이 적용됩니다. 중재 언어는 영어입니다. + + 8. 일반 조항. + 본 계약은 DZF의 사전 서면 동의 없이 사용자가 양도하거나 이전할 수 없습니다. DZF는 본 계약을 자유롭게 양도할 수 있습니다. 본 계약에 따라 보내야 하는 모든 통지는 이메일로 전송되어야 하며(DZF: legal@doublezero.xyz) 전송 다음 날에 수신된 것으로 간주됩니다. 본 계약의 어느 조항이 무효 또는 집행 불가능한 것으로 판명되는 경우 본 계약의 나머지 조항은 완전한 효력을 유지합니다. + + + +### IBRL 모드로 테스트넷에 연결 + + +!!! Note inline end + IBRL 모드는 기존 공개 IP 주소를 사용하므로 검증자 클라이언트를 재시작할 필요가 없습니다. + +Solana 테스트넷 검증자는 이 페이지에 자세히 설명된 DoubleZero 테스트넷 연결을 완료합니다. + +각 Solana 검증자에는 고유한 **신원 키쌍**이 있으며, 이로부터 **노드 ID**로 알려진 공개 키를 추출합니다. 이것이 Solana 네트워크에서 검증자의 고유 지문입니다. + +DoubleZeroID와 노드 ID가 확인되면 기계의 소유권을 증명해야 합니다. 이는 검증자의 신원 키로 서명된 DoubleZeroID를 포함하는 메시지를 생성하여 수행됩니다. 결과적인 암호화 서명은 검증자를 제어한다는 검증 가능한 증거로 사용됩니다. + +마지막으로 **DoubleZero에 연결 요청을 제출**합니다. 이 요청은 다음을 전달합니다: *"제 신원이 여기 있고, 소유권 증거가 여기 있으며, 연결 방법이 여기 있습니다."* DoubleZero는 이 정보를 검증하고 증거를 수락하며 DoubleZero에서 검증자의 네트워크 액세스를 프로비저닝합니다. + +이 가이드를 통해 1개의 기본 검증자가 자신을 등록하고 동시에 최대 3개의 백업/장애 조치 기계를 등록할 수 있습니다. + +## 사전 요구사항 + +- Solana CLI 설치 및 $PATH 등록 +- 검증자의 경우: sol 사용자 하에 검증자 신원 키쌍 파일(예: validator-keypair.json)에 대한 액세스 권한 +- 검증자의 경우: 연결할 Solana 검증자의 신원 키에 최소 1 SOL이 있는지 확인 +- 방화벽 규칙이 DoubleZero 및 Solana RPC에 대한 아웃바운드 연결을 허용해야 함 (GRE(ip proto 47) 및 BGP(169.254.0.0/16의 tcp/179) 포함) + +!!! info + 검증자 ID는 Solana 가십에 대해 확인되어 대상 IP를 결정합니다. 대상 IP와 DoubleZero ID는 기계와 대상 DoubleZero 장치 간에 GRE 터널을 열 때 사용됩니다. + + 고려사항: 동일한 IP에 정크 ID와 기본 ID가 있는 경우 기본 ID만 기계 등록에 사용됩니다. 정크 ID는 가십에 나타나지 않으므로 대상 기계의 IP를 확인하는 데 사용할 수 없습니다. + +## 1. 환경 구성 + +진행하기 전에 [설정](setup.md) 지침을 따르세요. + +설정의 마지막 단계는 네트워크에서 연결을 해제하는 것이었습니다. 이는 기계에 DoubleZero에 대한 터널이 하나만 열려 있고 해당 터널이 올바른 네트워크에 있도록 하기 위한 것입니다. + +
+ +**DoubleZero 테스트넷**에 연결하도록 DoubleZero 클라이언트 CLI(`doublezero`) 및 데몬(`doublezerod`)을 구성하려면: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +다음 출력이 표시되어야 합니다: +``` +✅ doublezerod configured for environment testnet +``` + +약 30초 후 DoubleZero 장치를 볼 수 있습니다: + + +```bash +doublezero latency +``` +예시 출력 (테스트넷) +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+메인넷 출력은 구조가 동일하지만 더 많은 장치가 있습니다. + + + + +## 2. 포트 44880 열기 + +사용자는 일부 [라우팅 기능](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md)을 활용하기 위해 포트 44880을 열어야 합니다. + +포트 44880을 열려면 다음과 같이 IP 테이블을 업데이트할 수 있습니다: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +이 규칙을 DoubleZero 인터페이스로만 제한하는 `-i doublezero0`, `-o doublezero0` 플래그에 주의하세요. + +또는 UFW를 사용할 수 있습니다: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +이 규칙을 DoubleZero 인터페이스로만 제한하는 `in on doublezero0`, `out on doublezero0` 플래그에 주의하세요. + +## 3. 검증자 소유권 증명 + +
+ +DoubleZero 환경이 설정되었으면 이제 검증자 소유권을 증명할 차례입니다. + +기본 검증자의 [설정](setup.md)에서 생성한 DoubleZero ID는 모든 백업 기계에서 사용해야 합니다. + +기본 기계의 ID는 `doublezero address`로 찾을 수 있습니다. 동일한 ID가 클러스터의 모든 기계의 `~/.config/doublezero/id.json`에 있어야 합니다. + +이를 위해 먼저 명령을 실행 중인 기계가 **기본 검증자**인지 다음 명령으로 확인합니다: + +``` +doublezero-solana passport find-validator -ut +``` + +이는 검증자가 가십에 등록되어 있고 리더 스케줄에 나타나는지 확인합니다. + +예상 출력: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` +!!! info + 동일한 워크플로우가 하나 또는 여러 기계에 사용됩니다. + 하나의 기계를 등록하려면 모든 명령에서 "--backup-validator-ids" 또는 "backup_ids=" 인수를 제외하세요. + +이제 **기본 검증자**를 실행할 모든 백업 기계에서 다음을 실행합니다: + +``` +doublezero-solana passport find-validator -ut +``` + +예상 출력: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +이 출력은 예상된 것입니다. 백업 노드는 패스 생성 시 리더 스케줄에 있을 수 없습니다. + +이제 **기본 검증자** 투표 계정과 신원을 사용할 계획인 **모든 백업 기계**에서 이 명령을 실행합니다. + +
+ + +
+ +### 연결 준비 + +**기본 검증자** 기계에서 다음 명령을 실행합니다. 이는 활성 지분이 있고, 리더 스케줄에 있으며, 명령을 실행 중인 기계의 Solana 가십에 기본 검증자 ID가 있는 기계입니다: + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +예시 출력: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: testnet + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +이 명령의 끝에 있는 출력에 주목하세요. 이것이 다음 단계의 구조입니다. + +
+ +## 4. 서명 생성 + +
+ +마지막 단계에서 `solana sign-offchain-message`에 대한 미리 형식화된 출력을 받았습니다. + +위 출력에서 **기본 검증자** 기계에서 이 명령을 실행합니다. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**출력:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. DoubleZero에서 연결 요청 시작 + +
+ +`request-validator-access` 명령을 사용하여 연결 요청을 위한 Solana 계정을 생성합니다. DoubleZero Sentinel 에이전트가 새 계정을 감지하고 신원과 서명을 검증한 후 서버가 연결을 설정할 수 있도록 DoubleZero에 액세스 패스를 생성합니다. + + +노드 ID, DoubleZeroID, 서명을 사용합니다. + +!!! note inline end + 이 예시에서는 검증자 신원을 찾기 위해 `-k /home/user/.config/solana/id.json`을 사용합니다. 로컬 배포에 적합한 위치를 사용하세요. + +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**출력:** + +이 출력은 Solana 탐색기에서 트랜잭션을 확인하는 데 사용할 수 있습니다. 탐색기를 테스트넷으로 변경해야 합니다. 이 확인은 선택 사항입니다. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +성공하면 DoubleZero가 기본을 백업과 함께 등록합니다. 이제 액세스 패스에 등록된 IP 간에 장애 조치할 수 있습니다. DoubleZero는 이 방식으로 등록된 백업 노드로 전환할 때 자동으로 연결을 유지합니다. + +
+ +## 6. IBRL 모드로 연결 + +
+ +서버에서 DoubleZero에 연결할 사용자로 `connect` 명령을 실행하여 DoubleZero에 연결을 설정하세요. + +``` +doublezero connect ibrl +``` + +다음과 같은 프로비저닝을 나타내는 출력이 표시되어야 합니다: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +GRE 터널이 완료될 때까지 1분 기다리세요. 터널이 완료될 때까지 상태 출력이 "down" 또는 "Unknown"을 반환할 수 있습니다. + +연결을 확인하세요: + +```bash +doublezero status +``` + +**출력:** +!!! note inline end + 이 출력을 확인하세요. `Tunnel src`와 `DoubleZero IP`가 기계의 공개 IPv4 주소와 일치하는지 주목하세요. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` +`up` 상태는 성공적으로 연결되었음을 의미합니다. + +다음을 실행하여 DoubleZero의 다른 사용자가 전파한 경로를 볼 수 있습니다: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 다음 단계: 멀티캐스트를 통한 Shred 발행 + +이 설정을 완료하고 멀티캐스트를 통한 Shred 발행을 계획하고 있다면 [다음 페이지](Validator%20Multicast%20Connection.md)로 진행하세요. diff --git a/docs/DZ Testnet Connection.pt.md b/docs/DZ Testnet Connection.pt.md new file mode 100644 index 0000000..46702ad --- /dev/null +++ b/docs/DZ Testnet Connection.pt.md @@ -0,0 +1,388 @@ +# Conexão do Validador ao Testnet no Modo IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "Ao conectar ao testnet DoubleZero, concordo com os termos do Acordo de Avaliação estabelecido aqui (clique para expandir)" + Testnet DoubleZero + Acordo de Avaliação + + Ao acessar ou usar a Solução (definida abaixo), você concorda a partir da + primeira data de tal acesso (a "**Data de Vigência**") que este + Acordo de Avaliação (o "**Acordo**") estabelece os termos e + condições sob os quais a DoubleZero Foundation ("**DZF**") fornecerá + a você ("**Usuário**" ou "**você**") acesso à Solução em + base de avaliação. Em consideração às promessas mútuas aqui contidas, você concorda + com o seguinte: + + 1. DEFINIÇÕES. + + 1.1 "**Informações Confidenciais**" significa toda e qualquer informação divulgada por qualquer das partes à outra que seja designada como confidencial, ou que deva ser entendida como confidencial, incluindo, mas não se limitando a, a Solução, planos de produtos, planos de negócios, segredos comerciais, tecnologia ou quaisquer outras informações proprietárias. + + 1.2 "**Solução**" significa a versão testnet da infraestrutura de rede de alto desempenho do DoubleZero para projetos web3 ("**Testnet**") e serviço de filtragem de borda relacionado com largura de banda integrada ("**Serviço de Informação**"), o Software DZ (definido abaixo), todos e quaisquer materiais fornecidos pela DZF relacionados ao Software DZ ("**Documentação**") e outros materiais que a DZF fornece ao Usuário neste documento. + + 2. ACESSO. + + 2.1 ^^Acesso à Solução^^. Sujeito aos termos e condições deste Acordo, a DZF fornecerá ao Usuário acesso à Solução pela Internet. O acesso do Usuário é um uso não exclusivo, intransferível e limitado da Solução para permitir que o Usuário avalie apenas o Serviço de Informação. Com relação a qualquer software que compõe a Solução ("**Software DZ**"), a DZF concede ao Usuário uma licença limitada e revogável, durante o Período de Avaliação, para copiar, baixar, fazer um número razoável de cópias, executar e implantar (conforme aplicável) tal Software DZ exclusivamente conforme contemplado pela Documentação. + + 2.2 ^^Restrições^^. O Usuário pode usar a Solução de acordo com este Acordo a partir da Data de Vigência até ser encerrado pela DZF (o "**Período de Avaliação**"). O Usuário entende que quaisquer direitos de usar a Solução além do Período de Avaliação estarão sujeitos a um acordo comercial separado entre as partes com relação ao mesmo, incluindo o pagamento de taxas. O Usuário não deve, e não deve permitir que terceiros: (i) modifiquem ou criem obras derivadas com base na Solução ou qualquer parte dela; (ii) reproduzam a Solução exceto conforme expressamente permitido por este Acordo; (iii) sublicenciem, distribuam, vendam, emprestem, aluguem, arrendem, transfiram ou concedam quaisquer direitos sobre toda ou qualquer parte da Solução ou forneçam acesso à Solução a terceiros, em base de serviço de bureau ou de outra forma, exceto como oferta dos Serviços de Informação por meio ou em conexão com a plataforma ou produto do Usuário e não de forma independente; ou (iv) usem a Solução de outra forma que não a prevista neste documento. + + 2.3 ^^Propriedade^^. A DZF retém todos os direitos, títulos e interesses, incluindo direitos de propriedade intelectual, sobre e na Solução. + + 3 FEEDBACK. + A DZF pode periodicamente solicitar que o Usuário forneça, e o Usuário concorda em fornecer à DZF, feedback sobre o uso, operação e funcionalidade da Solução ("Feedback"). O Usuário concede à DZF um direito e licença não exclusivos, mundiais, perpétuos, irrevogáveis, sem royalties, totalmente pagos, totalmente sublicenciáveis e transferíveis para usar e incorporar o Feedback em quaisquer produtos e serviços, para fabricar, usar, vender, oferecer para venda, importar e de outra forma explorar tais produtos e serviços, e de outra forma usar, copiar, distribuir e de outra forma explorar o Feedback sem restrição. + + 4. PRAZO E RESCISÃO. + + 4.1 ^^Prazo^^. Este Acordo entrará em vigor na Data de Vigência e permanecerá em pleno vigor e efeito durante o Período de Avaliação. Qualquer das partes pode rescindir este Acordo imediatamente por conveniência, por qualquer motivo ou sem motivo, mediante notificação por escrito à outra parte (e-mail suficiente). + + 4.1 ^^Efeitos da Rescisão^^. Após a rescisão deste Acordo por qualquer motivo: (i) os direitos concedidos ao Usuário neste documento encerrarão imediatamente; (ii) o Usuário deverá imediatamente descontinuar qualquer uso da Solução e deverá devolver ou destruir toda a Documentação e qualquer Software DZ sob seu controle; (iii) cada parte deverá prontamente devolver ou destruir todas as Informações Confidenciais e propriedades da outra parte; e (iv) as Seções 2.2, 2.3, 3, 4.2 e 5 a 8 sobreviverão. + + 5. CONFIDENCIALIDADE. + Cada parte concorda que usará as Informações Confidenciais da outra parte exclusivamente para cumprir suas obrigações e exercer seus direitos sob este Acordo e não divulgará, nem permitirá que sejam divulgadas, exceto conforme permitido neste documento. No entanto, qualquer das partes pode divulgar Informações Confidenciais ao seu pessoal, advogados e outros representantes que tenham necessidade de saber e estejam vinculados por obrigações de confidencialidade não menos protetoras do que as estabelecidas neste Acordo; e conforme exigido por lei (caso em que a parte receptora fornecerá à parte divulgadora aviso prévio e oportunidade de contestar tal divulgação, e minimizará tal divulgação na medida permitida pela lei aplicável). As obrigações de confidencialidade nesta Seção 5 não se aplicarão a informações que: (a) sejam ou se tornem geralmente conhecidas ou publicamente disponíveis sem culpa da parte receptora; (b) eram adequadamente conhecidas pela parte receptora, sem restrição, antes da divulgação pela parte divulgadora; (c) foram adequadamente divulgadas à parte receptora, sem restrição, por outra pessoa com autoridade legal para fazê-lo; ou (d) são desenvolvidas de forma independente pela parte receptora sem uso ou referência às Informações Confidenciais da parte divulgadora. + + 6. ISENÇÃO DE GARANTIA; LIMITAÇÃO DE RESPONSABILIDADE. + + 6.1 ^^ISENÇÃO DE GARANTIA^^. A SOLUÇÃO É FORNECIDA "NO ESTADO EM QUE SE ENCONTRA" SEM GARANTIA DE QUALQUER TIPO. A DZF NÃO OFERECE GARANTIAS, SEJAM EXPRESSAS, IMPLÍCITAS, ESTATUTÁRIAS OU DE OUTRA FORMA, COM RELAÇÃO À SOLUÇÃO E DOCUMENTAÇÃO, INCLUINDO SUA CONDIÇÃO, CONFORMIDADE COM QUALQUER REPRESENTAÇÃO OU DESCRIÇÃO, E A DZF ESPECIFICAMENTE SE ISENTA DE TODAS AS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO, TÍTULO E NÃO VIOLAÇÃO. + + 6.2 ^^LIMITAÇÃO DE RESPONSABILIDADE^^. + EXCETO POR VIOLAÇÃO DAS SEÇÕES 2.1, 2.2 E 5, EM NENHUM CASO QUALQUER DAS PARTES SERÁ RESPONSÁVEL PERANTE A OUTRA POR DANOS INDIRETOS, INCIDENTAIS, ESPECIAIS OU OUTROS DANOS CONSEQUENCIAIS, INCLUINDO SEM LIMITAÇÃO DANOS POR PERDA DE LUCROS OU USO OU PERDA DE DADOS, INCORRIDOS POR VOCÊ OU QUALQUER TERCEIRO, DECORRENTES DE OU RELACIONADOS A ESTE ACORDO, SEJA EM UMA AÇÃO EM CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, MESMO QUE A OUTRA PARTE TENHA SIDO AVISADA DA POSSIBILIDADE DE TAIS DANOS. EM NENHUM CASO A RESPONSABILIDADE AGREGADA DA DZF DECORRENTE DE OU RELACIONADA A ESTE ACORDO EXCEDERÁ CEM DÓLARES (\$100), SEJA EM AÇÃO EM CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA. + + 7. LEI APLICÁVEL. + Este Acordo e todos os assuntos decorrentes de ou relacionados a este Acordo serão regidos, interpretados e construídos de acordo com as leis das Ilhas Cayman. + + 8. DISPOSIÇÕES GERAIS. + Este Acordo não pode ser transferido ou cedido pelo Usuário sem o consentimento prévio por escrito da DZF. A DZF pode ceder livremente este Acordo. Este Acordo, juntamente com quaisquer anexos, constitui o acordo completo entre as partes e substitui todos os acordos ou representações anteriores ou contemporâneos, escritos ou orais, relativos ao assunto aqui tratado. + + + +### Conectando ao Testnet no Modo IBRL + + +!!! Note inline end + O modo IBRL não requer reinicialização dos clientes validadores, pois usa seu endereço IP público existente. + +Os Validadores Testnet da Solana completarão a conexão ao Testnet do DoubleZero, detalhada nesta página. + +Cada validador Solana tem seu próprio **keypair de identidade**; dele é extraída a chave pública conhecida como o **node ID**. Esta é a impressão digital única do validador na rede Solana. + +Com o DoubleZeroID e o node ID identificados, você provará a propriedade da sua máquina. Isso é feito criando uma mensagem que inclui o DoubleZeroID assinado com a chave de identidade do validador. A assinatura criptográfica resultante serve como prova verificável de que você controla o validador. + +Por fim, você enviará uma **solicitação de conexão ao DoubleZero**. Esta solicitação comunica: *"Aqui está minha identidade, aqui está a prova de propriedade e aqui está como pretendo me conectar."* O DoubleZero valida essas informações, aceita a prova e provisiona acesso à rede para o validador no DoubleZero. + +Este guia permite que 1 Validador Primário se registre e até 3 máquinas de backup/failover ao mesmo tempo. + +## Pré-requisitos + +- CLI da Solana instalado e no $PATH +- Para validadores: Permissão para acessar o arquivo keypair de identidade do validador (por exemplo, validator-keypair.json) sob o usuário sol +- Para validadores: Verificar que a chave de identidade do validador Solana conectado tem pelo menos 1 SOL +- As regras de firewall permitem conexões de saída para DoubleZero e Solana RPC conforme necessário, incluindo GRE (ip proto 47) e BGP (169.254.0.0/16 na tcp/179) + +!!! info + O ID do Validador será verificado contra o gossip da Solana para determinar o IP alvo. O IP alvo e o ID DoubleZero serão então usados para abrir um túnel GRE entre sua máquina e o Dispositivo DoubleZero alvo. + + Considere: No caso em que você tem um ID junk e um ID Primário no mesmo IP, apenas o ID Primário será usado no registro da máquina. Isso ocorre porque o ID junk não aparecerá no gossip e, portanto, não pode ser usado para verificar o IP da máquina alvo. + +## 1. Configuração do Ambiente + +Siga as instruções de [configuração](setup.md) antes de continuar. + +O último passo na configuração foi desconectar da rede. Isso é para garantir que apenas um túnel esteja aberto na sua máquina para o DoubleZero, e que esse túnel esteja na rede correta. + +
+ +Para configurar o CLI do DoubleZero (`doublezero`) e o daemon (`doublezerod`) para se conectar ao **testnet DoubleZero**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Você deve ver a seguinte saída: +``` +✅ doublezerod configured for environment testnet +``` + +Após aproximadamente 30 segundos, você verá os dispositivos DoubleZero disponíveis: + + +```bash +doublezero latency +``` +Exemplo de saída (testnet) +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+A saída do Mainnet será idêntica em estrutura, mas com muito mais dispositivos disponíveis. + + + + +## 2. Abrir a porta 44880 + +Os usuários precisam abrir a porta 44880 para utilizar alguns [recursos de roteamento](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md). + +Para abrir a porta 44880, você pode atualizar as regras do iptables da seguinte forma: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +observe os flags `-i doublezero0`, `-o doublezero0` que restringem esta regra apenas à interface DoubleZero + +Ou UFW da seguinte forma: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +observe os flags `in on doublezero0`, `out on doublezero0` que restringem esta regra apenas à interface DoubleZero + +## 3. Atestar a Propriedade do Validador + +
+ +Com seu Ambiente DoubleZero configurado, é hora de atestar a Propriedade do seu Validador. + +O ID DoubleZero que você criou na [configuração](setup.md) do seu validador primário deve ser usado em todas as máquinas de backup. + +O ID na sua máquina primária pode ser encontrado com `doublezero address`. O mesmo ID deve estar em `~/.config/doublezero/id.json` em todas as máquinas do cluster. + +Para conseguir isso, você primeiro verificará que a máquina da qual está executando os comandos é seu **Validador Primário** com: + +``` +doublezero-solana passport find-validator -ut +``` + +Isso verifica que o validador está registrado no gossip e aparece no cronograma de líderes. + +Saída esperada: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` +!!! info + O mesmo fluxo de trabalho é usado para uma ou muitas máquinas. + Para registrar uma máquina, exclua os argumentos "--backup-validator-ids" ou "backup_ids=" de qualquer comando nesta página. + +Agora, em todas as máquinas de backup nas quais você planeja executar seu **Validador Primário**, execute o seguinte: + +``` +doublezero-solana passport find-validator -ut +``` + +Saída esperada: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +Esta saída é esperada. O nó de backup não pode estar no cronograma de líderes no momento da criação do passe. + +Você agora executará este comando em **todas as máquinas de backup** nas quais planeja usar a conta de voto e identidade do seu **Validador Primário**. + +
+ + +
+ +### Preparar a Conexão + +Execute o seguinte comando na máquina do **Validador Primário**. Esta é a máquina na qual você tem stake ativo, que está no cronograma de líderes com seu ID de validador primário no gossip da Solana na máquina da qual você está executando o comando: + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +Exemplo de saída: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: testnet + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +Observe a saída no final deste comando. É a estrutura para o próximo passo. + +
+ +## 4. Gerar Assinatura + +
+ +No final do último passo, recebemos uma saída pré-formatada para `solana sign-offchain-message`. + +Da saída anterior, executaremos este comando na máquina do **Validador Primário**. + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**Saída:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. Iniciar uma Solicitação de Conexão no DoubleZero + +
+ +Use o comando `request-validator-access` para criar uma conta na Solana para a solicitação de conexão. O agente Sentinel do DoubleZero detecta a nova conta, valida sua identidade e assinatura, e cria o passe de acesso no DoubleZero para que o servidor possa estabelecer uma conexão. + +Use o node ID, o DoubleZeroID e a assinatura. + +!!! note inline end + Neste exemplo usamos `-k /home/user/.config/solana/id.json` para encontrar a Identidade do validador. Use o local apropriado para sua implantação local. + +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**Saída:** + +Esta saída pode ser usada para ver a transação em um explorador Solana. Certifique-se de mudar o explorador para testnet. Esta verificação é opcional. + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +Se bem-sucedido, o DoubleZero registrará o primário com seus backups. Agora você pode fazer failover entre os IPs registrados no passe de acesso. O DoubleZero manterá a conectividade automaticamente ao mudar para nós de backup registrados desta forma. + +
+ +## 6. Conectar no Modo IBRL + +
+ +No servidor, com o usuário que se conectará ao DoubleZero, execute o comando `connect` para estabelecer a conexão com o DoubleZero. + +``` +doublezero connect ibrl +``` + +Você deve ver uma saída indicando o provisionamento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Aguarde um minuto para o túnel GRE terminar de ser configurado. Até que o túnel GRE esteja configurado, sua saída de status pode retornar "down" ou "Unknown". + +Verifique sua conexão: + +```bash +doublezero status +``` + +**Saída:** +!!! note inline end + Examine esta saída. Observe que `Tunnel src` e `DoubleZero IP` correspondem ao endereço IPv4 público da sua máquina. + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` +Um status de `up` significa que você está conectado com sucesso. + +Você poderá visualizar as rotas propagadas por outros usuários no DoubleZero executando: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Próximo Passo: Publicando Shreds via Multicast + +Se você completou esta configuração e planeja publicar shreds via multicast, continue para a [próxima página](Validator%20Multicast%20Connection.md). diff --git a/docs/DZ Testnet Connection.zh.md b/docs/DZ Testnet Connection.zh.md new file mode 100644 index 0000000..1271b74 --- /dev/null +++ b/docs/DZ Testnet Connection.zh.md @@ -0,0 +1,383 @@ +# 验证器以IBRL模式连接测试网 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +??? warning "通过连接到DoubleZero测试网,我同意此处规定的评估协议条款(点击展开)" + DoubleZero测试网 + 评估协议 + + 通过访问或使用解决方案(定义如下),您同意自首次访问之日("**生效日期**")起,本评估协议("**协议**")规定了DoubleZero基金会("**DZF**")将以评估为基础向您("**用户**"或"**您**")提供解决方案访问权的条款和条件。出于相互承诺的对价,您同意如下: + + 1. 定义。 + + 1.1 "**保密信息**"指任何一方向另一方披露的、被指定为保密的、或本应被理解为保密的所有信息,包括但不限于解决方案、产品计划、商业计划、商业机密、技术或任何其他专有信息。 + + 1.2 "**解决方案**"指用于web3项目的DoubleZero高性能网络基础设施的测试网版本("**测试网**")及相关的集成带宽边缘过滤服务("**信息服务**")、DZ软件(定义如下)、DZF提供的与DZ软件相关的所有材料("**文档**"),以及DZF在此提供给用户的其他材料。 + + 2. 访问。 + + 2.1 ^^访问解决方案^^。在本协议条款和条件的约束下,DZF将通过互联网向用户提供对解决方案的访问。用户的访问是对解决方案的非独占、不可转让的有限使用,仅供用户评估信息服务。关于构成解决方案的任何软件("**DZ软件**"),DZF特此在评估期内授予用户有限的、可撤销的许可,仅按文档的规定复制、下载、制作合理数量的副本、运行和部署(如适用)该DZ软件。 + + 2.2 ^^限制^^。用户可从生效日期起至DZF终止("**评估期**")期间,按照本协议使用解决方案。用户理解,在评估期之后使用解决方案的任何权利将须服从双方之间关于此的单独商业协议,包括支付费用。用户不得,也不得允许任何第三方:(i)修改解决方案或其任何部分,或基于解决方案或其任何部分创建任何衍生作品;(ii)除本协议明确允许外复制解决方案;(iii)以服务局的形式或以其他方式,向第三方转许可、分发、出售、借出、出租、租赁、转让或授予解决方案全部或任何部分的任何权利,或向第三方提供对解决方案的访问权,除非是通过或与用户平台或产品相关联的信息服务产品,且非独立基础上;或(iv)以本协议规定以外的方式使用解决方案。 + + 2.3 ^^所有权^^。DZF保留解决方案的所有权利、所有权和利益,包括知识产权。 + + 3. 反馈。 + DZF可能定期要求用户提供,用户同意向DZF提供关于解决方案使用、操作和功能的反馈("反馈")。用户特此授予DZF非独占、全球范围、永久、不可撤销、免版税、全额付清、可完全转许可和可转让的权利和许可,将反馈用于和纳入任何产品和服务,制造、使用、出售、要约出售、进口和以其他方式利用此类产品和服务,以及以其他方式使用、复制、分发和以其他方式利用反馈而不受限制。 + + 4. 期限和终止。 + + 4.1 ^^期限^^。本协议自生效日期起生效,并在整个评估期内保持完全效力。任何一方均可出于任何原因或无原因,通过书面通知另一方(电子邮件即可)立即以便利为由终止本协议。 + + 4.1 ^^终止的效果^^。本协议因任何原因终止后:(i)授予用户的权利将立即终止;(ii)用户应立即停止使用解决方案,并退还或销毁其控制下的所有文档和任何DZ软件;(iii)各方应立即退还或销毁另一方的所有保密信息和财产;以及(iv)第2.2、2.3、3、4.2条和第5至8条将继续有效。 + + 5. 保密。 + 各方同意,它将仅使用另一方的保密信息履行其在本协议下的义务和行使其权利,且不得披露或允许披露相同信息,除非本协议另有允许。但是,任何一方可向有知情需要且受不低于本协议规定的保密义务约束的其人员、律师和其他代表披露保密信息;以及在法律要求时(在此情况下,接收方将在披露前通知披露方,并提供对此类披露提出异议的机会,且将在适用法律允许的范围内将此类披露最小化)。第5条的保密义务不适用于以下信息:(a)非因接收方的过错而成为或变得普遍已知或公开可获得的信息;(b)在披露方披露之前,接收方已在无限制情况下适当知晓的信息;(c)有合法授权的其他人士在无限制情况下适当向接收方披露的信息;或(d)接收方未使用或参考披露方的保密信息而独立开发的信息。各方同意在保护另一方的保密信息免受未经授权的使用和披露方面尽职尽责。如果本条款或本协议所含许可的条款实际或威胁遭受违反,非违约方将有权寻求即时禁令救济和其他衡平法救济,而不放弃其可获得的任何其他权利或救济。用户负责维护解决方案的安全以及任何提供对解决方案访问权的密码、助记词或代码作为DZF保密信息的保密性。此处任何内容均不限制或限制DZF使用有关解决方案性能、可用性、使用情况、完整性和安全性数据的权利或能力。如果任何一方违反或威胁违反第5条的规定,各方同意非违约方将没有充分的法律救济,因此有权获得即时禁令和其他衡平法救济,无需保证金,也无需证明实际金钱损害。 + + 6. 保证免责声明;责任限制。 + + 6.1 ^^保证免责声明^^。解决方案按"原样"提供,不附任何形式的保证。DZF不做任何明示、默示、法定或其他形式的保证,包括解决方案和文档的状况、符合任何陈述或描述,DZF特别声明不承担所有关于适销性、特定用途适用性、所有权和不侵权的默示保证。 + + 6.2 ^^责任限制^^。 + 除第2.1、2.2和5条的违反外,在任何情况下,任何一方均不对另一方因本协议引起的或与本协议相关的间接、附带、特殊或其他间接损害负责,包括但不限于利润损失或使用损失或数据损失,无论是合同诉讼、侵权行为还是其他情况,即使另一方已被告知可能发生此类损害。在任何情况下,DZF因本协议引起的或与本协议相关的总责任不得超过一百美元($100),无论是合同行为、侵权行为还是其他情况。**上述限制将不顾本协议中任何有限救济的基本目的失败而适用。**双方同意,上述限制代表本协议下合理的风险分配。 + + 7. 适用法律。 + 本协议及因本协议引起或与本协议相关的所有事项应受开曼群岛法律的管辖、解释和构建。如果因本协议产生或与本协议有关的争议、纠纷或索赔("争议"),相关方应视情况向其他各方发出30天的争议通知("争议通知")。如果争议在争议通知送达后30天届满时仍未解决,相关方可按照本协议的规定启动仲裁程序。如果争议在争议通知送达后30天届满时仍未解决,争议应通过开曼国际调解与仲裁中心(CI-MAC)按照本协议签署之日有效的CI-MAC仲裁规则("仲裁规则")进行仲裁解决,该仲裁规则视为通过引用并入本条款,并受《仲裁法》(经修订)管辖。仲裁地点应在开曼群岛大开曼的乔治敦,并受开曼群岛法律管辖。仲裁语言应为英语。仲裁应由根据仲裁规则指定的独任仲裁员裁定。仲裁员做出的任何裁决或决定应以书面形式作出,并对各方最终具有约束力,不得上诉,对任何此类裁决的判决可在任何有管辖权的法院执行。不得在任何司法管辖区的任何法院提出基于本协议引起或与本协议相关的任何索赔的法律诉讼或衡平法诉讼。如果需要诉诸法律或仲裁来执行本协议的条款,胜诉方将有权由另一方支付其律师费。各方放弃其可能拥有的主张不方便法院原则的任何权利、主张其不受此类仲裁或法院管辖的任何权利,或在按照本协议提起诉讼的范围内对地点提出异议的权利。 + + 8. 一般条款。 + 未经DZF事先书面同意,用户不得转让或转移本协议。DZF可自由转让本协议。本协议规定的所有通知应通过电子邮件发送(发送给DZF:legal@doublezero.xyz),并视为发送后次日收到(已确认传输)。如果本协议的任何条款被认定为无效或不可执行,本协议的其余条款将继续完全有效。任何一方对本协议的任何违约或违反的放弃不构成对任何其他或后续违约或违反的放弃。任何一方均不对因不可抗力事件、地震、物资短缺、运输困难、劳资纠纷、骚乱、战争、火灾、流行病以及其控制范围之外的类似情况(无论是否可预见)导致的任何延迟或履行失败负责。本协议连同任何附件构成双方之间关于本协议主题的完整协议,并取代所有之前或同期的协议或陈述,无论是书面的还是口头的。本协议不得以书面形式修改或修订,除非经各方授权代表签署。 + + + +### 以IBRL模式连接到测试网 + + +!!! Note inline end + IBRL模式不需要重启验证器客户端,因为它使用您现有的公共IP地址。 + +Solana测试网验证器将完成到DoubleZero测试网的连接,详情请见本页面。 + +每个Solana验证器都有其自己的**身份密钥对**;从中提取称为**节点ID**的公钥。这是验证器在Solana网络上的唯一指纹。 + +确认DoubleZero ID和节点ID后,您将证明您对机器的所有权。这通过创建包含使用验证器身份密钥签名的DoubleZero ID的消息来完成。由此产生的加密签名作为您控制该验证器的可验证证明。 + +最后,您将向DoubleZero提交**连接请求**。此请求传达:*"这是我的身份,这是所有权证明,这是我打算如何连接。"* DoubleZero验证此信息,接受证明,并为DoubleZero上的验证器配置网络访问。 + +本指南允许1个主验证器注册自身,以及同时注册最多3台备份/故障转移机器。 + +## 前提条件 + +- Solana CLI已安装并在$PATH中 +- 对于验证器:有权访问sol用户下的验证器身份密钥对文件(如validator-keypair.json) +- 对于验证器:验证正在连接的Solana验证器的身份密钥上至少有1 SOL +- 防火墙规则允许DoubleZero和Solana RPC所需的出站连接,包括GRE(ip proto 47)和BGP(169.254.0.0/16上的tcp/179) + +!!! info + 验证器ID将与Solana gossip进行核对以确定目标IP。然后将使用目标IP和DoubleZero ID在您的机器和目标DoubleZero设备之间建立GRE隧道。 + + 注意:如果您在同一IP上同时有垃圾ID和主ID,只有主ID将用于机器注册。这是因为垃圾ID不会出现在gossip中,因此无法用于验证目标机器的IP。 + +## 1. 环境配置 + +请在继续之前按照[设置](setup.md)说明操作。 + +设置的最后一步是断开与网络的连接。这是为了确保您的机器上只有一个到DoubleZero的隧道处于开放状态,并且该隧道在正确的网络上。 + +
+ +要配置DoubleZero客户端CLI(`doublezero`)和守护程序(`doublezerod`)连接到**DoubleZero测试网**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +您应该看到以下输出: +``` +✅ doublezerod configured for environment testnet +``` + +大约30秒后,您将看到可用的DoubleZero设备: + + +```bash +doublezero latency +``` +示例输出(测试网) +```bash +doublezero latency + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.44ms | 2.63ms | 2.50ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 71.97ms | 72.01ms | 71.99ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.08ms | 72.00ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.55ms | 76.65ms | 76.61ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.01ms | 83.10ms | 83.05ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.87ms | 84.91ms | 84.89ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms | 95.30ms | 95.29ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 180.96ms | 181.08ms | 181.02ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 220.87ms | 221.14ms | 220.97ms | true +``` +
+主网输出结构相同,但可用设备更多。 + + + + +## 2. 开放44880端口 + +用户需要开放44880端口以使用某些[路由功能](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc7-client-route-liveness.md)。 + +要开放44880端口,您可以更新IP表,例如: + +
+ +``` +sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT +``` + +
+ +注意`-i doublezero0`、`-o doublezero0`标志,这些标志将此规则限制为仅DoubleZero接口。 + +或UFW,例如: + +
+ +``` +sudo ufw allow in on doublezero0 to any port 44880 proto udp +sudo ufw allow out on doublezero0 to any port 44880 proto udp +``` + +
+ +注意`in on doublezero0`、`out on doublezero0`标志,这些标志将此规则限制为仅DoubleZero接口。 + +## 3. 证明验证器所有权 + +
+ +设置好DoubleZero环境后,现在是证明您的验证器所有权的时候了。 + +您在主验证器[设置](setup.md)中创建的DoubleZero ID必须用于所有备份机器。 + +您主机器上的ID可以通过`doublezero address`找到。相同的ID必须在集群中所有机器的`~/.config/doublezero/id.json`中。 + +为了实现这一点,您首先需要通过以下命令验证您正在运行命令的机器是您的**主验证器**: + +``` +doublezero-solana passport find-validator -ut +``` + +这验证了验证器已在gossip中注册并出现在领导者时间表中。 + +预期输出: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 11.11.11.111 +Validator ID: ValidatorIdentity111111111111111111111111111 +Gossip IP: 11.11.11.111 +In Leader scheduler +✅ This validator can connect as a primary in DoubleZero 🖥️ 💎. It is a leader scheduled validator. +``` +!!! info + 无论是一台还是多台机器,工作流程相同。 + 要注册一台机器,请从本页上的任何命令中排除参数"--backup-validator-ids"或"backup_ids="。 + +现在,在您打算运行**主验证器**的所有备份机器上执行以下命令: + +``` +doublezero-solana passport find-validator -ut +``` + +预期输出: + +``` +Connected to Solana: testnet + +DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111 +Detected public IP: 22.22.22.222 +Validator ID: ValidatorIdentity222222222222222222222222222 +Gossip IP: 22.22.22.222 +In Not in Leader scheduler + ✅ This validator can only connect as a backup in DoubleZero 🖥️ 🛟. It is not leader scheduled and cannot act as a primary validator. +``` +此输出是预期的。备份节点在通行证创建时不能在领导者时间表中。 + +现在您将在您计划使用**主验证器**投票账户和身份的**所有备份机器**上运行此命令。 + +
+ + +
+ +### 准备连接 + +在**主验证器**机器上运行以下命令。这是您拥有活跃质押的机器,该机器在您正在运行命令的机器上Solana gossip中以您的主验证器ID在领导者时间表中: + +``` +doublezero-solana passport prepare-validator-access -ut \ + --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \ + --primary-validator-id ValidatorIdentity111111111111111111111111111 \ + --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444> +``` + + +示例输出: + +``` +DoubleZero Passport - Prepare Validator Access Request +Connected to Solana: testnet + +Primary validator 🖥️ 💎: + ID: ValidatorIdentity111111111111111111111111111 + Gossip: ✅ OK 11.11.11.111) + Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL) + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity222222222222222222222222222 + Gossip: ✅ OK (22.22.22.222) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + +Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity333333333333333333333333333 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + + Backup validator 🖥️ 🛡️: + ID: ValidatorIdentity444444444444444444444444444 + Gossip: ✅ OK (33.33.33.333) + Leader scheduler: ✅ OK (not a leader scheduled validator) + + To request access, sign the following message with your validator's identity key: + + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k + +``` +注意此命令末尾的输出。这是下一步的结构。 + +
+ +## 4. 生成签名 + +
+ +在上一步结束时,我们收到了`solana sign-offchain-message`的预格式化输出。 + +从上述输出中,我们将在**主验证器**机器上运行此命令。 + +``` + solana sign-offchain-message \ + service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ + -k +``` + +**输出:** + +``` + Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 +``` + +
+ +## 5. 在DoubleZero中发起连接请求 + +
+ +使用`request-validator-access`命令在Solana上为连接请求创建账户。DoubleZero Sentinel代理检测新账户,验证其身份和签名,并在DoubleZero中创建访问通行证,使服务器能够建立连接。 + + +使用节点ID、DoubleZero ID和签名。 + +!!! note inline end + 在此示例中,我们使用`-k /home/user/.config/solana/id.json`来查找验证器身份。请使用适合您本地部署的位置。 + +``` +doublezero-solana passport request-validator-access -k -ut \ +--primary-validator-id ValidatorIdentity111111111111111111111111111 \ +--backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \ +--signature Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7 --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 +``` + +**输出:** + +此输出可用于在Solana浏览器中查看交易。确保将浏览器切换到测试网。此验证是可选的。 + +```bash +Request Solana validator access: Transaction22222222VaB8FMqM2wEBXyV5THpKRXWrPtDQxmTjHJHiAWteVYTsc7Gjz4hdXxvYoZXGeHkrEayp +``` + +如果成功,DoubleZero将注册主验证器及其备份。您现在可以在访问通行证中注册的IP之间进行故障转移。以这种方式注册备份节点时,DoubleZero将自动维护连接。 + +
+ +## 6. 以IBRL模式连接 + +
+ +在服务器上,使用将连接到DoubleZero的用户,运行`connect`命令建立到DoubleZero的连接。 + +``` +doublezero connect ibrl +``` + +您应该看到表示配置的输出,例如: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +等待一分钟让GRE隧道完成设置。在GRE隧道完成设置之前,您的状态输出可能返回"down"或"Unknown"。 + +验证您的连接: + +```bash +doublezero status +``` + +**输出:** +!!! note inline end + 检查此输出。注意`Tunnel src`和`DoubleZero IP`与您机器上的公共IPv4地址匹配。 + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` +状态`up`表示您已成功连接。 + +您可以通过运行以下命令查看DoubleZero上其他用户传播的路由: + +``` +ip route +``` + + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 下一步:通过多播发布碎片 + +如果您已完成此设置并计划通过多播发布碎片,请继续访问[下一页](Validator%20Multicast%20Connection.md)。 diff --git a/docs/New Tenant.es.md b/docs/New Tenant.es.md new file mode 100644 index 0000000..519c333 --- /dev/null +++ b/docs/New Tenant.es.md @@ -0,0 +1,7 @@ +# Nuevo Inquilino +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Si desea que su sistema distribuido aproveche la red DoubleZero, con gusto le ayudaremos con cualquier pregunta técnica que tenga. + +[Formulario de Contacto](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/New Tenant.fr.md b/docs/New Tenant.fr.md new file mode 100644 index 0000000..25ed609 --- /dev/null +++ b/docs/New Tenant.fr.md @@ -0,0 +1,7 @@ +# Nouveau Tenant +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Si vous souhaitez que votre système distribué tire parti du réseau DoubleZero, nous sommes heureux de répondre à toutes vos questions techniques. + +[Formulaire de Contact](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/New Tenant.it.md b/docs/New Tenant.it.md new file mode 100644 index 0000000..fb7a5fa --- /dev/null +++ b/docs/New Tenant.it.md @@ -0,0 +1,7 @@ +# Nuovo Tenant +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Se desideri che il tuo sistema distribuito sfrutti la rete DoubleZero, siamo lieti di assisterti con qualsiasi domanda tecnica tu possa avere. + +[Modulo di Contatto](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/New Tenant.ja.md b/docs/New Tenant.ja.md new file mode 100644 index 0000000..0524ad8 --- /dev/null +++ b/docs/New Tenant.ja.md @@ -0,0 +1,7 @@ +# 新規テナント +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +分散システムでDoubleZeroネットワークを活用したい場合は、技術的なご質問にお答えできて光栄です。 + +[お問い合わせフォーム](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/New Tenant.ko.md b/docs/New Tenant.ko.md new file mode 100644 index 0000000..1b3efc8 --- /dev/null +++ b/docs/New Tenant.ko.md @@ -0,0 +1,7 @@ +# 새 테넌트 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +분산 시스템에서 DoubleZero 네트워크를 활용하고 싶으시다면 기술적인 질문이 있으실 때 기꺼이 도와드리겠습니다. + +[문의 양식](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/New Tenant.pt.md b/docs/New Tenant.pt.md new file mode 100644 index 0000000..d84f8db --- /dev/null +++ b/docs/New Tenant.pt.md @@ -0,0 +1,7 @@ +# Novo Tenant +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Se você gostaria que seu sistema distribuído aproveitasse a rede DoubleZero, ficamos felizes em ajudar com qualquer dúvida técnica que você possa ter. + +[Formulário de Contato](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/New Tenant.zh.md b/docs/New Tenant.zh.md new file mode 100644 index 0000000..362e0c6 --- /dev/null +++ b/docs/New Tenant.zh.md @@ -0,0 +1,7 @@ +# 新租户 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +如果您希望您的分布式系统利用DoubleZero网络,我们很乐意协助解答您可能遇到的任何技术问题。 + +[联系我们表单](https://docs.google.com/forms/d/e/1FAIpQLSdp11kHtmcaKaLfYRZA92ylOvucipY86CdjVKdiggNdjlZniw/viewform) diff --git a/docs/Other Multicast Connection.es.md b/docs/Other Multicast Connection.es.md new file mode 100644 index 0000000..f5a0129 --- /dev/null +++ b/docs/Other Multicast Connection.es.md @@ -0,0 +1,74 @@ +# Otras Conexiones Multicast +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Servicio de DoubleZero](https://doublezero.xyz/terms-protocol)" + + +| Caso de Uso | Primer Paso | Cuando se apruebe, conéctese mediante: | +|---------|------------|---------------------------| +| Suscribirse a Jito Shredstream | Contacte a Jito para obtener aprobación. | ```doublezero connect multicast --subscribe jito-shredstream``` | + +Información de conexión detallada: + +### 1. Instalación del Cliente DoubleZero +Siga las instrucciones de [configuración](setup.md) para instalar y configurar el cliente DoubleZero. + +### 2. Instrucciones de Conexión + +Conéctese a DoubleZero en modo Multicast + +Como publicador: + +```doublezero connect multicast --publish ``` + +o como suscriptor: + +```doublezero connect multicast --subscribe ``` + +o para publicar y suscribirse: + +```doublezero connect multicast --publish --subscribe ``` + +Para publicar o suscribirse a múltiples feeds puede incluir múltiples nombres de feed separados por espacios. +Esto también se puede usar para publicar y suscribirse a feeds de publicación. +Por ejemplo: +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +Debería ver una salida similar a la siguiente: +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` + +### 3. Verifique su conexión multicast activa. +Espere 60 segundos y luego ejecute: + +``` +doublezero status +``` +Resultado esperado: +- Sesión BGP activa en la red DoubleZero correcta +- Si es publicador, su IP DoubleZero será diferente a su IP Tunnel Src. Esto es esperado. +- Si solo es suscriptor, su IP DoubleZero será igual a su IP Tunnel Src. + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +Verifique los grupos a los que está conectado: +``` +doublezero user list --client-ip +``` + +| account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +| wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan | diff --git a/docs/Other Multicast Connection.fr.md b/docs/Other Multicast Connection.fr.md new file mode 100644 index 0000000..c8d95e0 --- /dev/null +++ b/docs/Other Multicast Connection.fr.md @@ -0,0 +1,72 @@ +# Autre Connexion Multicast +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'Utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" + + +|Cas d'Utilisation | Première Étape | Une fois approuvé, connectez-vous via :| +|---------|------------|---------------------------| +|S'abonner à Jito Shredstream | Contactez Jito pour approbation. | ```doublezero connect multicast --subscribe jito-shredstream``` | + +Informations de connexion détaillées : + +### 1. Installation du Client DoubleZero +Veuillez suivre les instructions de [configuration](setup.md) pour installer et configurer le client DoubleZero. + +### 2. Instructions de Connexion + +Connectez-vous à DoubleZero en mode Multicast +En tant qu'éditeur : + +```doublezero connect multicast --publish ``` + +ou en tant qu'abonné : + +```doublezero connect multicast --subscribe ``` + +ou pour publier et s'abonner : + +```doublezero connect multicast --publish --subscribe ``` + +Pour publier ou s'abonner à plusieurs flux, vous pouvez inclure plusieurs noms de flux séparés par des espaces. +Cela peut également être utilisé pour publier et s'abonner à des flux de publication. +Par exemple +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +Vous devriez voir une sortie similaire à ce qui suit : +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` +### 3. Vérifiez votre connexion multicast active. +Attendez 60 secondes puis exécutez + +``` +doublezero status +``` +Résultat attendu : +- Session BGP active sur le bon réseau DoubleZero +- Si vous êtes un éditeur, votre IP DoubleZero sera différente de votre IP Source Tunnel. C'est normal. +- Si vous êtes uniquement abonné, votre IP DoubleZero sera identique à votre IP Source Tunnel. + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +Vérifiez les groupes auxquels vous êtes connecté : +``` +doublezero user list --client-ip +``` + +|account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +|wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan| diff --git a/docs/Other Multicast Connection.it.md b/docs/Other Multicast Connection.it.md new file mode 100644 index 0000000..f4f7220 --- /dev/null +++ b/docs/Other Multicast Connection.it.md @@ -0,0 +1,72 @@ +# Altra Connessione Multicast +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Connettendomi a DoubleZero accetto i [Termini di Servizio DoubleZero](https://doublezero.xyz/terms-protocol)" + + +|Caso d'Uso | Primo Passo | Quando approvato, connettiti tramite:| +|---------|------------|---------------------------| +|Iscriversi a Jito Shredstream | Contatta Jito per l'approvazione. | ```doublezero connect multicast --subscribe jito-shredstream``` | + +Informazioni dettagliate sulla connessione: + +### 1. Installazione Client DoubleZero +Segui le istruzioni di [setup](setup.md) per installare e configurare il client DoubleZero. + +### 2. Istruzioni di Connessione + +Connettiti a DoubleZero in Modalità Multicast +Come publisher: + +```doublezero connect multicast --publish ``` + +o come subscriber: + +```doublezero connect multicast --subscribe ``` + +o per pubblicare e sottoscrivere: + +```doublezero connect multicast --publish --subscribe ``` + +Per pubblicare o sottoscrivere a più feed puoi includere più nomi di feed separati da spazi. +Questo può essere usato anche per pubblicare e sottoscrivere feed di pubblicazione. +Ad esempio +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +Dovresti vedere un output simile al seguente: +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` +### 3. Verifica la tua connessione multicast attiva. +Attendi 60 secondi e poi esegui + +``` +doublezero status +``` +Risultato atteso: +- Sessione BGP attiva sulla rete DoubleZero corretta +- Se sei un publisher, il tuo IP DoubleZero sarà diverso dall'IP Tunnel Src. È previsto. +- Se sei solo un subscriber, il tuo IP DoubleZero sarà uguale all'IP Tunnel Src. + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +Verifica i gruppi a cui sei connesso: +``` +doublezero user list --client-ip +``` + +|account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +|wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan| diff --git a/docs/Other Multicast Connection.ja.md b/docs/Other Multicast Connection.ja.md new file mode 100644 index 0000000..41030bb --- /dev/null +++ b/docs/Other Multicast Connection.ja.md @@ -0,0 +1,73 @@ +# その他のマルチキャスト接続 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZeroに接続することで、[DoubleZeroサービス利用規約](https://doublezero.xyz/terms-protocol)に同意します" + + +|ユースケース | 最初のステップ | 承認後の接続方法:| +|---------|------------|---------------------------| +|Jitoシュレッドストリームをサブスクライブ | 承認のためJitoに連絡 | ```doublezero connect multicast --subscribe jito-shredstream``` | + +詳細な接続情報: + +### 1. DoubleZeroクライアントのインストール +DoubleZeroクライアントのインストールと設定については、[セットアップ](setup.md)手順に従ってください。 + +### 2. 接続手順 + +マルチキャストモードでDoubleZeroに接続します。 +パブリッシャーとして: + +```doublezero connect multicast --publish <フィード名>``` + +またはサブスクライバーとして: + +```doublezero connect multicast --subscribe <フィード名>``` + +またはパブリッシュとサブスクライブの両方: + +```doublezero connect multicast --publish <フィード名> --subscribe <フィード名>``` + +複数のフィードをパブリッシュまたはサブスクライブするには、スペースで区切って複数のフィード名を含めることができます。 +これを使ってパブリッシュフィードのパブリッシュとサブスクライブにも使用できます。 +例: +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +以下のような出力が表示されるはずです: +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` + +### 3. アクティブなマルチキャスト接続の確認 +60秒待ってから実行します: + +``` +doublezero status +``` +期待される結果: +- 正しいDoubleZeroネットワーク上でBGPセッションが稼働中 +- パブリッシャーの場合、DoubleZero IPはTunnel Src IPと異なります。これは正常です。 +- サブスクライバーのみの場合、DoubleZero IPはTunnel Src IPと同じになります。 + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +接続しているグループを確認します: +``` +doublezero user list --client-ip +``` + +|account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +|wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan| diff --git a/docs/Other Multicast Connection.ko.md b/docs/Other Multicast Connection.ko.md new file mode 100644 index 0000000..2783831 --- /dev/null +++ b/docs/Other Multicast Connection.ko.md @@ -0,0 +1,73 @@ +# 기타 멀티캐스트 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 서비스 약관](https://doublezero.xyz/terms-protocol)에 동의합니다" + + +|사용 사례 | 첫 번째 단계 | 승인 후 연결 방법:| +|---------|------------|---------------------------| +|Jito Shredstream 구독 | 승인을 위해 Jito에 연락하세요. | ```doublezero connect multicast --subscribe jito-shredstream``` | + +자세한 연결 정보: + +### 1. DoubleZero 클라이언트 설치 +[설정](setup.md) 지침에 따라 DoubleZero 클라이언트를 설치하고 구성하세요. + +### 2. 연결 지침 + +멀티캐스트 모드로 DoubleZero에 연결 + +발행자로: + +```doublezero connect multicast --publish <피드 이름>``` + +또는 구독자로: + +```doublezero connect multicast --subscribe <피드 이름>``` + +또는 발행 및 구독 모두: + +```doublezero connect multicast --publish <피드 이름> --subscribe <피드 이름>``` + +여러 피드를 구독하거나 발행하려면 피드 이름을 공백으로 구분하여 여러 개 포함할 수 있습니다. +이를 사용하여 발행 피드를 발행하고 구독할 수도 있습니다. +예시: +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +다음과 유사한 출력이 표시되어야 합니다: +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` +### 3. 활성 멀티캐스트 연결 확인 +60초 기다린 후 실행하세요: + +``` +doublezero status +``` +예상 결과: +- 올바른 DoubleZero 네트워크에서 BGP 세션 활성화 +- 발행자인 경우 DoubleZero IP가 터널 소스 IP와 다릅니다. 이는 예상된 결과입니다. +- 구독자만인 경우 DoubleZero IP가 터널 소스 IP와 동일합니다. + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +연결된 그룹 확인: +``` +doublezero user list --client-ip +``` + +|account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +|wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan| diff --git a/docs/Other Multicast Connection.pt.md b/docs/Other Multicast Connection.pt.md new file mode 100644 index 0000000..bde4735 --- /dev/null +++ b/docs/Other Multicast Connection.pt.md @@ -0,0 +1,72 @@ +# Outra Conexão Multicast +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Ao conectar ao DoubleZero, concordo com os [Termos de Serviço do DoubleZero](https://doublezero.xyz/terms-protocol)" + + +|Caso de Uso | Primeiro Passo | Quando Aprovado, conecte via:| +|---------|------------|---------------------------| +|Assinar o Jito Shredstream | Entre em contato com o Jito para aprovação. | ```doublezero connect multicast --subscribe jito-shredstream``` | + +Informações detalhadas de conexão: + +### 1. Instalação do Cliente DoubleZero +Siga as instruções de [configuração](setup.md) para instalar e configurar o cliente DoubleZero. + +### 2. Instruções de Conexão + +Conecte-se ao DoubleZero no Modo Multicast +Como publicador: + +```doublezero connect multicast --publish ``` + +ou como assinante: + +```doublezero connect multicast --subscribe ``` + +ou para publicar e assinar: + +```doublezero connect multicast --publish --subscribe ``` + +Para publicar ou assinar em múltiplos feeds, você pode incluir múltiplos nomes de feeds separados por espaço. +Isso também pode ser usado para publicar e assinar feeds de publicação. +Por exemplo: +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +Você deve ver uma saída similar à seguinte: +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` +### 3. Verifique sua conexão multicast ativa. +Aguarde 60 segundos e então execute + +``` +doublezero status +``` +Resultado esperado: +- Sessão BGP ativa na Rede DoubleZero correta +- Se você é um publicador, seu IP DoubleZero será diferente do seu IP de Origem do Túnel. Isso é esperado. +- Se você é apenas um assinante, seu IP DoubleZero será o mesmo que seu IP de Origem do Túnel. + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +Verifique os grupos aos quais você está conectado: +``` +doublezero user list --client-ip +``` + +|account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +|wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan| diff --git a/docs/Other Multicast Connection.zh.md b/docs/Other Multicast Connection.zh.md new file mode 100644 index 0000000..72f210f --- /dev/null +++ b/docs/Other Multicast Connection.zh.md @@ -0,0 +1,72 @@ +# 其他多播连接 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "通过连接到DoubleZero,我同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" + + +|用例 | 第一步 | 批准后,通过以下方式连接:| +|---------|------------|---------------------------| +|订阅Jito Shredstream | 联系Jito获取批准。 | ```doublezero connect multicast --subscribe jito-shredstream``` | + +详细连接信息: + +### 1. DoubleZero客户端安装 +请按照[设置](setup.md)说明安装和配置DoubleZero客户端。 + +### 2. 连接说明 + +以多播模式连接到DoubleZero +作为发布者: + +```doublezero connect multicast --publish ``` + +或作为订阅者: + +```doublezero connect multicast --subscribe ``` + +或同时发布和订阅: + +```doublezero connect multicast --publish --subscribe ``` + +要发布或订阅多个数据流,可以包含多个以空格分隔的数据流名称。 +也可以用于发布并订阅已发布的数据流。 +例如 +```doublezero connect multicast --subscribe feed1 feed2 feed3``` + +您应该看到类似以下的输出: +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User to devnet... +Public IP detected: 137.174.145.145 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + DoubleZero ID: +🔍 Provisioning User for IP: + Creating an account for the IP: + The Device has been selected: + Service provisioned with status: ok +✅ User Provisioned +``` +### 3. 验证您的活动多播连接 +等待60秒,然后运行 + +``` +doublezero status +``` +预期结果: +- BGP会话在正确的DoubleZero网络上建立 +- 如果您是发布者,您的DoubleZero IP将与您的隧道源IP不同。这是正常现象。 +- 如果您只是订阅者,您的DoubleZero IP将与您的隧道源IP相同。 + +``` +~$ doublezero status + Tunnel Status | Last Session Update | Tunnel Name | Tunnel Src | Tunnel Dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + BGP Session Up | 2026-02-11 20:46:20 UTC | doublezero1 | 137.174.145.145 | 100.0.0.1 | 198.18.0.1 | Multicast | ams-dz001 | ✅ ams-dz001 | Amsterdam | Testnet +``` + +验证您已连接的组: +``` +doublezero user list --client-ip +``` + +|account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner | +|----|----|----|----|----|----|----|----|----|----|----|----|----| +|wQWmt7L6mTyszhyLywJeTk85KJhe8BGW4oCcmxbhaxJ | Multicast | P:mg02 | ams-dz001 | Amsterdam | GREOverDIA | 137.174.145.145 | 198.18.0.1 | Prepaid: (MAX) | 515 | 169.254.3.58/31 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan| diff --git a/docs/Permissioned Connection.es.md b/docs/Permissioned Connection.es.md new file mode 100644 index 0000000..e858397 --- /dev/null +++ b/docs/Permissioned Connection.es.md @@ -0,0 +1,124 @@ +# Conexión con Permisos a DoubleZero en modo IBRL para no validadores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Servicio de DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Descripción General del Proceso de Incorporación con Permisos + +La incorporación de usuarios está actualmente sujeta a permisos para no validadores y RPCs. Para iniciar el proceso con permisos, complete [este formulario](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z). Esto es lo que puede esperar durante este proceso: + +- Es posible que haya tarifas asociadas con el uso de Usuarios con Permisos en el futuro. +- Después de enviar el formulario, monitoree su contacto principal de Telegram. + +
+ +### Conexión a Mainnet-Beta y Testnet en modo IBRL + +!!! Note inline end + El modo IBRL no requiere reiniciar los clientes de validadores, ya que usa su dirección IP pública existente. + +Los Usuarios con Permisos completarán la conexión a DoubleZero Mainnet-beta, que se detalla en esta página. + +## 1. Configuración del Entorno + +Siga las instrucciones de [configuración](setup.md) antes de continuar. + +El último paso en la configuración fue desconectarse de la red. Esto es para asegurar que solo un túnel esté abierto en su máquina hacia DoubleZero, y que ese túnel esté en la red correcta. + +Para configurar el CLI DoubleZero (`doublezero`) y el daemon (`doublezerod`) para conectarse a **DoubleZero testnet**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Para configurar el CLI DoubleZero (`doublezero`) y el daemon (`doublezerod`) para conectarse a **DoubleZero mainnet-beta**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Debería ver la siguiente salida: +``` +✅ doublezerod configured for environment mainnet-beta +``` + +Después de aproximadamente 30 segundos verá los dispositivos DoubleZero disponibles: + +```bash +doublezero latency +``` + +## 2. Contactar a la Fundación DoubleZero + +La Fundación DoubleZero. Deberá proporcionar su `DoubleZeroID`, su `ID de Validador` (node ID) y la `dirección IPv4 pública` desde la que se conectará. + + +
+ +## 3. Conectarse en modo IBRL + +En el servidor, con el usuario que se conectará a DoubleZero, ejecute el comando `connect` para establecer la conexión a DoubleZero. + +```bash +doublezero connect ibrl +``` + +Debería ver una salida que indique el aprovisionamiento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Espere un minuto para que el túnel se complete. Hasta que el túnel esté completado, su salida de estado puede devolver "down" o "Unknown" + +Verifique su conexión: + +```bash +doublezero status +``` + +**Salida:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Un estado de `up` significa que está conectado correctamente. + +Podrá ver las rutas propagadas por otros usuarios en DoubleZero ejecutando: + +``` +ip route +``` +Salida: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Siguiente Paso: Multicast + +Si ha completado esta configuración y planea usar Multicast, continúe a la [siguiente página](Other%20Multicast%20Connection.md). diff --git a/docs/Permissioned Connection.fr.md b/docs/Permissioned Connection.fr.md new file mode 100644 index 0000000..334cdf5 --- /dev/null +++ b/docs/Permissioned Connection.fr.md @@ -0,0 +1,146 @@ +# Connexion Autorisée Non-Validateur à DoubleZero en Mode IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'Utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Aperçu de l'Intégration des Utilisateurs Autorisés + +L'intégration des utilisateurs est actuellement autorisée pour les non-validateurs et les RPC. Pour commencer le processus d'autorisation, veuillez remplir [ce formulaire](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z). Voici ce à quoi vous pouvez vous attendre au cours de ce processus : + +- Des frais pourront être associés à l'utilisation des Utilisateurs Autorisés à l'avenir. +- Après la soumission du formulaire, surveillez votre contact Telegram principal. + +
+ +### Connexion à Mainnet-Beta et Testnet en Mode IBRL + +!!! Note inline end + Le mode IBRL ne nécessite pas de redémarrer les clients validateurs, car il utilise votre adresse IP publique existante. + +Les Utilisateurs Autorisés complèteront la connexion au Mainnet-beta DoubleZero, qui est décrite sur cette page. + +## 1. Configuration de l'Environnement + +Veuillez suivre les instructions de [configuration](setup.md) avant de procéder. + +La dernière étape de la configuration consistait à se déconnecter du réseau. Cela garantit qu'un seul tunnel est ouvert sur votre machine vers DoubleZero, et que ce tunnel est sur le bon réseau. + +Pour configurer la CLI Client DoubleZero (`doublezero`) et le daemon (`doublezerod`) afin de se connecter au **testnet DoubleZero** : +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Pour configurer la CLI Client DoubleZero (`doublezero`) et le daemon (`doublezerod`) afin de se connecter au **mainnet-beta DoubleZero** : +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Vous devriez voir la sortie suivante : +``` +✅ doublezerod configured for environment mainnet-beta +``` +Vous devriez voir la sortie suivante : +` +✅ doublezerod configured for environment testnet +` + +Après environ 30 secondes, vous verrez les dispositifs DoubleZero disponibles : + +```bash +doublezero latency +``` +Exemple de sortie (Testnet) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +La sortie du testnet sera identique dans sa structure, mais avec beaucoup plus de dispositifs disponibles. + + + +## 2. Contacter la DoubleZero Foundation + +La DoubleZero Foundation. Vous devrez fournir votre `DoubleZeroID`, votre `ID Validateur` (node ID) et l'`adresse IPv4 publique` depuis laquelle vous vous connecterez. + + +
+ +## 3. Se Connecter en Mode IBRL + +Sur le serveur, avec l'utilisateur qui se connectera à DoubleZero, exécutez la commande `connect` pour établir la connexion à DoubleZero. + +```bash +doublezero connect ibrl +``` + +Vous devriez voir une sortie indiquant le provisionnement, telle que : + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendez une minute que le tunnel soit complété. Jusqu'à ce que le tunnel soit établi, votre sortie de statut peut indiquer "down" ou "Unknown" + +Vérifiez votre connexion : + +```bash +doublezero status +``` + +**Sortie :** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Un statut `up` signifie que vous êtes connecté avec succès. + +Vous pourrez voir les routes propagées par d'autres utilisateurs sur DoubleZero en exécutant : + +``` +ip route +``` +Sortie : + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Prochaine Étape : Multicast + +Si vous avez terminé cette configuration et prévoyez d'utiliser le Multicast, passez à la [page suivante](Other%20Multicast%20Connection.md). diff --git a/docs/Permissioned Connection.it.md b/docs/Permissioned Connection.it.md new file mode 100644 index 0000000..c80f4fc --- /dev/null +++ b/docs/Permissioned Connection.it.md @@ -0,0 +1,146 @@ +# Connessione con Permesso Non-Validatore a DoubleZero in Modalità IBRL +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Connettendomi a DoubleZero accetto i [Termini di Servizio DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Panoramica dell'Onboarding degli Utenti con Permesso + +L'onboarding degli utenti è attualmente con permesso per i non-validatori e gli RPC. Per iniziare il flusso con permesso, compila [questo modulo](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z). Ecco cosa aspettarsi durante questo processo: + +- In futuro potrebbero essere associate commissioni all'utilizzo degli Utenti con Permesso. +- Dopo l'invio del modulo, monitora il tuo contatto Telegram principale. + +
+ +### Connessione a Mainnet-Beta e Testnet in Modalità IBRL + +!!! Note inline end + La modalità IBRL non richiede il riavvio dei client validatori, perché utilizza il tuo indirizzo IP pubblico esistente. + +Gli Utenti con Permesso completeranno la connessione a DoubleZero Mainnet-beta, che è dettagliata su questa pagina. + +## 1. Configurazione dell'Ambiente + +Segui le istruzioni di [setup](setup.md) prima di procedere. + +L'ultimo passo del setup era disconnettersi dalla rete. Questo serve a garantire che sia aperto solo un tunnel sulla tua macchina verso DoubleZero, e che quel tunnel sia sulla rete corretta. + +Per configurare la CLI DoubleZero Client (`doublezero`) e il daemon (`doublezerod`) per connettersi al **testnet DoubleZero**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Per configurare la CLI DoubleZero Client (`doublezero`) e il daemon (`doublezerod`) per connettersi al **mainnet-beta DoubleZero**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Dovresti vedere il seguente output: +``` +✅ doublezerod configured for environment mainnet-beta +``` +Dovresti vedere il seguente output: +` +✅ doublezerod configured for environment testnet +` + +Dopo circa 30 secondi vedrai i dispositivi DoubleZero disponibili: + +```bash +doublezero latency +``` +Esempio di output (Testnet) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +L'output del Testnet sarà identico nella struttura, ma con molti più dispositivi disponibili. + + + +## 2. Contatta la DoubleZero Foundation + +La DoubleZero Foundation. Dovrai fornire il tuo `DoubleZeroID`, il tuo `ID Validatore` (node ID) e il `indirizzo IPv4 pubblico` da cui ti connetterai. + + +
+ +## 3. Connettiti in Modalità IBRL + +Sul server, con l'utente che si connetterà a DoubleZero, esegui il comando `connect` per stabilire la connessione a DoubleZero. + +```bash +doublezero connect ibrl +``` + +Dovresti vedere un output che indica il provisioning, come: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendi un minuto per il completamento del tunnel. Finché il tunnel non è completato, l'output dello stato potrebbe restituire "down" o "Unknown" + +Verifica la tua connessione: + +```bash +doublezero status +``` + +**Output:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Uno stato `up` significa che sei connesso con successo. + +Potrai visualizzare le route propagate da altri utenti su DoubleZero eseguendo: + +``` +ip route +``` +Output: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Passo Successivo: Multicast + +Se hai completato questa configurazione e prevedi di usare il Multicast, procedi alla [pagina successiva](Other%20Multicast%20Connection.md). diff --git a/docs/Permissioned Connection.ja.md b/docs/Permissioned Connection.ja.md new file mode 100644 index 0000000..f5253e8 --- /dev/null +++ b/docs/Permissioned Connection.ja.md @@ -0,0 +1,145 @@ +# IBRLモードでのDoubleZeroへの非バリデーターPermissioned接続 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZeroに接続することで、[DoubleZeroサービス利用規約](https://doublezero.xyz/terms-protocol)に同意します" + +
+ +### Permissionedユーザーオンボーディングの概要 + +現在、非バリデーターとRPCのユーザーオンボーディングはPermissionedされています。Permissionedフローを開始するには、[このフォーム](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z)に記入してください。このプロセス中に予想されることは以下の通りです: + +- 将来的にPermissionedユーザーの使用に手数料が発生する場合があります。 +- フォーム送信後、主要なTelegram連絡先を監視してください。 + +
+ +### IBRLモードでのメインネットベータおよびテストネット接続 + +!!! Note inline end + IBRLモードは既存のパブリックIPアドレスを使用するため、バリデータークライアントの再起動が不要です。 + +Permissionedユーザーはこのページで詳述するDoubleZeroメインネットベータへの接続を完了します。 + +## 1. 環境設定 + +続行する前に[セットアップ](setup.md)手順に従ってください。 + +セットアップの最後のステップはネットワークから切断することでした。これにより、マシン上のDoubleZeroへのトンネルが1つだけ開いており、そのトンネルが正しいネットワーク上にあることを確認します。 + +DoubleZeroクライアントCLI(`doublezero`)とデーモン(`doublezerod`)を**DoubleZeroテストネット**に接続するように設定するには: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +DoubleZeroクライアントCLI(`doublezero`)とデーモン(`doublezerod`)を**DoubleZeroメインネットベータ**に接続するように設定するには: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +次の出力が表示されるはずです: +``` +✅ doublezerod configured for environment mainnet-beta +``` +次の出力が表示されるはずです: +` +✅ doublezerod configured for environment testnet +` + +約30秒後に利用可能なDoubleZeroデバイスが表示されます: + +```bash +doublezero latency +``` +テストネットの出力例: +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +テストネットの出力は構造が同じですが、利用可能なデバイスが多くなります。 + + +## 2. DoubleZero Foundationへの連絡 + +DoubleZero Foundationに連絡します。接続元の`DoubleZeroID`、`バリデーターID`(ノードID)、`公開IPv4アドレス`を提供する必要があります。 + + +
+ +## 3. IBRLモードでの接続 + +DoubleZeroに接続するユーザーで、サーバー上で`connect`コマンドを実行してDoubleZeroへの接続を確立します。 + +```bash +doublezero connect ibrl +``` + +以下のようなプロビジョニングを示す出力が表示されます: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +トンネルが完了するまで1分待ちます。トンネルが完了するまで、ステータス出力が「down」または「Unknown」を返す場合があります。 + +接続を確認します: + +```bash +doublezero status +``` + +**出力:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +`up`のステータスは正常に接続されていることを意味します。 + +次のコマンドを実行することでDoubleZero上の他のユーザーによって伝搬されたルートを確認できます: + +``` +ip route +``` +出力: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 次のステップ:マルチキャスト + +このセットアップを完了してマルチキャストを使用する予定の場合は、[次のページ](Other%20Multicast%20Connection.md)に進んでください。 diff --git a/docs/Permissioned Connection.ko.md b/docs/Permissioned Connection.ko.md new file mode 100644 index 0000000..7eaecc6 --- /dev/null +++ b/docs/Permissioned Connection.ko.md @@ -0,0 +1,146 @@ +# 비검증자를 위한 IBRL 모드 허가된 DoubleZero 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 서비스 약관](https://doublezero.xyz/terms-protocol)에 동의합니다" + +
+ +### 허가된 사용자 온보딩 개요 + +현재 비검증자 및 RPC에 대한 사용자 온보딩은 허가제입니다. 허가된 흐름을 시작하려면 [이 양식](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z)을 작성하세요. 이 과정에서 예상되는 사항은 다음과 같습니다: + +- 향후 허가된 사용자 사용과 관련된 수수료가 있을 수 있습니다. +- 양식 제출 후 기본 텔레그램 연락처를 모니터링하세요. + +
+ +### IBRL 모드로 Mainnet-Beta 및 Testnet에 연결 + +!!! Note inline end + IBRL 모드는 기존 공개 IP 주소를 사용하므로 검증자 클라이언트를 재시작할 필요가 없습니다. + +허가된 사용자는 이 페이지에 설명된 DoubleZero Mainnet-beta 연결을 완료합니다. + +## 1. 환경 구성 + +진행하기 전에 [설정](setup.md) 지침을 따르세요. + +설정의 마지막 단계는 네트워크에서 연결을 해제하는 것이었습니다. 이는 DoubleZero에 한 개의 터널만 열려 있고 해당 터널이 올바른 네트워크에 있도록 하기 위한 것입니다. + +**DoubleZero 테스트넷**에 연결하도록 DoubleZero 클라이언트 CLI(`doublezero`) 및 데몬(`doublezerod`)을 구성하려면: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +**DoubleZero mainnet-beta**에 연결하도록 DoubleZero 클라이언트 CLI(`doublezero`) 및 데몬(`doublezerod`)을 구성하려면: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +다음 출력이 표시되어야 합니다: +``` +✅ doublezerod configured for environment mainnet-beta +``` +다음 출력이 표시되어야 합니다: +` +✅ doublezerod configured for environment testnet +` + +약 30초 후 DoubleZero 장치를 볼 수 있습니다: + +```bash +doublezero latency +``` +예시 출력 (테스트넷) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +테스트넷 출력은 구조가 동일하지만 훨씬 더 많은 장치가 있습니다. + + + +## 2. DoubleZero Foundation에 연락 + +DoubleZero Foundation에 연락하세요. `DoubleZeroID`, `검증자 ID`(노드 ID), 그리고 연결할 `공개 IPv4 주소`를 제공해야 합니다. + + +
+ +## 3. IBRL 모드로 연결 + +서버에서 DoubleZero에 연결할 사용자로 `connect` 명령을 실행하여 DoubleZero에 연결을 설정하세요. + +```bash +doublezero connect ibrl +``` + +다음과 같은 프로비저닝을 나타내는 출력이 표시되어야 합니다: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +터널이 완료될 때까지 1분 기다리세요. 터널이 완료될 때까지 상태 출력이 "down" 또는 "Unknown"을 반환할 수 있습니다. + +연결을 확인하세요: + +```bash +doublezero status +``` + +**출력:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +`up` 상태는 성공적으로 연결되었음을 의미합니다. + +다음을 실행하여 DoubleZero의 다른 사용자가 전파한 경로를 볼 수 있습니다: + +``` +ip route +``` +출력: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 다음 단계: 멀티캐스트 + +이 설정을 완료하고 멀티캐스트를 사용할 계획이라면 [다음 페이지](Other%20Multicast%20Connection.md)로 진행하세요. diff --git a/docs/Permissioned Connection.pt.md b/docs/Permissioned Connection.pt.md new file mode 100644 index 0000000..928e846 --- /dev/null +++ b/docs/Permissioned Connection.pt.md @@ -0,0 +1,124 @@ +# Conexão com Permissão ao DoubleZero no Modo IBRL para Não-Validadores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Ao conectar ao DoubleZero, concordo com os [Termos de Serviço do DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Visão Geral do Processo de Integração com Permissão + +A integração de usuários está atualmente sujeita a permissão para não-validadores e RPCs. Para iniciar o processo com permissão, preencha [este formulário](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z). Isto é o que você pode esperar durante este processo: + +- Pode haver taxas associadas ao uso de Usuários com Permissão no futuro. +- Após o envio do formulário, monitore seu contato principal no Telegram. + +
+ +### Conectando ao Mainnet-Beta e Testnet no Modo IBRL + +!!! Note inline end + O modo IBRL não requer reinicialização dos clientes validadores, pois usa seu endereço IP público existente. + +Os Usuários com Permissão completarão a conexão ao DoubleZero Mainnet-beta, detalhada nesta página. + +## 1. Configuração do Ambiente + +Siga as instruções de [configuração](setup.md) antes de continuar. + +O último passo na configuração foi desconectar da rede. Isso é para garantir que apenas um túnel esteja aberto na sua máquina para o DoubleZero, e que esse túnel esteja na rede correta. + +Para configurar o CLI do DoubleZero (`doublezero`) e o daemon (`doublezerod`) para se conectar ao **DoubleZero testnet**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +Para configurar o CLI do DoubleZero (`doublezero`) e o daemon (`doublezerod`) para se conectar ao **DoubleZero mainnet-beta**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +Você deve ver a seguinte saída: +``` +✅ doublezerod configured for environment mainnet-beta +``` + +Após aproximadamente 30 segundos, você verá os dispositivos DoubleZero disponíveis: + +```bash +doublezero latency +``` + +## 2. Contatar a Fundação DoubleZero + +A Fundação DoubleZero. Você precisará fornecer seu `DoubleZeroID`, seu `ID de Validador` (node ID) e o `endereço IPv4 público` a partir do qual você se conectará. + + +
+ +## 3. Conectar no Modo IBRL + +No servidor, com o usuário que se conectará ao DoubleZero, execute o comando `connect` para estabelecer a conexão com o DoubleZero. + +```bash +doublezero connect ibrl +``` + +Você deve ver uma saída indicando o provisionamento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Aguarde um minuto para o túnel ser concluído. Até que o túnel seja concluído, sua saída de status pode retornar "down" ou "Unknown". + +Verifique sua conexão: + +```bash +doublezero status +``` + +**Saída:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Um status de `up` significa que você está conectado com sucesso. + +Você poderá visualizar as rotas propagadas por outros usuários no DoubleZero executando: + +``` +ip route +``` +Saída: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### Próximo Passo: Multicast + +Se você completou esta configuração e planeja usar o Multicast, continue para a [próxima página](Other%20Multicast%20Connection.md). diff --git a/docs/Permissioned Connection.zh.md b/docs/Permissioned Connection.zh.md new file mode 100644 index 0000000..3fe4eaa --- /dev/null +++ b/docs/Permissioned Connection.zh.md @@ -0,0 +1,146 @@ +# 非验证器以IBRL模式的Permissioned连接到DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "通过连接到DoubleZero,我同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" + +
+ +### Permissioned用户入职概述 + +目前非验证器和RPC的用户入职需要许可。要开始permissioned流程,请填写[此表单](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z)。以下是此过程中的预期内容: + +- 未来Permissioned用户使用可能会收取费用。 +- 提交表单后,请监控您的主要Telegram联系方式。 + +
+ +### 以IBRL模式连接到主网Beta和测试网 + +!!! Note inline end + IBRL模式不需要重启验证器客户端,因为它使用您现有的公共IP地址。 + +Permissioned用户将完成到DoubleZero主网Beta的连接,详情请见本页面。 + +## 1. 环境配置 + +请在继续之前按照[设置](setup.md)说明操作。 + +设置的最后一步是断开与网络的连接。这是为了确保您的机器上只有一个到DoubleZero的隧道处于开放状态,并且该隧道在正确的网络上。 + +要配置DoubleZero客户端CLI(`doublezero`)和守护程序(`doublezerod`)连接到**DoubleZero测试网**: +```bash +DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` +要配置DoubleZero客户端CLI(`doublezero`)和守护程序(`doublezerod`)连接到**DoubleZero主网Beta**: +```bash +DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" +``` + +您应该看到以下输出: +``` +✅ doublezerod configured for environment mainnet-beta +``` +您应该看到以下输出: +` +✅ doublezerod configured for environment testnet +` + +大约30秒后,您将看到可用的DoubleZero设备: + +```bash +doublezero latency +``` +示例输出(测试网) +```bash + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.74ms | 1.92ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.88ms | 4.39ms | 2.72ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.45ms | 3.30ms | 2.74ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.88ms | 5.13ms | 3.02ms | true + uzyg9iYw2FEbtdTHaDb5HoeEWYAPRPQgvsgyd873qPS | nyc001-dz002 | 4.42.212.122 | 3.17ms | 3.63ms | 3.33ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.33ms | 5.46ms | 3.39ms | true + 9oKLaL6Hwno5TyAFutTbbkNrzxm1fw9fhzkiUHgsxgGx | dz-dc10-sw01 | 137.239.200.186 | 6.84ms | 7.01ms | 6.91ms | true + DESzDP8GkSTpQLkrUegLkt4S2ynGfZX5bTDzZf3sEE58 | was001-dz002 | 38.88.214.133 | 7.39ms | 7.44ms | 7.41ms | true + HHNCpqB7CwHVLxAiB1S86ko6gJRzLCtw78K1tc7ZpT5P | was001-dz001 | 66.198.11.74 | 7.67ms | 7.85ms | 7.76ms | true + 9LFtjDzohKvCBzSquQD4YtL3HwuvkKBDE7KSzb8ztV2b | dz-mtl11-sw01 | 134.195.161.10 | 9.88ms | 10.01ms | 9.95ms | true + 9M7FfYYyjM4wGinKPofZRNmQFcCjCKRbXscGBUiXvXnG | dz-tor1-sw01 | 209.42.165.10 | 14.52ms | 14.53ms | 14.52ms | true +``` +测试网输出结构相同,但可用设备更多。 + + + +## 2. 联系DoubleZero基金会 + +DoubleZero基金会。您需要提供您的`DoubleZero ID`、您的`验证器ID`(节点ID)以及您将从中连接的`公共IPv4地址`。 + + +
+ +## 3. 以IBRL模式连接 + +在服务器上,使用将连接到DoubleZero的用户,运行`connect`命令建立到DoubleZero的连接。 + +```bash +doublezero connect ibrl +``` + +您应该看到表示配置的输出,例如: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +等待一分钟让隧道完成。在隧道完成之前,您的状态输出可能返回"down"或"Unknown"。 + +验证您的连接: + +```bash +doublezero status +``` + +**输出:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +状态`up`表示您已成功连接。 + +您可以通过运行以下命令查看DoubleZero上其他用户传播的路由: + +``` +ip route +``` +输出: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + +
+ +### 下一步:多播 + +如果您已完成此设置并计划使用多播,请继续访问[下一页](Other%20Multicast%20Connection.md)。 diff --git a/docs/Shelby Permissioned Connection.es.md b/docs/Shelby Permissioned Connection.es.md new file mode 100644 index 0000000..d34af90 --- /dev/null +++ b/docs/Shelby Permissioned Connection.es.md @@ -0,0 +1,107 @@ +# Conexión a DoubleZero en modo IBRL para usuarios de Shelby Testnet +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Servicio de DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Obtenga su DoubleZeroID + +Deberá proporcionar su `DoubleZeroID` y la `dirección IPv4 pública` en este [formulario](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z) + + +- Es posible que haya tarifas asociadas con el uso de Usuarios con Permisos en el futuro. +- Después de enviar el formulario, monitoree su contacto principal de Telegram. +- En este momento, Shelby solo puede conectarse a DoubleZero Testnet. + +
+ +### Conexión a Testnet en modo IBRL + +Los usuarios con permisos de Shelby completarán la conexión a DoubleZero Testnet, que se detalla en esta página. + +## 1. Configuración del Entorno + +Siga las instrucciones de [configuración](setup.md) antes de continuar. + +El último paso en la configuración fue desconectarse de la red. Esto es para asegurar que solo un túnel esté abierto en su máquina hacia DoubleZero, y que ese túnel esté en la red correcta. + +Para configurar el CLI DoubleZero (`doublezero`) para conectarse al inquilino Shelby en DoubleZero: +```bash +doublezero config set --tenant shelby +``` + +Aplique reglas de firewall adicionales específicas de Shelby: + +iptables: +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW: +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. Contactar a la Fundación DoubleZero + +La Fundación DoubleZero. Deberá proporcionar su `DoubleZeroID` y la `dirección IPv4 pública` desde la que se conectará. + + +
+ +## 3. Conectarse en modo IBRL + +En el servidor, con el usuario que se conectará a DoubleZero, ejecute el comando `connect` para establecer la conexión a DoubleZero. + +```bash +doublezero connect ibrl +``` + +Debería ver una salida que indique el aprovisionamiento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Espere un minuto para que el túnel se complete. Hasta que el túnel esté completado, su salida de estado puede devolver "down" o "Unknown" + +Verifique su conexión: + +```bash +doublezero status +``` + +**Salida:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Un estado de `up` significa que está conectado correctamente. + +Podrá ver las rutas propagadas por otros usuarios en DoubleZero ejecutando: + +``` +ip route +``` +Salida: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Shelby Permissioned Connection.fr.md b/docs/Shelby Permissioned Connection.fr.md new file mode 100644 index 0000000..2a4028e --- /dev/null +++ b/docs/Shelby Permissioned Connection.fr.md @@ -0,0 +1,107 @@ +# Connexion à DoubleZero en Mode IBRL pour les Utilisateurs du Testnet Shelby +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'Utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Obtenir votre DoubleZeroID + +Vous devrez fournir votre `DoubleZeroID` et l'`adresse IPv4 publique` sur ce [formulaire](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z) + + +- Des frais pourront être associés à l'utilisation des Utilisateurs Autorisés à l'avenir. +- Après la soumission du formulaire, surveillez votre contact Telegram principal. +- Pour l'instant, Shelby ne peut se connecter qu'au Testnet DoubleZero. + +
+ +### Connexion au Testnet en Mode IBRL + +Les utilisateurs autorisés Shelby complèteront la connexion au Testnet DoubleZero, qui est décrite sur cette page. + +## 1. Configuration de l'Environnement + +Veuillez suivre les instructions de [configuration](setup.md) avant de procéder. + +La dernière étape de la configuration consistait à se déconnecter du réseau. Cela garantit qu'un seul tunnel est ouvert sur votre machine vers DoubleZero, et que ce tunnel est sur le bon réseau. + +Pour configurer la CLI Client DoubleZero (`doublezero`) afin de se connecter au tenant Shelby sur DoubleZero : +```bash +doublezero config set --tenant shelby +``` + +Appliquez des règles de pare-feu supplémentaires spécifiques à Shelby : + +iptables : +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW : +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. Contacter la DoubleZero Foundation + +La DoubleZero Foundation. Vous devrez fournir votre `DoubleZeroID` et l'`adresse IPv4 publique` depuis laquelle vous vous connecterez. + + +
+ +## 3. Se Connecter en Mode IBRL + +Sur le serveur, avec l'utilisateur qui se connectera à DoubleZero, exécutez la commande `connect` pour établir la connexion à DoubleZero. + +```bash +doublezero connect ibrl +``` + +Vous devriez voir une sortie indiquant le provisionnement, telle que : + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendez une minute que le tunnel soit complété. Jusqu'à ce que le tunnel soit établi, votre sortie de statut peut indiquer "down" ou "Unknown" + +Vérifiez votre connexion : + +```bash +doublezero status +``` + +**Sortie :** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Un statut `up` signifie que vous êtes connecté avec succès. + +Vous pourrez voir les routes propagées par d'autres utilisateurs sur DoubleZero en exécutant : + +``` +ip route +``` +Sortie : + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Shelby Permissioned Connection.it.md b/docs/Shelby Permissioned Connection.it.md new file mode 100644 index 0000000..9cc586e --- /dev/null +++ b/docs/Shelby Permissioned Connection.it.md @@ -0,0 +1,107 @@ +# Connessione a DoubleZero in Modalità IBRL per Utenti Shelby Testnet +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Connettendomi a DoubleZero accetto i [Termini di Servizio DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Ottieni il tuo DoubleZeroID + +Dovrai fornire il tuo `DoubleZeroID` e il `indirizzo IPv4 pubblico` in questo [modulo](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z) + + +- In futuro potrebbero essere associate commissioni all'utilizzo degli Utenti con Permesso. +- Dopo l'invio del modulo, monitora il tuo contatto Telegram principale. +- Al momento Shelby può connettersi solo al Testnet DoubleZero. + +
+ +### Connessione al Testnet in Modalità IBRL + +Gli utenti con permesso Shelby completeranno la connessione al Testnet DoubleZero, che è dettagliata su questa pagina. + +## 1. Configurazione dell'Ambiente + +Segui le istruzioni di [setup](setup.md) prima di procedere. + +L'ultimo passo del setup era disconnettersi dalla rete. Questo serve a garantire che sia aperto solo un tunnel sulla tua macchina verso DoubleZero, e che quel tunnel sia sulla rete corretta. + +Per configurare la CLI DoubleZero Client (`doublezero`) per connettersi al tenant Shelby su DoubleZero: +```bash +doublezero config set --tenant shelby +``` + +Applica regole firewall aggiuntive specifiche per Shelby: + +iptables: +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW: +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. Contatta la DoubleZero Foundation + +La DoubleZero Foundation. Dovrai fornire il tuo `DoubleZeroID` e il `indirizzo IPv4 pubblico` da cui ti connetterai. + + +
+ +## 3. Connettiti in Modalità IBRL + +Sul server, con l'utente che si connetterà a DoubleZero, esegui il comando `connect` per stabilire la connessione a DoubleZero. + +```bash +doublezero connect ibrl +``` + +Dovresti vedere un output che indica il provisioning, come: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Attendi un minuto per il completamento del tunnel. Finché il tunnel non è completato, l'output dello stato potrebbe restituire "down" o "Unknown" + +Verifica la tua connessione: + +```bash +doublezero status +``` + +**Output:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Uno stato `up` significa che sei connesso con successo. + +Potrai visualizzare le route propagate da altri utenti su DoubleZero eseguendo: + +``` +ip route +``` +Output: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Shelby Permissioned Connection.ja.md b/docs/Shelby Permissioned Connection.ja.md new file mode 100644 index 0000000..1cf9b2a --- /dev/null +++ b/docs/Shelby Permissioned Connection.ja.md @@ -0,0 +1,107 @@ +# ShelbyテストネットユーザーのIBRLモードでのDoubleZero接続 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZeroに接続することで、[DoubleZeroサービス利用規約](https://doublezero.xyz/terms-protocol)に同意します" + +
+ +### DoubleZeroIDの取得 + +`DoubleZeroID`と`公開IPv4アドレス`をこちらの[フォーム](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z)で提供する必要があります。 + + +- 将来的にPermissionedユーザーの使用に手数料が発生する場合があります。 +- フォーム送信後、主要なTelegram連絡先を監視してください。 +- 現時点でShelbyはDoubleZeroテストネットにのみ接続可能です。 + +
+ +### IBRLモードでのテストネット接続 + +ShelbyのPermissionedユーザーはDoubleZeroテストネットへの接続を完了します。詳細はこのページに記載されています。 + +## 1. 環境設定 + +続行する前に[セットアップ](setup.md)手順に従ってください。 + +セットアップの最後のステップはネットワークから切断することでした。これにより、マシン上のDoubleZeroへのトンネルが1つだけ開いており、そのトンネルが正しいネットワーク上にあることを確認します。 + +DoubleZero上のShelbyテナントに接続するようにDoubleZeroクライアントCLI(`doublezero`)を設定するには: +```bash +doublezero config set --tenant shelby +``` + +Shelby固有の追加ファイアウォールルールを適用します: + +iptables: +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW: +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. DoubleZero Foundationへの連絡 + +DoubleZero Foundationに連絡します。接続元の`DoubleZeroID`と`公開IPv4アドレス`を提供する必要があります。 + + +
+ +## 3. IBRLモードでの接続 + +DoubleZeroに接続するユーザーで、サーバー上で`connect`コマンドを実行してDoubleZeroへの接続を確立します。 + +```bash +doublezero connect ibrl +``` + +以下のようなプロビジョニングを示す出力が表示されます: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +トンネルが完了するまで1分待ちます。トンネルが完了するまで、ステータス出力が「down」または「Unknown」を返す場合があります。 + +接続を確認します: + +```bash +doublezero status +``` + +**出力:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +`up`のステータスは正常に接続されていることを意味します。 + +次のコマンドを実行することでDoubleZero上の他のユーザーによって伝搬されたルートを確認できます: + +``` +ip route +``` +出力: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Shelby Permissioned Connection.ko.md b/docs/Shelby Permissioned Connection.ko.md new file mode 100644 index 0000000..78bca73 --- /dev/null +++ b/docs/Shelby Permissioned Connection.ko.md @@ -0,0 +1,107 @@ +# Shelby 테스트넷 사용자를 위한 IBRL 모드 DoubleZero 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 서비스 약관](https://doublezero.xyz/terms-protocol)에 동의합니다" + +
+ +### DoubleZeroID 받기 + +`DoubleZeroID`와 `공개 IPv4 주소`를 이 [양식](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z)에 제공해야 합니다. + + +- 향후 허가된 사용자 사용과 관련된 수수료가 있을 수 있습니다. +- 양식 제출 후 기본 텔레그램 연락처를 모니터링하세요. +- 현재 Shelby는 DoubleZero 테스트넷에만 연결할 수 있습니다. + +
+ +### IBRL 모드로 테스트넷에 연결 + +Shelby 허가된 사용자는 이 페이지에 설명된 DoubleZero 테스트넷 연결을 완료합니다. + +## 1. 환경 구성 + +진행하기 전에 [설정](setup.md) 지침을 따르세요. + +설정의 마지막 단계는 네트워크에서 연결을 해제하는 것이었습니다. 이는 DoubleZero에 한 개의 터널만 열려 있고 해당 터널이 올바른 네트워크에 있도록 하기 위한 것입니다. + +DoubleZero에서 Shelby 테넌트에 연결하도록 DoubleZero 클라이언트 CLI(`doublezero`)를 구성하려면: +```bash +doublezero config set --tenant shelby +``` + +Shelby에 특정한 추가 방화벽 규칙 적용: + +iptables: +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW: +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. DoubleZero Foundation에 연락 + +DoubleZero Foundation에 연락하세요. `DoubleZeroID`와 연결할 `공개 IPv4 주소`를 제공해야 합니다. + + +
+ +## 3. IBRL 모드로 연결 + +서버에서 DoubleZero에 연결할 사용자로 `connect` 명령을 실행하여 DoubleZero에 연결을 설정하세요. + +```bash +doublezero connect ibrl +``` + +다음과 같은 프로비저닝을 나타내는 출력이 표시되어야 합니다: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +터널이 완료될 때까지 1분 기다리세요. 터널이 완료될 때까지 상태 출력이 "down" 또는 "Unknown"을 반환할 수 있습니다. + +연결을 확인하세요: + +```bash +doublezero status +``` + +**출력:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +`up` 상태는 성공적으로 연결되었음을 의미합니다. + +다음을 실행하여 DoubleZero의 다른 사용자가 전파한 경로를 볼 수 있습니다: + +``` +ip route +``` +출력: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Shelby Permissioned Connection.pt.md b/docs/Shelby Permissioned Connection.pt.md new file mode 100644 index 0000000..8601c29 --- /dev/null +++ b/docs/Shelby Permissioned Connection.pt.md @@ -0,0 +1,107 @@ +# Conexão ao DoubleZero no Modo IBRL para Usuários do Shelby Testnet +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Ao conectar ao DoubleZero, concordo com os [Termos de Serviço do DoubleZero](https://doublezero.xyz/terms-protocol)" + +
+ +### Obtenha seu DoubleZeroID + +Você precisará fornecer seu `DoubleZeroID` e o `endereço IPv4 público` neste [formulário](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z) + + +- Pode haver taxas associadas ao uso de Usuários com Permissão no futuro. +- Após o envio do formulário, monitore seu contato principal no Telegram. +- No momento, o Shelby só pode se conectar ao DoubleZero Testnet. + +
+ +### Conectando ao Testnet no Modo IBRL + +Os usuários com permissão do Shelby completarão a conexão ao DoubleZero Testnet, detalhada nesta página. + +## 1. Configuração do Ambiente + +Siga as instruções de [configuração](setup.md) antes de continuar. + +O último passo na configuração foi desconectar da rede. Isso é para garantir que apenas um túnel esteja aberto na sua máquina para o DoubleZero, e que esse túnel esteja na rede correta. + +Para configurar o CLI do DoubleZero (`doublezero`) para se conectar ao tenant Shelby no DoubleZero: +```bash +doublezero config set --tenant shelby +``` + +Aplique regras de Firewall adicionais específicas para o Shelby: + +iptables: +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW: +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. Contatar a Fundação DoubleZero + +A Fundação DoubleZero. Você precisará fornecer seu `DoubleZeroID` e o `endereço IPv4 público` a partir do qual você se conectará. + + +
+ +## 3. Conectar no Modo IBRL + +No servidor, com o usuário que se conectará ao DoubleZero, execute o comando `connect` para estabelecer a conexão com o DoubleZero. + +```bash +doublezero connect ibrl +``` + +Você deve ver uma saída indicando o provisionamento, como: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +Aguarde um minuto para o túnel ser concluído. Até que o túnel seja concluído, sua saída de status pode retornar "down" ou "Unknown". + +Verifique sua conexão: + +```bash +doublezero status +``` + +**Saída:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +Um status de `up` significa que você está conectado com sucesso. + +Você poderá visualizar as rotas propagadas por outros usuários no DoubleZero executando: + +``` +ip route +``` +Saída: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Shelby Permissioned Connection.zh.md b/docs/Shelby Permissioned Connection.zh.md new file mode 100644 index 0000000..7403ec1 --- /dev/null +++ b/docs/Shelby Permissioned Connection.zh.md @@ -0,0 +1,107 @@ +# Shelby测试网用户以IBRL模式连接到DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "通过连接到DoubleZero,我同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" + +
+ +### 获取您的DoubleZero ID + +您需要在此[表单](https://forms.fillout.com/t/s77k7wandMus?id=rec08iF4Z8kVFGm1z)中提供您的`DoubleZero ID`和`公共IPv4地址`。 + + +- 未来Permissioned用户使用可能会收取费用。 +- 提交表单后,请监控您的主要Telegram联系方式。 +- 目前Shelby只能连接到DoubleZero测试网。 + +
+ +### 以IBRL模式连接到测试网 + +Shelby permissioned用户将完成到DoubleZero测试网的连接,详情请见本页面。 + +## 1. 环境配置 + +请在继续之前按照[设置](setup.md)说明操作。 + +设置的最后一步是断开与网络的连接。这是为了确保您的机器上只有一个到DoubleZero的隧道处于开放状态,并且该隧道在正确的网络上。 + +要配置DoubleZero客户端CLI(`doublezero`)连接到DoubleZero上的Shelby租户: +```bash +doublezero config set --tenant shelby +``` + +应用Shelby特定的额外防火墙规则: + +iptables: +``` +sudo iptables -A INPUT -i doublezero0 -p tcp --dport 39431 -j ACCEPT +sudo iptables -A INPUT -p tcp --dport 39431 -j DROP +``` + +UFW: +``` +sudo ufw allow in on doublezero0 to any port 39431 proto tcp +sudo ufw deny in to any port 39431 proto tcp +``` + +## 2. 联系DoubleZero基金会 + +DoubleZero基金会。您需要提供您的`DoubleZero ID`和您将从中连接的`公共IPv4地址`。 + + +
+ +## 3. 以IBRL模式连接 + +在服务器上,使用将连接到DoubleZero的用户,运行`connect`命令建立到DoubleZero的连接。 + +```bash +doublezero connect ibrl +``` + +您应该看到表示配置的输出,例如: + +``` +DoubleZero Service Provisioning +🔗 Start Provisioning User... +Public IP detected: 137.184.101.183 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` +🔍 Provisioning User for IP: 137.184.101.183 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok +✅ User Provisioned +``` +等待一分钟让隧道完成。在隧道完成之前,您的状态输出可能返回"down"或"Unknown"。 + +验证您的连接: + +```bash +doublezero status +``` + +**输出:** +```bash +Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | DoubleZero IP | User Type +up | 2025-09-10 12:16:03 UTC | doublezero0 | 137.184.101.183 | 64.86.249.22 | 137.184.101.183 | IBRL +``` +状态`up`表示您已成功连接。 + +您可以通过运行以下命令查看DoubleZero上其他用户传播的路由: + +``` +ip route +``` +输出: + +``` +default via 149.28.38.1 dev enp1s0 proto dhcp src 149.28.38.64 metric 100 +5.39.216.186 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.201 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +5.39.251.202 via 169.254.0.68 dev doublezero0 proto bgp src 149.28.38.64 +... +``` + + +
diff --git a/docs/Swapping-sol-to-2z.es.md b/docs/Swapping-sol-to-2z.es.md new file mode 100644 index 0000000..87cb14d --- /dev/null +++ b/docs/Swapping-sol-to-2z.es.md @@ -0,0 +1,205 @@ +**Revise el Descargo de Responsabilidad antes de acceder o usar el código o cualquier material relacionado.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Descargo de Responsabilidad" + + Este documento y el código asociado se proporcionan únicamente con fines informativos y técnicos. La funcionalidad de conversión de tokens descrita aquí es sin custodia: los usuarios interactúan directamente con los contratos inteligentes subyacentes y retienen el control total de sus activos en todo momento. + + El sistema puede depender de o interactuar con código, fuentes de datos o mecanismos de precios y tarifas de terceros (por ejemplo, contratos inteligentes, APIs o exchanges descentralizados) que no son desarrollados, controlados ni revisados por los desarrolladores o publicadores. No se hace ninguna declaración o garantía sobre la precisión, funcionalidad o seguridad de ningún componente de terceros. + Los desarrolladores y publicadores de este código no garantizan su exactitud, integridad o disponibilidad continua. El código y los materiales relacionados se proporcionan "tal cual" y pueden contener errores, bugs o vulnerabilidades. El uso es completamente bajo su propio riesgo. + Los desarrolladores y publicadores no reciben ninguna tarifa en conexión con el uso de estos contratos. No tienen ninguna obligación de mantener, actualizar o apoyar el código o la documentación relacionada. + + Este documento no constituye una oferta de venta, una solicitud de compra ni una recomendación para participar en ninguna conversión de tokens, swap u otra transacción. No se proporciona asesoramiento legal, financiero ni de inversión. + Los usuarios son los únicos responsables de determinar la legalidad de sus actividades. Deben revisar las leyes y regulaciones aplicables en su jurisdicción y consultar asesores independientes antes de usar el código o participar en cualquier conversión. El uso está prohibido donde sea ilegal, incluso por personas o entidades sujetas a sanciones o en jurisdicciones restringidas. + + En la medida máxima permitida por la ley, los desarrolladores y publicadores rechazan toda responsabilidad por cualquier pérdida, daño o reclamación que surja de o en relación con el uso del código o la participación en la conversión. + + La revisión y el uso de este documento y el código asociado están sujetos a los [Términos y Condiciones del Sitio Web](https://doublezero.xyz/terms) y los [Términos y Condiciones del Protocolo](https://doublezero.xyz/terms-protocol). + +El protocolo DoubleZero recauda ingresos denominados en SOL de sus validadores usuarios, pero distribuye recompensas denominadas en 2Z a los contribuidores. Por lo tanto, debe convertir SOL en 2Z. + +**Para hacerlo, los participantes elegibles pueden operar contra un contrato de swap de DoubleZero, comprando SOL del contrato y vendiéndolo a 2Z. Los precios se basan en feeds de precios de Pyth con un mecanismo de descuento programático.** + +Esta breve guía explica cómo usar el programa. + +***Revise el Descargo de Responsabilidad al final de este documento antes de acceder o usar el código o cualquier material relacionado.*** + +--- + +## Diseño del Programa + +El programa de swap es efectivamente un pool de liquidez unilateral que vende SOL en un tamaño de lote fijo de 1 SOL por operación. Cualquier participante elegible puede retirar SOL del programa depositando 2Z, a un precio determinado por un precio de oráculo de Pyth y un descuento dinámico. Con el tiempo, esto ejecuta el objetivo del programa de convertir tokens nativos en 2Z. + +Para utilizarlo, un trader debe proporcionar dos precios recientes de Pyth (SOL/USD y 2Z/USD) y una cantidad de 2Z. Luego el programa calcula el 2Z necesario para comprar ese 1 SOL basándose en el precio implícito SOL/2Z. Luego realiza algunos pasos adicionales: + +- Comprueba que los precios de Pyth sean suficientemente recientes, es decir, que no tengan más de 5 segundos de antigüedad. +- Comprueba que los intervalos de confianza de los dos precios sean suficientemente pequeños. Es decir, la suma de dos desviaciones estándar de Laplace (es decir, el parámetro `conf` en el precio de Pyth) para los dos precios, normalizada por sus niveles, debe ser menor o igual a 30 puntos básicos. +- Ajusta el precio SOL/2Z mediante un descuento dinámico, expresado como porcentaje del precio de Pyth. Este descuento es una función del tiempo desde la última operación. La fórmula siguiente especifica el descuento, suponiendo que la última operación se realizó en el slot $s_{\text{last}}$ y el slot actual es $s_{\text{now}}$. (Por ejemplo, si han transcurrido 200 slots desde la última operación, el descuento es de 40 puntos básicos.) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +En este punto, si el trader ha proporcionado suficiente 2Z para ejecutar la transacción a este precio calculado (incluyendo el descuento), se ejecuta a este precio calculado. Devuelve al trader la cantidad de SOL comprada y cualquier 2Z excedente. + +Luego el contrato no permite más operaciones para ese slot. Esto es para evitar que el contrato pague un slippage excesivamente alto si el precio de Pyth está muy lejos del precio real en un momento dado de maneras que los filtros existentes no detectan. + +--- + +## Ejecución Atómica Sin Gas + +Esta sección detallará cómo usar el comando `harvest-dz`. Este comando realizará atómicamente 2 acciones. +1. El comando solicita una cotización de Jupiter frente al programa de conversión nativo SOL <> 2Z. +2. Cuando la ruta de Jupiter produce más 2Z por SOL de lo que requiere el programa de conversión nativo, `harvest-2z` ejecuta un swap, devolviendo a su billetera 1 SOL más la diferencia en 2Z. + +### Cosechar 2Z + +Para ejecutar, ejecute lo siguiente: +``` +doublezero-solana revenue-distribution harvest-2z +``` +La salida se parecerá a: +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +El comando también puede simularse con el argumento `--dry-run`. La ejecución en seco producirá logs del programa y una salida que se asemejará a: + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## Conversión de Protocolo + +Esta sección analiza la verificación de las tasas de conversión y la ejecución de la conversión usando el CLI `doublezero-solana`. Y al final, analizamos la interfaz para integraciones personalizadas con el contrato de swap de DoubleZero. + +### Cómo verificar el precio de conversión SOL/2Z a través de `doublezero-solana` + +Para encontrar las tasas de conversión SOL/2Z en mainnet-beta, ejecute el siguiente comando: + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +Y la salida que vería se parecerá a: + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +El Saldo del Diario informa al usuario cuánta liquidez SOL hay en el contrato inteligente de Distribución de Ingresos. Un usuario puede operar siempre que el Saldo del Diario supere el tamaño de operación fijo de 1 SOL. + +La primera fila muestra el precio de conversión SOL/2Z "verdadero" a través de un oráculo offchain. La segunda fila es el precio de conversión utilizado en cadena para el swap, que simplemente ajusta el precio verdadero por el descuento algorítmico. + +### Cómo convertir su 2Z a SOL a través de `doublezero-solana` + +Para convertir sus tokens 2Z a SOL, ejecute el siguiente comando: + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +Por defecto, si hay suficiente liquidez de SOL y su ATA tiene suficiente 2Z para realizar el swap, esta transacción tendrá éxito. Puede ajustar más finamente el swap especificando los siguientes argumentos: + +```bash + --limit-price El precio límite por defecto es el precio de oráculo actual SOL/2Z + --source-2z-account La cuenta de tokens debe ser propiedad del firmante. Por defecto es el ATA del firmante si no se especifica + --checked-sol-amount Verificar explícitamente la cantidad de SOL. Cuando se especifica, esta cantidad se verificará contra la cantidad de relleno fija +``` + +El precio límite especificado determina el precio en el peor caso que está dispuesto a aceptar al realizar la conversión SOL/2Z. Por ejemplo, supongamos que el precio descontado de 2Z para SOL es 800, lo que significa 800 tokens 2Z por 1 SOL. Si especifica un precio límite de 790, no está dispuesto a realizar el swap porque está requiriendo intercambiar como máximo 790 tokens 2Z por 1 SOL. Pero si especifica 810, la operación se realizará porque estaba dispuesto a intercambiar como máximo 810 tokens 2Z (y en este caso, solo habrá intercambiado 800 tokens 2Z en esta transacción). + +La cuenta de tokens 2Z de origen reemplaza el ATA por defecto usando el firmante como propietario de este ATA de 2Z. Pero si tiene otra cuenta de tokens que desea usar para realizar el swap, proporcione la pubkey con este argumento. + +Opcionalmente, puede especificar la cantidad de SOL verificada al tamaño de relleno estándar (establecido en 1 SOL al lanzamiento). Si no coincide con el tamaño de relleno del programa, el swap falla. Esto mitiga el riesgo de que el tamaño de relleno del programa cambie y usted no lo note. + +### Interfaz para Comprar SOL + +La interfaz y el CLI `doublezero-solana` viven en [este repositorio](https://github.com/doublezerofoundation/doublezero-offchain). El código fuente de la interfaz del contrato de swap de DoubleZero se puede encontrar [aquí](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09). El ID del programa es `9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`. + +Una forma conveniente de generar las cuentas necesarias para la instrucción de compra de SOL es usar el método `new` (que se encuentra en *instruction/account.rs*). + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +La `fill_registry_key` se puede obtener ya sea del `ProgramState` + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // esta clave + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +Alternativamente, puede llamar a `getProgramAccounts` a través del RPC de Solana con su discriminador. Pero recomendamos almacenar en caché esta pubkey ya que nunca cambiará. + +La `user_key` es un firmante para la instrucción de compra de SOL y debe ser el propietario de la `user_token_account_key`. Como se describió anteriormente, esto NO necesita ser un ATA. Siempre que su cuenta de tokens 2Z sea propiedad de la `user_key`, esta instrucción tendrá éxito. + +La estructura `BuySolAccounts` implementa `Into>` para que pueda generar todos los metadatos de cuenta que necesita para construir la instrucción. + +Los datos de instrucción son: + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +Estos datos de instrucción están serializados en Borsh y tienen un selector Anchor de 8 bytes, que todo se serializará cuando se use `BorshSerialize::serialize`. + +Los datos de precio del oráculo se pueden obtener desde este endpoint público: [https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate). Los datos son deserializables con serde usando la estructura OraclePriceData que se encuentra en *oracle.rs*. + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +Ejemplo de cómo obtener usando el [crate reqwest](https://docs.rs/reqwest/latest/reqwest/): + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +Con el ID del programa, las cuentas y los datos de instrucción, debería poder construir la instrucción para comprar SOL del contrato de swap de DoubleZero. diff --git a/docs/Swapping-sol-to-2z.fr.md b/docs/Swapping-sol-to-2z.fr.md new file mode 100644 index 0000000..fbc2adb --- /dev/null +++ b/docs/Swapping-sol-to-2z.fr.md @@ -0,0 +1,206 @@ +**Lisez le Avertissement avant d'accéder ou d'utiliser le code ou tout matériel associé.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Avertissement" + + Ce document et le code associé sont fournis à des fins d'information et techniques uniquement. La fonctionnalité de conversion de tokens décrite ici est non-custodiale — les utilisateurs interagissent directement avec les contrats intelligents sous-jacents et conservent le plein contrôle de leurs actifs à tout moment. + + Le système peut s'appuyer sur ou interagir avec du code tiers, des sources de données, ou des mécanismes de tarification et de frais (par exemple, des contrats intelligents, des API, ou des échanges décentralisés) qui ne sont pas développés, contrôlés, ou examinés par le(s) développeur(s) ou éditeur(s). Aucune représentation ou garantie n'est faite quant à l'exactitude, la fonctionnalité, ou la sécurité de tout composant tiers. + Le(s) développeur(s) et éditeur(s) de ce code ne garantissent pas son exactitude, son exhaustivité, ou sa disponibilité continue. Le code et les matériaux associés sont fournis "tels quels", et peuvent contenir des bugs, des erreurs, ou des vulnérabilités. L'utilisation est entièrement à vos propres risques. + Le(s) développeur(s) et éditeur(s) ne reçoivent aucuns frais en rapport avec l'utilisation de ces contrats. Ils n'ont aucune obligation de maintenir, mettre à jour, ou soutenir le code ou la documentation associée. + + Ce document ne constitue pas une offre de vente, une sollicitation d'achat, ou une recommandation de participer à une conversion de tokens, un échange ou une autre transaction. Aucun conseil juridique, financier, ou d'investissement n'est fourni. + Les utilisateurs sont seuls responsables de déterminer la légalité de leurs activités. Ils doivent examiner les lois et réglementations applicables dans leur juridiction et consulter des conseillers indépendants avant d'utiliser le code ou de participer à une conversion. L'utilisation est interdite là où elle serait illégale, y compris par des personnes ou entités soumises à des sanctions ou dans des juridictions restreintes. + + Dans la mesure maximale permise par la loi, le(s) développeur(s) et éditeur(s) déclinent toute responsabilité pour toute perte, dommage, ou réclamation découlant de ou en rapport avec l'utilisation du code ou la participation à la conversion. + + L'examen et l'utilisation de ce document et du code associé sont soumis aux [Conditions Générales du Site Web](https://doublezero.xyz/terms) et aux [Conditions Générales du Protocole](https://doublezero.xyz/terms-protocol). + +Le protocole DoubleZero collecte des revenus libellés en SOL auprès de ses validateurs mais distribue des récompenses libellées en 2Z aux contributeurs. Il doit donc convertir des SOL en 2Z. + +**Pour ce faire, les participants éligibles peuvent trader contre un contrat de swap DoubleZero, en achetant des SOL au contrat et en vendant des 2Z. La tarification est basée sur les flux de prix Pyth avec un mécanisme de remise programmatique.** + +Ce court guide explique comment utiliser le programme. + +***Lisez l'Avertissement à la fin de ce document avant d'accéder ou d'utiliser le code ou tout matériel associé.*** + +--- + +## Conception du Programme + +Le programme de swap est effectivement un pool de liquidité unilatéral qui vend des SOL par lots fixes de 1 SOL par trade. Tout participant éligible peut retirer des SOL du programme en déposant des 2Z, à un prix déterminé par un prix oracle de Pyth et une remise dynamique. Au fil du temps, cela exécute l'objectif du programme de convertir les tokens natifs en 2Z. + +Pour l'utiliser, un trader doit fournir deux prix Pyth récents (SOL/USD et 2Z/USD) et une quantité de 2Z. Le programme calcule ensuite les 2Z nécessaires pour acheter ce 1 SOL sur la base du prix implicite SOL/2Z. Il prend ensuite quelques étapes supplémentaires : + +- Il vérifie que les prix Pyth sont suffisamment frais, c'est-à-dire qu'ils ne sont pas périmés de plus de 5 secondes. +- Il vérifie que les intervalles de confiance des deux prix sont suffisamment petits. C'est-à-dire que la somme de deux écarts-types de Laplace (c'est-à-dire le paramètre `conf` dans le prix Pyth) pour les deux prix, normalisée par leurs niveaux, doit être inférieure ou égale à 30 points de base. +- Il ajuste le prix SOL/2Z par une remise dynamique, exprimée en pourcentage du prix Pyth. Cette remise est une fonction du temps écoulé depuis le dernier trade. La formule ci-dessous spécifie la remise, en supposant que le dernier trade a été effectué au slot $s_{\text{last}}$ et que le slot actuel est $s_{\text{now}}$. (Par exemple, si 200 slots se sont écoulés depuis le dernier trade, la remise est de 40 points de base.) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +À ce stade, si le trader a fourni suffisamment de 2Z pour exécuter la transaction à ce prix calculé (remise incluse), elle s'exécute à ce prix calculé. Il retourne au trader la quantité de SOL achetée et tout excédent de 2Z. + +Le contrat ne permet ensuite plus aucun trade pour ce slot. Ceci est pour empêcher le contrat de payer un slippage excessivement élevé si le prix Pyth est loin du vrai prix à un moment donné d'une manière que les filtres existants ne détectent pas. + +--- + +## Exécution Atomique Sans Gaz + +Cette section détaillera comment utiliser la commande `harvest-dz`. Cette commande effectuera atomiquement 2 actions. +1. La commande demande un devis à Jupiter contre le programme de conversion natif SOL <> 2Z. +2. Lorsque la route Jupiter rapporte plus de 2Z par SOL que ce que le programme de conversion natif requiert, `harvest-2z` exécute un swap, retournant à votre portefeuille 1 SOL plus la différence en 2Z. + +### Harvest 2Z + +Pour exécuter, lancez la commande suivante : +``` +doublezero-solana revenue-distribution harvest-2z +``` +La sortie ressemblera à : +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +La commande peut également être simulée avec l'argument `--dry-run`. Le dry-run produira des logs de programme et une sortie ressemblant à : + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## Conversion du Protocole + +Cette section traite de la vérification des taux de conversion et de l'exécution de la conversion à l'aide de la CLI `doublezero-solana`. Et à la fin, nous discutons de l'interface pour les intégrations personnalisées avec le contrat de swap DoubleZero. + +### Comment vérifier le prix de conversion SOL/2Z via `doublezero-solana` + +Pour trouver les taux de conversion SOL/2Z sur mainnet-beta, exécutez la commande suivante : + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +Et la sortie que vous verrez ressemblera à : + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +Le Journal Balance informe l'utilisateur de la liquidité SOL disponible dans le contrat intelligent de Distribution des Revenus. Un utilisateur peut trader tant que le Journal Balance dépasse la taille de trade fixe de 1 SOL. + +La première ligne affiche le "vrai" prix de conversion SOL/2Z via un oracle hors chaîne. La deuxième ligne est le prix de conversion utilisé onchain pour le swap, qui ajuste simplement le vrai prix pour la remise algorithmique. + +### Comment convertir vos 2Z en SOL via `doublezero-solana` + +Pour convertir vos tokens 2Z en SOL, exécutez la commande suivante : + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +Par défaut, si il y a suffisamment de liquidité SOL et que votre ATA a suffisamment de 2Z pour effectuer le swap, cette transaction réussira. Vous pouvez affiner davantage le swap en spécifiant les arguments suivants : + +```bash + --limit-price Limit price defaults to the current SOL/2Z oracle price + --source-2z-account Token account must be owned by the signer. Defaults to signer ATA if not specified + --checked-sol-amount Explicitly check SOL amount. When specified, this amount will be checked against the fixed fill quantity +``` + +Le prix limite spécifié détermine le prix dans le pire cas que vous êtes prêt à accepter lors de l'exécution de la conversion SOL/2Z. Par exemple, supposons que le prix 2Z actualisé pour le SOL soit de 800, ce qui signifie 800 tokens 2Z pour 1 SOL. Si vous spécifiez un prix limite de 790, vous n'êtes pas prêt à effectuer le swap parce que vous exigez d'échanger au maximum 790 tokens 2Z pour 1 SOL. Mais si vous spécifiez 810, le trade passera parce que vous étiez prêt à échanger au maximum 810 tokens 2Z (et dans ce cas, vous n'aurez échangé que 800 tokens 2Z dans cette transaction). + +Le compte de tokens 2Z source remplace l'ATA par défaut en utilisant le signataire comme propriétaire de cet ATA 2Z. Mais si vous avez un autre compte de tokens que vous souhaitez utiliser pour effectuer le swap, fournissez la pubkey avec cet argument. + +Optionnellement, vous pouvez spécifier le montant SOL vérifié à la taille de remplissage standard (fixée à 1 SOL au lancement). Si elle ne correspond pas à la taille de remplissage du programme, le swap échoue. Cela atténue le risque que la taille de remplissage du programme change et que vous ne le remarquiez pas. + +### Interface pour Acheter des SOL + +L'interface et la CLI `doublezero-solana` se trouvent dans [ce dépôt](https://github.com/doublezerofoundation/doublezero-offchain). Le code source de l'interface du contrat de swap DoubleZero peut être trouvé [ici](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09). L'ID du programme est `9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`. + +Une façon pratique de générer les comptes nécessaires pour l'instruction d'achat de SOL est d'utiliser la méthode `new` (trouvée dans *instruction/account.rs*). + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +La `fill_registry_key` peut être récupérée soit depuis le `ProgramState` + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // this key + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +Alternativement, vous pouvez appeler `getProgramAccounts` via le RPC Solana avec son discriminateur. Mais nous recommandons de mettre cette pubkey en cache car elle ne changera jamais. + +La `user_key` est un signataire pour l'instruction d'achat de SOL et doit être le propriétaire du `user_token_account_key`. Comme décrit ci-dessus, cela N'a PAS besoin d'être un ATA. Tant que votre compte de tokens 2Z est détenu par la `user_key`, cette instruction réussira. + +La struct `BuySolAccounts` implémente `Into>` afin que vous puissiez générer tous les account metas dont vous avez besoin pour construire l'instruction. + +Les données d'instruction sont + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +Ces données d'instruction sont sérialisées en Borsh et ont un sélecteur Anchor de 8 octets, qui sera tout sérialisé lors de l'utilisation de `BorshSerialize::serialize`. + +Les données de prix oracle peuvent être récupérées depuis cet endpoint public : [https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate). Les données sont désérialisables avec serde en utilisant la struct OraclePriceData trouvée dans *oracle.rs*. + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +Exemple de récupération avec le [crate reqwest](https://docs.rs/reqwest/latest/reqwest/) : + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +Avec l'ID du programme, les comptes et les données d'instruction, vous devriez être en mesure de construire l'instruction pour acheter des SOL depuis le contrat de swap DoubleZero. + diff --git a/docs/Swapping-sol-to-2z.it.md b/docs/Swapping-sol-to-2z.it.md new file mode 100644 index 0000000..fb86632 --- /dev/null +++ b/docs/Swapping-sol-to-2z.it.md @@ -0,0 +1,205 @@ +**Prima di accedere o utilizzare il codice o i materiali correlati, si prega di leggere il disclaimer.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Disclaimer" + + Il presente documento e il codice correlato vengono forniti esclusivamente a scopo informativo e tecnico. La funzionalità di conversione token descritta in questo documento è di tipo non-custodial. Gli utenti interagiscono direttamente con gli smart contract sottostanti, mantenendo sempre il controllo completo dei propri asset. + + Il sistema può dipendere da o interagire con codice di terze parti, fonti di dati o meccanismi di prezzo e commissioni (ad esempio smart contract, API o exchange decentralizzati) non sviluppati, gestiti o revisionati dagli sviluppatori e dagli emittenti. Non vengono fornite dichiarazioni o garanzie sull'accuratezza, la funzionalità o la sicurezza dei componenti di terze parti. + Gli sviluppatori e gli emittenti di questo codice non garantiscono la sua accuratezza, completezza o disponibilità continua. Il codice e i materiali correlati vengono forniti "COSÌ COME SONO" e possono contenere errori, difetti o vulnerabilità. L'utilizzo è a proprio rischio. + Gli sviluppatori e gli emittenti non riceveranno alcuna commissione per l'utilizzo di questi contratti. Non vi è alcun obbligo di mantenimento, aggiornamento o supporto del codice o della documentazione correlata. + + Il presente documento non costituisce un'offerta, una sollecitazione o una raccomandazione a partecipare alla conversione di token, allo scambio o ad altre transazioni. Non vengono forniti consulenze legali, finanziarie o di investimento. + Gli utenti sono i soli responsabili della determinazione della legalità delle proprie attività. Prima di utilizzare il codice o partecipare alle conversioni, è necessario consultare le leggi e i regolamenti applicabili nella propria giurisdizione e consultare consulenti indipendenti. L'uso è vietato dove illegale, incluso da parte di persone o organizzazioni sanzionate o da regioni soggette a restrizioni. + + Nella misura massima consentita dalla legge, gli sviluppatori e gli emittenti declinano qualsiasi responsabilità per perdite, danni o reclami derivanti da o correlati all'uso del codice o alla partecipazione alle conversioni. + + La revisione e l'utilizzo del presente documento e del codice correlato sono soggetti ai [Termini di Utilizzo del Sito Web](https://doublezero.xyz/terms) e ai [Termini di Utilizzo del Protocollo](https://doublezero.xyz/terms-protocol). + +Il protocollo DoubleZero raccoglie le entrate dagli utenti validatori denominate in SOL, ma distribuisce le ricompense ai contributori denominate in 2Z. Pertanto, è necessario convertire SOL in 2Z. + +**A tal fine, i partecipanti idonei possono negoziare con il contratto di conversione DoubleZero, acquistando SOL dal contratto e vendendo 2Z. Il pricing si basa sui feed di prezzo Pyth e su un meccanismo di sconto programmato.** + +Questa guida descrive come utilizzare il programma. + +***Prima di accedere o utilizzare questo documento e il codice correlato, si prega di leggere il disclaimer in fondo al documento.*** + +--- + +## Design del Programma + +Il programma di conversione è essenzialmente un pool di liquidità unilaterale, con una dimensione batch fissa di 1 SOL per ogni transazione. I partecipanti idonei possono depositare 2Z e prelevare SOL dal programma, con il prezzo determinato dal prezzo oracolo Pyth e da uno sconto dinamico. Nel tempo, questo realizza l'obiettivo di convertire il token nativo del programma in 2Z. + +Per utilizzare il programma, i trader devono fornire due prezzi Pyth recenti (SOL/USD e 2Z/USD) e la quantità di 2Z. Il programma calcola quindi la quantità di 2Z necessaria per acquistare 1 SOL basandosi sul prezzo SOL/2Z implicito. Vengono poi eseguiti alcuni passaggi aggiuntivi: + +- Verifica che i prezzi Pyth siano sufficientemente recenti, ovvero non più vecchi di 5 secondi. +- Verifica che gli intervalli di confidenza di entrambi i prezzi siano sufficientemente piccoli, ovvero che la somma delle deviazioni standard di Laplace (parametro Pyth `conf`) di entrambi i prezzi, normalizzata al loro livello, non superi i 30 punti base. +- Regola il prezzo SOL/2Z con lo sconto dinamico (espresso come percentuale del prezzo Pyth). Questo sconto è funzione del tempo trascorso dall'ultima transazione. La formula seguente specifica lo sconto, assumendo che l'ultima transazione sia avvenuta allo slot $s_{\text{last}}$ e che lo slot corrente sia $s_{\text{now}}$. (Ad esempio, se sono trascorsi 200 slot dall'ultima transazione, lo sconto è di 40 punti base.) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +A questo punto, se il trader fornisce abbastanza 2Z per eseguire la transazione al prezzo calcolato (incluso lo sconto), la transazione verrà eseguita a quel prezzo. Il trader riceverà il SOL acquistato e il 2Z in eccesso. + +Il contratto non consente quindi ulteriori transazioni nello stesso slot. Questo per evitare che il contratto paghi uno slippage eccessivo nel caso in cui il prezzo Pyth si discosti troppo dal prezzo reale in qualsiasi momento (al di là di quanto possono catturare i filtri esistenti). + +--- + +## Esecuzione Atomica Senza Gas + +Questa sezione descrive l'utilizzo del comando `harvest-dz`. Questo comando esegue atomicamente due operazioni: +1. Il comando richiede a Jupiter una quotazione contro il programma di conversione SOL nativo <> 2Z. +2. Se il routing Jupiter produce più 2Z/SOL rispetto a quanto richiesto dal programma di conversione SOL nativo, `harvest-2z` eseguirà la conversione e restituirà al portafoglio 1 SOL e la differenza in 2Z. + +### Raccolta di 2Z + +Per eseguire, esegui il seguente comando: +``` +doublezero-solana revenue-distribution harvest-2z +``` +L'output sarà simile al seguente: +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +Il comando può anche essere simulato usando il parametro `--dry-run`. L'esecuzione a secco genererà log del programma e un output come il seguente: + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## Conversione Tramite Protocollo + +Questa sezione descrive come controllare il tasso di conversione e come eseguire la conversione usando la CLI `doublezero-solana`. Infine, descrive l'interfaccia per integrazioni personalizzate con il contratto di conversione DoubleZero. + +### Come controllare il prezzo di conversione SOL/2Z tramite `doublezero-solana` + +Per controllare il tasso di conversione SOL/2Z su Mainnet Beta, esegui il seguente comando: + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +L'output visualizzato sarà simile al seguente: + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +Il Journal Balance informa l'utente di quanta liquidità SOL è disponibile nello smart contract di distribuzione delle entrate. Finché il Journal Balance supera la dimensione della transazione fissa di 1 SOL, l'utente può negoziare. + +La prima riga mostra il prezzo di conversione SOL/2Z "reale" dell'oracolo off-chain. La seconda riga è il prezzo di conversione utilizzato dalla conversione on-chain, che è il prezzo reale aggiustato per lo sconto algoritmico. + +### Come convertire 2Z in SOL tramite `doublezero-solana` + +Per convertire token 2Z in SOL, esegui il seguente comando: + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +Per impostazione predefinita, questa transazione avrà successo se c'è sufficiente liquidità SOL e abbastanza 2Z nell'ATA per eseguire la conversione. Specificando i seguenti parametri, puoi avere un controllo più granulare sulla conversione: + +```bash + --limit-price Il prezzo limite predefinito è il prezzo oracolo SOL/2Z corrente + --source-2z-account L'account token deve essere di proprietà del firmatario. Se non specificato, il valore predefinito è l'ATA del firmatario + --checked-sol-amount Controlla esplicitamente l'importo SOL. Se specificato, questo importo verrà verificato rispetto alla quantità di riempimento fissa +``` + +Il prezzo limite specificato determina il prezzo peggiore che sei disposto ad accettare quando esegui la conversione SOL/2Z. Ad esempio, supponiamo che il prezzo 2Z scontato di SOL sia 800 (800 token 2Z per 1 SOL). Se specifichi un prezzo limite di 790, non sei disposto a scambiare più di 790 token 2Z per 1 SOL, quindi non verrà tentata la conversione. Ma se specifichi 810, sei disposto a scambiare fino a 810 token 2Z (in questo caso, solo 800 token 2Z in questa transazione), quindi la transazione passerà. + +L'account token 2Z di origine sovrascrive l'ATA predefinito, usando il firmatario come proprietario di questo ATA 2Z. Tuttavia, se hai un altro account token che vuoi usare per la conversione, fornisci la sua chiave pubblica tramite questo parametro. + +Come opzione, puoi specificare l'importo SOL da verificare rispetto alla dimensione di riempimento standard (impostata a 1 SOL all'avvio). Se non corrisponde alla dimensione di riempimento del programma, la conversione fallirà. Questo riduce il rischio di non accorgersi che la dimensione di riempimento del programma è cambiata. + +### Interfaccia per l'Acquisto di SOL + +L'interfaccia e la CLI `doublezero-solana` si trovano in [questo repository](https://github.com/doublezerofoundation/doublezero-offchain). Il codice sorgente dell'interfaccia del contratto di conversione DoubleZero è [qui](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09). Il Program ID è `9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`. + +Un metodo conveniente per generare gli account necessari per l'istruzione buy SOL è usare il metodo `new` (in *instruction/account.rs*): + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +`fill_registry_key` può essere ottenuto da `ProgramState` + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // questa chiave + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +In alternativa, puoi chiamare `getProgramAccounts` con il discriminatore tramite Solana RPC. Tuttavia, poiché questa chiave pubblica non cambierà mai, si raccomanda di metterla in cache. + +`user_key` è il firmatario dell'istruzione buy SOL e deve essere il proprietario di `user_token_account_key`. Come descritto sopra, non deve essere necessariamente l'ATA. Finché l'account token 2Z è di proprietà di `user_key`, l'istruzione avrà successo. + +La struttura `BuySolAccounts` implementa `Into>`, quindi può generare tutti i metadati degli account necessari per costruire l'istruzione. + +I dati dell'istruzione sono + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +Questi dati dell'istruzione sono serializzati con Borsh, con un selettore Anchor di 8 byte, serializzando tutto con `BorshSerialize::serialize`. + +I dati del prezzo oracolo possono essere ottenuti da questo endpoint pubblico: [https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate). I dati possono essere deserializzati usando la struttura OraclePriceData in *oracle.rs* tramite serde. + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +Esempio di recupero usando il [crate reqwest](https://docs.rs/reqwest/latest/reqwest/): + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +Con il Program ID, gli account e i dati dell'istruzione, dovresti essere in grado di costruire l'istruzione per acquistare SOL dal contratto di conversione DoubleZero. diff --git a/docs/Swapping-sol-to-2z.ja.md b/docs/Swapping-sol-to-2z.ja.md new file mode 100644 index 0000000..81205d5 --- /dev/null +++ b/docs/Swapping-sol-to-2z.ja.md @@ -0,0 +1,205 @@ +**コードまたは関連資料にアクセスまたは使用する前に免責事項を確認してください。** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "免責事項" + + このドキュメントおよび関連コードは、情報提供および技術的目的のみのために提供されています。ここで説明されているトークン変換機能はノンカストディアル(非保管型)です。ユーザーは基礎となるスマートコントラクトと直接対話し、常に自分の資産を完全に制御します。 + + このシステムは、開発者や発行者によって開発、管理、またはレビューされていないサードパーティのコード、データソース、または価格および手数料メカニズム(例:スマートコントラクト、API、または分散型取引所)に依存または対話する場合があります。サードパーティコンポーネントの精度、機能、またはセキュリティについて表明や保証はなされません。 + このコードの開発者と発行者は、その精度、完全性、または継続的な可用性を保証しません。コードと関連資料は「現状のまま」(AS IS)で提供され、バグ、エラー、または脆弱性が含まれる場合があります。使用はすべてご自身のリスクでお行いください。 + 開発者と発行者はこれらのコントラクトの使用に関連していかなる手数料も受け取りません。コードまたは関連ドキュメントのメンテナンス、更新、またはサポートの義務はありません。 + + このドキュメントはトークン変換、スワップまたはその他のトランザクションへの参加を売り込む、買い求める、または推奨するものではありません。法的、財務的、または投資上のアドバイスは提供されません。 + ユーザーは自分の活動の合法性を判断する責任を単独で負います。コードを使用したり変換に参加したりする前に、管轄区域に適用される法律と規制を確認し、独立した顧問に相談する必要があります。制裁対象の個人や組織、または制限区域での使用を含む、違法となる場所での使用は禁止されています。 + + 法律で許可される最大限の範囲で、開発者と発行者は、コードの使用または変換への参加に起因するまたは関連するすべての損失、損害、または請求に対する一切の責任を否認します。 + + このドキュメントおよび関連コードのレビューと使用は、[ウェブサイト利用規約](https://doublezero.xyz/terms)および[プロトコル利用規約](https://doublezero.xyz/terms-protocol)に従います。 + +DoubleZeroプロトコルはバリデーターユーザーからSOL建ての収益を収集しますが、コントリビューターには2Z建ての報酬を配布します。そのため、SOLを2Zに変換する必要があります。 + +**そのために、適格な参加者はDoubleZeroスワップコントラクトに対してトレードし、コントラクトからSOLを購入して2Zを売ることができます。価格設定はPythプライスフィードとプログラマティックディスカウントメカニズムに基づいています。** + +このガイドではプログラムの使用方法を説明します。 + +***このドキュメントおよび関連コードにアクセスまたは使用する前に、ドキュメントの最後にある免責事項を確認してください。*** + +--- + +## プログラム設計 + +スワッププログラムは実質的に、1取引あたり1 SOLの固定バッチサイズでSOLを販売する片側流動性プールです。適格な参加者はPythのオラクル価格とダイナミックディスカウントによって決定される価格で、2Zを預け入れてプログラムからSOLを引き出すことができます。時間の経過とともに、これはプログラムのネイティブトークンを2Zに変換するというゴールを実行します。 + +利用するには、トレーダーは2つの最新のPyth価格(SOL/USDおよび2Z/USD)と2Zの数量を提供する必要があります。プログラムはその後、暗示されたSOL/2Z価格に基づいてその1 SOLを購入するために必要な2Zを計算します。その後いくつかの追加ステップを実行します: + +- Pyth価格が十分に新しいかを確認します。つまり、最大5秒以上古くないかを確認します。 +- 2つの価格の信頼区間が十分に小さいかを確認します。つまり、2つの価格のLaplaceの標準偏差(Pyth価格のパラメーター`conf`)の合計は、それらのレベルで正規化された場合、30ベーシスポイント以下でなければなりません。 +- ダイナミックディスカウント(Pyth価格のパーセントで表現)でSOL/2Z価格を調整します。このディスカウントは最後の取引からの時間の関数です。以下の式はディスカウントを指定しており、最後の取引がスロット$s_{\text{last}}$で行われ、現在のスロットが$s_{\text{now}}$であると仮定します。(例えば、最後の取引から200スロットが経過した場合、ディスカウントは40ベーシスポイントです。) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +この時点で、トレーダーがこの計算された価格(ディスカウントを含む)でトランザクションを実行するのに十分な2Zを提供した場合、この計算された価格で実行されます。トレーダーには購入したSOLと余分な2Zが返されます。 + +コントラクトはその後、そのスロットでのトレードをこれ以上許可しません。これは、既存のフィルターが捉えないほどPyth価格が任意の時点で真の価格から大きく離れている場合に、コントラクトが過度に高いスリッページを支払わないようにするためです。 + +--- + +## ガスレスアトミック実行 + +このセクションでは`harvest-dz`コマンドの使用方法を説明します。このコマンドは2つのアクションをアトミックに実行します。 +1. コマンドはJupiterにネイティブのSOL <> 2Z変換プログラムに対するクォートを要求します。 +2. JupiterルートがネイティブのSOL変換プログラムが必要とするよりも多くの2Z/SOLを生成する場合、`harvest-2z`はスワップを実行し、1 SOLと2Zの差額をウォレットに返します。 + +### 2Zのハーベスト + +実行するには、次のコマンドを実行します: +``` +doublezero-solana revenue-distribution harvest-2z +``` +出力は次のようになります: +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +コマンドは`--dry-run`引数でシミュレーションすることもできます。ドライランはプログラムログと次のような出力を生成します: + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## プロトコル変換 + +このセクションでは、変換レートの確認と`doublezero-solana` CLIを使用した変換の実行について説明します。また最後に、DoubleZeroスワップコントラクトとのカスタムビルド統合のインターフェースについて説明します。 + +### `doublezero-solana`を通じてSOL/2Z変換価格を確認する方法 + +メインネットベータのSOL/2Z変換レートを確認するには、次のコマンドを実行します: + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +表示される出力は次のようになります: + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +Journal Balanceは、Revenue DistributionスマートコントラクトにどれだけのSOL流動性があるかをユーザーに通知します。Journal Balanceが固定取引サイズの1 SOLを超える限り、ユーザーは取引できます。 + +最初の行はオフチェーンオラクルによる「真の」SOL/2Z変換価格を表示します。2行目はスワップにオンチェーンで使用される変換価格で、アルゴリズムディスカウントのために真の価格を調整したものです。 + +### `doublezero-solana`を通じて2ZをSOLに変換する方法 + +2Zトークンをマルチに変換するには、次のコマンドを実行します: + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +デフォルトでは、十分なSOL流動性があり、ATAにスワップを実行するのに十分な2Zがある場合、このトランザクションは成功します。次の引数を指定することで、スワップをより細かく調整できます: + +```bash + --limit-price 指値価格はデフォルトで現在のSOL/2Zオラクル価格 + --source-2z-account トークンアカウントはサイナーが所有する必要があります。指定しない場合はサイナーATAがデフォルト + --checked-sol-amount SOL金額を明示的に確認します。指定した場合、この金額は固定フィル数量に対して確認されます +``` + +指定された指値価格は、SOL/2Z変換を実行する際に受け入れる最悪のケースの価格を決定します。例えば、SOLのディスカウント2Z価格が800(1 SOLに対して800 2Zトークン)だとします。指値価格を790に指定した場合、1 SOLに対して最大790 2Zトークンしかスワップしたくないため、スワップを実行しようとしません。しかし810を指定した場合、最大810 2Zトークム(この場合、このトランザクションで800 2Zトークンのみスワップ)を喜んでスワップするので、取引は通ります。 + +ソース2Zトークンアカウントは、このデフォルトのATAをサイナーをこの2Z ATAの所有者として使用するよりも上書きします。しかし、スワップを実行するために使用したい別のトークンアカウントがある場合は、この引数でその公開鍵を提供してください。 + +オプションとして、確認したいSOL金額を標準のフィルサイズ(起動時に1 SOLに設定)に指定できます。プログラムのフィルサイズと一致しない場合、スワップは失敗します。これにより、プログラムのフィルサイズが変わり気づかないというリスクを軽減します。 + +### SOLを購入するインターフェース + +インターフェースと`doublezero-solana` CLIは[このリポジトリ](https://github.com/doublezerofoundation/doublezero-offchain)にあります。DoubleZeroスワップコントラクトインターフェースのソースコードは[こちら](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09)にあります。プログラムIDは`9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`です。 + +buy SOL命令に必要なアカウントを生成する便利な方法は、`new`メソッド(*instruction/account.rs*にある)を使用することです。 + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +`fill_registry_key`は`ProgramState`から取得できます + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // このキー + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +あるいは、Solana RPCを通じてディスクリミネーターで`getProgramAccounts`を呼び出すこともできます。しかし、この公開鍵は決して変わらないのでキャッシュすることを推奨します。 + +`user_key`はbuy SOL命令のサイナーであり、`user_token_account_key`の所有者でなければなりません。上記のように、これはATAである必要はありません。2Zトークンアカウントが`user_key`によって所有されている限り、この命令は成功します。 + +`BuySolAccounts`構造体は`Into>`を実装しているため、命令を構築するために必要なすべてのアカウントメタを生成できます。 + +命令データは + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +この命令データはBorshシリアライズされており、8バイトのAnchorセレクターがあり、`BorshSerialize::serialize`を使用するとすべてシリアライズされます。 + +オラクル価格データはこのパブリックエンドポイントから取得できます:[https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate)。データは*oracle.rs*にあるOraclePriceData構造体を使用してserdeでデシリアライズ可能です。 + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +[reqwestクレート](https://docs.rs/reqwest/latest/reqwest/)を使用した取得の例: + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +プログラムID、アカウント、命令データを使用して、DoubleZeroスワップコントラクトからSOLを購入する命令を構築できるはずです。 diff --git a/docs/Swapping-sol-to-2z.ko.md b/docs/Swapping-sol-to-2z.ko.md new file mode 100644 index 0000000..e367f68 --- /dev/null +++ b/docs/Swapping-sol-to-2z.ko.md @@ -0,0 +1,205 @@ +**코드 또는 관련 자료에 액세스하거나 사용하기 전에 면책 조항을 검토하세요.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "면책 조항" + + 이 문서와 관련 코드는 정보 및 기술적 목적으로만 제공됩니다. 여기에 설명된 토큰 변환 기능은 비수탁형입니다. 사용자는 기본 스마트 계약과 직접 상호 작용하며 항상 자산에 대한 완전한 통제권을 유지합니다. + + 이 시스템은 개발자 또는 게시자가 개발, 제어 또는 검토하지 않은 제3자 코드, 데이터 소스 또는 가격 및 수수료 메커니즘(예: 스마트 계약, API 또는 탈중앙화 거래소)에 의존하거나 상호 작용할 수 있습니다. 제3자 구성 요소의 정확성, 기능 또는 보안에 대한 어떠한 보증이나 보장도 없습니다. + 이 코드의 개발자 및 게시자는 정확성, 완전성 또는 지속적인 가용성을 보장하지 않습니다. 코드 및 관련 자료는 "있는 그대로" 제공되며 버그, 오류 또는 취약점이 포함될 수 있습니다. 사용은 전적으로 귀하의 책임입니다. + 코드의 개발자 및 게시자는 이 계약의 사용과 관련하여 어떠한 수수료도 받지 않습니다. 코드 또는 관련 문서를 유지, 업데이트 또는 지원할 의무가 없습니다. + + 이 문서는 토큰 변환, 스왑 또는 기타 거래에 매도 제안, 매수 권유 또는 참여 권장으로 구성되지 않습니다. 법적, 재정적 또는 투자 조언은 제공되지 않습니다. + 사용자는 활동의 합법성을 결정할 전적인 책임이 있습니다. 해당 관할 지역에서 적용 가능한 법률과 규정을 검토하고 코드를 사용하거나 변환에 참여하기 전에 독립적인 어드바이저와 상담해야 합니다. 제재 대상 또는 제한된 관할 지역의 사람 또는 주체를 포함하여 불법이 될 경우 사용이 금지됩니다. + + 법률이 허용하는 최대한도 내에서 개발자 및 게시자는 코드 사용 또는 변환 참여와 관련하여 발생하는 손실, 손해 또는 청구에 대한 모든 책임을 면책합니다. + + 이 문서 및 관련 코드의 검토 및 사용은 [웹사이트 이용약관](https://doublezero.xyz/terms) 및 [프로토콜 이용약관](https://doublezero.xyz/terms-protocol)에 따릅니다. + +DoubleZero 프로토콜은 검증자 사용자로부터 SOL 단위의 수익을 수집하지만 기여자에게 2Z 단위의 보상을 배포합니다. 따라서 SOL을 2Z로 변환해야 합니다. + +**이를 위해 적격 참여자는 DoubleZero 스왑 계약에 대해 거래하여 계약에서 SOL을 구매하고 2Z를 판매할 수 있습니다. 가격은 Pyth 가격 피드와 프로그래매틱 할인 메커니즘을 기반으로 합니다.** + +이 짧은 가이드는 프로그램 사용 방법을 설명합니다. + +***코드 또는 관련 자료에 액세스하거나 사용하기 전에 이 문서 끝에 있는 면책 조항을 검토하세요.*** + +--- + +## 프로그램 설계 + +스왑 프로그램은 거래당 1 SOL의 고정 배치 크기로 SOL을 판매하는 단방향 유동성 풀입니다. 적격 참여자는 오라클 가격과 동적 할인에 의해 결정되는 가격으로 2Z를 예치하여 프로그램에서 SOL을 인출할 수 있습니다. 시간이 지남에 따라 이는 네이티브 토큰을 2Z로 전환하는 프로그램의 목표를 실행합니다. + +사용하려면 트레이더가 두 개의 최근 Pyth 가격(SOL/USD 및 2Z/USD)과 2Z 수량을 제공해야 합니다. 그러면 프로그램은 내포된 SOL/2Z 가격을 기반으로 1 SOL 구매에 필요한 2Z를 계산합니다. 그런 다음 몇 가지 추가 단계를 수행합니다: + +- Pyth 가격이 충분히 신선한지 확인합니다. 즉, 5초 이상 오래되지 않았는지 확인합니다. +- 두 가격의 신뢰 구간이 충분히 작은지 확인합니다. 즉, 두 가격의 두 라플라스 표준 편차(Pyth 가격의 `conf` 파라미터)의 합이 수준으로 정규화될 때 30 기저점 이하여야 합니다. +- 동적 할인(Pyth 가격의 백분율)으로 SOL/2Z 가격을 조정합니다. 이 할인은 마지막 거래 이후 시간의 함수입니다. 아래 공식은 마지막 거래가 슬롯 $s_{\text{last}}$에서 이루어지고 현재 슬롯이 $s_{\text{now}}$인 경우의 할인을 지정합니다. (예를 들어 마지막 거래 이후 200 슬롯이 경과한 경우 할인은 40 기저점입니다.) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +이 시점에서 트레이더가 이 계산된 가격(할인 포함)으로 트랜잭션을 실행하기에 충분한 2Z를 제공했다면, 이 계산된 가격으로 실행됩니다. 트레이더에게 구매한 SOL 수량과 초과 2Z를 반환합니다. + +그런 다음 계약은 해당 슬롯에 대해 더 이상 거래를 허용하지 않습니다. 이는 Pyth 가격이 현재 기존 필터가 잡지 못하는 방식으로 특정 시점의 실제 가격과 멀리 떨어져 있을 경우 계약이 과도하게 높은 슬리피지를 지불하는 것을 방지하기 위한 것입니다. + +--- + +## 가스 없는 원자적 실행 + +이 섹션에서는 `harvest-dz` 명령을 사용하는 방법을 자세히 설명합니다. 이 명령은 2가지 작업을 원자적으로 수행합니다. +1. 명령이 Jupiter에서 네이티브 SOL <> 2Z 변환 프로그램 대비 견적을 요청합니다. +2. Jupiter 경로가 네이티브 변환 프로그램이 요구하는 것보다 SOL당 더 많은 2Z를 생성할 때, `harvest-2z`는 스왑을 실행하여 지갑에 1 SOL과 2Z의 차이를 반환합니다. + +### Harvest 2Z + +실행하려면 다음을 실행하세요: +``` +doublezero-solana revenue-distribution harvest-2z +``` +출력은 다음과 유사합니다: +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +명령은 `--dry-run` 인수로 시뮬레이션할 수도 있습니다. 드라이런은 프로그램 로그와 다음과 유사한 출력을 생성합니다: + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## 프로토콜 변환 + +이 섹션에서는 `doublezero-solana` CLI를 사용하여 환율을 확인하고 변환을 실행하는 방법을 설명합니다. 마지막에는 DoubleZero 스왑 계약과의 맞춤형 통합을 위한 인터페이스를 설명합니다. + +### `doublezero-solana`를 통해 SOL/2Z 환율 확인 방법 + +메인넷-베타의 SOL/2Z 환율을 찾으려면 다음 명령을 실행하세요: + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +출력은 다음과 유사합니다: + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +저널 잔액은 수익 배분 스마트 계약에 얼마나 많은 SOL 유동성이 있는지 사용자에게 알립니다. 저널 잔액이 1 SOL의 고정 거래 크기를 초과하는 한 사용자는 거래할 수 있습니다. + +첫 번째 행은 오프체인 오라클을 통한 "실제" SOL/2Z 환율을 표시합니다. 두 번째 행은 스왑에 온체인으로 사용되는 환율로, 단순히 알고리즘 할인에 대한 실제 가격을 조정합니다. + +### `doublezero-solana`를 통해 2Z를 SOL로 변환하는 방법 + +2Z 토큰을 SOL로 변환하려면 다음 명령을 실행하세요: + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +기본적으로 충분한 SOL 유동성이 있고 ATA에 스왑을 수행할 충분한 2Z가 있으면 이 트랜잭션이 성공합니다. 다음 인수를 지정하여 스왑을 더 세밀하게 조정할 수 있습니다: + +```bash + --limit-price 현재 SOL/2Z 오라클 가격을 기본값으로 하는 지정가 + --source-2z-account 토큰 계정은 서명자가 소유해야 합니다. 지정하지 않으면 서명자 ATA로 기본 설정됩니다. + --checked-sol-amount SOL 금액을 명시적으로 확인합니다. 지정된 경우 이 금액이 고정 채움 수량과 비교하여 확인됩니다. +``` + +지정된 지정가는 SOL/2Z 변환을 수행할 때 수락할 최악의 경우 가격을 결정합니다. 예를 들어 SOL에 대한 할인된 2Z 가격이 800이라고 가정합시다. 즉, 1 SOL에 2Z 토큰 800개입니다. 지정가를 790으로 지정하면 최대 790개의 2Z 토큰만 스왑하도록 요구하기 때문에 스왑을 수행하지 않습니다. 그러나 810을 지정하면 최대 810개의 2Z 토큰을 스왑할 의향이 있었으므로 거래가 이루어집니다(이 경우 이 트랜잭션에서 2Z 토큰 800개만 스왑됩니다). + +소스 2Z 토큰 계정은 이 2Z ATA의 소유자로 서명자를 사용하는 기본 ATA를 재정의합니다. 그러나 스왑을 수행하는 데 사용하려는 다른 토큰 계정이 있는 경우 이 인수와 함께 해당 공개 키를 제공하세요. + +선택적으로, 확인된 SOL 금액을 표준 채움 크기(출시 시 1 SOL로 설정됨)에 지정할 수 있습니다. 프로그램의 채움 크기와 일치하지 않으면 스왑이 실패합니다. 이는 프로그램의 채움 크기가 변경되고 귀하가 알아차리지 못하는 위험을 완화합니다. + +### SOL 구매 인터페이스 + +인터페이스와 `doublezero-solana` CLI는 [이 저장소](https://github.com/doublezerofoundation/doublezero-offchain)에 있습니다. DoubleZero 스왑 계약 인터페이스의 소스 코드는 [여기](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09)에서 찾을 수 있습니다. 프로그램 ID는 `9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`입니다. + +buy SOL 명령에 필요한 계정을 생성하는 편리한 방법은 *instruction/account.rs*에 있는 `new` 메서드를 사용하는 것입니다. + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +`fill_registry_key`는 `ProgramState`에서 가져올 수 있습니다. + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // 이 키 + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +대안으로 판별자를 사용하여 Solana RPC를 통해 `getProgramAccounts`를 호출할 수 있습니다. 그러나 이 공개 키는 절대 변경되지 않으므로 캐시하는 것을 권장합니다. + +`user_key`는 buy SOL 명령의 서명자이며 `user_token_account_key`의 소유자여야 합니다. 위에서 설명한 바와 같이 이것은 ATA일 필요가 없습니다. 2Z 토큰 계정이 `user_key`가 소유하는 한 이 명령이 성공합니다. + +`BuySolAccounts` 구조체는 `Into>`를 구현하므로 명령을 빌드하는 데 필요한 모든 계정 메타를 생성할 수 있습니다. + +명령 데이터는 다음과 같습니다: + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +이 명령 데이터는 Borsh 직렬화되고 8바이트 Anchor 선택자가 있으며, 이는 `BorshSerialize::serialize`를 사용할 때 모두 직렬화됩니다. + +오라클 가격 데이터는 이 공개 엔드포인트에서 가져올 수 있습니다: [https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate). 데이터는 *oracle.rs*에 있는 OraclePriceData 구조체를 사용하여 serde 역직렬화 가능합니다. + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +[reqwest 크레이트](https://docs.rs/reqwest/latest/reqwest/)를 사용하여 가져오는 방법 예시: + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +프로그램 ID, 계정 및 명령 데이터를 사용하여 DoubleZero 스왑 계약에서 SOL을 구매하는 명령을 빌드할 수 있어야 합니다. diff --git a/docs/Swapping-sol-to-2z.pt.md b/docs/Swapping-sol-to-2z.pt.md new file mode 100644 index 0000000..38f2d58 --- /dev/null +++ b/docs/Swapping-sol-to-2z.pt.md @@ -0,0 +1,205 @@ +**Revise o Aviso Legal antes de acessar ou usar o código ou quaisquer materiais relacionados.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Aviso Legal" + + Este documento e o código associado são fornecidos apenas para fins informativos e técnicos. A funcionalidade de conversão de tokens descrita aqui é não custodial — os usuários interagem diretamente com os contratos inteligentes subjacentes e mantêm controle total de seus ativos em todos os momentos. + + O sistema pode depender de ou interagir com código de terceiros, fontes de dados ou mecanismos de precificação e taxas (por exemplo, contratos inteligentes, APIs ou exchanges descentralizadas) que não são desenvolvidos, controlados ou revisados pelo(s) desenvolvedor(es) ou publicador(es). Nenhuma representação ou garantia é feita quanto à precisão, funcionalidade ou segurança de qualquer componente de terceiros. + O(s) desenvolvedor(es) e publicador(es) deste código não garantem sua precisão, integridade ou disponibilidade contínua. O código e os materiais relacionados são fornecidos "no estado em que se encontram" e podem conter bugs, erros ou vulnerabilidades. O uso é inteiramente por sua própria conta e risco. + O(s) desenvolvedor(es) e publicador(es) não recebem quaisquer taxas em conexão com o uso desses contratos. Eles não têm obrigação de manter, atualizar ou suportar o código ou a documentação relacionada. + + Este documento não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação para participar de qualquer conversão de token, swap ou outra transação. Nenhum conselho jurídico, financeiro ou de investimento é fornecido. + Os usuários são os únicos responsáveis por determinar a legalidade de suas atividades. Eles devem revisar as leis e regulamentos aplicáveis em sua jurisdição e consultar assessores independentes antes de usar o código ou participar de qualquer conversão. O uso é proibido onde for ilegal, incluindo por pessoas ou entidades sujeitas a sanções ou em jurisdições restritas. + + Na extensão máxima permitida por lei, o(s) desenvolvedor(es) e publicador(es) se isentam de toda responsabilidade por qualquer perda, dano ou reclamação decorrente ou em conexão com o uso do código ou participação na conversão. + + A revisão e o uso deste documento e do código associado estão sujeitos aos [Termos e Condições do Website](https://doublezero.xyz/terms) e [Termos e Condições do Protocolo](https://doublezero.xyz/terms-protocol). + +O protocolo DoubleZero coleta receita denominada em SOL de seus usuários validadores, mas distribui recompensas denominadas em 2Z para os contribuidores. Portanto, ele deve converter SOL em 2Z. + +**Para isso, participantes elegíveis podem negociar contra um contrato de swap DoubleZero, comprando SOL do contrato e vendendo 2Z. O preço é baseado em feeds de preço Pyth com um mecanismo de desconto programático.** + +Este guia curto explica como usar o programa. + +***Revise o Aviso Legal no final deste documento antes de acessar ou usar o código ou quaisquer materiais relacionados.*** + +--- + +## Design do Programa + +O programa de swap é efetivamente um pool de liquidez unilateral que vende SOL em um tamanho de lote fixo de 1 SOL por negociação. Qualquer participante elegível pode retirar SOL do programa depositando 2Z, a um preço determinado por um preço oracle do Pyth e um desconto dinâmico. Com o tempo, isso executa o objetivo do programa de transformar tokens nativos em 2Z. + +Para utilizar, um trader deve fornecer dois preços Pyth recentes (SOL/USD e 2Z/USD) e uma quantidade de 2Z. O programa então calcula o 2Z necessário para comprar aquele 1 SOL com base no preço implícito SOL/2Z. Em seguida, executa algumas etapas adicionais: + +- Verifica que os preços Pyth são suficientemente recentes, ou seja, não estão mais do que 5 segundos desatualizados. +- Verifica que os intervalos de confiança dos dois preços são suficientemente pequenos. Ou seja, a soma de dois desvios padrão de Laplace (ou seja, parâmetro `conf` no preço Pyth) para os dois preços, normalizada por seus níveis, deve ser menor ou igual a 30 pontos base. +- Ajusta o preço SOL/2Z por um desconto dinâmico, expresso como percentual do preço Pyth. Este desconto é uma função do tempo desde o último trade. A fórmula abaixo especifica o desconto, assumindo que o último trade foi feito no slot $s_{\text{last}}$ e o slot atual é $s_{\text{now}}$. (Por exemplo, se 200 slots se passaram desde o último trade, o desconto é de 40 pontos base.) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +Neste ponto, se o trader forneceu 2Z suficiente para executar a transação a esse preço calculado (inclusive o desconto), ela é executada a esse preço calculado. Retorna ao trader a quantidade comprada de SOL e qualquer excesso de 2Z. + +O contrato então não permite mais negociações para aquele slot. Isso é para evitar que o contrato pague slippage excessivamente alto caso o preço Pyth esteja longe do preço verdadeiro em qualquer momento de maneiras que os filtros existentes não capturam. + +--- + +## Execução Atômica Sem Gas + +Esta seção detalha como usar o comando `harvest-dz`. Este comando executará atomicamente 2 ações. +1. O comando solicita uma cotação do Jupiter versus o programa de conversão nativo SOL <> 2Z. +2. Quando a rota do Jupiter gera mais 2Z por SOL do que o programa de conversão nativo requer, `harvest-2z` executa um swap, retornando à sua carteira 1 SOL mais a diferença em 2Z. + +### Harvest 2Z + +Para executar, execute o seguinte: +``` +doublezero-solana revenue-distribution harvest-2z +``` +A saída se parecerá com: +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +O comando também pode ser simulado com o argumento `--dry-run`. O dry-run produzirá logs do programa e uma saída semelhante a: + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## Conversão do Protocolo + +Esta seção discute como verificar as taxas de conversão e executar a conversão usando o CLI `doublezero-solana`. E no final, discutimos a interface para integrações personalizadas com o contrato de swap DoubleZero. + +### Como verificar o preço de conversão SOL/2Z via `doublezero-solana` + +Para encontrar as taxas de conversão SOL/2Z no mainnet-beta, execute o seguinte comando: + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +E a saída que você veria se parecerá com: + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +O Journal Balance informa ao usuário quanta liquidez SOL existe no contrato inteligente de Distribuição de Receita. Um usuário pode negociar enquanto o Journal Balance exceder o tamanho fixo de negociação de 1 SOL. + +A primeira linha exibe o preço "verdadeiro" de conversão SOL/2Z via oracle offchain. A segunda linha é o preço de conversão usado onchain para o swap, que simplesmente ajusta o preço verdadeiro para o desconto algorítmico. + +### Como converter seu 2Z para SOL via `doublezero-solana` + +Para converter seus tokens 2Z para SOL, execute o seguinte comando: + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +Por padrão, se houver liquidez SOL suficiente e sua ATA tiver 2Z suficiente para realizar o swap, esta transação terá sucesso. Você pode ajustar o swap mais precisamente especificando os seguintes argumentos: + +```bash + --limit-price O preço limite padrão é o preço oracle atual SOL/2Z + --source-2z-account A conta de token deve ser de propriedade do signatário. Padrão para ATA do signatário se não especificado + --checked-sol-amount Verificar explicitamente o valor SOL. Quando especificado, este valor será verificado contra a quantidade fixa de preenchimento +``` + +O preço limite especificado determina o pior caso de preço que você está disposto a aceitar ao realizar a conversão SOL/2Z. Por exemplo, digamos que o preço 2Z com desconto para SOL seja 800, o que significa 800 tokens 2Z por 1 SOL. Se você especificar um preço limite de 790, não estará disposto a realizar o swap porque está exigindo trocar no máximo 790 tokens 2Z por 1 SOL. Mas se você especificar 810, o trade passará porque você estava disposto a trocar no máximo 810 tokens 2Z (e neste caso, você terá trocado apenas 800 tokens 2Z nesta transação). + +A conta de token 2Z de origem substitui a ATA padrão usando o signatário como proprietário desta ATA 2Z. Mas se você tiver outra conta de token que deseja usar para realizar o swap, forneça a pubkey para ela com este argumento. + +Opcionalmente, você pode especificar o valor SOL verificado para o tamanho de preenchimento padrão (definido como 1 SOL no lançamento). Se não estiver alinhado com o tamanho de preenchimento do programa, o swap falhará. Isso mitiga o risco de que o tamanho de preenchimento do programa mude e você não perceba. + +### Interface para Comprar SOL + +A interface e o CLI `doublezero-solana` residem em [este repositório](https://github.com/doublezerofoundation/doublezero-offchain). O código-fonte para a interface do contrato de swap DoubleZero pode ser encontrado [aqui](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09). O ID do programa é `9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`. + +Uma maneira conveniente de gerar as contas necessárias para a instrução de compra de SOL é usar o método `new` (encontrado em *instruction/account.rs*). + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +O `fill_registry_key` pode ser buscado do `ProgramState` + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // esta chave + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +Alternativamente, você pode chamar `getProgramAccounts` via Solana RPC com seu discriminador. Mas recomendamos armazenar em cache esta pubkey, pois ela nunca mudará. + +O `user_key` é um signatário para a instrução de compra de SOL e deve ser o proprietário do `user_token_account_key`. Conforme descrito acima, isso NÃO precisa ser uma ATA. Desde que sua conta de token 2Z seja de propriedade do `user_key`, esta instrução terá sucesso. + +A struct `BuySolAccounts` implementa `Into>` para que você possa gerar todos os metadados de conta necessários para construir a instrução. + +Os dados de instrução são + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +Esses dados de instrução são serializados em Borsh e têm um seletor Anchor de 8 bytes, que todos serializarão ao usar `BorshSerialize::serialize`. + +Os dados de preço oracle podem ser obtidos deste endpoint público: [https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate). Os dados são desserializáveis em serde usando a struct OraclePriceData encontrada em *oracle.rs*. + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +Exemplo de como buscar usando o [reqwest crate](https://docs.rs/reqwest/latest/reqwest/): + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +Com o ID do programa, contas e dados de instrução, você deve ser capaz de construir a instrução para comprar SOL do contrato de swap DoubleZero. diff --git a/docs/Swapping-sol-to-2z.zh.md b/docs/Swapping-sol-to-2z.zh.md new file mode 100644 index 0000000..d64ba0c --- /dev/null +++ b/docs/Swapping-sol-to-2z.zh.md @@ -0,0 +1,205 @@ +**在访问或使用代码或相关材料之前,请查看免责声明。** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "免责声明" + + 本文档及相关代码仅供信息和技术目的提供。本文中描述的代币转换功能是非托管型的。用户直接与底层智能合约交互,始终完全控制自己的资产。 + + 该系统可能依赖于或与开发人员和发行人未开发、管理或审查的第三方代码、数据源或价格和费用机制(例如智能合约、API或去中心化交易所)交互。对第三方组件的准确性、功能或安全性不作任何声明或保证。 + 本代码的开发人员和发行人不保证其准确性、完整性或持续可用性。代码和相关材料按"原样"(AS IS)提供,可能包含错误、缺陷或漏洞。使用风险自负。 + 开发人员和发行人不会因使用这些合约而收取任何费用。对代码或相关文档没有维护、更新或支持的义务。 + + 本文件不是对参与代币转换、兑换或其他交易的推介、招揽或建议。不提供法律、财务或投资建议。 + 用户单独负责确定其活动的合法性。在使用代码或参与转换之前,必须查阅适用于其司法管辖区的法律法规,并咨询独立顾问。在违法的地方使用是被禁止的,包括受制裁的个人或组织或受限地区的使用。 + + 在法律允许的最大范围内,开发人员和发行人否认因使用代码或参与转换而引起的或与之相关的所有损失、损害或索赔的任何责任。 + + 本文档及相关代码的审查和使用须遵守[网站使用条款](https://doublezero.xyz/terms)和[协议使用条款](https://doublezero.xyz/terms-protocol)。 + +DoubleZero协议从验证器用户处收取以SOL计价的收益,但以2Z计价向贡献者分配奖励。因此,需要将SOL转换为2Z。 + +**为此,合格的参与者可以与DoubleZero兑换合约进行交易,从合约购买SOL并出售2Z。定价基于Pyth价格数据流和程序性折扣机制。** + +本指南介绍如何使用该程序。 + +***在访问或使用本文档及相关代码之前,请查看文档末尾的免责声明。*** + +--- + +## 程序设计 + +兑换程序本质上是一个单边流动性池,每笔交易的固定批量为1 SOL进行SOL销售。合格的参与者可以存入2Z并从程序提取SOL,价格由Pyth的预言机价格和动态折扣决定。随着时间的推移,这实现了将程序的原生代币转换为2Z的目标。 + +要使用该程序,交易者需要提供两个最新的Pyth价格(SOL/USD和2Z/USD)以及2Z的数量。程序随后根据隐含的SOL/2Z价格计算购买1 SOL所需的2Z。然后执行一些额外步骤: + +- 检查Pyth价格是否足够新,即不超过5秒的旧价格。 +- 检查两个价格的置信区间是否足够小,即两个价格的拉普拉斯标准差(Pyth价格参数`conf`)之和在其水平上归一化后不得超过30个基点。 +- 用动态折扣(以Pyth价格的百分比表示)调整SOL/2Z价格。此折扣是自上次交易以来时间的函数。以下公式指定折扣,假设上次交易在槽位$s_{\text{last}}$,当前槽位为$s_{\text{now}}$。(例如,如果自上次交易以来已经过了200个槽位,折扣为40个基点。) + +$$ +\text{discount} = \min\{0.00002 \times \left(s_{\text{now}} - s_{\text{last}}\right), 0.01\} +$$ + +此时,如果交易者提供足够的2Z以按此计算价格(含折扣)执行交易,则将按此计算价格执行。交易者将收到购买的SOL和多余的2Z。 + +合约随后不允许在该槽位进行更多交易。这是为了防止合约在Pyth价格在任何时间点与真实价格相差太远(超出现有过滤器的捕获范围)时支付过高的滑点。 + +--- + +## 无Gas原子执行 + +本节介绍`harvest-dz`命令的使用方法。该命令以原子方式执行两个操作: +1. 命令向Jupiter请求针对原生SOL <> 2Z转换程序的报价。 +2. 如果Jupiter路由产生的2Z/SOL多于原生SOL转换程序所需的,`harvest-2z`将执行兑换,并将1 SOL和2Z的差额返还到钱包。 + +### 2Z的收割 + +要执行,请运行以下命令: +``` +doublezero-solana revenue-distribution harvest-2z +``` +输出将如下所示: +``` +Harvested 5.98151278 2Z tokens with 1.000000000 SOL +``` +该命令也可以使用`--dry-run`参数进行模拟。干运行将生成程序日志和如下输出: + +``` +Simulated harvesting 5.98151278 2Z tokens with 1.000000000 SOL +``` + +--- + +## 协议转换 + +本节介绍如何检查转换率以及如何使用`doublezero-solana` CLI执行转换。最后还介绍了与DoubleZero兑换合约进行自定义集成的接口。 + +### 如何通过`doublezero-solana`检查SOL/2Z转换价格 + +要检查主网Beta的SOL/2Z转换率,请运行以下命令: + +```bash +doublezero-solana revenue-distribution fetch sol-conversion +``` + +显示的输出将如下所示: + +```bash +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 805.72612992 | | +| Swap Rate | 2Z amount for 1 SOL | 805.38772494 | Includes 0.04200000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + +Journal Balance告知用户收入分配智能合约中有多少SOL流动性。只要Journal Balance超过固定交易大小1 SOL,用户就可以交易。 + +第一行显示链下预言机的"真实"SOL/2Z转换价格。第二行是链上兑换使用的转换价格,是对算法折扣的真实价格的调整。 + +### 如何通过`doublezero-solana`将2Z转换为SOL + +要将2Z代币转换为多的,请运行以下命令: + +```bash +doublezero-solana revenue-distribution convert-2z +``` + +默认情况下,如果有足够的SOL流动性,并且ATA中有足够的2Z执行兑换,此交易将成功。通过指定以下参数,您可以更精细地控制兑换: + +```bash + --limit-price 限价默认为当前SOL/2Z预言机价格 + --source-2z-account 代币账户必须由签名者拥有。如果不指定,默认为签名者ATA + --checked-sol-amount 明确检查SOL金额。如果指定,此金额将针对固定填充数量进行检查 +``` + +指定的限价决定了执行SOL/2Z转换时您愿意接受的最坏情况价格。例如,假设SOL的折扣2Z价格为800(每1 SOL 800个2Z代币)。如果您将限价指定为790,您不愿意以每1 SOL多于790个2Z代币进行兑换,因此不会尝试执行兑换。但如果您指定810,您愿意兑换最多810个2Z代币(在本例中,仅在此交易中兑换800个2Z代币),因此交易将通过。 + +源2Z代币账户会覆盖默认的ATA,使用签名者作为此2Z ATA的所有者。但是,如果您有另一个想要用于执行兑换的代币账户,请通过此参数提供其公钥。 + +作为选项,您可以指定要检查的SOL金额到标准填充大小(启动时设置为1 SOL)。如果与程序的填充大小不匹配,兑换将失败。这减少了程序填充大小发生变化而您未注意到的风险。 + +### 购买SOL的接口 + +接口和`doublezero-solana` CLI位于[此仓库](https://github.com/doublezerofoundation/doublezero-offchain)中。DoubleZero兑换合约接口的源代码在[这里](https://github.com/doublezerofoundation/doublezero-offchain/tree/b3f606a91326baf64b475a37d612981b63243b09)。程序ID为`9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs`。 + +生成buy SOL指令所需账户的便捷方法是使用`new`方法(位于*instruction/account.rs*): + +```rust +pub fn new( + fill_registry_key: &Pubkey, + user_token_account_key: &Pubkey, + dz_mint_key: &Pubkey, + user_key: &Pubkey, +) -> Self; +``` + +`fill_registry_key`可从`ProgramState`获取 + +```rust +pub struct ProgramState { + pub admin_key: Pubkey, + pub fills_registry_key: Pubkey, // 此密钥 + pub is_paused: bool, + pub configuration_registry_bump: u8, + pub program_state_bump: u8, + pub deny_list_registry_bump: u8, + pub withdraw_authority_bump: u8, + pub last_trade_slot: u64, + pub deny_list_authority: Pubkey, +} +``` + +或者,您也可以通过Solana RPC使用判别器调用`getProgramAccounts`。但是,由于此公钥永远不会改变,建议对其进行缓存。 + +`user_key`是buy SOL指令的签名者,必须是`user_token_account_key`的所有者。如上所述,这不需要是ATA。只要2Z代币账户由`user_key`拥有,此指令就会成功。 + +`BuySolAccounts`结构体实现了`Into>`,因此可以生成构建指令所需的所有账户元数据。 + +指令数据为 + +```rust + SolConversionInstructionData::BuySol { + limit_price: u64, + oracle_price_data: OraclePriceData, + }, +``` + +此指令数据以Borsh序列化,有8字节的Anchor选择器,使用`BorshSerialize::serialize`序列化所有内容。 + +预言机价格数据可从此公共端点获取:[https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate](https://sol-2z-oracle-api-v1.mainnet-beta.doublezero.xyz/swap-rate)。数据可使用*oracle.rs*中的OraclePriceData结构体通过serde反序列化。 + +```rust +#[derive(Debug, BorshDeserialize, BorshSerialize, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Deserialize), + serde(rename_all = "camelCase") +)] +pub struct OraclePriceData { + pub swap_rate: u64, + pub timestamp: i64, + pub signature: String, +} +``` + +使用[reqwest crate](https://docs.rs/reqwest/latest/reqwest/)的获取示例: + +```rust +use anyhow::{Context, Result}; + +pub async fn try_request_oracle_conversion_price(oracle_endpoint: &str) -> Result { + reqwest::Client::new() + .get(oracle_endpoint) + .header("User-Agent", "SOL buyoooooooor") + .send() + .await? + .json() + .await + .with_context(|| format!("Failed to request SOL/2Z price from {oracle_endpoint}")) +} +``` + +使用程序ID、账户和指令数据,您应该能够构建从DoubleZero兑换合约购买SOL的指令。 diff --git a/docs/Validator Multicast Connection.es.md b/docs/Validator Multicast Connection.es.md new file mode 100644 index 0000000..2ecd37a --- /dev/null +++ b/docs/Validator Multicast Connection.es.md @@ -0,0 +1,77 @@ +# Conexión Multicast para Validadores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Servicio de DoubleZero](https://doublezero.xyz/terms-protocol)" + +Si aún no está conectado a DoubleZero, complete primero la documentación de [Configuración](setup.md) y de conexión para validadores [Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md). + +Si ya es un validador conectado a DoubleZero puede continuar con esta guía. + +#### Jito-Agave (versión 3.1.9 o superior) + +1. En el script de inicio de su validador, añada: `--shred-receiver-address 233.84.178.1:7733` + + Puede enviar a Jito y al grupo `bebop` al mismo tiempo. + + ejemplo: + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...El resto de su configuración...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. Reinicie su validador. + +3. Conéctese al grupo multicast `bebop` de DoubleZero como publicador: + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. En `config.toml`, añada: + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. Reinicie su validador. + +3. Conéctese al grupo multicast `bebop` de DoubleZero como publicador: + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + Los usuarios de Frankendancer en modo driver XDP no pueden usar tcpdump. Actualmente no hay forma de confirmar que está publicando, pero pronto habrá una solución disponible. + +#### Confirme que está publicando + +Durante su próximo slot de líder, use `tcpdump` para confirmar que está publicando al grupo multicast. Debería ver un heartbeat cada 10 segundos para verificar que está publicando shreds. + +Ejecute: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +Ejemplo de salida cuando se está publicando: + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/Validator Multicast Connection.fr.md b/docs/Validator Multicast Connection.fr.md new file mode 100644 index 0000000..1ebb751 --- /dev/null +++ b/docs/Validator Multicast Connection.fr.md @@ -0,0 +1,77 @@ +# Connexion Multicast Validateur +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'Utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" + +Si vous n'êtes pas encore connecté à DoubleZero, veuillez compléter la documentation [Configuration](setup.md) et de connexion validateur [Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md). + +Si vous êtes un validateur déjà connecté à DoubleZero, vous pouvez continuer ce guide. + +#### Jito-Agave (version 3.1.9 ou supérieure) + +1. Dans votre script de démarrage du validateur, ajoutez : `--shred-receiver-address 233.84.178.1:7733` + + Vous pouvez envoyer à Jito et au groupe `bebop` en même temps. + + exemple : + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...The rest of your config...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. Redémarrez votre validateur. + +3. Connectez-vous au groupe multicast DoubleZero `bebop` en tant qu'éditeur : + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. Dans `config.toml`, ajoutez : + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. Redémarrez votre validateur. + +3. Connectez-vous au groupe multicast DoubleZero `bebop` en tant qu'éditeur : + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + Les utilisateurs Frankendancer en mode pilote XDP ne peuvent pas utiliser tcpdump. Il n'existe actuellement aucun moyen de confirmer que vous publiez, mais une solution sera bientôt disponible. + +#### Confirmer que vous publiez + +Pendant votre prochain slot de leader, utilisez `tcpdump` pour confirmer que vous publiez vers le groupe multicast. Vous devriez voir un heartbeat toutes les 10 secondes pour vérifier que vous publiez des shreds. + +Exécutez : `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +Exemple de sortie lors de la publication : + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/Validator Multicast Connection.it.md b/docs/Validator Multicast Connection.it.md new file mode 100644 index 0000000..8ea95de --- /dev/null +++ b/docs/Validator Multicast Connection.it.md @@ -0,0 +1,77 @@ +# Connessione Multicast Validatore +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Connettendomi a DoubleZero accetto i [Termini di Servizio DoubleZero](https://doublezero.xyz/terms-protocol)" + +Se non sei ancora connesso a DoubleZero, completa prima la documentazione di [Setup](setup.md) e di connessione [Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) per validatori. + +Se sei un validatore già connesso a DoubleZero, puoi continuare con questa guida. + +#### Jito-Agave (versione 3.1.9 o superiore) + +1. Nel tuo script di avvio del validatore, aggiungi: `--shred-receiver-address 233.84.178.1:7733` + + Puoi inviare a Jito e al gruppo `bebop` contemporaneamente. + + esempio: + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...Il resto della tua configurazione...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. Riavvia il tuo validatore. + +3. Connettiti al gruppo multicast DoubleZero `bebop` come publisher: + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. In `config.toml`, aggiungi: + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. Riavvia il tuo validatore. + +3. Connettiti al gruppo multicast DoubleZero `bebop` come publisher: + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + Gli utenti Frankendancer in modalità driver XDP non possono usare tcpdump. Al momento non c'è modo di confermare che stai pubblicando, ma una soluzione sarà disponibile a breve. + +#### Conferma che stai pubblicando + +Durante il tuo prossimo slot leader, usa `tcpdump` per confermare che stai pubblicando nel gruppo multicast. Dovresti vedere un heartbeat ogni 10 secondi per verificare che stai pubblicando shred. + +Esegui: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +Esempio di output quando si pubblica: + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/Validator Multicast Connection.ja.md b/docs/Validator Multicast Connection.ja.md new file mode 100644 index 0000000..f5dc9bd --- /dev/null +++ b/docs/Validator Multicast Connection.ja.md @@ -0,0 +1,77 @@ +# バリデーターマルチキャスト接続 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZeroに接続することで、[DoubleZeroサービス利用規約](https://doublezero.xyz/terms-protocol)に同意します" + +まだDoubleZeroに接続していない場合は、[セットアップ](setup.md)と[メインネットベータ](DZ%20Mainnet-beta%20Connection.md)バリデーター接続ドキュメントを完了してください。 + +既にDoubleZeroに接続しているバリデーターは、このガイドを続けることができます。 + +#### Jito-Agave(バージョン3.1.9以上) + +1. バリデーターの起動スクリプトに以下を追加します:`--shred-receiver-address 233.84.178.1:7733` + + JitoとBebopグループに同時に送信できます。 + + 例: + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...その他の設定...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. バリデーターを再起動します。 + +3. パブリッシャーとしてDoubleZeroマルチキャストグループ`bebop`に接続します: + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. `config.toml`に以下を追加します: + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. バリデーターを再起動します。 + +3. パブリッシャーとしてDoubleZeroマルチキャストグループ`bebop`に接続します: + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + XDPドライバーモードのFrankendancerユーザーはtcpdumpを使用できません。現在、公開中を確認する方法はありませんが、近いうちにソリューションが提供される予定です。 + +#### 公開中の確認 + +次のリーダースロット中に`tcpdump`を使用してマルチキャストグループに公開していることを確認します。シュレッドを公開していることを確認するために10秒ごとにハートビートが表示されるはずです。 + +実行:`sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +公開中の出力例: + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/Validator Multicast Connection.ko.md b/docs/Validator Multicast Connection.ko.md new file mode 100644 index 0000000..f0e6657 --- /dev/null +++ b/docs/Validator Multicast Connection.ko.md @@ -0,0 +1,77 @@ +# 검증자 멀티캐스트 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 서비스 약관](https://doublezero.xyz/terms-protocol)에 동의합니다" + +아직 DoubleZero에 연결되지 않았다면 [설정](setup.md) 및 [Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) 검증자 연결 문서를 완료하세요. + +이미 DoubleZero에 연결된 검증자라면 이 가이드를 계속 진행할 수 있습니다. + +#### Jito-Agave (버전 3.1.9 이상) + +1. 검증자 시작 스크립트에 다음을 추가하세요: `--shred-receiver-address 233.84.178.1:7733` + + Jito와 `bebop` 그룹에 동시에 보낼 수 있습니다. + + 예시: + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...나머지 설정...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. 검증자를 재시작하세요. + +3. DoubleZero 멀티캐스트 그룹 `bebop`에 발행자로 연결하세요: + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. `config.toml`에 다음을 추가하세요: + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. 검증자를 재시작하세요. + +3. DoubleZero 멀티캐스트 그룹 `bebop`에 발행자로 연결하세요: + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + XDP 드라이버 모드의 Frankendancer 사용자는 tcpdump를 사용할 수 없습니다. 현재 발행 중인지 확인할 방법이 없지만 곧 해결책이 제공될 예정입니다. + +#### 발행 중인지 확인 + +다음 리더 슬롯에서 `tcpdump`를 사용하여 멀티캐스트 그룹에 발행 중인지 확인하세요. 발행 중인지 확인하기 위해 10초마다 하트비트가 표시되어야 합니다. + +실행: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +발행 중일 때의 예시 출력: + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/Validator Multicast Connection.pt.md b/docs/Validator Multicast Connection.pt.md new file mode 100644 index 0000000..adc451a --- /dev/null +++ b/docs/Validator Multicast Connection.pt.md @@ -0,0 +1,77 @@ +# Conexão Multicast para Validadores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "Ao conectar ao DoubleZero, concordo com os [Termos de Serviço do DoubleZero](https://doublezero.xyz/terms-protocol)" + +Se você ainda não está conectado ao DoubleZero, complete a documentação de [Configuração](setup.md) e conexão de validador [Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md). + +Se você é um validador já conectado ao DoubleZero, pode continuar com este guia. + +#### Jito-Agave (versão 3.1.9 ou superior) + +1. No script de inicialização do seu validador, adicione: `--shred-receiver-address 233.84.178.1:7733` + + Você pode enviar para o Jito e para o grupo `bebop` ao mesmo tempo. + + exemplo: + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...O restante da sua configuração...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. Reinicie seu validador. + +3. Conecte-se ao grupo multicast DoubleZero `bebop` como publicador: + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. Em `config.toml`, adicione: + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. Reinicie seu validador. + +3. Conecte-se ao grupo multicast DoubleZero `bebop` como publicador: + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + Usuários do Frankendancer no modo de driver XDP não podem usar tcpdump. Atualmente não há como confirmar que você está publicando, mas uma solução estará disponível em breve. + +#### Confirme que você está publicando + +Durante seu próximo slot de líder, use `tcpdump` para confirmar que você está publicando para o grupo multicast. Você deve ver um heartbeat a cada 10 segundos para verificar que está publicando shreds. + +Execute: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +Exemplo de saída ao publicar: + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/Validator Multicast Connection.zh.md b/docs/Validator Multicast Connection.zh.md new file mode 100644 index 0000000..bb34add --- /dev/null +++ b/docs/Validator Multicast Connection.zh.md @@ -0,0 +1,77 @@ +# 验证器多播连接 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +!!! warning "通过连接到DoubleZero,我同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" + +如果您尚未连接到DoubleZero,请先完成[设置](setup.md)和[主网Beta](DZ%20Mainnet-beta%20Connection.md)验证器连接文档。 + +如果您是已连接到DoubleZero的验证器,可以继续阅读本指南。 + +#### Jito-Agave(3.1.9或更高版本) + +1. 在您的验证器启动脚本中,添加:`--shred-receiver-address 233.84.178.1:7733` + + 您可以同时向Jito和`bebop`组发送数据。 + + 示例: + + ```json + #!/bin/bash + export PATH="/home/sol/.local/share/solana/install/releases/v3.1.9-jito/bin:$PATH" + BLOCK_ENGINE_URL=https://ny.mainnet.block-engine.jito.wtf + RELAYER_URL=http://ny.mainnet.relayer.jito.wtf:8100 + SHRED_RECEIVER_ADDR= + <...The rest of your config...> + --shred-receiver-address 233.84.178.1:7733 + ``` + +2. 重启您的验证器。 + +3. 以发布者身份连接到DoubleZero多播组`bebop`: + `doublezero connect multicast --publish bebop` + + + +#### Frankendancer + +1. 在`config.toml`中,添加: + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` +2. 重启您的验证器。 + +3. 以发布者身份连接到DoubleZero多播组`bebop`: + `doublezero connect multicast --publish bebop` + + + +!!! note inline end + 在XDP驱动模式下的Frankendancer用户无法使用tcpdump。目前没有方法确认您正在发布,但解决方案即将推出。 + +#### 确认您正在发布 + +在您的下一个领导者槽位期间,使用`tcpdump`确认您正在向多播组发布。您应该每10秒看到一次心跳以验证您正在发布碎片。 + +运行:`sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + +发布时的示例输出: + +``` +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +tcpdump: verbose output suppressed, use -v[v]... for full protocol decodetcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765 +tcpdump: listening on doublezero1, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes +21:53:11.018243 IP (tos 0x0, ttl 32, id 47109, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:21.018217 IP (tos 0x0, ttl 32, id 47558, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:31.018042 IP (tos 0x0, ttl 32, id 47919, offset 0, flags [DF], proto UDP (17), length 32) + 148.51.120.2.38319 > 233.84.178.1.5765: [bad udp cksum 0xa7a9 -> 0x67ba!] UDP, length 4 +21:53:32.822061 IP (tos 0x0, ttl 64, id 5721, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0xadfc!] UDP, length 1203 +21:53:32.822110 IP (tos 0x0, ttl 64, id 5722, offset 0, flags [DF], proto UDP (17), length 1231) + 148.51.120.2.57512 > 233.84.178.1.7733: [bad udp cksum 0xac58 -> 0x9e62!] UDP, length 1203 +5 packets captured +204 packets received by filter +0 packets dropped by kernel +``` diff --git a/docs/architecture.es.md b/docs/architecture.es.md new file mode 100644 index 0000000..749ecb0 --- /dev/null +++ b/docs/architecture.es.md @@ -0,0 +1,50 @@ +# Arquitectura +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +¿Qué compone los diferentes actores y componentes de la red DoubleZero? + +
+ ![Image title](images/figure8.png){ width="800" } +
Figura 1: Componentes de la arquitectura de red
+
+ +## Contribuidores + +La red DoubleZero está formada por contribuciones de conectividad y procesamiento de paquetes de una creciente comunidad de proveedores de infraestructura de red distribuida en ciudades de todo el mundo. Los contribuidores aportan enlaces de fibra óptica y recursos de procesamiento de información al protocolo para proporcionar la red de malla descentralizada. + +### Contribuidores de Ancho de Banda de Red + +Los contribuidores de red deben proporcionar ancho de banda dedicado entre dos puntos, operar dispositivos compatibles con DoubleZero (DZDs) en cada extremo y una conexión a internet en cada extremo. Los contribuidores de red también deben ejecutar el software DoubleZero en cada DZD para proporcionar servicios como multicast, búsqueda de usuarios y servicios de filtrado en el borde. + +Los enlaces físicos de la red DoubleZero se proporcionan en forma de cables de fibra óptica, comúnmente denominados servicios de longitud de onda. Los contribuidores de red comprometen enlaces de red subutilizados, propios o arrendados de proveedores de infraestructura, entre dos o más centros de datos. Estos enlaces se terminan en ambos extremos por Dispositivos DoubleZero, que son recintos físicos de conmutación de red que ejecutan instancias del software Agente DoubleZero. + +#### DoubleZero Exchange (DZX / Sitio de Interconexión) + +Los Exchanges DoubleZero (DZXs) son puntos de interconexión en la red de malla donde se unen diferentes enlaces de contribuidores. Los DZXs están ubicados en las principales áreas metropolitanas del mundo donde se producen intersecciones de red. Los contribuidores de red deben interconectar sus enlaces a la red de malla DoubleZero más amplia en los DZXs geográficamente más cercanos a los extremos de sus enlaces. + +### Contribuidores de Recursos Computacionales + +Aparte de los contribuidores de red, los contribuidores de recursos son un grupo descentralizado de participantes de la red que realizan diversas tareas de mantenimiento y monitoreo necesarias para sostener la integridad técnica y la funcionalidad continua de la red DoubleZero. Específicamente, ellos (i) rastrean las transacciones y pagos de los usuarios; (ii) calculan las tarifas para los contribuidores de red; (iii) registran los resultados de (i) y (ii); (iv) administran, estrictamente de forma no discrecional, los contratos inteligentes que controlan la tokenómica del protocolo; (v) transmiten attestations a la blockchain aplicable; y (vi) publican datos de telemetría sobre la calidad y utilización de los enlaces para proporcionar métricas de rendimiento transparentes y en tiempo real para todos los contribuidores de red. + +## Componentes + +### Daemon DoubleZero + +El software Daemon DoubleZero se ejecuta en servidores que necesitan comunicarse a través de la red DoubleZero. El daemon interactúa con la pila de red del kernel del host para crear y gestionar interfaces de túnel, tablas de enrutamiento y rutas. + +### Activador + +El servicio Activador, alojado por uno o más miembros contribuidores de recursos computacionales de la comunidad DoubleZero, monitorea los eventos de contrato que requieren asignaciones de direcciones IP y cambios de estado, y gestiona esos cambios en nombre de la red. + +### Controlador + +El servicio Controlador, alojado por uno o más contribuidores de recursos computacionales de la comunidad DoubleZero, sirve como la interfaz de configuración para que los Agentes de Dispositivos DoubleZero representen su configuración actual basada en eventos de contratos inteligentes. + +### Agente + +El software Agente se ejecuta directamente en los Dispositivos DoubleZero y aplica los cambios de configuración a los dispositivos según lo interpretado por el servicio Controlador. El software Agente consulta al Controlador para detectar cambios de configuración, calcula las diferencias entre la versión canónica on-chain del estado del Dispositivo y la configuración activa en el dispositivo, y aplica los cambios necesarios para reconciliar la configuración activa. + +### Dispositivo + +El recinto físico del dispositivo que proporciona el enrutamiento y la terminación de enlaces para la red DoubleZero. Los DZDs ejecutan el software Agente DoubleZero y se configuran basándose en los datos leídos del servicio Controlador. diff --git a/docs/architecture.fr.md b/docs/architecture.fr.md new file mode 100644 index 0000000..3e915ce --- /dev/null +++ b/docs/architecture.fr.md @@ -0,0 +1,50 @@ +# Architecture +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Quels sont les différents acteurs et composants du réseau DoubleZero ? + +
+ ![Image title](images/figure8.png){ width="800" } +
Figure 1 : Composants de l'architecture réseau
+
+ +## Contributeurs + +Le réseau DoubleZero est composé de contributions en matière de connectivité et de traitement des paquets d'une communauté croissante de fournisseurs d'infrastructure réseau distribués dans des villes du monde entier. Les contributeurs apportent des liens en câble fibre optique et des ressources de traitement de l'information au protocole pour fournir le réseau maillé décentralisé. + +### Contributeurs en Bande Passante Réseau + +Les contributeurs réseau doivent fournir une bande passante dédiée entre deux points, exploiter des dispositifs compatibles DoubleZero (DZD) à chaque extrémité, et une connexion à internet à chaque extrémité. Les contributeurs réseau doivent également exécuter le logiciel DoubleZero sur chaque DZD pour fournir des services tels que le multicast, la recherche d'utilisateurs et les services de filtration en périphérie. + +Les liens physiques du réseau DoubleZero sont fournis sous forme de câbles en fibre optique, communément appelés services à longueur d'onde. Les contributeurs réseau s'engagent avec des liens réseau sous-utilisés, possédés ou loués auprès de fournisseurs d'infrastructure, entre deux ou plusieurs centres de données. Ces liens sont terminés aux deux extrémités par des DoubleZero Devices, qui sont des boîtiers de commutation réseau physiques exécutant des instances du logiciel DoubleZero Agent. + +#### DoubleZero Exchange (DZX / Site de Cross-connect) + +Les DoubleZero Exchanges (DZX) sont des points d'interconnexion dans le réseau maillé où différents liens de contributeurs sont reliés ensemble. Les DZX sont situés dans les grandes zones métropolitaines du monde entier où se produisent les intersections de réseau. Les contributeurs réseau doivent cross-connecter leurs liens dans le réseau maillé DoubleZero plus large au niveau des DZX situés géographiquement le plus près de leurs extrémités de liens. + +### Contributeurs en Ressources Informatiques + +Séparément des contributeurs réseau, les contributeurs en ressources sont un groupe décentralisé de participants réseau qui effectuent diverses tâches de maintenance et de surveillance nécessaires pour maintenir l'intégrité technique et la fonctionnalité continue du réseau DoubleZero. Plus précisément, ils (i) suivent les transactions et les paiements des utilisateurs ; (ii) calculent les frais pour les contributeurs réseau ; (iii) enregistrent les résultats de (i) et (ii) ; (iv) administrent, strictement sur une base non discrétionnaire, les contrats intelligents qui contrôlent la tokenomique du protocole ; (v) transmettent les attestations à la blockchain applicable ; et (vi) publient des données de télémétrie sur la qualité et l'utilisation des liens pour fournir des métriques de performance transparentes en temps réel pour tous les contributeurs réseau. + +## Composants + +### DoubleZero Daemon + +Le logiciel DoubleZero Daemon s'exécute sur les serveurs qui ont besoin de communiquer sur le réseau DoubleZero. Le daemon s'interface avec la pile réseau du noyau de l'hôte pour créer et gérer les interfaces de tunnel, les tables de routage et les routes. + +### Activateur + +Le service Activateur, hébergé par un ou plusieurs membres contributeurs en ressources informatiques de la communauté DoubleZero, surveille les événements de contrat nécessitant des allocations d'adresses IP et des changements d'état, et gère ces changements au nom du réseau. + +### Contrôleur + +Le service Contrôleur, hébergé par un ou plusieurs contributeurs en ressources informatiques de la communauté DoubleZero, sert d'interface de configuration pour que les DoubleZero Device Agents rendent leur configuration actuelle basée sur les événements de contrat intelligent. + +### Agent + +Le logiciel Agent s'exécute directement sur les DoubleZero Devices et applique les changements de configuration aux dispositifs tels qu'interprétés par le service Contrôleur. Le logiciel Agent interroge le Contrôleur pour les changements de configuration, calcule toute différence entre la version canonique on-chain de l'état du Device et la configuration active sur le dispositif et applique les changements nécessaires pour réconcilier la configuration active. + +### Dispositif + +Le boîtier de dispositif physique fournissant le routage et la terminaison de liens pour le réseau DoubleZero. Les DZD exécutent le logiciel DoubleZero Agent et sont configurés sur la base des données lues depuis le service Contrôleur. diff --git a/docs/architecture.it.md b/docs/architecture.it.md new file mode 100644 index 0000000..c66f809 --- /dev/null +++ b/docs/architecture.it.md @@ -0,0 +1,50 @@ +# Architettura +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Quali sono i diversi attori e componenti della rete DoubleZero? + +
+ ![Image title](images/figure8.png){ width="800" } +
Figura 1: Componenti dell'architettura di rete
+
+ +## Contributori + +La rete DoubleZero è composta da contributi di connettività ed elaborazione di pacchetti da parte di una comunità in crescita di provider distribuiti di infrastrutture di rete in città di tutto il mondo. I contributori portano al protocollo link in fibra ottica e risorse di elaborazione delle informazioni per fornire la rete mesh decentralizzata. + +### Contributori di Larghezza di Banda di Rete + +I contributori di rete devono fornire larghezza di banda dedicata tra due punti, operare dispositivi compatibili con DoubleZero (DZD) a ciascuna estremità, e una connessione a internet a ciascuna estremità. I contributori di rete devono anche eseguire software DoubleZero su ogni DZD per fornire servizi come multicast, ricerca utenti e servizi di filtraggio al margine. + +I link fisici della rete DoubleZero sono forniti sotto forma di cavi in fibra ottica, comunemente denominati servizi a lunghezza d'onda. I contributori di rete destinano link di rete sottoutilizzati, di proprietà o in locazione da provider di infrastrutture, tra due o più data center. Questi link sono terminati ad entrambe le estremità da DoubleZero Device, che sono enclosure di switching di rete fisiche che eseguono istanze del software DoubleZero Agent. + +#### DoubleZero Exchange (DZX / Sito di Cross-connect) + +Le DoubleZero Exchange (DZX) sono punti di interconnessione nella rete mesh dove diversi link dei contributori vengono collegati insieme. Le DZX sono situate nelle principali aree metropolitane del mondo dove si verificano le intersezioni di rete. I contributori di rete devono cross-connectare i propri link nella più ampia rete mesh DoubleZero presso le DZX geograficamente più vicine ai loro endpoint di link. + +### Contributori di Risorse Computazionali + +Separatamente dai contributori di rete, i contributori di risorse sono un gruppo decentralizzato di partecipanti alla rete che svolgono vari compiti di manutenzione e monitoraggio necessari per sostenere l'integrità tecnica e la funzionalità continua della rete DoubleZero. Nello specifico, essi (i) tracciano le transazioni e i pagamenti degli utenti; (ii) calcolano le commissioni per i contributori di rete; (iii) registrano i risultati di (i) e (ii); (iv) amministrano, in modo strettamente non discrezionale, gli smart contract che controllano la tokenomica del protocollo; (v) trasmettono attestazioni alla blockchain applicabile; e (vi) pubblicano dati di telemetria sulla qualità e l'utilizzo dei link per fornire metriche di prestazione in tempo reale e trasparenti per tutti i contributori di rete. + +## Componenti + +### DoubleZero Daemon + +Il software DoubleZero Daemon viene eseguito su server che necessitano di comunicare sulla rete DoubleZero. Il daemon si interfaccia con lo stack di rete del kernel dell'host per creare e gestire interfacce tunnel, tabelle di routing e route. + +### Activator + +Il servizio Activator, ospitato da uno o più membri contributori di risorse computazionali della comunità DoubleZero, monitora gli eventi contrattuali che richiedono allocazioni di indirizzi IP e cambiamenti di stato e gestisce tali cambiamenti per conto della rete. + +### Controller + +Il servizio Controller, ospitato da uno o più contributori di risorse computazionali della comunità DoubleZero, funge da interfaccia di configurazione per i DoubleZero Device Agent per rendere la loro configurazione corrente in base agli eventi degli smart contract. + +### Agent + +Il software Agent viene eseguito direttamente sui DoubleZero Device e applica le modifiche di configurazione ai dispositivi come interpretate dal servizio Controller. Il software Agent interroga il Controller per le modifiche alla configurazione, calcola eventuali differenze tra la versione canonica on-chain dello stato del dispositivo e la configurazione attiva sul dispositivo e applica le modifiche necessarie per riconciliare la configurazione attiva. + +### Device + +L'enclosure del dispositivo fisico che fornisce il routing e la terminazione dei link per la rete DoubleZero. I DZD eseguono il software DoubleZero Agent e vengono configurati in base ai dati letti dal servizio Controller. diff --git a/docs/architecture.ja.md b/docs/architecture.ja.md new file mode 100644 index 0000000..b02b4e8 --- /dev/null +++ b/docs/architecture.ja.md @@ -0,0 +1,50 @@ +# アーキテクチャ +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZeroネットワークのさまざまなアクターとコンポーネントは何で構成されていますか? + +
+ ![Image title](images/figure8.png){ width="800" } +
図1:ネットワークアーキテクチャのコンポーネント
+
+ +## コントリビューター + +DoubleZeroネットワークは、世界中の都市にある成長中の分散ネットワークインフラプロバイダーコミュニティからの接続性とパケット処理の貢献で構成されています。コントリビューターは、分散型メッシュネットワークを提供するために光ファイバーケーブルリンクと情報処理リソースをプロトコルに提供します。 + +### ネットワーク帯域幅コントリビューター + +ネットワークコントリビューターは、2点間に専用帯域幅を提供し、各端にDoubleZero互換デバイス(DZD)を運用し、各端でインターネットへの接続が必要です。また、マルチキャスト、ユーザー検索、エッジフィルタリングサービスなどのサービスを提供するために各DZDでDoubleZeroソフトウェアを実行する必要があります。 + +DoubleZeroネットワークの物理リンクは、一般にウェーブレングスサービスと呼ばれる光ファイバーケーブルの形で提供されます。ネットワークコントリビューターは、インフラプロバイダーから所有または賃借した未活用のネットワークリンクを2つ以上のデータセンター間でコミットします。これらのリンクは両端でDoubleZeroデバイスによって終端され、DoubleZeroエージェントソフトウェアのインスタンスを実行する物理ネットワークスイッチングエンクロージャーです。 + +#### DoubleZero Exchange(DZX / クロスコネクトサイト) + +DoubleZero Exchange(DZX)は、異なるコントリビューターリンクが橋渡しされるメッシュネットワークの相互接続点です。DZXはネットワーク交差点が発生する世界中の主要な大都市圏に位置しています。ネットワークコントリビューターは、リンクエンドポイントに地理的に最も近いDZXでリンクをより広いDoubleZeroメッシュネットワークにクロスコネクトする必要があります。 + +### 計算リソースコントリビューター + +ネットワークコントリビューターとは別に、リソースコントリビューターはDoubleZeroネットワークの技術的整合性と継続的な機能性を維持するために必要なさまざまなメンテナンスおよびモニタリング義務を実行する分散型ネットワーク参加者グループです。具体的には、彼らは(i)ユーザートランザクションと支払いを追跡し、(ii)ネットワークコントリビューターの手数料を計算し、(iii)(i)と(ii)の結果を記録し、(iv)プロトコルトークノミクスを制御するスマートコントラクトを厳密に非裁量的な基準で管理し、(v)適用されるブロックチェーンへの証明をリレーし、(vi)すべてのネットワークコントリビューターに透明でリアルタイムのパフォーマンス指標を提供するためにリンク品質と利用率に関するテレメトリデータを公開します。 + +## コンポーネント + +### DoubleZeroデーモン + +DoubleZeroデーモンソフトウェアは、DoubleZeroネットワークを介して通信する必要があるサーバー上で実行されます。デーモンはホストのカーネルネットワーキングスタックとインターフェースして、トンネルインターフェース、ルーティングテーブル、およびルートを作成および管理します。 + +### アクティベーター + +DoubleZeroコミュニティの1つ以上の計算リソース貢献メンバーがホストするアクティベーターサービスは、IPアドレス割り当てと状態変更を必要とするコントラクトイベントを監視し、ネットワークに代わってそれらの変更を管理します。 + +### コントローラー + +DoubleZeroコミュニティの1つ以上の計算リソースコントリビューターがホストするコントローラーサービスは、スマートコントラクトイベントに基づいて現在の設定をレンダリングするためのDoubleZeroデバイスエージェントの設定インターフェースとして機能します。 + +### エージェント + +エージェントソフトウェアはDoubleZeroデバイス上で直接実行され、コントローラーサービスによって解釈された設定変更をデバイスに適用します。エージェントソフトウェアはコントローラーに設定変更をポーリングし、デバイス状態のオンチェーン正規バージョンとデバイス上のアクティブ設定の差分を計算し、アクティブ設定を調整するために必要な変更を適用します。 + +### デバイス + +DoubleZeroネットワークのルーティングとリンク終端を提供する物理デバイスエンクロージャーです。DZDはDoubleZeroエージェントソフトウェアを実行し、コントローラーサービスから読み取られたデータに基づいて設定されます。 diff --git a/docs/architecture.ko.md b/docs/architecture.ko.md new file mode 100644 index 0000000..11d5b34 --- /dev/null +++ b/docs/architecture.ko.md @@ -0,0 +1,50 @@ +# 아키텍처 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero 네트워크의 다양한 행위자와 구성 요소는 무엇인가요? + +
+ ![Image title](images/figure8.png){ width="800" } +
그림 1: 네트워크 아키텍처 구성 요소
+
+ +## 기여자 + +DoubleZero 네트워크는 전 세계 도시에 있는 성장하는 분산 네트워크 인프라 제공업체 커뮤니티의 연결 및 패킷 처리 기여로 구성됩니다. 기여자들은 분산 메시 네트워크를 제공하기 위해 광섬유 케이블 링크와 정보 처리 리소스를 프로토콜에 제공합니다. + +### 네트워크 대역폭 기여자 + +네트워크 기여자는 두 지점 간에 전용 대역폭을 제공하고, 각 끝에서 DoubleZero 호환 장치(DZD)를 운영하며, 각 끝에서 인터넷에 연결해야 합니다. 네트워크 기여자는 또한 멀티캐스트, 사용자 조회, 엣지 필터링 서비스와 같은 서비스를 제공하기 위해 각 DZD에서 DoubleZero 소프트웨어를 실행해야 합니다. + +DoubleZero 네트워크의 물리적 링크는 일반적으로 파장 서비스라고 하는 광섬유 케이블 형태로 제공됩니다. 네트워크 기여자는 인프라 제공업체로부터 소유하거나 임대한 미활용 네트워크 링크를 두 개 이상의 데이터 센터 사이에 기여합니다. 이 링크는 DoubleZero 에이전트 소프트웨어 인스턴스를 실행하는 물리적 네트워크 스위칭 인클로저인 DoubleZero 장치에 의해 양쪽 끝에서 종단됩니다. + +#### DoubleZero Exchange (DZX / 크로스 커넥트 사이트) + +DoubleZero Exchange(DZX)는 서로 다른 기여자 링크가 연결되는 메시 네트워크의 상호 연결 지점입니다. DZX는 네트워크 교차점이 발생하는 전 세계 주요 도시 지역에 위치합니다. 네트워크 기여자는 링크 엔드포인트에 지리적으로 가장 가까운 DZX에서 링크를 더 광범위한 DoubleZero 메시 네트워크에 크로스 커넥트해야 합니다. + +### 컴퓨팅 리소스 기여자 + +네트워크 기여자와 별도로 리소스 기여자는 DoubleZero 네트워크의 기술적 무결성과 지속적인 기능성을 유지하는 데 필요한 다양한 유지보수 및 모니터링 의무를 수행하는 분산된 네트워크 참여자 그룹입니다. 구체적으로 이들은 (i) 사용자 트랜잭션 및 결제를 추적하고, (ii) 네트워크 기여자의 수수료를 계산하며, (iii) (i)와 (ii)의 결과를 기록하고, (iv) 프로토콜 토큰경제를 제어하는 스마트 계약을 엄격하게 비재량적 기반으로 관리하며, (v) 해당 블록체인에 증명을 릴레이하고, (vi) 모든 네트워크 기여자에게 투명하고 실시간 성능 지표를 제공하기 위해 링크 품질 및 활용도에 관한 텔레메트리 데이터를 게시합니다. + +## 구성 요소 + +### DoubleZero 데몬 + +DoubleZero 데몬 소프트웨어는 DoubleZero 네트워크를 통해 통신해야 하는 서버에서 실행됩니다. 데몬은 터널 인터페이스, 라우팅 테이블 및 경로를 생성하고 관리하기 위해 호스트의 커널 네트워킹 스택과 인터페이스합니다. + +### 활성화기 (Activator) + +DoubleZero 커뮤니티의 하나 이상의 컴퓨팅 리소스 기여 멤버가 호스팅하는 활성화기 서비스는 IP 주소 할당 및 상태 변경이 필요한 계약 이벤트를 모니터링하고 네트워크를 대신하여 해당 변경을 관리합니다. + +### 컨트롤러 + +DoubleZero 커뮤니티의 하나 이상의 컴퓨팅 리소스 기여자가 호스팅하는 컨트롤러 서비스는 스마트 계약 이벤트를 기반으로 현재 구성을 렌더링하기 위한 DoubleZero 장치 에이전트의 구성 인터페이스 역할을 합니다. + +### 에이전트 + +에이전트 소프트웨어는 DoubleZero 장치에서 직접 실행되며 컨트롤러 서비스에서 해석한 대로 장치에 구성 변경을 적용합니다. 에이전트 소프트웨어는 구성 변경을 위해 컨트롤러를 폴링하고, 장치 상태의 정규 온체인 버전과 장치의 활성 구성 간의 차이를 계산하며, 활성 구성을 조정하는 데 필요한 변경을 적용합니다. + +### 장치 + +DoubleZero 네트워크의 라우팅 및 링크 종단을 제공하는 물리적 장치 인클로저입니다. DZD는 DoubleZero 에이전트 소프트웨어를 실행하며 컨트롤러 서비스에서 읽은 데이터를 기반으로 구성됩니다. diff --git a/docs/architecture.pt.md b/docs/architecture.pt.md new file mode 100644 index 0000000..3138f20 --- /dev/null +++ b/docs/architecture.pt.md @@ -0,0 +1,50 @@ +# Arquitetura +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +O que compõe os diferentes atores e componentes da rede DoubleZero? + +
+ ![Image title](images/figure8.png){ width="800" } +
Figura 1: Componentes da arquitetura de rede
+
+ +## Contribuidores + +A rede DoubleZero é composta por contribuições de conectividade e processamento de pacotes de uma comunidade crescente de provedores de infraestrutura de rede distribuída em cidades ao redor do mundo. Os contribuidores trazem links de cabo de fibra óptica e recursos de processamento de informações ao protocolo para fornecer a rede mesh descentralizada. + +### Contribuidores de Largura de Banda de Rede + +Os contribuidores de rede devem fornecer largura de banda dedicada entre dois pontos, operar dispositivos compatíveis com DoubleZero (DZDs) em cada extremidade e uma conexão à internet em cada extremidade. Os contribuidores de rede também devem executar o software DoubleZero em cada DZD para fornecer serviços como multicast, pesquisa de usuários e serviços de filtragem de borda. + +Os links físicos da rede DoubleZero são fornecidos na forma de cabos de fibra óptica, comumente referidos como serviços de comprimento de onda. Os contribuidores de rede comprometem links de rede subutilizados, de propriedade ou arrendados de provedores de infraestrutura, entre dois ou mais data centers. Esses links são terminados em ambas as extremidades por Dispositivos DoubleZero, que são gabinetes de switching de rede física executando instâncias do software DoubleZero Agent. + +#### DoubleZero Exchange (DZX / Site de Cross-connect) + +Os DoubleZero Exchanges (DZXs) são pontos de interconexão na rede mesh onde diferentes links de contribuidores são conectados. Os DZXs estão localizados nas principais áreas metropolitanas ao redor do mundo, onde ocorrem interseções de rede. Os contribuidores de rede devem fazer cross-connect de seus links na rede mesh DoubleZero mais ampla nos DZXs geograficamente localizados mais próximos de seus endpoints de link. + +### Contribuidores de Recursos Computacionais + +Separados dos contribuidores de rede, os contribuidores de recursos são um grupo descentralizado de participantes da rede que realizam várias tarefas de manutenção e monitoramento necessárias para sustentar a integridade técnica e a funcionalidade contínua da rede DoubleZero. Especificamente, eles (i) rastreiam transações e pagamentos de usuários; (ii) calculam taxas para contribuidores de rede; (iii) registram os resultados de (i) e (ii); (iv) administram, estritamente de forma não discricionária, os contratos inteligentes que controlam a tokenomics do protocolo; (v) retransmitem atestações para a blockchain aplicável; e (vi) publicam dados de telemetria sobre qualidade e utilização de links para fornecer métricas de desempenho transparentes e em tempo real para todos os contribuidores de rede. + +## Componentes + +### DoubleZero Daemon + +O software DoubleZero Daemon é executado em servidores que precisam se comunicar pela rede DoubleZero. O daemon interage com a pilha de rede do kernel do host para criar e gerenciar interfaces de túnel, tabelas de roteamento e rotas. + +### Activator + +O serviço Activator, hospedado por um ou mais membros contribuidores de recursos computacionais da comunidade DoubleZero, monitora eventos de contrato que requerem alocações de endereços IP e mudanças de estado e gerencia essas mudanças em nome da rede. + +### Controller + +O serviço Controller, hospedado por um ou mais contribuidores de recursos computacionais da comunidade DoubleZero, serve como interface de configuração para que os DoubleZero Device Agents renderizem sua configuração atual com base em eventos de contrato inteligente. + +### Agent + +O software Agent é executado diretamente nos Dispositivos DoubleZero e aplica mudanças de configuração aos dispositivos conforme interpretado pelo serviço Controller. O software Agent consulta o Controller por mudanças de configuração, computa quaisquer diferenças entre a versão canônica on-chain do estado do Dispositivo e a configuração ativa no dispositivo e aplica as mudanças necessárias para reconciliar a configuração ativa. + +### Device + +O gabinete de dispositivo físico que fornece o roteamento e a terminação de link para a rede DoubleZero. Os DZDs executam o software DoubleZero Agent e são configurados com base em dados lidos do serviço Controller. diff --git a/docs/architecture.zh.md b/docs/architecture.zh.md new file mode 100644 index 0000000..fd71071 --- /dev/null +++ b/docs/architecture.zh.md @@ -0,0 +1,50 @@ +# 架构 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero网络的不同参与者和组件是什么? + +
+ ![Image title](images/figure8.png){ width="800" } +
图1:网络架构组件
+
+ +## 贡献者 + +DoubleZero网络由来自全球各城市日益增长的分布式网络基础设施提供商社区的连接和数据包处理贡献组成。贡献者将光纤链路和信息处理资源带入协议,以提供去中心化网状网络。 + +### 网络带宽贡献者 + +网络贡献者必须在两点之间提供专用带宽,在每端运营DoubleZero兼容设备(DZD),并在每端连接到互联网。网络贡献者还必须在每个DZD上运行DoubleZero软件,以提供多播、用户查找和边缘过滤等服务。 + +DoubleZero网络的物理链路以光纤电缆(通常称为波长服务)的形式提供。网络贡献者提交在两个或多个数据中心之间由基础设施提供商拥有或租赁的未充分利用的网络链路。这些链路在两端由DoubleZero设备终止,DoubleZero设备是运行DoubleZero代理软件实例的物理网络交换机外壳。 + +#### DoubleZero交换点(DZX / 交叉连接站点) + +DoubleZero交换点(DZX)是网状网络中不同贡献者链路相互桥接的互连点。DZX位于全球发生网络交叉的主要都市区。网络贡献者必须在地理位置最近其链路端点的DZX将其链路交叉连接到更广泛的DoubleZero网状网络中。 + +### 计算资源贡献者 + +与网络贡献者不同,资源贡献者是分布式网络参与者群体,执行维持DoubleZero网络技术完整性和持续功能所必需的各种维护和监控职责。具体而言,他们(i)跟踪用户交易和支付;(ii)计算网络贡献者的费用;(iii)记录(i)和(ii)的结果;(iv)严格以非自由裁量方式管理控制协议代币经济学的智能合约;(v)向适用区块链中继证明;(vi)发布关于链路质量和利用率的遥测数据,为所有网络贡献者提供透明的实时性能指标。 + +## 组件 + +### DoubleZero守护程序 + +DoubleZero守护程序软件运行在需要通过DoubleZero网络通信的服务器上。守护程序与主机的内核网络栈交互,以创建和管理隧道接口、路由表和路由。 + +### 激活器 + +激活器服务由DoubleZero社区的一个或多个计算资源贡献成员托管,监控需要IP地址分配和状态更改的合约事件,并代表网络管理这些更改。 + +### 控制器 + +控制器服务由DoubleZero社区的一个或多个计算资源贡献者托管,作为DoubleZero设备代理基于智能合约事件呈现其当前配置的配置接口。 + +### 代理 + +代理软件直接在DoubleZero设备上运行,并应用由控制器服务解释的配置更改到设备上。代理软件轮询控制器以获取配置更改,计算设备状态的链上规范版本与设备上活动配置之间的任何差异,并应用必要的更改以协调活动配置。 + +### 设备 + +为DoubleZero网络提供路由和链路终止的物理设备外壳。DZD运行DoubleZero代理软件,并根据从控制器服务读取的数据进行配置。 diff --git a/docs/connect.es.md b/docs/connect.es.md new file mode 100644 index 0000000..8b6cb69 --- /dev/null +++ b/docs/connect.es.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

Si no es redirigido, haga clic aquí.

+ + diff --git a/docs/connect.fr.md b/docs/connect.fr.md new file mode 100644 index 0000000..6d947f8 --- /dev/null +++ b/docs/connect.fr.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

If you are not redirected, click here.

+ + diff --git a/docs/connect.it.md b/docs/connect.it.md new file mode 100644 index 0000000..6d947f8 --- /dev/null +++ b/docs/connect.it.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

If you are not redirected, click here.

+ + diff --git a/docs/connect.ja.md b/docs/connect.ja.md new file mode 100644 index 0000000..d1f7c17 --- /dev/null +++ b/docs/connect.ja.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

リダイレクトされない場合は、こちらをクリックしてください。

+ + diff --git a/docs/connect.ko.md b/docs/connect.ko.md new file mode 100644 index 0000000..0a2b35c --- /dev/null +++ b/docs/connect.ko.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

리디렉션되지 않으면 여기를 클릭하세요.

+ + diff --git a/docs/connect.pt.md b/docs/connect.pt.md new file mode 100644 index 0000000..ade58c4 --- /dev/null +++ b/docs/connect.pt.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

Se você não for redirecionado, clique aqui.

+ + diff --git a/docs/connect.zh.md b/docs/connect.zh.md new file mode 100644 index 0000000..6d947f8 --- /dev/null +++ b/docs/connect.zh.md @@ -0,0 +1,11 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + + + +

If you are not redirected, click here.

+ + diff --git a/docs/contribute-operations.es.md b/docs/contribute-operations.es.md new file mode 100644 index 0000000..2c533fc --- /dev/null +++ b/docs/contribute-operations.es.md @@ -0,0 +1,321 @@ +# Guía de Operaciones para Contribuidores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +Esta guía cubre las tareas operativas continuas para mantener sus Dispositivos DoubleZero (DZDs), incluyendo actualizaciones de agentes, actualizaciones de dispositivos/interfaces y gestión de enlaces. + +**Requisitos previos**: Antes de usar esta guía, asegúrese de haber: + +- Completado la [Guía de Aprovisionamiento de Dispositivos](contribute-provisioning.md) +- Su DZD está completamente operativo con los agentes de Configuración y Telemetría en ejecución + +--- + +## Actualizaciones de Dispositivos + +Use `doublezero device update` para modificar la configuración del dispositivo después del aprovisionamiento inicial. + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**Opciones de actualización comunes:** + +| Opción | Descripción | +|--------|-------------| +| `--device-type ` | Cambiar el modo de operación: `hybrid`, `transit`, `edge` (consulte [Tipos de Dispositivos](contribute-provisioning.md#understanding-device-types)) | +| `--location ` | Mover el dispositivo a una ubicación diferente | +| `--metrics-publisher ` | Cambiar la clave de editor de métricas | + +--- + +## Actualizaciones de Interfaces + +Use `doublezero device interface update` para modificar las interfaces existentes. Este comando acepta las mismas opciones que `interface create`. + +```bash +doublezero device interface update [OPTIONS] +``` + +Para obtener la lista completa de opciones de interfaz incluyendo configuraciones CYOA/DIA, consulte [Creación de Interfaces](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices). + +**Ejemplo - Añadir configuraciones CYOA a una interfaz existente:** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### Listar Interfaces + +```bash +doublezero device interface list # Todas las interfaces en todos los dispositivos +doublezero device interface list # Interfaces de un dispositivo específico +``` + +--- + +## Actualización del Agente de Configuración + +Cuando se lanza una nueva versión del Agente de Configuración, siga estos pasos para actualizar. + +### 1. Descargar la última versión + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Apagar el agente + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. Eliminar la versión anterior + +Primero, encuentre el nombre del archivo de la versión anterior: +``` +switch# show extensions +``` + +Ejecute los siguientes comandos para eliminar la versión anterior. Reemplace `` con la versión anterior de la salida anterior: +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. Instalar la nueva versión + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Reactivar el agente + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. Verificar la actualización + +El estado debe ser "A, I, B". +``` +switch# show extensions +``` + +### 7. Verificar la salida del log del Agente de Configuración + +``` +show agent doublezero-agent log +``` + +--- + +## Actualización del Agente de Telemetría + +Cuando se lanza una nueva versión del Agente de Telemetría, siga estos pasos para actualizar. + +### 1. Descargar la última versión + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Apagar el agente + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. Eliminar la versión anterior + +Primero, encuentre el nombre del archivo de la versión anterior: +``` +switch# show extensions +``` + +Ejecute los siguientes comandos para eliminar la versión anterior. Reemplace `` con la versión anterior de la salida anterior: +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. Instalar la nueva versión + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Reactivar el agente + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. Verificar la actualización + +El estado debe ser "A, I, B". +``` +switch# show extensions +``` + +### 7. Verificar la salida del log del Agente de Telemetría + +``` +show agent doublezero-telemetry log +``` + +--- + +## Monitoreo + +> ⚠️ **Importante:** +> +> 1. Para los ejemplos de configuración a continuación, tenga en cuenta si sus agentes están usando un VRF de gestión. +> 2. El agente de configuración y el agente de telemetría usan el mismo puerto de escucha (:8080) para su endpoint de métricas por defecto. Si está habilitando métricas en ambos, use el flag `-metrics-addr` para establecer puertos de escucha únicos para cada agente. + +### Métricas del Agente de Configuración + +El agente de configuración en el dispositivo DoubleZero tiene la capacidad de exponer métricas compatibles con Prometheus configurando el flag `-metrics-enable` en la configuración del daemon `doublezero-agent`. El puerto de escucha predeterminado es tcp/8080 pero puede cambiarse para adaptarse al entorno mediante `-metrics-addr`: +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +#### Errores de Alta Señal + +- `up` - Esta es la métrica de series temporales generada automáticamente por prometheus si la instancia de scrape está saludable y es alcanzable. Si no lo está, el agente no es alcanzable o no está en ejecución. +- `doublezero_agent_apply_config_errors_total` - La configuración que el agente intenta aplicar falló. En esta situación, los usuarios no podrán incorporarse al dispositivo y los cambios de configuración onchain no se aplicarán hasta que esto se resuelva. +- `doublezero_agent_get_config_errors_total` - Esto indica que el agente de configuración local no puede comunicarse con el controlador DoubleZero. En la mayoría de los casos, esto puede deberse a un problema con la conectividad de gestión en el dispositivo. Similar a la métrica anterior, los usuarios no podrán incorporarse al dispositivo y los cambios de configuración onchain no se aplicarán hasta que esto se resuelva. + +### Métricas del Agente de Telemetría + +El agente de telemetría en el dispositivo DoubleZero tiene la capacidad de exponer métricas compatibles con Prometheus configurando el flag `-metrics-enable` en la configuración del daemon `doublezero-telemetry`. El puerto de escucha predeterminado es tcp/8080 pero puede cambiarse para adaptarse al entorno mediante `-metrics-addr`: +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +#### Errores de Alta Señal + +- `up` - Esta es la métrica de series temporales generada automáticamente por prometheus si la instancia de scrape está saludable y es alcanzable. Si no lo está, el agente no es alcanzable o no está en ejecución. +- `doublezero_device_telemetry_agent_errors_total` con un `error_type` de `submitter_failed_to_write_samples` - Esta es una señal de que el agente de telemetría no puede escribir muestras onchain, lo que podría deberse a problemas de conectividad de gestión en el dispositivo. + +--- + +## Gestión de Enlaces + +### Drenado de Enlaces + +El drenado de enlaces permite a los contribuidores retirar gradualmente un enlace del servicio activo para mantenimiento o solución de problemas. Hay dos estados de drenado: + +| Estado | Comportamiento IS-IS | Descripción | +|--------|----------------|-------------| +| `soft-drained` | Métrica establecida en 1,000,000 | El enlace se desprioriza. El tráfico usará rutas alternativas si están disponibles, pero aún usará este enlace si es la única opción. | +| `hard-drained` | Establecido como pasivo | El enlace se retira completamente del enrutamiento. Ningún tráfico atravesará este enlace. | + +### Transiciones de Estado + +Se permiten las siguientes transiciones de estado: + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (debe pasar primero por soft-drained) +``` + +> ⚠️ **Nota:** +> No puede ir directamente de `hard-drained` a `activated`. Primero debe transitar a `soft-drained`, luego a `activated`. + +### Drenar Suavemente un Enlace + +El drenado suave desprioriza un enlace estableciendo su métrica IS-IS en 1,000,000. El tráfico preferirá rutas alternativas pero aún puede usar este enlace si es necesario. + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### Drenar Duramente un Enlace + +El drenado duro elimina el enlace del enrutamiento por completo estableciendo IS-IS en modo pasivo. Ningún tráfico atravesará este enlace. + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### Restaurar un Enlace a Activo + +Para devolver un enlace drenado a operación normal: + +```bash +# Desde soft-drained +doublezero link update --pubkey --status activated + +# Desde hard-drained (debe pasar primero por soft-drained) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### Anulación de Retardo + +La función de anulación de retardo permite a los contribuidores cambiar temporalmente el retardo efectivo de un enlace sin modificar el valor de retardo medido real. Esto es útil para demotar temporalmente un enlace de ruta primaria a secundaria. + +### Establecer una Anulación de Retardo + +Para anular el retardo de un enlace (haciéndolo menos preferido en el enrutamiento): + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +Los valores válidos son de `0.01` a `1000` milisegundos. + +### Borrar una Anulación de Retardo + +Para eliminar la anulación y volver a usar el retardo medido real: + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **Nota:** +> Cuando un enlace está en soft-drained, tanto `delay_ms` como `delay_override_ms` se anulan a 1000ms (1 segundo) para garantizar la desriorización. diff --git a/docs/contribute-operations.fr.md b/docs/contribute-operations.fr.md new file mode 100644 index 0000000..14d6bae --- /dev/null +++ b/docs/contribute-operations.fr.md @@ -0,0 +1,366 @@ +# Guide des Opérations pour les Contributeurs +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +Ce guide couvre les tâches opérationnelles courantes pour maintenir vos DoubleZero Devices (DZD), notamment les mises à niveau des agents, les mises à jour des dispositifs/interfaces, et la gestion des liens. + +**Prérequis** : Avant d'utiliser ce guide, assurez-vous d'avoir : + +- Complété le [Guide de Provisionnement des Dispositifs](contribute-provisioning.md) +- Votre DZD est entièrement opérationnel avec les deux agents de Configuration et de Télémétrie en cours d'exécution + +--- + +## Mises à Jour des Dispositifs + +Utilisez `doublezero device update` pour modifier les paramètres du dispositif après le provisionnement initial. + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**Options de mise à jour courantes :** + +| Option | Description | +|--------|-------------| +| `--device-type ` | Changer le mode de fonctionnement : `hybrid`, `transit`, `edge` (voir [Types de Dispositifs](contribute-provisioning.md#understanding-device-types)) | +| `--location ` | Déplacer le dispositif vers un emplacement différent | +| `--metrics-publisher ` | Changer la clé de publication de métriques | + +--- + +## Mises à Jour des Interfaces + +Utilisez `doublezero device interface update` pour modifier les interfaces existantes. Cette commande accepte les mêmes options que `interface create`. + +```bash +doublezero device interface update [OPTIONS] +``` + +Pour la liste complète des options d'interface incluant les paramètres CYOA/DIA, voir [Création d'Interfaces](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices). + +**Exemple - Ajouter des paramètres CYOA à une interface existante :** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### Lister les Interfaces + +```bash +doublezero device interface list # Toutes les interfaces sur tous les dispositifs +doublezero device interface list # Interfaces pour un dispositif spécifique +``` + +--- + +## Mise à Niveau de l'Agent de Configuration + +Lorsqu'une nouvelle version de l'Agent de Configuration est publiée, suivez ces étapes pour mettre à niveau. + +### 1. Télécharger la dernière version + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Arrêter l'agent + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. Supprimer l'ancienne version + +D'abord, trouvez le nom de fichier de l'ancienne version : +``` +switch# show extensions +``` + +Exécutez les commandes suivantes pour supprimer l'ancienne version. Remplacez `` par l'ancienne version de la sortie ci-dessus : +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. Installer la nouvelle version + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Réactiver l'agent + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. Vérifier la mise à niveau + +Le Statut devrait être "A, I, B". +``` +switch# show extensions +``` + +### 7. Vérifier la Sortie de Log de l'Agent de Configuration + +``` +show agent doublezero-agent log +``` + +--- + +## Mise à Niveau de l'Agent de Télémétrie + +Lorsqu'une nouvelle version de l'Agent de Télémétrie est publiée, suivez ces étapes pour mettre à niveau. + +### 1. Télécharger la dernière version + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Arrêter l'agent + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. Supprimer l'ancienne version + +D'abord, trouvez le nom de fichier de l'ancienne version : +``` +switch# show extensions +``` + +Exécutez les commandes suivantes pour supprimer l'ancienne version. Remplacez `` par l'ancienne version de la sortie ci-dessus : +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. Installer la nouvelle version + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Réactiver l'agent + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. Vérifier la mise à niveau + +Le Statut devrait être "A, I, B". +``` +switch# show extensions +``` + +### 7. Vérifier la Sortie de Log de l'Agent de Télémétrie + +``` +show agent doublezero-telemetry log +``` + +--- + +## Surveillance + +> ⚠️ **Important :** +> +> 1. Pour les exemples de configuration ci-dessous, veuillez tenir compte du fait que vos agents utilisent ou non un VRF de gestion. +> 2. L'agent de configuration et l'agent de télémétrie utilisent le même port d'écoute (:8080) pour leur endpoint de métriques par défaut. Si vous activez les métriques sur les deux, utilisez le flag `-metrics-addr` pour définir des ports d'écoute uniques pour chaque agent. + +### Métriques de l'Agent de Configuration + +L'agent de configuration sur le dispositif DoubleZero a la capacité d'exposer des métriques compatibles Prometheus en définissant le flag `-metrics-enable` dans la configuration du démon `doublezero-agent`. Le port d'écoute par défaut est tcp/8080 mais peut être changé pour s'adapter à l'environnement via `-metrics-addr` : +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +Les métriques spécifiques à DoubleZero suivantes sont exposées avec les métriques de runtime spécifiques à go : +``` +$ curl -s 10.0.0.11:2112/metrics | grep doublezero + +# HELP doublezero_agent_apply_config_errors_total Number of errors encountered while applying config to the device +# TYPE doublezero_agent_apply_config_errors_total counter +doublezero_agent_apply_config_errors_total 0 + +# HELP doublezero_agent_bgp_neighbors_errors_total Number of errors encountered while retrieving BGP neighbors from the device +# TYPE doublezero_agent_bgp_neighbors_errors_total counter +doublezero_agent_bgp_neighbors_errors_total 0 + +# HELP doublezero_agent_build_info Build information of the agent +# TYPE doublezero_agent_build_info gauge +doublezero_agent_build_info{commit="4378018f",date="2025-09-23T14:07:48Z",version="0.6.5~git20250923140746.4378018f"} 1 + +# HELP doublezero_agent_get_config_errors_total Number of errors encountered while getting config from the controller +# TYPE doublezero_agent_get_config_errors_total counter +doublezero_agent_get_config_errors_total 0 +``` + +#### Erreurs à Haute Signification + +- `up` — C'est la métrique de série temporelle générée automatiquement par Prometheus si l'instance de scrape est saine et accessible. Si ce n'est pas le cas, soit l'agent n'est pas accessible, soit l'agent n'est pas en cours d'exécution. +- `doublezero_agent_apply_config_errors_total` — La configuration tentant d'être appliquée par l'agent a échoué. Dans cette situation, les utilisateurs ne pourront pas s'intégrer au dispositif et les modifications de configuration onchain ne seront pas appliquées jusqu'à ce que cela soit résolu. +- `doublezero_agent_get_config_errors_total` — Cela signale que l'agent de configuration local ne peut pas communiquer avec le contrôleur DoubleZero. Dans la plupart des cas, cela peut être dû à un problème de connectivité de gestion sur le dispositif. Similaire à la métrique ci-dessus, les utilisateurs ne pourront pas s'intégrer au dispositif et les modifications de configuration onchain ne seront pas appliquées jusqu'à ce que cela soit résolu. + +### Métriques de l'Agent de Télémétrie + +L'agent de télémétrie sur le dispositif DoubleZero a la capacité d'exposer des métriques compatibles Prometheus en définissant le flag `-metrics-enable` dans la configuration du démon `doublezero-telemetry`. Le port d'écoute par défaut est tcp/8080 mais peut être changé pour s'adapter à l'environnement via `-metrics-addr` : +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +Les métriques spécifiques à DoubleZero suivantes sont exposées avec les métriques de runtime spécifiques à go : +``` +$ curl -s 10.0.0.11:2113/metrics | grep doublezero + +# HELP doublezero_device_telemetry_agent_build_info Build information of the device telemetry agent +# TYPE doublezero_device_telemetry_agent_build_info gauge +doublezero_device_telemetry_agent_build_info{commit="4378018f",date="2025-09-23T14:07:45Z",version="0.6.5~git20250923140743.4378018f"} 1 + +# HELP doublezero_device_telemetry_agent_errors_total Number of errors encountered +# TYPE doublezero_device_telemetry_agent_errors_total counter +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_program_load"} 7 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_write_samples"} 8 +doublezero_device_telemetry_agent_errors_total{error_type="collector_submit_samples_on_close"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_getting_local_interfaces"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_finding_local_tunnel"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_link_tunnel_net_invalid"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_initialize_account"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_retries_exhausted"} 0 + +# HELP doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels Number of local tunnel interfaces not found during peer discovery +# TYPE doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels gauge +doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels{local_device_pk="8PQkip3CxWhQTdP7doCyhT2kwjSL2csRTdnRg2zbDPs1"} 0 +``` + +#### Erreurs à Haute Signification + +- `up` — C'est la métrique de série temporelle générée automatiquement par Prometheus si l'instance de scrape est saine et accessible. Si ce n'est pas le cas, soit l'agent n'est pas accessible, soit l'agent n'est pas en cours d'exécution. +- `doublezero_device_telemetry_agent_errors_total` avec un `error_type` de `submitter_failed_to_write_samples` — C'est un signal que l'agent de télémétrie ne peut pas écrire d'échantillons onchain, ce qui pourrait être dû à des problèmes de connectivité de gestion sur le dispositif. + +--- + +## Gestion des Liens + +### Drainage des Liens + +Le drainage des liens permet aux contributeurs de retirer gracieusement un lien du service actif pour la maintenance ou le dépannage. Il y a deux états de drainage : + +| Statut | Comportement IS-IS | Description | +|--------|-------------------|-------------| +| `soft-drained` | Métrique fixée à 1 000 000 | Le lien est déprioritisé. Le trafic utilisera des chemins alternatifs si disponibles, mais utilisera encore ce lien si c'est la seule option. | +| `hard-drained` | Mis en passif | Le lien est complètement retiré du routage. Aucun trafic ne traversera ce lien. | + +### Transitions d'État + +Les transitions d'état suivantes sont autorisées : + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (doit passer par soft-drained d'abord) +``` + +> ⚠️ **Note :** +> Vous ne pouvez pas passer directement de `hard-drained` à `activated`. Vous devez d'abord passer à `soft-drained`, puis à `activated`. + +### Drainer Doucement un Lien + +Le drainage doux déprioritise un lien en fixant sa métrique IS-IS à 1 000 000. Le trafic préférera les chemins alternatifs mais peut encore utiliser ce lien si nécessaire. + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### Drainer Fortement un Lien + +Le drainage fort retire le lien du routage entièrement en mettant IS-IS en mode passif. Aucun trafic ne traversera ce lien. + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### Restaurer un Lien en Service Actif + +Pour remettre un lien drainé en fonctionnement normal : + +```bash +# Depuis soft-drained +doublezero link update --pubkey --status activated + +# Depuis hard-drained (doit passer par soft-drained d'abord) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### Remplacement de Délai + +La fonctionnalité de remplacement de délai permet aux contributeurs de modifier temporairement le délai effectif d'un lien sans modifier la valeur de délai mesurée réelle. Ceci est utile pour démoter temporairement un lien du chemin principal au chemin secondaire. + +### Définir un Remplacement de Délai + +Pour remplacer le délai d'un lien (le rendant moins préféré dans le routage) : + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +Les valeurs valides sont de `0.01` à `1000` millisecondes. + +### Effacer un Remplacement de Délai + +Pour supprimer le remplacement et revenir à l'utilisation du délai mesuré réel : + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **Note :** +> Lorsqu'un lien est soft-drained, `delay_ms` et `delay_override_ms` sont tous deux remplacés à 1000ms (1 seconde) pour assurer la déprioritisation. diff --git a/docs/contribute-operations.it.md b/docs/contribute-operations.it.md new file mode 100644 index 0000000..7566de2 --- /dev/null +++ b/docs/contribute-operations.it.md @@ -0,0 +1,366 @@ +# Guida Operativa per i Contributori +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +Questa guida descrive le attività operative continuative per la manutenzione dei DoubleZero Device (DZD), inclusi gli aggiornamenti degli agent, gli aggiornamenti di dispositivi/interfacce e la gestione dei link. + +**Prerequisiti**: Prima di utilizzare questa guida, assicurati di aver: + +- Completato la [Guida al Provisioning dei Dispositivi](contribute-provisioning.md) +- Il tuo DZD è completamente operativo con entrambi gli agent Config e Telemetry in esecuzione + +--- + +## Aggiornamenti del Dispositivo + +Usa `doublezero device update` per modificare le impostazioni del dispositivo dopo il provisioning iniziale. + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**Opzioni di aggiornamento comuni:** + +| Opzione | Descrizione | +|---------|-------------| +| `--device-type ` | Cambia modalità operativa: `hybrid`, `transit`, `edge` (vedi [Tipi di Dispositivo](contribute-provisioning.md#understanding-device-types)) | +| `--location ` | Sposta il dispositivo in una posizione diversa | +| `--metrics-publisher ` | Cambia la metrics publisher key | + +--- + +## Aggiornamenti delle Interfacce + +Usa `doublezero device interface update` per modificare le interfacce esistenti. Questo comando accetta le stesse opzioni di `interface create`. + +```bash +doublezero device interface update [OPTIONS] +``` + +Per l'elenco completo delle opzioni dell'interfaccia incluse le impostazioni CYOA/DIA, vedi [Creazione delle Interfacce](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices). + +**Esempio - Aggiungere impostazioni CYOA a un'interfaccia esistente:** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### Elenca le Interfacce + +```bash +doublezero device interface list # All interfaces across all devices +doublezero device interface list # Interfaces for a specific device +``` + +--- + +## Aggiornamento del Config Agent + +Quando viene rilasciata una nuova versione del Config Agent, segui questi passaggi per aggiornare. + +### 1. Scarica la versione più recente + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Spegni l'agent + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. Rimuovi la vecchia versione + +Prima, trova il nome del file della vecchia versione: +``` +switch# show extensions +``` + +Esegui i seguenti comandi per rimuovere la vecchia versione. Sostituisci `` con la versione precedente dall'output sopra: +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. Installa la nuova versione + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Riavvia l'agent + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. Verifica l'aggiornamento + +Lo stato dovrebbe essere "A, I, B". +``` +switch# show extensions +``` + +### 7. Verifica l'Output del Log del Config Agent + +``` +show agent doublezero-agent log +``` + +--- + +## Aggiornamento del Telemetry Agent + +Quando viene rilasciata una nuova versione del Telemetry Agent, segui questi passaggi per aggiornare. + +### 1. Scarica la versione più recente + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Spegni l'agent + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. Rimuovi la vecchia versione + +Prima, trova il nome del file della vecchia versione: +``` +switch# show extensions +``` + +Esegui i seguenti comandi per rimuovere la vecchia versione. Sostituisci `` con la versione precedente dall'output sopra: +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. Installa la nuova versione + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Riavvia l'agent + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. Verifica l'aggiornamento + +Lo stato dovrebbe essere "A, I, B". +``` +switch# show extensions +``` + +### 7. Verifica l'Output del Log del Telemetry Agent + +``` +show agent doublezero-telemetry log +``` + +--- + +## Monitoraggio + +> ⚠️ **Importante:** +> +> 1. Per gli esempi di configurazione di seguito, prestare attenzione a se i propri agent utilizzano un VRF di gestione. +> 2. Il configuration agent e il telemetry agent utilizzano la stessa porta di ascolto (:8080) per il loro endpoint delle metriche per impostazione predefinita. Se si abilitano le metriche su entrambi, usare il flag `-metrics-addr` per impostare porte di ascolto univoche per ciascun agent. + +### Metriche del Config Agent + +Il configuration agent sul dispositivo DoubleZero ha la capacità di esporre metriche compatibili con prometheus impostando il flag `-metrics-enable` nella configurazione del daemon `doublezero-agent`. La porta di ascolto predefinita è tcp/8080 ma può essere modificata per adattarsi all'ambiente tramite `-metrics-addr`: +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +Le seguenti metriche specifiche di DoubleZero sono esposte insieme alle metriche di runtime go-specific: +``` +$ curl -s 10.0.0.11:2112/metrics | grep doublezero + +# HELP doublezero_agent_apply_config_errors_total Number of errors encountered while applying config to the device +# TYPE doublezero_agent_apply_config_errors_total counter +doublezero_agent_apply_config_errors_total 0 + +# HELP doublezero_agent_bgp_neighbors_errors_total Number of errors encountered while retrieving BGP neighbors from the device +# TYPE doublezero_agent_bgp_neighbors_errors_total counter +doublezero_agent_bgp_neighbors_errors_total 0 + +# HELP doublezero_agent_build_info Build information of the agent +# TYPE doublezero_agent_build_info gauge +doublezero_agent_build_info{commit="4378018f",date="2025-09-23T14:07:48Z",version="0.6.5~git20250923140746.4378018f"} 1 + +# HELP doublezero_agent_get_config_errors_total Number of errors encountered while getting config from the controller +# TYPE doublezero_agent_get_config_errors_total counter +doublezero_agent_get_config_errors_total 0 +``` + +#### Errori ad Alto Segnale + +- `up` - Questa è la metrica timeseries generata automaticamente da prometheus se l'istanza di scraping è integra e raggiungibile. In caso contrario, l'agent non è raggiungibile o non è in esecuzione. +- `doublezero_agent_apply_config_errors_total` - La configurazione che l'agent sta tentando di applicare è fallita. In questa situazione, gli utenti non saranno in grado di eseguire l'onboarding sul dispositivo e le modifiche alla configurazione on-chain non verranno applicate finché questo non viene risolto. +- `doublezero_agent_get_config_errors_total` - Questo segnala che il configuration agent locale non riesce a comunicare con il controller DoubleZero. Nella maggior parte dei casi, ciò può essere dovuto a un problema con la connettività di gestione sul dispositivo. Analogamente alla metrica sopra, gli utenti non saranno in grado di eseguire l'onboarding sul dispositivo e le modifiche alla configurazione on-chain non verranno applicate finché questo non viene risolto. + +### Metriche del Telemetry Agent + +Il telemetry agent sul dispositivo DoubleZero ha la capacità di esporre metriche compatibili con prometheus impostando il flag `-metrics-enable` nella configurazione del daemon `doublezero-telemetry`. La porta di ascolto predefinita è tcp/8080 ma può essere modificata per adattarsi all'ambiente tramite `-metrics-addr`: +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +Le seguenti metriche specifiche di DoubleZero sono esposte insieme alle metriche di runtime go-specific: +``` +$ curl -s 10.0.0.11:2113/metrics | grep doublezero + +# HELP doublezero_device_telemetry_agent_build_info Build information of the device telemetry agent +# TYPE doublezero_device_telemetry_agent_build_info gauge +doublezero_device_telemetry_agent_build_info{commit="4378018f",date="2025-09-23T14:07:45Z",version="0.6.5~git20250923140743.4378018f"} 1 + +# HELP doublezero_device_telemetry_agent_errors_total Number of errors encountered +# TYPE doublezero_device_telemetry_agent_errors_total counter +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_program_load"} 7 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_write_samples"} 8 +doublezero_device_telemetry_agent_errors_total{error_type="collector_submit_samples_on_close"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_getting_local_interfaces"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_finding_local_tunnel"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_link_tunnel_net_invalid"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_initialize_account"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_retries_exhausted"} 0 + +# HELP doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels Number of local tunnel interfaces not found during peer discovery +# TYPE doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels gauge +doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels{local_device_pk="8PQkip3CxWhQTdP7doCyhT2kwjSL2csRTdnRg2zbDPs1"} 0 +``` + +#### Errori ad Alto Segnale + +- `up` - Questa è la metrica timeseries generata automaticamente da prometheus se l'istanza di scraping è integra e raggiungibile. In caso contrario, l'agent non è raggiungibile o non è in esecuzione. +- `doublezero_device_telemetry_agent_errors_total` con un `error_type` di `submitter_failed_to_write_samples` - Questo è un segnale che il telemetry agent non riesce a scrivere i campioni on-chain, che potrebbe essere dovuto a problemi di connettività di gestione sul dispositivo. + +--- + +## Gestione dei Link + +### Drenaggio dei Link + +Il drenaggio dei link consente ai contributori di rimuovere gradualmente un link dal servizio attivo per manutenzione o risoluzione dei problemi. Ci sono due stati di drenaggio: + +| Stato | Comportamento IS-IS | Descrizione | +|-------|---------------------|-------------| +| `soft-drained` | Metrica impostata a 1.000.000 | Il link viene depriorizzato. Il traffico utilizzerà percorsi alternativi se disponibili, ma utilizzerà comunque questo link se è l'unica opzione. | +| `hard-drained` | Impostato a passivo | Il link viene completamente rimosso dal routing. Nessun traffico attraverserà questo link. | + +### Transizioni di Stato + +Le seguenti transizioni di stato sono consentite: + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (must go through soft-drained first) +``` + +> ⚠️ **Nota:** +> Non è possibile passare direttamente da `hard-drained` ad `activated`. Devi prima passare a `soft-drained`, poi ad `activated`. + +### Soft Drain di un Link + +Il soft drain depriorizza un link impostando la sua metrica IS-IS a 1.000.000. Il traffico preferirà percorsi alternativi ma può comunque utilizzare questo link se necessario. + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### Hard Drain di un Link + +L'hard drain rimuove completamente il link dal routing impostando IS-IS in modalità passiva. Nessun traffico attraverserà questo link. + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### Ripristino di un Link all'Attivo + +Per riportare un link drenato al normale funzionamento: + +```bash +# From soft-drained +doublezero link update --pubkey --status activated + +# From hard-drained (must go through soft-drained first) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### Override del Ritardo + +La funzionalità di override del ritardo consente ai contributori di modificare temporaneamente il ritardo effettivo di un link senza modificare il valore di ritardo misurato effettivo. Questo è utile per declassare temporaneamente un link da percorso primario a secondario. + +### Imposta un Override del Ritardo + +Per sovrascrivere il ritardo di un link (rendendolo meno preferito nel routing): + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +I valori validi sono da `0.01` a `1000` millisecondi. + +### Cancella un Override del Ritardo + +Per rimuovere l'override e tornare a utilizzare il ritardo misurato effettivo: + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **Nota:** +> Quando un link è in soft-drain, sia `delay_ms` che `delay_override_ms` vengono sovrascritti a 1000ms (1 secondo) per garantire la depriorizzazione. diff --git a/docs/contribute-operations.ja.md b/docs/contribute-operations.ja.md new file mode 100644 index 0000000..624e572 --- /dev/null +++ b/docs/contribute-operations.ja.md @@ -0,0 +1,366 @@ +# コントリビューター向け運用ガイド +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +このガイドでは、エージェントのアップグレード、デバイス/インターフェースの更新、リンク管理など、DoubleZeroデバイス(DZD)を維持するための継続的な運用タスクについて説明します。 + +**前提条件**:このガイドを使用する前に、以下を完了していることを確認してください: + +- [デバイスプロビジョニングガイド](contribute-provisioning.md)の完了 +- ConfigエージェントとTelemetryエージェントの両方が稼働しているDZDが完全に動作していること + +--- + +## デバイスの更新 + +初期プロビジョニング後にデバイス設定を変更するには、`doublezero device update`を使用します。 + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**一般的な更新オプション:** + +| オプション | 説明 | +|--------|-------------| +| `--device-type ` | 動作モードを変更:`hybrid`、`transit`、`edge`([デバイスタイプ](contribute-provisioning.md#understanding-device-types)を参照) | +| `--location ` | デバイスを別の場所に移動 | +| `--metrics-publisher ` | メトリクスパブリッシャーキーを変更 | + +--- + +## インターフェースの更新 + +既存のインターフェースを変更するには、`doublezero device interface update`を使用します。このコマンドは`interface create`と同じオプションを受け付けます。 + +```bash +doublezero device interface update [OPTIONS] +``` + +CYOA/DIA設定を含むインターフェースオプションの完全なリストについては、[インターフェースの作成](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices)を参照してください。 + +**例 - 既存のインターフェースにCYOA設定を追加する:** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### インターフェースの一覧表示 + +```bash +doublezero device interface list # すべてのデバイスのすべてのインターフェース +doublezero device interface list # 特定のデバイスのインターフェース +``` + +--- + +## Configエージェントのアップグレード + +Configエージェントの新しいバージョンがリリースされた場合は、以下の手順に従ってアップグレードしてください。 + +### 1. 最新バージョンをダウンロードする + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. エージェントをシャットダウンする + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. 古いバージョンを削除する + +まず、古いバージョンのファイル名を確認します: +``` +switch# show extensions +``` + +以下のコマンドを実行して古いバージョンを削除します。``を上記の出力から得た古いバージョンに置き換えてください: +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. 新しいバージョンをインストールする + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. エージェントのシャットダウンを解除する + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. アップグレードを確認する + +ステータスが「A, I, B」になっていることを確認します。 +``` +switch# show extensions +``` + +### 7. ConfigエージェントのログOutputを確認する + +``` +show agent doublezero-agent log +``` + +--- + +## Telemetryエージェントのアップグレード + +Telemetryエージェントの新しいバージョンがリリースされた場合は、以下の手順に従ってアップグレードしてください。 + +### 1. 最新バージョンをダウンロードする + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. エージェントをシャットダウンする + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. 古いバージョンを削除する + +まず、古いバージョンのファイル名を確認します: +``` +switch# show extensions +``` + +以下のコマンドを実行して古いバージョンを削除します。``を上記の出力から得た古いバージョンに置き換えてください: +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. 新しいバージョンをインストールする + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. エージェントのシャットダウンを解除する + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. アップグレードを確認する + +ステータスが「A, I, B」になっていることを確認します。 +``` +switch# show extensions +``` + +### 7. TelemetryエージェントのログOutputを確認する + +``` +show agent doublezero-telemetry log +``` + +--- + +## モニタリング + +> ⚠️ **重要:** +> +> 1. 以下の設定例では、エージェントが管理VRFを使用しているかどうかに注意してください。 +> 2. ConfigエージェントとTelemetryエージェントは、デフォルトでメトリクスエンドポイントに同じリスニングポート(:8080)を使用します。両方でメトリクスを有効にする場合は、`-metrics-addr`フラグを使用して各エージェントに固有のリスニングポートを設定してください。 + +### Configエージェントのメトリクス + +DoubleZeroデバイス上のConfigエージェントは、`doublezero-agent`デーモン設定で`-metrics-enable`フラグを設定することで、Prometheus互換のメトリクスを公開できます。デフォルトのリスニングポートはtcp/8080ですが、`-metrics-addr`で環境に合わせて変更できます: +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +Goランタイムメトリクスとともに、以下のDoubleZero固有のメトリクスが公開されます: +``` +$ curl -s 10.0.0.11:2112/metrics | grep doublezero + +# HELP doublezero_agent_apply_config_errors_total Number of errors encountered while applying config to the device +# TYPE doublezero_agent_apply_config_errors_total counter +doublezero_agent_apply_config_errors_total 0 + +# HELP doublezero_agent_bgp_neighbors_errors_total Number of errors encountered while retrieving BGP neighbors from the device +# TYPE doublezero_agent_bgp_neighbors_errors_total counter +doublezero_agent_bgp_neighbors_errors_total 0 + +# HELP doublezero_agent_build_info Build information of the agent +# TYPE doublezero_agent_build_info gauge +doublezero_agent_build_info{commit="4378018f",date="2025-09-23T14:07:48Z",version="0.6.5~git20250923140746.4378018f"} 1 + +# HELP doublezero_agent_get_config_errors_total Number of errors encountered while getting config from the controller +# TYPE doublezero_agent_get_config_errors_total counter +doublezero_agent_get_config_errors_total 0 +``` + +#### 重要なエラーシグナル + +- `up` - Prometheusがスクレイプインスタンスが正常で到達可能な場合に自動的に生成する時系列メトリクスです。これが0の場合、エージェントに到達できないか、エージェントが稼働していない可能性があります。 +- `doublezero_agent_apply_config_errors_total` - エージェントが適用しようとしている設定が失敗しています。この状況では、これが解決されるまでユーザーはデバイスにオンボードできず、オンチェーンの設定変更も適用されません。 +- `doublezero_agent_get_config_errors_total` - ローカルConfigエージェントがDoubleZeroコントローラーと通信できないことを示します。ほとんどの場合、デバイスの管理接続に問題がある可能性があります。上記のメトリクスと同様に、これが解決されるまでユーザーはデバイスにオンボードできず、オンチェーンの設定変更も適用されません。 + +### Telemetryエージェントのメトリクス + +DoubleZeroデバイス上のTelemetryエージェントは、`doublezero-telemetry`デーモン設定で`-metrics-enable`フラグを設定することで、Prometheus互換のメトリクスを公開できます。デフォルトのリスニングポートはtcp/8080ですが、`-metrics-addr`で環境に合わせて変更できます: +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +Goランタイムメトリクスとともに、以下のDoubleZero固有のメトリクスが公開されます: +``` +$ curl -s 10.0.0.11:2113/metrics | grep doublezero + +# HELP doublezero_device_telemetry_agent_build_info Build information of the device telemetry agent +# TYPE doublezero_device_telemetry_agent_build_info gauge +doublezero_device_telemetry_agent_build_info{commit="4378018f",date="2025-09-23T14:07:45Z",version="0.6.5~git20250923140743.4378018f"} 1 + +# HELP doublezero_device_telemetry_agent_errors_total Number of errors encountered +# TYPE doublezero_device_telemetry_agent_errors_total counter +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_program_load"} 7 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_write_samples"} 8 +doublezero_device_telemetry_agent_errors_total{error_type="collector_submit_samples_on_close"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_getting_local_interfaces"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_finding_local_tunnel"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_link_tunnel_net_invalid"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_initialize_account"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_retries_exhausted"} 0 + +# HELP doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels Number of local tunnel interfaces not found during peer discovery +# TYPE doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels gauge +doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels{local_device_pk="8PQkip3CxWhQTdP7doCyhT2kwjSL2csRTdnRg2zbDPs1"} 0 +``` + +#### 重要なエラーシグナル + +- `up` - Prometheusがスクレイプインスタンスが正常で到達可能な場合に自動的に生成する時系列メトリクスです。これが0の場合、エージェントに到達できないか、エージェントが稼働していない可能性があります。 +- `error_type`が`submitter_failed_to_write_samples`の`doublezero_device_telemetry_agent_errors_total` - Telemetryエージェントがオンチェーンにサンプルを書き込めないことを示すシグナルで、デバイスの管理接続の問題が原因である可能性があります。 + +--- + +## リンク管理 + +### リンクドレイン + +リンクドレインにより、コントリビューターはメンテナンスやトラブルシューティングのために、アクティブなサービスからリンクを正常に削除できます。2つのドレイン状態があります: + +| ステータス | IS-IS動作 | 説明 | +|--------|----------------|-------------| +| `soft-drained` | メトリクスを1,000,000に設定 | リンクの優先度が下げられます。代替パスが利用可能な場合はそちらを使用しますが、他に選択肢がない場合はこのリンクを使用します。 | +| `hard-drained` | パッシブに設定 | リンクがルーティングから完全に削除されます。このリンクを通過するトラフィックはありません。 | + +### 状態遷移 + +以下の状態遷移が許可されています: + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (must go through soft-drained first) +``` + +> ⚠️ **注意:** +> `hard-drained`から直接`activated`に移行することはできません。まず`soft-drained`に遷移してから`activated`に移行する必要があります。 + +### リンクのソフトドレイン + +ソフトドレインは、IS-ISメトリクスを1,000,000に設定することでリンクの優先度を下げます。トラフィックは代替パスを優先しますが、必要な場合はこのリンクを使用することもできます。 + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### リンクのハードドレイン + +ハードドレインは、IS-ISをパッシブモードに設定することでリンクをルーティングから完全に削除します。このリンクを通過するトラフィックはありません。 + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### リンクをアクティブに復元する + +ドレインされたリンクを通常の動作に戻すには: + +```bash +# soft-drainedから +doublezero link update --pubkey --status activated + +# hard-drainedから(先にsoft-drainedを経由する必要があります) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### 遅延オーバーライド + +遅延オーバーライド機能により、コントリビューターは実際に測定された遅延値を変更せずに、リンクの有効な遅延を一時的に変更できます。これは、リンクをプライマリパスからセカンダリパスに一時的に降格する場合に役立ちます。 + +### 遅延オーバーライドを設定する + +リンクの遅延をオーバーライドする(ルーティングでの優先度を下げる)には: + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +有効な値は`0.01`〜`1000`ミリ秒です。 + +### 遅延オーバーライドを解除する + +オーバーライドを削除して実際に測定された遅延の使用に戻るには: + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **注意:** +> リンクがsoft-drainedの場合、優先度を下げるために`delay_ms`と`delay_override_ms`の両方が1000ms(1秒)にオーバーライドされます。 diff --git a/docs/contribute-operations.ko.md b/docs/contribute-operations.ko.md new file mode 100644 index 0000000..e56069f --- /dev/null +++ b/docs/contribute-operations.ko.md @@ -0,0 +1,366 @@ +# 기여자를 위한 운영 가이드 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +이 가이드는 에이전트 업그레이드, 장치/인터페이스 업데이트 및 링크 관리를 포함하여 DoubleZero 장치(DZD)를 유지하기 위한 지속적인 운영 작업을 다룹니다. + +**사전 요구사항**: 이 가이드를 사용하기 전에 다음을 완료해야 합니다: + +- [장치 프로비저닝 가이드](contribute-provisioning.md) 완료 +- Config 및 Telemetry 에이전트가 모두 실행 중인 상태로 DZD가 완전히 운영 중 + +--- + +## 장치 업데이트 + +초기 프로비저닝 후 장치 설정을 수정하려면 `doublezero device update`를 사용합니다. + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**일반적인 업데이트 옵션:** + +| 옵션 | 설명 | +|--------|-------------| +| `--device-type ` | 운영 모드 변경: `hybrid`, `transit`, `edge` ([장치 유형](contribute-provisioning.md#understanding-device-types) 참조) | +| `--location ` | 장치를 다른 위치로 이동 | +| `--metrics-publisher ` | 메트릭 발행자 키 변경 | + +--- + +## 인터페이스 업데이트 + +기존 인터페이스를 수정하려면 `doublezero device interface update`를 사용합니다. 이 명령은 `interface create`와 동일한 옵션을 허용합니다. + +```bash +doublezero device interface update [OPTIONS] +``` + +CYOA/DIA 설정을 포함한 전체 인터페이스 옵션 목록은 [인터페이스 생성](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices)을 참조하세요. + +**예시 - 기존 인터페이스에 CYOA 설정 추가:** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### 인터페이스 목록 + +```bash +doublezero device interface list # 모든 장치의 모든 인터페이스 +doublezero device interface list # 특정 장치의 인터페이스 +``` + +--- + +## Config Agent 업그레이드 + +새 버전의 Config Agent가 출시되면 다음 단계에 따라 업그레이드합니다. + +### 1. 최신 버전 다운로드 + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. 에이전트 종료 + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. 이전 버전 제거 + +먼저 이전 버전의 파일명을 찾습니다: +``` +switch# show extensions +``` + +다음 명령을 실행하여 이전 버전을 제거합니다. ``을 위 출력의 이전 버전으로 교체합니다: +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. 새 버전 설치 + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. 에이전트 언셧 + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. 업그레이드 확인 + +상태는 "A, I, B"여야 합니다. +``` +switch# show extensions +``` + +### 7. Config Agent 로그 출력 확인 + +``` +show agent doublezero-agent log +``` + +--- + +## Telemetry Agent 업그레이드 + +새 버전의 Telemetry Agent가 출시되면 다음 단계에 따라 업그레이드합니다. + +### 1. 최신 버전 다운로드 + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. 에이전트 종료 + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. 이전 버전 제거 + +먼저 이전 버전의 파일명을 찾습니다: +``` +switch# show extensions +``` + +다음 명령을 실행하여 이전 버전을 제거합니다. ``을 위 출력의 이전 버전으로 교체합니다: +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. 새 버전 설치 + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. 에이전트 언셧 + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. 업그레이드 확인 + +상태는 "A, I, B"여야 합니다. +``` +switch# show extensions +``` + +### 7. Telemetry Agent 로그 출력 확인 + +``` +show agent doublezero-telemetry log +``` + +--- + +## 모니터링 + +> ⚠️ **중요:** +> +> 1. 아래 구성 예시의 경우 에이전트가 관리 VRF를 사용하는지 여부에 주의하세요. +> 2. 구성 에이전트와 텔레메트리 에이전트는 기본적으로 메트릭 엔드포인트에 동일한 리스닝 포트(:8080)를 사용합니다. 둘 다에서 메트릭을 활성화하는 경우 `-metrics-addr` 플래그를 사용하여 각 에이전트에 고유한 리스닝 포트를 설정하세요. + +### Config Agent 메트릭 + +DoubleZero 장치의 구성 에이전트는 `doublezero-agent` 데몬 구성에서 `-metrics-enable` 플래그를 설정하여 Prometheus 호환 메트릭을 노출하는 기능이 있습니다. 기본 리스닝 포트는 tcp/8080이지만 `-metrics-addr`를 통해 환경에 맞게 변경할 수 있습니다: +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +go 특정 런타임 메트릭과 함께 다음 DoubleZero 특정 메트릭이 노출됩니다: +``` +$ curl -s 10.0.0.11:2112/metrics | grep doublezero + +# HELP doublezero_agent_apply_config_errors_total Number of errors encountered while applying config to the device +# TYPE doublezero_agent_apply_config_errors_total counter +doublezero_agent_apply_config_errors_total 0 + +# HELP doublezero_agent_bgp_neighbors_errors_total Number of errors encountered while retrieving BGP neighbors from the device +# TYPE doublezero_agent_bgp_neighbors_errors_total counter +doublezero_agent_bgp_neighbors_errors_total 0 + +# HELP doublezero_agent_build_info Build information of the agent +# TYPE doublezero_agent_build_info gauge +doublezero_agent_build_info{commit="4378018f",date="2025-09-23T14:07:48Z",version="0.6.5~git20250923140746.4378018f"} 1 + +# HELP doublezero_agent_get_config_errors_total Number of errors encountered while getting config from the controller +# TYPE doublezero_agent_get_config_errors_total counter +doublezero_agent_get_config_errors_total 0 +``` + +#### 고신호 오류 + +- `up` - 스크레이프 인스턴스가 정상적이고 도달 가능한 경우 prometheus에 의해 자동으로 생성되는 시계열 메트릭입니다. 그렇지 않은 경우 에이전트에 도달할 수 없거나 에이전트가 실행되지 않는 것입니다. +- `doublezero_agent_apply_config_errors_total` - 에이전트가 적용하려는 구성이 실패했습니다. 이 상황에서 사용자는 장치에 온보딩할 수 없으며 이것이 해결될 때까지 온체인 구성 변경이 적용되지 않습니다. +- `doublezero_agent_get_config_errors_total` - 로컬 구성 에이전트가 DoubleZero 컨트롤러와 통신할 수 없다는 신호입니다. 대부분의 경우 장치의 관리 연결 문제로 인한 것입니다. 위의 메트릭과 마찬가지로 사용자는 장치에 온보딩할 수 없으며 이것이 해결될 때까지 온체인 구성 변경이 적용되지 않습니다. + +### Telemetry Agent 메트릭 + +DoubleZero 장치의 텔레메트리 에이전트는 `doublezero-telemetry` 데몬 구성에서 `-metrics-enable` 플래그를 설정하여 Prometheus 호환 메트릭을 노출하는 기능이 있습니다. 기본 리스닝 포트는 tcp/8080이지만 `-metrics-addr`를 통해 환경에 맞게 변경할 수 있습니다: +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +go 특정 런타임 메트릭과 함께 다음 DoubleZero 특정 메트릭이 노출됩니다: +``` +$ curl -s 10.0.0.11:2113/metrics | grep doublezero + +# HELP doublezero_device_telemetry_agent_build_info Build information of the device telemetry agent +# TYPE doublezero_device_telemetry_agent_build_info gauge +doublezero_device_telemetry_agent_build_info{commit="4378018f",date="2025-09-23T14:07:45Z",version="0.6.5~git20250923140743.4378018f"} 1 + +# HELP doublezero_device_telemetry_agent_errors_total Number of errors encountered +# TYPE doublezero_device_telemetry_agent_errors_total counter +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_program_load"} 7 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_write_samples"} 8 +doublezero_device_telemetry_agent_errors_total{error_type="collector_submit_samples_on_close"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_getting_local_interfaces"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_finding_local_tunnel"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_link_tunnel_net_invalid"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_initialize_account"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_retries_exhausted"} 0 + +# HELP doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels Number of local tunnel interfaces not found during peer discovery +# TYPE doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels gauge +doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels{local_device_pk="8PQkip3CxWhQTdP7doCyhT2kwjSL2csRTdnRg2zbDPs1"} 0 +``` + +#### 고신호 오류 + +- `up` - 스크레이프 인스턴스가 정상적이고 도달 가능한 경우 prometheus에 의해 자동으로 생성되는 시계열 메트릭입니다. 그렇지 않은 경우 에이전트에 도달할 수 없거나 에이전트가 실행되지 않는 것입니다. +- `error_type`이 `submitter_failed_to_write_samples`인 `doublezero_device_telemetry_agent_errors_total` - 텔레메트리 에이전트가 온체인으로 샘플을 쓸 수 없다는 신호로, 장치의 관리 연결 문제로 인한 것일 수 있습니다. + +--- + +## 링크 관리 + +### 링크 드레이닝 + +링크 드레이닝을 통해 기여자는 유지보수 또는 문제 해결을 위해 링크를 활성 서비스에서 정상적으로 제거할 수 있습니다. 두 가지 드레인 상태가 있습니다: + +| 상태 | IS-IS 동작 | 설명 | +|--------|----------------|-------------| +| `soft-drained` | 메트릭을 1,000,000으로 설정 | 링크가 우선순위에서 제외됩니다. 대체 경로가 있으면 트래픽이 다른 경로를 사용하지만 이 링크가 유일한 옵션인 경우 여전히 사용됩니다. | +| `hard-drained` | 패시브로 설정 | 링크가 라우팅에서 완전히 제거됩니다. 이 링크를 통해 트래픽이 통과하지 않습니다. | + +### 상태 전환 + +다음 상태 전환이 허용됩니다: + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (먼저 soft-drained를 통해야 함) +``` + +> ⚠️ **참고:** +> `hard-drained`에서 `activated`로 직접 이동할 수 없습니다. 먼저 `soft-drained`로 전환한 다음 `activated`로 전환해야 합니다. + +### 링크 소프트 드레인 + +링크를 소프트 드레인하면 IS-IS 메트릭을 1,000,000으로 설정하여 링크의 우선순위를 낮춥니다. 트래픽은 대체 경로를 선호하지만 필요한 경우 이 링크를 사용할 수 있습니다. + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### 링크 하드 드레인 + +링크를 하드 드레인하면 IS-IS를 패시브 모드로 설정하여 라우팅에서 링크를 완전히 제거합니다. 이 링크를 통해 트래픽이 통과하지 않습니다. + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### 링크를 활성 상태로 복원 + +드레인된 링크를 정상 운영으로 되돌리려면: + +```bash +# soft-drained에서 +doublezero link update --pubkey --status activated + +# hard-drained에서 (먼저 soft-drained를 통해야 함) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### 지연 재정의 + +지연 재정의 기능을 통해 기여자는 실제 측정 지연 값을 수정하지 않고 링크의 유효 지연을 일시적으로 변경할 수 있습니다. 이는 링크를 기본 경로에서 보조 경로로 일시적으로 강등하는 데 유용합니다. + +### 지연 재정의 설정 + +링크의 지연을 재정의하려면(라우팅에서 덜 선호되도록): + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +유효한 값은 `0.01`에서 `1000` 밀리초입니다. + +### 지연 재정의 해제 + +재정의를 제거하고 실제 측정 지연으로 돌아가려면: + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **참고:** +> 링크가 소프트 드레인될 때 `delay_ms`와 `delay_override_ms` 모두 우선순위 해제를 보장하기 위해 1000ms(1초)로 재정의됩니다. diff --git a/docs/contribute-operations.pt.md b/docs/contribute-operations.pt.md new file mode 100644 index 0000000..31157e6 --- /dev/null +++ b/docs/contribute-operations.pt.md @@ -0,0 +1,321 @@ +# Guia de Operações para Contribuidores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +Este guia cobre as tarefas operacionais contínuas para manter seus Dispositivos DoubleZero (DZDs), incluindo atualizações de agentes, atualizações de dispositivos/interfaces e gerenciamento de links. + +**Pré-requisitos**: Antes de usar este guia, certifique-se de ter: + +- Concluído o [Guia de Provisionamento de Dispositivos](contribute-provisioning.md) +- Seu DZD está totalmente operacional com os agentes de Configuração e Telemetria em execução + +--- + +## Atualizações de Dispositivos + +Use `doublezero device update` para modificar a configuração do dispositivo após o provisionamento inicial. + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**Opções de atualização comuns:** + +| Opção | Descrição | +|--------|-------------| +| `--device-type ` | Alterar o modo de operação: `hybrid`, `transit`, `edge` (consulte [Tipos de Dispositivos](contribute-provisioning.md#understanding-device-types)) | +| `--location ` | Mover o dispositivo para um local diferente | +| `--metrics-publisher ` | Alterar a chave do editor de métricas | + +--- + +## Atualizações de Interfaces + +Use `doublezero device interface update` para modificar interfaces existentes. Este comando aceita as mesmas opções que `interface create`. + +```bash +doublezero device interface update [OPTIONS] +``` + +Para a lista completa de opções de interface incluindo configurações CYOA/DIA, consulte [Criação de Interfaces](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices). + +**Exemplo — Adicionar configurações CYOA a uma interface existente:** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### Listar Interfaces + +```bash +doublezero device interface list # Todas as interfaces em todos os dispositivos +doublezero device interface list # Interfaces de um dispositivo específico +``` + +--- + +## Atualização do Config Agent + +Quando uma nova versão do Config Agent é lançada, siga estas etapas para atualizar. + +### 1. Baixar a versão mais recente + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Desligar o agente + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. Remover a versão anterior + +Primeiro, encontre o nome do arquivo da versão anterior: +``` +switch# show extensions +``` + +Execute os seguintes comandos para remover a versão anterior. Substitua `` pela versão anterior da saída acima: +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. Instalar a nova versão + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Reativar o agente + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. Verificar a atualização + +O status deve ser "A, I, B". +``` +switch# show extensions +``` + +### 7. Verificar a saída do log do Config Agent + +``` +show agent doublezero-agent log +``` + +--- + +## Atualização do Telemetry Agent + +Quando uma nova versão do Telemetry Agent é lançada, siga estas etapas para atualizar. + +### 1. Baixar a versão mais recente + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. Desligar o agente + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. Remover a versão anterior + +Primeiro, encontre o nome do arquivo da versão anterior: +``` +switch# show extensions +``` + +Execute os seguintes comandos para remover a versão anterior. Substitua `` pela versão anterior da saída acima: +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. Instalar a nova versão + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. Reativar o agente + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. Verificar a atualização + +O status deve ser "A, I, B". +``` +switch# show extensions +``` + +### 7. Verificar a saída do log do Telemetry Agent + +``` +show agent doublezero-telemetry log +``` + +--- + +## Monitoramento + +> ⚠️ **Importante:** +> +> 1. Para os exemplos de configuração abaixo, leve em consideração se seus agentes estão usando um VRF de gerenciamento. +> 2. O config agent e o telemetry agent usam a mesma porta de escuta (:8080) para seu endpoint de métricas por padrão. Se estiver habilitando métricas em ambos, use o flag `-metrics-addr` para definir portas de escuta únicas para cada agente. + +### Métricas do Config Agent + +O config agent no dispositivo DoubleZero tem a capacidade de expor métricas compatíveis com Prometheus configurando o flag `-metrics-enable` na configuração do daemon `doublezero-agent`. A porta de escuta padrão é tcp/8080, mas pode ser alterada para se adequar ao ambiente via `-metrics-addr`: +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +#### Erros de Alto Sinal + +- `up` — Esta é a métrica de série temporal gerada automaticamente pelo prometheus se a instância de scrape estiver saudável e acessível. Se não estiver, o agente não está acessível ou não está em execução. +- `doublezero_agent_apply_config_errors_total` — A configuração que o agente tenta aplicar falhou. Nesta situação, os usuários não poderão se integrar ao dispositivo e as alterações de configuração onchain não serão aplicadas até que isso seja resolvido. +- `doublezero_agent_get_config_errors_total` — Isso indica que o config agent local não consegue se comunicar com o controlador DoubleZero. Na maioria dos casos, isso pode ser devido a um problema com a conectividade de gerenciamento no dispositivo. Semelhante à métrica anterior, os usuários não poderão se integrar ao dispositivo e as alterações de configuração onchain não serão aplicadas até que isso seja resolvido. + +### Métricas do Telemetry Agent + +O telemetry agent no dispositivo DoubleZero tem a capacidade de expor métricas compatíveis com Prometheus configurando o flag `-metrics-enable` na configuração do daemon `doublezero-telemetry`. A porta de escuta padrão é tcp/8080, mas pode ser alterada para se adequar ao ambiente via `-metrics-addr`: +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +#### Erros de Alto Sinal + +- `up` — Esta é a métrica de série temporal gerada automaticamente pelo prometheus se a instância de scrape estiver saudável e acessível. Se não estiver, o agente não está acessível ou não está em execução. +- `doublezero_device_telemetry_agent_errors_total` com um `error_type` de `submitter_failed_to_write_samples` — Este é um sinal de que o telemetry agent não consegue gravar amostras onchain, o que pode ser devido a problemas de conectividade de gerenciamento no dispositivo. + +--- + +## Gerenciamento de Links + +### Drenagem de Links + +A drenagem de links permite que os contribuidores retirem gradualmente um link do serviço ativo para manutenção ou solução de problemas. Há dois estados de drenagem: + +| Estado | Comportamento IS-IS | Descrição | +|--------|----------------|-------------| +| `soft-drained` | Métrica definida como 1.000.000 | O link é despriorizado. O tráfego usará rotas alternativas se disponíveis, mas ainda usará este link se for a única opção. | +| `hard-drained` | Definido como passivo | O link é completamente retirado do roteamento. Nenhum tráfego atravessará este link. | + +### Transições de Estado + +As seguintes transições de estado são permitidas: + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (deve passar primeiro por soft-drained) +``` + +> ⚠️ **Nota:** +> Você não pode ir diretamente de `hard-drained` para `activated`. Primeiro deve fazer a transição para `soft-drained`, depois para `activated`. + +### Dreno Suave de um Link + +O dreno suave desprioriza um link definindo sua métrica IS-IS como 1.000.000. O tráfego preferirá rotas alternativas, mas ainda pode usar este link se necessário. + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### Dreno Rígido de um Link + +O dreno rígido remove o link do roteamento completamente definindo IS-IS no modo passivo. Nenhum tráfego atravessará este link. + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### Restaurar um Link para Ativo + +Para devolver um link drenado à operação normal: + +```bash +# A partir de soft-drained +doublezero link update --pubkey --status activated + +# A partir de hard-drained (deve passar primeiro por soft-drained) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### Substituição de Atraso + +O recurso de substituição de atraso permite que os contribuidores alterem temporariamente o atraso efetivo de um link sem modificar o valor de atraso medido real. Isso é útil para rebaixar temporariamente um link de rota primária para secundária. + +### Definir uma Substituição de Atraso + +Para substituir o atraso de um link (tornando-o menos preferido no roteamento): + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +Os valores válidos são de `0,01` a `1000` milissegundos. + +### Limpar uma Substituição de Atraso + +Para remover a substituição e voltar a usar o atraso medido real: + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **Nota:** +> Quando um link está em soft-drained, tanto `delay_ms` quanto `delay_override_ms` são substituídos para 1000ms (1 segundo) para garantir a despriorização. diff --git a/docs/contribute-operations.zh.md b/docs/contribute-operations.zh.md new file mode 100644 index 0000000..516e8fc --- /dev/null +++ b/docs/contribute-operations.zh.md @@ -0,0 +1,366 @@ +# 贡献者运营指南 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + +本指南涵盖维护DoubleZero设备(DZD)的持续运营任务,包括代理升级、设备/接口更新和链路管理。 + +**前提条件**:使用本指南前,请确保您已: + +- 完成[设备配置指南](contribute-provisioning.md) +- 您的DZD已完全运行,Config和Telemetry代理均在运行 + +--- + +## 设备更新 + +使用`doublezero device update`在初始配置后修改设备设置。 + +```bash +doublezero device update --pubkey [OPTIONS] +``` + +**常用更新选项:** + +| 选项 | 描述 | +|------|------| +| `--device-type ` | 更改运行模式:`hybrid`、`transit`、`edge`(参见[设备类型](contribute-provisioning.md#understanding-device-types)) | +| `--location ` | 将设备移至不同位置 | +| `--metrics-publisher ` | 更改指标发布者密钥 | + +--- + +## 接口更新 + +使用`doublezero device interface update`修改现有接口。此命令接受与`interface create`相同的选项。 + +```bash +doublezero device interface update [OPTIONS] +``` + +有关接口选项(包括CYOA/DIA设置)的完整列表,请参见[创建接口](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices)。 + +**示例——为现有接口添加CYOA设置:** + +```bash +doublezero device interface update lax-dz001 Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 +``` + +### 列出接口 + +```bash +doublezero device interface list # 所有设备的所有接口 +doublezero device interface list # 特定设备的接口 +``` + +--- + +## Config Agent升级 + +当Config Agent新版本发布时,请按照以下步骤升级。 + +### 1. 下载最新版本 + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. 关闭代理 + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 3. 删除旧版本 + +首先,找到旧版本的文件名: +``` +switch# show extensions +``` + +运行以下命令删除旧版本。将``替换为上面输出中的旧版本: +``` +switch# delete flash:doublezero-agent__linux_amd64.rpm +switch# delete extension:doublezero-agent__linux_amd64.rpm +``` + +### 4. 安装新版本 + +``` +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. 启动代理 + +``` +switch# configure +switch(config)# daemon doublezero-agent +switch(config-daemon-doublezero-agent)# no shutdown +switch(config-daemon-doublezero-agent)# exit +switch(config)# exit +``` + +### 6. 验证升级 + +状态应为"A, I, B"。 +``` +switch# show extensions +``` + +### 7. 验证Config Agent日志输出 + +``` +show agent doublezero-agent log +``` + +--- + +## Telemetry Agent升级 + +当Telemetry Agent新版本发布时,请按照以下步骤升级。 + +### 1. 下载最新版本 + +``` +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit +``` + +### 2. 关闭代理 + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 3. 删除旧版本 + +首先,找到旧版本的文件名: +``` +switch# show extensions +``` + +运行以下命令删除旧版本。将``替换为上面输出中的旧版本: +``` +switch# delete flash:doublezero-device-telemetry-agent__linux_amd64.rpm +switch# delete extension:doublezero-device-telemetry-agent__linux_amd64.rpm +``` + +### 4. 安装新版本 + +``` +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +### 5. 启动代理 + +``` +switch# configure +switch(config)# daemon doublezero-telemetry +switch(config-daemon-doublezero-telemetry)# no shutdown +switch(config-daemon-doublezero-telemetry)# exit +switch(config)# exit +``` + +### 6. 验证升级 + +状态应为"A, I, B"。 +``` +switch# show extensions +``` + +### 7. 验证Telemetry Agent日志输出 + +``` +show agent doublezero-telemetry log +``` + +--- + +## 监控 + +> ⚠️ **重要:** +> +> 1. 对于以下配置示例,请注意您的代理是否使用了管理VRF。 +> 2. Config Agent和Telemetry Agent默认使用相同的监听端口(:8080)作为其指标端点。如果两者都启用了指标,请使用`-metrics-addr`标志为每个代理设置唯一的监听端口。 + +### Config Agent指标 + +DoubleZero设备上的Config Agent可以通过在`doublezero-agent`守护进程配置中设置`-metrics-enable`标志来公开Prometheus兼容指标。默认监听端口为tcp/8080,但可以通过`-metrics-addr`更改以适应环境: +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey $PUBKEY -controller $CONTROLLER_ADDR -metrics-enable -metrics-addr 10.0.0.11:2112 + no shutdown +``` + +除go特定的运行时指标外,还公开以下DoubleZero特定指标: +``` +$ curl -s 10.0.0.11:2112/metrics | grep doublezero + +# HELP doublezero_agent_apply_config_errors_total Number of errors encountered while applying config to the device +# TYPE doublezero_agent_apply_config_errors_total counter +doublezero_agent_apply_config_errors_total 0 + +# HELP doublezero_agent_bgp_neighbors_errors_total Number of errors encountered while retrieving BGP neighbors from the device +# TYPE doublezero_agent_bgp_neighbors_errors_total counter +doublezero_agent_bgp_neighbors_errors_total 0 + +# HELP doublezero_agent_build_info Build information of the agent +# TYPE doublezero_agent_build_info gauge +doublezero_agent_build_info{commit="4378018f",date="2025-09-23T14:07:48Z",version="0.6.5~git20250923140746.4378018f"} 1 + +# HELP doublezero_agent_get_config_errors_total Number of errors encountered while getting config from the controller +# TYPE doublezero_agent_get_config_errors_total counter +doublezero_agent_get_config_errors_total 0 +``` + +#### 高信号错误 + +- `up` — 这是Prometheus在抓取实例健康且可达时自动生成的时间序列指标。如果不可达,则代理不可访问或代理未运行。 +- `doublezero_agent_apply_config_errors_total` — 代理尝试应用的配置失败。在此情况下,用户将无法接入设备,并且在解决此问题之前,链上配置更改将不会被应用。 +- `doublezero_agent_get_config_errors_total` — 这表示本地Config Agent无法与DoubleZero控制器通信。在大多数情况下,这可能是由于设备上的管理连接问题。与上述指标类似,用户将无法接入设备,并且在解决此问题之前,链上配置更改将不会被应用。 + +### Telemetry Agent指标 + +DoubleZero设备上的Telemetry Agent可以通过在`doublezero-telemetry`守护进程配置中设置`-metrics-enable`标志来公开Prometheus兼容指标。默认监听端口为tcp/8080,但可以通过`-metrics-addr`更改以适应环境: +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey $PUBKEY --env $ENV --keypair $KEY_PAIR -metrics-enable --metrics-addr 10.0.0.11:2113 + no shutdown +``` + +除go特定的运行时指标外,还公开以下DoubleZero特定指标: +``` +$ curl -s 10.0.0.11:2113/metrics | grep doublezero + +# HELP doublezero_device_telemetry_agent_build_info Build information of the device telemetry agent +# TYPE doublezero_device_telemetry_agent_build_info gauge +doublezero_device_telemetry_agent_build_info{commit="4378018f",date="2025-09-23T14:07:45Z",version="0.6.5~git20250923140743.4378018f"} 1 + +# HELP doublezero_device_telemetry_agent_errors_total Number of errors encountered +# TYPE doublezero_device_telemetry_agent_errors_total counter +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_program_load"} 7 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_write_samples"} 8 +doublezero_device_telemetry_agent_errors_total{error_type="collector_submit_samples_on_close"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_getting_local_interfaces"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_finding_local_tunnel"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="peer_discovery_link_tunnel_net_invalid"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_failed_to_initialize_account"} 0 +doublezero_device_telemetry_agent_errors_total{error_type="submitter_retries_exhausted"} 0 + +# HELP doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels Number of local tunnel interfaces not found during peer discovery +# TYPE doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels gauge +doublezero_device_telemetry_agent_peer_discovery_not_found_tunnels{local_device_pk="8PQkip3CxWhQTdP7doCyhT2kwjSL2csRTdnRg2zbDPs1"} 0 +``` + +#### 高信号错误 + +- `up` — 这是Prometheus在抓取实例健康且可达时自动生成的时间序列指标。如果不可达,则代理不可访问或代理未运行。 +- `doublezero_device_telemetry_agent_errors_total`中`error_type`为`submitter_failed_to_write_samples` — 这表示Telemetry Agent无法将样本写入链上,可能是由于设备上的管理连接问题。 + +--- + +## 链路管理 + +### 链路排水 + +链路排水允许贡献者优雅地从活跃服务中移除链路,以进行维护或故障排除。有两种排水状态: + +| 状态 | IS-IS行为 | 描述 | +|------|----------|------| +| `soft-drained` | 指标设置为1,000,000 | 链路降低优先级。流量将在有备用路径时使用备用路径,但如果此链路是唯一选项,仍会使用它。 | +| `hard-drained` | 设置为被动模式 | 链路从路由中完全移除。不会有流量经过此链路。 | + +### 状态转换 + +允许以下状态转换: + +``` +activated → soft-drained ✓ +activated → hard-drained ✓ +soft-drained → hard-drained ✓ +hard-drained → soft-drained ✓ +soft-drained → activated ✓ +hard-drained → activated ✗ (必须先经过soft-drained) +``` + +> ⚠️ **注意:** +> 您不能直接从`hard-drained`转到`activated`。必须先转换到`soft-drained`,再转换到`activated`。 + +### 软排水链路 + +软排水通过将IS-IS指标设置为1,000,000来降低链路优先级。流量将优先选择备用路径,但在必要时仍可使用此链路。 + +```bash +doublezero link update --pubkey --status soft-drained +``` + +### 硬排水链路 + +硬排水通过将IS-IS设置为被动模式,将链路从路由中完全移除。不会有流量经过此链路。 + +```bash +doublezero link update --pubkey --status hard-drained +``` + +### 将链路恢复为活跃状态 + +将已排水的链路恢复为正常运行: + +```bash +# 从soft-drained恢复 +doublezero link update --pubkey --status activated + +# 从hard-drained恢复(必须先经过soft-drained) +doublezero link update --pubkey --status soft-drained +doublezero link update --pubkey --status activated +``` + +### 延迟覆盖 + +延迟覆盖功能允许贡献者临时更改链路的有效延迟,而无需修改实际测量的延迟值。这对于临时将链路从主路径降级为备用路径非常有用。 + +### 设置延迟覆盖 + +覆盖链路延迟(使其在路由中不太被优先选择): + +```bash +doublezero link update --pubkey --delay-override-ms 100 +``` + +有效值为`0.01`到`1000`毫秒。 + +### 清除延迟覆盖 + +移除覆盖并恢复使用实际测量的延迟: + +```bash +doublezero link update --pubkey --delay-override-ms 0 +``` + +> ⚠️ **注意:** +> 当链路处于soft-drained状态时,`delay_ms`和`delay_override_ms`都会被覆盖为1000ms(1秒)以确保降低优先级。 diff --git a/docs/contribute-overview.es.md b/docs/contribute-overview.es.md new file mode 100644 index 0000000..902b0fe --- /dev/null +++ b/docs/contribute-overview.es.md @@ -0,0 +1,176 @@ +# Documentación para Contribuidores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminología" + ¿Nuevo en DoubleZero? Consulte el [Glosario](glossary.md) para definiciones de términos clave como [DZD](glossary.md#dzd-doublezero-device), [DZX](glossary.md#dzx-doublezero-exchange) y [CYOA](glossary.md#cyoa-choose-your-own-adventure). + +Bienvenido a la documentación para contribuidores de DoubleZero. Esta sección cubre todo lo que necesita para convertirse en un contribuidor de red. + +!!! tip "¿Interesado en convertirse en contribuidor de red?" + Revise la página de [Requisitos y Arquitectura](contribute.md) para comprender el hardware, el ancho de banda y la conectividad necesarios para contribuir a la red DoubleZero. + +--- + +## Lista de Verificación de Incorporación + +Use esta lista de verificación para hacer seguimiento de su progreso. **Todos los elementos deben estar completados antes de que su contribución sea técnicamente operativa.** + +### Fase 1: Requisitos Previos +- [ ] CLI DoubleZero instalada en un servidor de gestión +- [ ] Hardware adquirido y cumple los [requisitos](contribute.md#hardware-requirements) +- [ ] Espacio en rack y energía del centro de datos disponibles (4U, 4KW recomendado) +- [ ] DZD instalado físicamente con conectividad de gestión +- [ ] Bloque IPv4 público asignado para el protocolo DZ (**consulte las [Reglas de Prefijo DZ](#dz-prefix-rules)**) + +### Fase 2: Configuración de Cuenta +- [ ] Par de claves de servicio generado (`doublezero keygen`) +- [ ] Par de claves de editor de métricas generado +- [ ] Clave de servicio enviada a DZF para autorización +- [ ] Cuenta de contribuidor creada onchain (verificar con `doublezero contributor list`) +- [ ] Acceso otorgado al repositorio [malbeclabs/contributors](https://github.com/malbeclabs/contributors) + +### Fase 3: Aprovisionamiento de Dispositivos +- [ ] Configuración base del dispositivo aplicada (desde el repositorio de contribuidores) +- [ ] Dispositivo creado onchain (`doublezero device create`) +- [ ] Interfaces del dispositivo registradas +- [ ] Interfaces loopback creadas (Loopback255 vpnv4, Loopback256 ipv4) +- [ ] Interfaces CYOA/DIA configuradas (si es dispositivo de borde/híbrido) + +### Fase 4: Establecimiento de Enlace e Instalación de Agentes +- [ ] Enlaces WAN creados (si aplica) +- [ ] Enlace DZX creado (estado: `requested`) +- [ ] Enlace DZX aceptado por el contribuidor par +- [ ] Agente de Configuración instalado y en ejecución +- [ ] Agente de Configuración recibiendo configuración del controlador +- [ ] Agente de Telemetría instalado y en ejecución +- [ ] Editor de métricas registrado onchain +- [ ] Presentaciones de telemetría visibles en el ledger + +### Fase 5: Rodaje del Enlace +- [ ] Todos los enlaces drenados durante un período de rodaje de 24 horas +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz) muestra cero pérdidas y cero errores durante 24h +- [ ] Enlaces sin drenar después de un rodaje limpio + +### Fase 6: Verificación y Activación +- [ ] `doublezero device list` muestra su dispositivo (con `max_users = 0`) +- [ ] `doublezero link list` muestra sus enlaces +- [ ] Los logs del Agente de Configuración muestran extracciones de configuración exitosas +- [ ] Los logs del Agente de Telemetría muestran presentaciones de métricas exitosas +- [ ] **Coordinar con DZ/Malbec Labs** para ejecutar una prueba de conectividad (conectar, recibir rutas, enrutar sobre DZ) +- [ ] Después de que la prueba pase, establecer `max_users` en 96 mediante `doublezero device update` + +--- + +## Obtener Ayuda + +Como parte de la incorporación, DZF le añadirá a los canales Slack de contribuidores: + +| Canal | Propósito | +|---------|---------| +| **#dz-contributor-announcements** | Comunicaciones oficiales de DZF y Malbec Labs — actualizaciones de CLI/agentes, cambios importantes, anuncios de seguridad. Monitoree para actualizaciones críticas; haga preguntas en los hilos. | +| **#dz-contributor-incidents** | Eventos no planificados que afectan el servicio. Los incidentes se publican automáticamente a través de la API/formulario web con severidad y dispositivos/enlaces afectados. La discusión y solución de problemas ocurre en los hilos. | +| **#dz-contributor-maintenance** | Actividades de mantenimiento planificadas (actualizaciones, reparaciones). Programadas a través de la API/formulario web con tiempos de inicio/fin planificados. Discusión en hilos. | +| **#dz-contributor-ops** | Discusión abierta para todos los contribuidores — preguntas operativas, ayuda con CLI, compartir runbooks y playbooks. | + +También recibirá un **canal privado de DZ/Malbec Labs** para soporte directo de su organización. + +--- + +## Reglas de Prefijo DZ + +!!! warning "Crítico: Uso del Pool de Prefijos DZ" + El pool de prefijos DZ que proporciona es **gestionado por el protocolo DoubleZero para la asignación de IP**. + + **Cómo se usan los prefijos DZ:** + + - **Primera IP**: Reservada para su dispositivo (asignada a la interfaz Loopback100) + - **IPs restantes**: Asignadas a tipos específicos de usuarios que se conectan a su DZD: + - Usuarios `IBRLWithAllocatedIP` + - Usuarios `EdgeFiltering` + - Publicadores multicast + - **Usuarios IBRL**: NO consumen de este pool (usan su propia IP pública) + + **NO puede usar estas direcciones para:** + + - Su propio equipo de red + - Enlaces punto a punto en interfaces DIA + - Interfaces de gestión + - Cualquier infraestructura fuera del protocolo DZ + + **Requisitos:** + + - Deben ser direcciones IPv4 **globalmente enrutables (públicas)** + - Los rangos de IP privados (10.x, 172.16-31.x, 192.168.x) son rechazados por el contrato inteligente + - **Tamaño mínimo: /29** (8 direcciones), se prefieren prefijos más grandes (por ejemplo, /28, /27) + - Todo el bloque debe estar disponible - no preasigne ninguna dirección + + Si necesita direcciones para su propio equipo (IPs de interfaz DIA, gestión, etc.), use un **pool de direcciones separado**. + +--- + +## Referencia Rápida: Términos Clave + +¿Nuevo en DoubleZero? Aquí están los términos esenciales (consulte el [Glosario completo](glossary.md)): + +| Término | Definición | +|------|------------| +| **DZD** | Dispositivo DoubleZero - su switch físico Arista que ejecuta los agentes DZ | +| **DZX** | Exchange DoubleZero - punto de interconexión metropolitana donde los contribuidores se conectan entre sí | +| **CYOA** | Elige Tu Propia Aventura - método de conectividad de usuarios (GREOverDIA, GREOverFabric, etc.) | +| **DIA** | Acceso Directo a Internet - conectividad a internet requerida por todos los DZDs para el controlador y la telemetría, comúnmente usado como tipo CYOA para la conectividad de usuarios en dispositivos de borde/híbridos | +| **Enlace WAN** | Enlace entre sus propios DZDs (mismo contribuidor) | +| **Enlace DZX** | Enlace al DZD de otro contribuidor (requiere aceptación mutua) | +| **Agente de Configuración** | Consulta el controlador, aplica la configuración a su DZD | +| **Agente de Telemetría** | Recopila métricas de latencia/pérdida TWAMP, las envía al ledger onchain | +| **Clave de Servicio** | Su clave de identidad de contribuidor para operaciones CLI | +| **Clave de Editor de Métricas** | Clave para firmar presentaciones de telemetría onchain | + +--- + +--- + +## Estructura de la Documentación + +| Guía | Descripción | +|-------|-------------| +| [Requisitos y Arquitectura](contribute.md) | Especificaciones de hardware, arquitectura de red, opciones de ancho de banda | +| [Aprovisionamiento de Dispositivos](contribute-provisioning.md) | Paso a paso: claves → acceso al repositorio → dispositivo → enlaces → agentes | +| [Operaciones](contribute-operations.md) | Actualizaciones de agentes, gestión de enlaces, monitoreo | +| [Glosario](glossary.md) | Toda la terminología DoubleZero definida | + +--- + +## Conceptos de Red para No Ingenieros de Red + +Si no tiene experiencia en ingeniería de redes, aquí hay una introducción a los conceptos utilizados en esta documentación: + +### Direccionamiento IP + +- **Dirección IPv4**: Un identificador único para un dispositivo en una red (por ejemplo, `192.168.1.1`) +- **Notación CIDR** (`/29`, `/24`): Indica el tamaño de la subred. `/29` = 8 direcciones, `/24` = 256 direcciones +- **IP pública**: Enrutable en internet; **IP privada**: Solo redes internas (10.x, 172.16-31.x, 192.168.x) + +### Capas de Red + +- **Capa 1 (Física)**: Cables, óptica, longitudes de onda +- **Capa 2 (Enlace de Datos)**: Switches, VLANs, direcciones MAC +- **Capa 3 (Red)**: Routers, direcciones IP, protocolos de enrutamiento + +### Términos Comunes + +- **MTU**: Unidad Máxima de Transmisión - tamaño máximo de paquete (típicamente 9000 bytes para enlaces WAN) +- **VLAN**: LAN Virtual - separa lógicamente el tráfico en infraestructura compartida +- **VRF**: Enrutamiento y Reenvío Virtual - aísla tablas de enrutamiento en el mismo dispositivo +- **BGP**: Protocolo de Puerta de Enlace de Borde - intercambio de rutas entre redes +- **GRE**: Encapsulación de Enrutamiento Genérico - protocolo de tunelización para redes superpuestas +- **TWAMP**: Protocolo de Medición Activa Bidireccional - mide latencia/pérdida entre dispositivos + +### Específico de DoubleZero + +- **Onchain**: En DoubleZero, los registros de dispositivos, las configuraciones de enlaces y la telemetría se registran en el ledger DoubleZero, haciendo que el estado de la red sea transparente y verificable por todos los participantes +- **Controlador**: Servicio que deriva la configuración de DZD a partir del estado onchain en el ledger DoubleZero + +--- + +¿Listo para comenzar? Empiece con [Requisitos y Arquitectura](contribute.md). diff --git a/docs/contribute-overview.fr.md b/docs/contribute-overview.fr.md new file mode 100644 index 0000000..b799d74 --- /dev/null +++ b/docs/contribute-overview.fr.md @@ -0,0 +1,176 @@ +# Documentation Contributeur +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminologie" + Nouveau sur DoubleZero ? Consultez le [Glossaire](glossary.md) pour les définitions des termes clés comme [DZD](glossary.md#dzd-doublezero-device), [DZX](glossary.md#dzx-doublezero-exchange) et [CYOA](glossary.md#cyoa-choose-your-own-adventure). + +Bienvenue dans la documentation des contributeurs DoubleZero. Cette section couvre tout ce dont vous avez besoin pour devenir un contributeur réseau. + +!!! tip "Intéressé à devenir un contributeur réseau ?" + Consultez la page [Exigences et Architecture](contribute.md) pour comprendre le matériel, la bande passante et la connectivité nécessaires pour contribuer au réseau DoubleZero. + +--- + +## Checklist d'Intégration + +Utilisez cette checklist pour suivre votre progression. **Tous les éléments doivent être complétés avant que votre contribution soit techniquement opérationnelle.** + +### Phase 1 : Prérequis +- [ ] CLI DoubleZero installée sur un serveur de gestion +- [ ] Matériel procuré et conforme aux [exigences](contribute.md#hardware-requirements) +- [ ] Espace rack et alimentation disponibles en centre de données (4U, 4KW recommandé) +- [ ] DZD physiquement installé avec connectivité de gestion +- [ ] Bloc IPv4 public alloué pour le protocole DZ (**voir [Règles du Préfixe DZ](#dz-prefix-rules)**) + +### Phase 2 : Configuration du Compte +- [ ] Keypair de service générée (`doublezero keygen`) +- [ ] Keypair d'éditeur de métriques générée +- [ ] Clé de service soumise à DZF pour autorisation +- [ ] Compte contributeur créé on-chain (vérifier avec `doublezero contributor list`) +- [ ] Accès accordé au dépôt [malbeclabs/contributors](https://github.com/malbeclabs/contributors) + +### Phase 3 : Provisionnement du Dispositif +- [ ] Configuration de base du dispositif appliquée (depuis le dépôt contributeurs) +- [ ] Dispositif créé on-chain (`doublezero device create`) +- [ ] Interfaces du dispositif enregistrées +- [ ] Interfaces loopback créées (Loopback255 vpnv4, Loopback256 ipv4) +- [ ] Interfaces CYOA/DIA configurées (si dispositif edge/hybride) + +### Phase 4 : Établissement des Liens & Installation des Agents +- [ ] Liens WAN créés (le cas échéant) +- [ ] Lien DZX créé (statut : `requested`) +- [ ] Lien DZX accepté par le contributeur pair +- [ ] Config Agent installé et en cours d'exécution +- [ ] Config Agent recevant la configuration du contrôleur +- [ ] Telemetry Agent installé et en cours d'exécution +- [ ] Éditeur de métriques enregistré on-chain +- [ ] Soumissions de télémétrie visibles sur le registre + +### Phase 5 : Burn-in du Lien +- [ ] Tous les liens drainés pendant la période de burn-in de 24 heures +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz) montre zéro perte et zéro erreur pendant 24h +- [ ] Liens non drainés après un burn-in propre + +### Phase 6 : Vérification & Activation +- [ ] `doublezero device list` affiche votre dispositif (avec `max_users = 0`) +- [ ] `doublezero link list` affiche vos liens +- [ ] Les logs du Config Agent montrent des récupérations de configuration réussies +- [ ] Les logs du Telemetry Agent montrent des soumissions de métriques réussies +- [ ] **Coordonner avec DZ/Malbec Labs** pour exécuter un test de connectivité (connexion, réception des routes, routage sur DZ) +- [ ] Après que le test est réussi, définir `max_users` à 96 via `doublezero device update` + +--- + +## Obtenir de l'Aide + +Dans le cadre de l'intégration, DZF vous ajoutera aux canaux Slack des contributeurs : + +| Canal | Objectif | +|---------|---------| +| **#dz-contributor-announcements** | Communications officielles de DZF et Malbec Labs — mises à niveau CLI/agent, changements majeurs, annonces de sécurité. Surveiller pour les mises à jour critiques ; poser des questions dans les fils de discussion. | +| **#dz-contributor-incidents** | Événements imprévus ayant un impact sur le service. Les incidents sont publiés automatiquement via l'API/formulaire web avec la gravité et les dispositifs/liens affectés. Discussion et résolution de problèmes dans les fils de discussion. | +| **#dz-contributor-maintenance** | Activités de maintenance planifiées (mises à niveau, réparations). Planifiées via l'API/formulaire web avec les heures de début/fin prévues. Discussion dans les fils de discussion. | +| **#dz-contributor-ops** | Discussion ouverte pour tous les contributeurs — questions opérationnelles, aide CLI, partage de runbooks et de playbooks. | + +Vous obtiendrez également un **canal privé DZ/Malbec Labs** pour le support direct de votre organisation. + +--- + +## Règles du Préfixe DZ + +!!! warning "Critique : Utilisation du Pool de Préfixes DZ" + Le pool de préfixes DZ que vous fournissez est **géré par le protocole DoubleZero pour l'allocation IP**. + + **Comment les préfixes DZ sont utilisés :** + + - **Premier IP** : Réservé pour votre dispositif (attribué à l'interface Loopback100) + - **IP Restants** : Alloués à des types d'utilisateurs spécifiques se connectant à votre DZD : + - Utilisateurs `IBRLWithAllocatedIP` + - Utilisateurs `EdgeFiltering` + - Éditeurs multicast + - **Utilisateurs IBRL** : N'utilisent PAS ce pool (ils utilisent leur propre IP public) + + **Vous NE POUVEZ PAS utiliser ces adresses pour :** + + - Votre propre équipement réseau + - Liens point à point sur les interfaces DIA + - Interfaces de gestion + - Toute infrastructure en dehors du protocole DZ + + **Exigences :** + + - Doivent être des adresses IPv4 **globalement routables (publiques)** + - Les plages IP privées (10.x, 172.16-31.x, 192.168.x) sont rejetées par le contrat intelligent + - **Taille minimale : /29** (8 adresses), préfixes plus grands préférés (p. ex., /28, /27) + - Le bloc entier doit être disponible - ne pas pré-allouer d'adresses + + Si vous avez besoin d'adresses pour votre propre équipement (IP d'interface DIA, gestion, etc.), utilisez un **pool d'adresses séparé**. + +--- + +## Référence Rapide : Termes Clés + +Nouveau sur DoubleZero ? Voici les termes essentiels (voir le [Glossaire complet](glossary.md)) : + +| Terme | Définition | +|------|------------| +| **DZD** | DoubleZero Device - votre commutateur Arista physique exécutant les agents DZ | +| **DZX** | DoubleZero Exchange - point d'interconnexion métropolitain où les contributeurs font du peering | +| **CYOA** | Choose Your Own Adventure - méthode de connectivité utilisateur (GREOverDIA, GREOverFabric, etc.) | +| **DIA** | Direct Internet Access - connectivité internet requise par tous les DZD pour le contrôleur et la télémétrie, couramment utilisée comme type CYOA pour la connectivité utilisateur sur les dispositifs edge/hybrides | +| **Lien WAN** | Lien entre vos propres DZD (même contributeur) | +| **Lien DZX** | Lien vers le DZD d'un autre contributeur (nécessite une acceptation mutuelle) | +| **Config Agent** | Interroge le contrôleur, applique la configuration à votre DZD | +| **Telemetry Agent** | Collecte les métriques de latence/perte TWAMP, soumet au registre on-chain | +| **Clé de Service** | Votre clé d'identité de contributeur pour les opérations CLI | +| **Clé d'Éditeur de Métriques** | Clé pour signer les soumissions de télémétrie on-chain | + +--- + +--- + +## Structure de la Documentation + +| Guide | Description | +|-------|-------------| +| [Exigences et Architecture](contribute.md) | Spécifications matérielles, architecture réseau, options de bande passante | +| [Provisionnement des Dispositifs](contribute-provisioning.md) | Étape par étape : clés → accès au dépôt → dispositif → liens → agents | +| [Opérations](contribute-operations.md) | Mises à niveau des agents, gestion des liens, surveillance | +| [Glossaire](glossary.md) | Toute la terminologie DoubleZero définie | + +--- + +## Bases du Réseau pour les Non-Ingénieurs Réseau + +Si vous n'avez pas de formation en ingénierie réseau, voici une introduction aux concepts utilisés dans cette documentation : + +### Adressage IP + +- **Adresse IPv4** : Un identifiant unique pour un dispositif sur un réseau (p. ex., `192.168.1.1`) +- **Notation CIDR** (`/29`, `/24`) : Indique la taille du sous-réseau. `/29` = 8 adresses, `/24` = 256 adresses +- **IP Public** : Routable sur internet ; **IP Privé** : Réseaux internes uniquement (10.x, 172.16-31.x, 192.168.x) + +### Couches Réseau + +- **Couche 1 (Physique)** : Câbles, optiques, longueurs d'onde +- **Couche 2 (Liaison de Données)** : Commutateurs, VLANs, adresses MAC +- **Couche 3 (Réseau)** : Routeurs, adresses IP, protocoles de routage + +### Termes Courants + +- **MTU** : Maximum Transmission Unit - taille maximale des paquets (typiquement 9000 octets pour les liens WAN) +- **VLAN** : Virtual LAN - sépare logiquement le trafic sur une infrastructure partagée +- **VRF** : Virtual Routing and Forwarding - isole les tables de routage sur le même dispositif +- **BGP** : Border Gateway Protocol - échange de routes inter-réseau +- **GRE** : Generic Routing Encapsulation - protocole de tunneling pour les réseaux overlay +- **TWAMP** : Two-Way Active Measurement Protocol - mesure la latence/perte entre les dispositifs + +### Spécifique à DoubleZero + +- **On-chain** : Dans DoubleZero, les enregistrements de dispositifs, les configurations de liens et la télémétrie sont enregistrés sur le registre DoubleZero — rendant l'état du réseau transparent et vérifiable par tous les participants +- **Contrôleur** : Service qui dérive la configuration DZD à partir de l'état on-chain sur le registre DoubleZero + +--- + +Prêt à commencer ? Commencez par [Exigences et Architecture](contribute.md). diff --git a/docs/contribute-overview.it.md b/docs/contribute-overview.it.md new file mode 100644 index 0000000..b3672d7 --- /dev/null +++ b/docs/contribute-overview.it.md @@ -0,0 +1,176 @@ +# Documentazione Contributori +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminologia" + Nuovo a DoubleZero? Consulta il [Glossario](glossary.md) per le definizioni dei termini chiave come [DZD](glossary.md#dzd-doublezero-device), [DZX](glossary.md#dzx-doublezero-exchange) e [CYOA](glossary.md#cyoa-choose-your-own-adventure). + +Benvenuto alla documentazione per i contributori DoubleZero. Questa sezione copre tutto ciò di cui hai bisogno per diventare un contributore di rete. + +!!! tip "Interessato a diventare un contributore di rete?" + Consulta la pagina [Requisiti e Architettura](contribute.md) per comprendere l'hardware, la larghezza di banda e la connettività necessaria per contribuire alla rete DoubleZero. + +--- + +## Lista di Controllo per l'Onboarding + +Usa questa lista di controllo per monitorare i tuoi progressi. **Tutti gli elementi devono essere completati prima che il tuo contributo sia tecnicamente operativo.** + +### Fase 1: Prerequisiti +- [ ] CLI DoubleZero installata su un server di gestione +- [ ] Hardware acquistato e conforme ai [requisiti](contribute.md#hardware-requirements) +- [ ] Spazio rack e alimentazione disponibili nel data center (4U, 4KW raccomandati) +- [ ] DZD installato fisicamente con connettività di gestione +- [ ] Blocco IPv4 pubblico allocato per il protocollo DZ (**vedi [Regole DZ Prefix](#dz-prefix-rules)**) + +### Fase 2: Configurazione Account +- [ ] Keypair del servizio generato (`doublezero keygen`) +- [ ] Keypair del metrics publisher generato +- [ ] Service key inviata a DZF per l'autorizzazione +- [ ] Account contributore creato onchain (verifica con `doublezero contributor list`) +- [ ] Accesso concesso al repository [malbeclabs/contributors](https://github.com/malbeclabs/contributors) + +### Fase 3: Provisioning del Dispositivo +- [ ] Configurazione base del dispositivo applicata (dal repository dei contributori) +- [ ] Dispositivo creato onchain (`doublezero device create`) +- [ ] Interfacce del dispositivo registrate +- [ ] Interfacce loopback create (Loopback255 vpnv4, Loopback256 ipv4) +- [ ] Interfacce CYOA/DIA configurate (se dispositivo edge/hybrid) + +### Fase 4: Creazione Link e Installazione Agent +- [ ] WAN link creati (se applicabile) +- [ ] DZX link creato (stato: `requested`) +- [ ] DZX link accettato dal contributore peer +- [ ] Config Agent installato e in esecuzione +- [ ] Config Agent che riceve la configurazione dal controller +- [ ] Telemetry Agent installato e in esecuzione +- [ ] Metrics publisher registrato onchain +- [ ] Invii di telemetria visibili sul registro + +### Fase 5: Burn-in del Link +- [ ] Tutti i link drenati per il periodo di burn-in di 24 ore +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz) mostra zero perdite e zero errori per 24 ore +- [ ] Link ri-attivati dopo il burn-in pulito + +### Fase 6: Verifica e Attivazione +- [ ] `doublezero device list` mostra il tuo dispositivo (con `max_users = 0`) +- [ ] `doublezero link list` mostra i tuoi link +- [ ] I log del Config Agent mostrano pull di configurazione riusciti +- [ ] I log del Telemetry Agent mostrano invii di metriche riusciti +- [ ] **Coordina con DZ/Malbec Labs** per eseguire un test di connettività (connetti, ricevi route, instrada su DZ) +- [ ] Dopo che il test è superato, imposta `max_users` a 96 tramite `doublezero device update` + +--- + +## Ottenere Aiuto + +Come parte dell'onboarding, DZF ti aggiungerà ai canali Slack per i contributori: + +| Canale | Scopo | +|--------|-------| +| **#dz-contributor-announcements** | Comunicazioni ufficiali da DZF e Malbec Labs — aggiornamenti CLI/agent, modifiche importanti, annunci di sicurezza. Monitora per aggiornamenti critici; fai domande nei thread. | +| **#dz-contributor-incidents** | Eventi non pianificati che impattano il servizio. Gli incidenti vengono pubblicati automaticamente tramite API/web form con gravità e dispositivi/link interessati. La discussione e la risoluzione dei problemi avvengono nei thread. | +| **#dz-contributor-maintenance** | Attività di manutenzione pianificate (aggiornamenti, riparazioni). Pianificate tramite API/web form con orari di inizio/fine previsti. Discussione nei thread. | +| **#dz-contributor-ops** | Discussione aperta per tutti i contributori — domande operative, aiuto CLI, condivisione di runbook e playbook. | + +Riceverai anche un **canale privato DZ/Malbec Labs** per supporto diretto alla tua organizzazione. + +--- + +## Regole DZ Prefix + +!!! warning "Critico: Utilizzo del Pool DZ Prefix" + Il pool di DZ prefix che fornisci è **gestito dal protocollo DoubleZero per l'allocazione IP**. + + **Come vengono utilizzati i DZ prefix:** + + - **Primo IP**: Riservato al tuo dispositivo (assegnato all'interfaccia Loopback100) + - **IP rimanenti**: Allocati a tipi specifici di utenti che si connettono al tuo DZD: + - Utenti `IBRLWithAllocatedIP` + - Utenti `EdgeFiltering` + - Publisher multicast + - **Utenti IBRL**: NON consumano da questo pool (usano il proprio IP pubblico) + + **NON puoi usare questi indirizzi per:** + + - Le tue apparecchiature di rete + - Link punto-a-punto su interfacce DIA + - Interfacce di gestione + - Qualsiasi infrastruttura al di fuori del protocollo DZ + + **Requisiti:** + + - Devono essere indirizzi IPv4 **globalmente instradabili (pubblici)** + - Gli intervalli IP privati (10.x, 172.16-31.x, 192.168.x) vengono rifiutati dallo smart contract + - **Dimensione minima: /29** (8 indirizzi), preferibili prefissi più grandi (es. /28, /27) + - L'intero blocco deve essere disponibile - non pre-allocare alcun indirizzo + + Se hai bisogno di indirizzi per le tue apparecchiature (IP interfacce DIA, gestione, ecc.), usa un **pool di indirizzi separato**. + +--- + +## Riferimento Rapido: Termini Chiave + +Nuovo a DoubleZero? Ecco i termini essenziali (vedi il [Glossario completo](glossary.md)): + +| Termine | Definizione | +|---------|-------------| +| **DZD** | DoubleZero Device - il tuo switch fisico Arista che esegue gli agenti DZ | +| **DZX** | DoubleZero Exchange - punto di interconnessione metro dove i contributori si collegano | +| **CYOA** | Choose Your Own Adventure - metodo di connettività utente (GREOverDIA, GREOverFabric, ecc.) | +| **DIA** | Direct Internet Access - connettività internet richiesta da tutti i DZD per controller e telemetria, comunemente usata come tipo CYOA per la connettività utente su dispositivi edge/hybrid | +| **WAN Link** | Link tra i tuoi DZD (stesso contributore) | +| **DZX Link** | Link verso il DZD di un altro contributore (richiede accettazione reciproca) | +| **Config Agent** | Interroga il controller, applica la configurazione al tuo DZD | +| **Telemetry Agent** | Raccoglie metriche di latenza/perdita TWAMP, le invia al registro onchain | +| **Service Key** | La tua chiave di identità contributore per le operazioni CLI | +| **Metrics Publisher Key** | Chiave per firmare gli invii di telemetria onchain | + +--- + +--- + +## Struttura della Documentazione + +| Guida | Descrizione | +|-------|-------------| +| [Requisiti e Architettura](contribute.md) | Specifiche hardware, architettura di rete, opzioni di larghezza di banda | +| [Provisioning Dispositivo](contribute-provisioning.md) | Passo per passo: chiavi → accesso repo → dispositivo → link → agenti | +| [Operazioni](contribute-operations.md) | Aggiornamenti agent, gestione link, monitoraggio | +| [Glossario](glossary.md) | Tutta la terminologia DoubleZero definita | + +--- + +## Nozioni di Base di Rete per Non-Ingegneri di Rete + +Se non hai un background ingegneristico di rete, ecco un primer sui concetti utilizzati in questa documentazione: + +### Indirizzamento IP + +- **Indirizzo IPv4**: Un identificatore univoco per un dispositivo su una rete (es. `192.168.1.1`) +- **Notazione CIDR** (`/29`, `/24`): Indica la dimensione della subnet. `/29` = 8 indirizzi, `/24` = 256 indirizzi +- **IP Pubblico**: Instradabile su internet; **IP Privato**: Solo reti interne (10.x, 172.16-31.x, 192.168.x) + +### Livelli di Rete + +- **Livello 1 (Fisico)**: Cavi, ottiche, lunghezze d'onda +- **Livello 2 (Data Link)**: Switch, VLAN, indirizzi MAC +- **Livello 3 (Rete)**: Router, indirizzi IP, protocolli di routing + +### Termini Comuni + +- **MTU**: Maximum Transmission Unit - dimensione massima del pacchetto (tipicamente 9000 byte per link WAN) +- **VLAN**: Virtual LAN - separa logicamente il traffico su infrastruttura condivisa +- **VRF**: Virtual Routing and Forwarding - isola le tabelle di routing sullo stesso dispositivo +- **BGP**: Border Gateway Protocol - scambio di route tra reti +- **GRE**: Generic Routing Encapsulation - protocollo di tunneling per reti overlay +- **TWAMP**: Two-Way Active Measurement Protocol - misura latenza/perdita tra dispositivi + +### Specifico di DoubleZero + +- **Onchain**: In DoubleZero, le registrazioni dei dispositivi, le configurazioni dei link e la telemetria vengono registrate nel registro DoubleZero — rendendo lo stato della rete trasparente e verificabile da tutti i partecipanti +- **Controller**: Servizio che deriva la configurazione DZD dallo stato onchain nel registro DoubleZero + +--- + +Pronto per iniziare? Inizia con [Requisiti e Architettura](contribute.md). diff --git a/docs/contribute-overview.ja.md b/docs/contribute-overview.ja.md new file mode 100644 index 0000000..7dbe847 --- /dev/null +++ b/docs/contribute-overview.ja.md @@ -0,0 +1,176 @@ +# コントリビューターのドキュメント +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "用語" + DoubleZeroを初めて利用しますか?[用語集](glossary.md)で[DZD](glossary.md#dzd-doublezero-device)、[DZX](glossary.md#dzx-doublezero-exchange)、[CYOA](glossary.md#cyoa-choose-your-own-adventure)などの主要な用語の定義を確認してください。 + +DoubleZeroコントリビューターのドキュメントへようこそ。このセクションではネットワークコントリビューターになるために必要なすべてをカバーしています。 + +!!! tip "ネットワークコントリビューターになることに興味がありますか?" + [要件とアーキテクチャ](contribute.md)ページを確認して、DoubleZeroネットワークへの貢献に必要なハードウェア、帯域幅、接続性を理解してください。 + +--- + +## オンボーディングチェックリスト + +このチェックリストを使って進捗を追跡してください。**貢献が技術的に運用可能になる前にすべての項目を完了する必要があります。** + +### フェーズ1:前提条件 +- [ ] 管理サーバーにDoubleZero CLIをインストール +- [ ] ハードウェアを調達し、[要件](contribute.md#hardware-requirements)を満たしていることを確認 +- [ ] データセンターのラックスペースと電力を確保(4U、4KW推奨) +- [ ] DZDを物理的にインストールし、管理接続が可能な状態にする +- [ ] DZプロトコル用のパブリックIPv4ブロックを割り当て(**[DZプレフィックスルール](#dz-prefix-rules)を参照**) + +### フェーズ2:アカウントのセットアップ +- [ ] サービスキーペアを生成(`doublezero keygen`) +- [ ] メトリクスパブリッシャーキーペアを生成 +- [ ] サービスキーをDZFに提出して承認を取得 +- [ ] コントリビューターアカウントをオンチェーンで作成(`doublezero contributor list`で確認) +- [ ] [malbeclabs/contributors](https://github.com/malbeclabs/contributors)リポジトリへのアクセスを取得 + +### フェーズ3:デバイスプロビジョニング +- [ ] ベースデバイス設定を適用(contributorsリポジトリより) +- [ ] デバイスをオンチェーンで作成(`doublezero device create`) +- [ ] デバイスインターフェースを登録 +- [ ] ループバックインターフェースを作成(Loopback255 vpnv4、Loopback256 ipv4) +- [ ] CYOA/DIAインターフェースを設定(エッジ/ハイブリッドデバイスの場合) + +### フェーズ4:リンク確立とエージェントインストール +- [ ] WANリンクを作成(該当する場合) +- [ ] DZXリンクを作成(ステータス:`requested`) +- [ ] ピアコントリビューターがDZXリンクを承認 +- [ ] Config Agentをインストールして実行 +- [ ] Config Agentがコントローラーから設定を受信 +- [ ] Telemetry Agentをインストールして実行 +- [ ] メトリクスパブリッシャーをオンチェーンで登録 +- [ ] テレメトリ送信がレジャーで確認可能 + +### フェーズ5:リンクのバーンイン +- [ ] すべてのリンクを24時間バーンイン期間中ドレイン +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz)で24時間のゼロロスおよびゼロエラーを確認 +- [ ] クリーンなバーンイン後にリンクのドレインを解除 + +### フェーズ6:検証とアクティベーション +- [ ] `doublezero device list`でデバイスが表示される(`max_users = 0`で) +- [ ] `doublezero link list`でリンクが表示される +- [ ] Config Agentのログで設定プルの成功を確認 +- [ ] Telemetry Agentのログでメトリクス送信の成功を確認 +- [ ] **DZ/Malbec Labsと協力**して接続テストを実行(接続、ルート受信、DZ経由のルーティング) +- [ ] テスト合格後、`doublezero device update`で`max_users`を96に設定 + +--- + +## ヘルプの取得 + +オンボーディングの一環として、DZFはコントリビューターのSlackチャンネルに追加します: + +| チャンネル | 目的 | +|---------|---------| +| **#dz-contributor-announcements** | DZFとMalbec Labsからの公式通知 — CLI/エージェントのアップグレード、重大な変更、セキュリティアナウンス。重要な更新を監視し、スレッドで質問してください。 | +| **#dz-contributor-incidents** | 予定外のサービス影響イベント。インシデントはAPI/ウェブフォームを通じて深刻度と影響を受けるデバイス/リンクとともに自動投稿されます。スレッドで議論とトラブルシューティングが行われます。 | +| **#dz-contributor-maintenance** | 計画されたメンテナンス活動(アップグレード、修理)。API/ウェブフォームを通じて計画された開始/終了時間とともにスケジュールされます。スレッドで議論が行われます。 | +| **#dz-contributor-ops** | すべてのコントリビューターのオープンディスカッション — 運用上の質問、CLIのヘルプ、ランブックとプレイブックの共有。 | + +また、組織への直接サポートのために**プライベートDZ/Malbec Labsチャンネル**も提供されます。 + +--- + +## DZプレフィックスルール + +!!! warning "重要:DZプレフィックスプールの使用" + 提供するDZプレフィックスプールは**DoubleZeroプロトコルがIP割り当てを管理**します。 + + **DZプレフィックスの使用方法:** + + - **最初のIP**:デバイス用に予約(Loopback100インターフェースに割り当て) + - **残りのIP**:DZDに接続する特定のユーザータイプに割り当て: + - `IBRLWithAllocatedIP`ユーザー + - `EdgeFiltering`ユーザー + - マルチキャストパブリッシャー + - **IBRLユーザー**:このプールを消費しません(独自のパブリックIPを使用) + + **これらのアドレスは以下に使用できません:** + + - 自社のネットワーク機器 + - DIAインターフェースのポイントツーポイントリンク + - 管理インターフェース + - DZプロトコル外のインフラ + + **要件:** + + - **グローバルにルーティング可能(パブリック)**なIPv4アドレスである必要があります + - プライベートIP範囲(10.x、172.16-31.x、192.168.x)はスマートコントラクトで拒否されます + - **最小サイズ:/29**(8アドレス)、大きなプレフィックス推奨(例:/28、/27) + - ブロック全体が利用可能である必要があります - アドレスを事前に割り当てないでください + + 自社の機器用にアドレスが必要な場合(DIAインターフェースIP、管理など)は、**別のアドレスプール**を使用してください。 + +--- + +## クイックリファレンス:主要用語 + +DoubleZeroを初めて利用しますか?以下は必須の用語です([完全な用語集](glossary.md)を参照): + +| 用語 | 定義 | +|------|------------| +| **DZD** | DoubleZeroデバイス - DZエージェントを実行する物理Aristaスイッチ | +| **DZX** | DoubleZero Exchange - コントリビューターがピアするメトロ相互接続ポイント | +| **CYOA** | Choose Your Own Adventure - ユーザー接続方式(GREOverDIA、GREOverFabricなど) | +| **DIA** | Direct Internet Access - すべてのDZDがコントローラーとテレメトリに必要とするインターネット接続、エッジ/ハイブリッドデバイスでのユーザー接続のCYOAタイプとしてよく使用される | +| **WANリンク** | 自社のDZD間のリンク(同一コントリビューター) | +| **DZXリンク** | 別のコントリビューターのDZDへのリンク(相互承認が必要) | +| **Config Agent** | コントローラーをポーリングし、DZDに設定を適用する | +| **Telemetry Agent** | TWAMPレイテンシ/ロスメトリクスを収集し、オンチェーンレジャーに送信する | +| **サービスキー** | CLI操作のためのコントリビューターアイデンティティキー | +| **メトリクスパブリッシャーキー** | テレメトリ送信をオンチェーンで署名するためのキー | + +--- + +--- + +## ドキュメント構成 + +| ガイド | 説明 | +|-------|-------------| +| [要件とアーキテクチャ](contribute.md) | ハードウェア仕様、ネットワークアーキテクチャ、帯域幅オプション | +| [デバイスプロビジョニング](contribute-provisioning.md) | ステップバイステップ:キー → リポジトリアクセス → デバイス → リンク → エージェント | +| [運用](contribute-operations.md) | エージェントのアップグレード、リンク管理、監視 | +| [用語集](glossary.md) | すべてのDoubleZero用語の定義 | + +--- + +## ネットワークエンジニア以外向けのネットワーク基礎 + +ネットワークエンジニアのバックグラウンドがない場合は、このドキュメントで使用される概念の入門として以下をご覧ください: + +### IPアドレッシング + +- **IPv4アドレス**:ネットワーク上のデバイスの一意の識別子(例:`192.168.1.1`) +- **CIDR表記**(`/29`、`/24`):サブネットサイズを示します。`/29` = 8アドレス、`/24` = 256アドレス +- **パブリックIP**:インターネットでルーティング可能;**プライベートIP**:内部ネットワークのみ(10.x、172.16-31.x、192.168.x) + +### ネットワーク層 + +- **レイヤー1(物理)**:ケーブル、光学機器、波長 +- **レイヤー2(データリンク)**:スイッチ、VLAN、MACアドレス +- **レイヤー3(ネットワーク)**:ルーター、IPアドレス、ルーティングプロトコル + +### 一般的な用語 + +- **MTU**:Maximum Transmission Unit - 最大パケットサイズ(WANリンクでは通常9000バイト) +- **VLAN**:Virtual LAN - 共有インフラ上のトラフィックを論理的に分離する +- **VRF**:Virtual Routing and Forwarding - 同じデバイス上でルーティングテーブルを分離する +- **BGP**:Border Gateway Protocol - ネットワーク間のルート交換 +- **GRE**:Generic Routing Encapsulation - オーバーレイネットワークのためのトンネリングプロトコル +- **TWAMP**:Two-Way Active Measurement Protocol - デバイス間のレイテンシ/ロスを測定する + +### DoubleZero固有 + +- **オンチェーン**:DoubleZeroでは、デバイス登録、リンク設定、テレメトリがDoubleZeroレジャーに記録されます — ネットワーク状態がすべての参加者に対して透明で検証可能になります +- **コントローラー**:DoubleZeroレジャーのオンチェーン状態からDZD設定を導出するサービス + +--- + +準備ができましたか?[要件とアーキテクチャ](contribute.md)から始めてください。 diff --git a/docs/contribute-overview.ko.md b/docs/contribute-overview.ko.md new file mode 100644 index 0000000..6e5d56b --- /dev/null +++ b/docs/contribute-overview.ko.md @@ -0,0 +1,176 @@ +# 기여자 문서 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "용어" + DoubleZero가 처음이신가요? [DZD](glossary.md#dzd-doublezero-device), [DZX](glossary.md#dzx-doublezero-exchange), [CYOA](glossary.md#cyoa-choose-your-own-adventure)와 같은 핵심 용어의 정의는 [용어집](glossary.md)을 참조하세요. + +DoubleZero 기여자 문서에 오신 것을 환영합니다. 이 섹션에서는 네트워크 기여자가 되기 위해 필요한 모든 것을 다룹니다. + +!!! tip "네트워크 기여자가 되고 싶으신가요?" + DoubleZero 네트워크에 기여하는 데 필요한 하드웨어, 대역폭 및 연결성을 이해하려면 [요구사항 및 아키텍처](contribute.md) 페이지를 검토하세요. + +--- + +## 온보딩 체크리스트 + +이 체크리스트를 사용하여 진행 상황을 추적하세요. **기여가 기술적으로 운영되기 전에 모든 항목을 완료해야 합니다.** + +### 단계 1: 사전 요구사항 +- [ ] 관리 서버에 DoubleZero CLI 설치 +- [ ] 하드웨어 구매 및 [요구사항](contribute.md#hardware-requirements) 충족 +- [ ] 데이터 센터 랙 공간 및 전원 사용 가능 (4U, 4KW 권장) +- [ ] DZD 물리적 설치 및 관리 연결 완료 +- [ ] DZ 프로토콜을 위한 공개 IPv4 블록 할당 (**[DZ 프리픽스 규칙](#dz-prefix-rules) 참조**) + +### 단계 2: 계정 설정 +- [ ] 서비스 키쌍 생성 (`doublezero keygen`) +- [ ] 메트릭스 발행자 키쌍 생성 +- [ ] 인증을 위해 DZF에 서비스 키 제출 +- [ ] 온체인 기여자 계정 생성 (`doublezero contributor list`로 확인) +- [ ] [malbeclabs/contributors](https://github.com/malbeclabs/contributors) 저장소 접근 권한 부여 + +### 단계 3: 장치 프로비저닝 +- [ ] 장치에 기본 구성 적용 (기여자 저장소에서) +- [ ] 온체인 장치 생성 (`doublezero device create`) +- [ ] 장치 인터페이스 등록 +- [ ] 루프백 인터페이스 생성 (Loopback255 vpnv4, Loopback256 ipv4) +- [ ] CYOA/DIA 인터페이스 구성 (엣지/하이브리드 장치인 경우) + +### 단계 4: 링크 설정 및 에이전트 설치 +- [ ] WAN 링크 생성 (해당하는 경우) +- [ ] DZX 링크 생성 (상태: `requested`) +- [ ] 상대방 기여자가 DZX 링크 수락 +- [ ] Config Agent 설치 및 실행 +- [ ] Config Agent가 컨트롤러에서 구성 수신 +- [ ] Telemetry Agent 설치 및 실행 +- [ ] 메트릭스 발행자 온체인 등록 +- [ ] 레저에서 텔레메트리 제출 확인 + +### 단계 5: 링크 번인 +- [ ] 24시간 번인 기간 동안 모든 링크 드레인 상태 유지 +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz)에서 24시간 동안 손실 및 오류 0 확인 +- [ ] 클린 번인 완료 후 링크 드레인 해제 + +### 단계 6: 검증 및 활성화 +- [ ] `doublezero device list`에서 장치 확인 (`max_users = 0` 상태) +- [ ] `doublezero link list`에서 링크 확인 +- [ ] Config Agent 로그에서 성공적인 구성 가져오기 확인 +- [ ] Telemetry Agent 로그에서 성공적인 메트릭스 제출 확인 +- [ ] **DZ/Malbec Labs와 조율**하여 연결 테스트 실행 (연결, 경로 수신, DZ를 통한 라우팅) +- [ ] 테스트 통과 후 `doublezero device update`를 통해 `max_users`를 96으로 설정 + +--- + +## 도움 받기 + +온보딩의 일환으로 DZF가 기여자 Slack 채널에 추가해 드립니다: + +| 채널 | 목적 | +|---------|---------| +| **#dz-contributor-announcements** | DZF 및 Malbec Labs의 공식 커뮤니케이션 — CLI/에이전트 업데이트, 주요 변경 사항, 보안 공지. 중요 업데이트 모니터링. 스레드에서 질문 가능. | +| **#dz-contributor-incidents** | 서비스에 영향을 미치는 계획되지 않은 이벤트. 인시던트는 심각도 및 영향받는 장치/링크와 함께 API/웹 양식을 통해 자동으로 게시됩니다. 스레드에서 토론 및 문제 해결. | +| **#dz-contributor-maintenance** | 계획된 유지보수 활동 (업그레이드, 수리). API/웹 양식을 통해 예상 시작/종료 시간과 함께 예약됩니다. 스레드에서 토론. | +| **#dz-contributor-ops** | 모든 기여자를 위한 공개 토론 — 운영 질문, CLI 도움, 런북 및 플레이북 공유. | + +귀하의 조직을 위한 직접 지원을 위한 **DZ/Malbec Labs 전용 채널**도 받게 됩니다. + +--- + +## DZ 프리픽스 규칙 + +!!! warning "중요: DZ 프리픽스 풀 사용" + 제공하는 DZ 프리픽스 풀은 **IP 할당을 위해 DoubleZero 프로토콜이 관리**합니다. + + **DZ 프리픽스가 사용되는 방식:** + + - **첫 번째 IP**: 장치용으로 예약됨 (Loopback100 인터페이스에 할당) + - **나머지 IP**: DZD에 연결하는 특정 유형의 사용자에게 할당: + - `IBRLWithAllocatedIP` 사용자 + - `EdgeFiltering` 사용자 + - 멀티캐스트 발행자 + - **IBRL 사용자**: 이 풀을 소비하지 않음 (자신의 공개 IP 사용) + + **다음 용도로 사용할 수 없습니다:** + + - 자신의 네트워크 장비 + - DIA 인터페이스의 지점간 링크 + - 관리 인터페이스 + - DZ 프로토콜 외부의 모든 인프라 + + **요구사항:** + + - 전 세계적으로 라우팅 가능한(공개) IPv4 주소여야 합니다 + - 사설 IP 범위(10.x, 172.16-31.x, 192.168.x)는 스마트 계약에서 거부됩니다 + - **최소 크기: /29** (8개 주소), 더 큰 프리픽스 권장 (예: /28, /27) + - 전체 블록이 사용 가능해야 합니다 — 어떤 주소도 사전 할당하지 마세요 + + 자신의 장비(DIA 인터페이스 IP, 관리 등)를 위한 주소가 필요한 경우 **별도의 주소 풀**을 사용하세요. + +--- + +## 빠른 참조: 핵심 용어 + +DoubleZero가 처음이신가요? 필수 용어는 다음과 같습니다([전체 용어집](glossary.md) 참조): + +| 용어 | 정의 | +|------|------------| +| **DZD** | DoubleZero Device — DZ 에이전트를 실행하는 물리적 Arista 스위치 | +| **DZX** | DoubleZero Exchange — 기여자들이 서로 연결하는 도시 상호 연결 지점 | +| **CYOA** | Choose Your Own Adventure — 사용자 연결 방법 (GREOverDIA, GREOverFabric 등) | +| **DIA** | Direct Internet Access — 모든 DZD가 컨트롤러 및 텔레메트리를 위해 필요한 인터넷 연결, 엣지/하이브리드 장치의 사용자 연결을 위한 CYOA 유형으로도 일반적으로 사용 | +| **WAN 링크** | 자신의 DZD 간 링크 (동일 기여자) | +| **DZX 링크** | 다른 기여자의 DZD에 대한 링크 (상호 수락 필요) | +| **Config Agent** | 컨트롤러에 쿼리하고 DZD에 구성 적용 | +| **Telemetry Agent** | TWAMP 대기 시간/손실 메트릭스 수집, 온체인 레저에 제출 | +| **서비스 키** | CLI 작업을 위한 기여자 ID 키 | +| **메트릭스 발행자 키** | 온체인 텔레메트리 제출 서명을 위한 키 | + +--- + +--- + +## 문서 구조 + +| 가이드 | 설명 | +|-------|-------------| +| [요구사항 및 아키텍처](contribute.md) | 하드웨어 사양, 네트워크 아키텍처, 대역폭 옵션 | +| [장치 프로비저닝](contribute-provisioning.md) | 단계별: 키 → 저장소 접근 → 장치 → 링크 → 에이전트 | +| [운영](contribute-operations.md) | 에이전트 업데이트, 링크 관리, 모니터링 | +| [용어집](glossary.md) | 모든 DoubleZero 용어 정의 | + +--- + +## 비네트워크 엔지니어를 위한 네트워킹 개념 + +네트워크 엔지니어링 경험이 없으시다면 이 문서에 사용된 개념에 대한 소개가 있습니다: + +### IP 주소 지정 + +- **IPv4 주소**: 네트워크의 장치에 대한 고유 식별자 (예: `192.168.1.1`) +- **CIDR 표기법** (`/29`, `/24`): 서브넷 크기를 나타냅니다. `/29` = 8개 주소, `/24` = 256개 주소 +- **공개 IP**: 인터넷에서 라우팅 가능; **사설 IP**: 내부 네트워크 전용 (10.x, 172.16-31.x, 192.168.x) + +### 네트워크 계층 + +- **계층 1 (물리)**: 케이블, 광학, 파장 +- **계층 2 (데이터 링크)**: 스위치, VLAN, MAC 주소 +- **계층 3 (네트워크)**: 라우터, IP 주소, 라우팅 프로토콜 + +### 일반 용어 + +- **MTU**: 최대 전송 단위 — 최대 패킷 크기 (WAN 링크의 경우 일반적으로 9000바이트) +- **VLAN**: 가상 LAN — 공유 인프라에서 트래픽을 논리적으로 분리 +- **VRF**: 가상 라우팅 및 포워딩 — 동일한 장치에서 라우팅 테이블을 격리 +- **BGP**: 경계 게이트웨이 프로토콜 — 네트워크 간 경로 교환 +- **GRE**: 일반 라우팅 캡슐화 — 오버레이 네트워크를 위한 터널링 프로토콜 +- **TWAMP**: 양방향 능동 측정 프로토콜 — 장치 간 대기 시간/손실 측정 + +### DoubleZero 전용 + +- **온체인**: DoubleZero에서 장치 등록, 링크 구성 및 텔레메트리는 DoubleZero 레저에 기록되어 네트워크 상태를 모든 참여자가 투명하고 검증 가능하게 합니다 +- **컨트롤러**: DoubleZero 레저의 온체인 상태에서 DZD 구성을 도출하는 서비스 + +--- + +준비가 되셨나요? [요구사항 및 아키텍처](contribute.md)부터 시작하세요. diff --git a/docs/contribute-overview.pt.md b/docs/contribute-overview.pt.md new file mode 100644 index 0000000..1898b90 --- /dev/null +++ b/docs/contribute-overview.pt.md @@ -0,0 +1,176 @@ +# Documentação para Contribuidores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminologia" + Novo no DoubleZero? Consulte o [Glossário](glossary.md) para definições de termos-chave como [DZD](glossary.md#dzd-doublezero-device), [DZX](glossary.md#dzx-doublezero-exchange) e [CYOA](glossary.md#cyoa-choose-your-own-adventure). + +Bem-vindo à documentação para contribuidores do DoubleZero. Esta seção cobre tudo que você precisa para se tornar um contribuidor de rede. + +!!! tip "Interessado em se tornar um contribuidor de rede?" + Revise a página de [Requisitos e Arquitetura](contribute.md) para entender o hardware, a largura de banda e a conectividade necessários para contribuir com a rede DoubleZero. + +--- + +## Lista de Verificação de Integração + +Use esta lista de verificação para acompanhar seu progresso. **Todos os itens devem ser concluídos antes que sua contribuição esteja tecnicamente operacional.** + +### Fase 1: Pré-requisitos +- [ ] CLI do DoubleZero instalado em um servidor de gerenciamento +- [ ] Hardware adquirido e atendendo aos [requisitos](contribute.md#hardware-requirements) +- [ ] Espaço em rack e energia do data center disponíveis (4U, 4KW recomendado) +- [ ] DZD instalado fisicamente com conectividade de gerenciamento +- [ ] Bloco IPv4 público alocado para o protocolo DZ (**consulte as [Regras de Prefixo DZ](#dz-prefix-rules)**) + +### Fase 2: Configuração de Conta +- [ ] Par de chaves de serviço gerado (`doublezero keygen`) +- [ ] Par de chaves do editor de métricas gerado +- [ ] Chave de serviço enviada ao DZF para autorização +- [ ] Conta de contribuidor criada onchain (verificar com `doublezero contributor list`) +- [ ] Acesso concedido ao repositório [malbeclabs/contributors](https://github.com/malbeclabs/contributors) + +### Fase 3: Provisionamento de Dispositivos +- [ ] Configuração base do dispositivo aplicada (do repositório de contribuidores) +- [ ] Dispositivo criado onchain (`doublezero device create`) +- [ ] Interfaces do dispositivo registradas +- [ ] Interfaces loopback criadas (Loopback255 vpnv4, Loopback256 ipv4) +- [ ] Interfaces CYOA/DIA configuradas (se dispositivo de borda/híbrido) + +### Fase 4: Estabelecimento de Link e Instalação de Agentes +- [ ] Links WAN criados (se aplicável) +- [ ] Link DZX criado (status: `requested`) +- [ ] Link DZX aceito pelo contribuidor par +- [ ] Config Agent instalado e em execução +- [ ] Config Agent recebendo configuração do controlador +- [ ] Telemetry Agent instalado e em execução +- [ ] Editor de métricas registrado onchain +- [ ] Envios de telemetria visíveis no ledger + +### Fase 5: Rodagem do Link +- [ ] Todos os links drenados durante um período de rodagem de 24 horas +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz) mostra zero perdas e zero erros durante 24h +- [ ] Links sem drenagem após uma rodagem limpa + +### Fase 6: Verificação e Ativação +- [ ] `doublezero device list` mostra seu dispositivo (com `max_users = 0`) +- [ ] `doublezero link list` mostra seus links +- [ ] Os logs do Config Agent mostram extrações de configuração bem-sucedidas +- [ ] Os logs do Telemetry Agent mostram envios de métricas bem-sucedidos +- [ ] **Coordenar com DZ/Malbec Labs** para executar um teste de conectividade (conectar, receber rotas, rotear sobre DZ) +- [ ] Após o teste passar, definir `max_users` como 96 via `doublezero device update` + +--- + +## Obter Ajuda + +Como parte da integração, o DZF irá adicioná-lo aos canais Slack de contribuidores: + +| Canal | Propósito | +|---------|---------| +| **#dz-contributor-announcements** | Comunicações oficiais do DZF e Malbec Labs — atualizações de CLI/agentes, mudanças importantes, anúncios de segurança. Monitore para atualizações críticas; faça perguntas nas threads. | +| **#dz-contributor-incidents** | Eventos não planejados que afetam o serviço. Os incidentes são postados automaticamente via API/formulário web com severidade e dispositivos/links afetados. A discussão e resolução de problemas ocorrem nas threads. | +| **#dz-contributor-maintenance** | Atividades de manutenção planejadas (atualizações, reparos). Agendadas via API/formulário web com horários de início/fim planejados. Discussão nas threads. | +| **#dz-contributor-ops** | Discussão aberta para todos os contribuidores — perguntas operacionais, ajuda com CLI, compartilhamento de runbooks e playbooks. | + +Você também receberá um **canal privado do DZ/Malbec Labs** para suporte direto da sua organização. + +--- + +## Regras de Prefixo DZ + +!!! warning "Crítico: Uso do Pool de Prefixos DZ" + O pool de prefixos DZ que você fornece é **gerenciado pelo protocolo DoubleZero para alocação de IP**. + + **Como os prefixos DZ são usados:** + + - **Primeiro IP**: Reservado para o seu dispositivo (atribuído à interface Loopback100) + - **IPs restantes**: Alocados para tipos específicos de usuários que se conectam ao seu DZD: + - Usuários `IBRLWithAllocatedIP` + - Usuários `EdgeFiltering` + - Publicadores multicast + - **Usuários IBRL**: NÃO consomem deste pool (usam seu próprio IP público) + + **NÃO pode usar esses endereços para:** + + - Seu próprio equipamento de rede + - Links ponto a ponto em interfaces DIA + - Interfaces de gerenciamento + - Qualquer infraestrutura fora do protocolo DZ + + **Requisitos:** + + - Devem ser endereços IPv4 **globalmente roteáveis (públicos)** + - Intervalos de IP privados (10.x, 172.16-31.x, 192.168.x) são rejeitados pelo contrato inteligente + - **Tamanho mínimo: /29** (8 endereços), prefixos maiores são preferidos (por exemplo, /28, /27) + - Todo o bloco deve estar disponível — não pré-aloque nenhum endereço + + Se você precisar de endereços para seu próprio equipamento (IPs de interface DIA, gerenciamento, etc.), use um **pool de endereços separado**. + +--- + +## Referência Rápida: Termos-Chave + +Novo no DoubleZero? Aqui estão os termos essenciais (consulte o [Glossário completo](glossary.md)): + +| Termo | Definição | +|------|------------| +| **DZD** | Dispositivo DoubleZero — seu switch físico Arista que executa os agentes DZ | +| **DZX** | DoubleZero Exchange — ponto de interconexão metropolitana onde os contribuidores se conectam entre si | +| **CYOA** | Choose Your Own Adventure — método de conectividade de usuários (GREOverDIA, GREOverFabric, etc.) | +| **DIA** | Acesso Direto à Internet — conectividade à internet requerida por todos os DZDs para o controlador e a telemetria, comumente usado como tipo CYOA para conectividade de usuários em dispositivos de borda/híbridos | +| **Link WAN** | Link entre seus próprios DZDs (mesmo contribuidor) | +| **Link DZX** | Link para o DZD de outro contribuidor (requer aceitação mútua) | +| **Config Agent** | Consulta o controlador, aplica a configuração ao seu DZD | +| **Telemetry Agent** | Coleta métricas de latência/perda TWAMP, envia ao ledger onchain | +| **Chave de Serviço** | Sua chave de identidade de contribuidor para operações do CLI | +| **Chave do Editor de Métricas** | Chave para assinar envios de telemetria onchain | + +--- + +--- + +## Estrutura da Documentação + +| Guia | Descrição | +|-------|-------------| +| [Requisitos e Arquitetura](contribute.md) | Especificações de hardware, arquitetura de rede, opções de largura de banda | +| [Provisionamento de Dispositivos](contribute-provisioning.md) | Passo a passo: chaves → acesso ao repositório → dispositivo → links → agentes | +| [Operações](contribute-operations.md) | Atualizações de agentes, gerenciamento de links, monitoramento | +| [Glossário](glossary.md) | Toda a terminologia do DoubleZero definida | + +--- + +## Conceitos de Rede para Não-Engenheiros de Rede + +Se você não tem experiência em engenharia de rede, aqui está uma introdução aos conceitos usados nesta documentação: + +### Endereçamento IP + +- **Endereço IPv4**: Um identificador único para um dispositivo em uma rede (por exemplo, `192.168.1.1`) +- **Notação CIDR** (`/29`, `/24`): Indica o tamanho da sub-rede. `/29` = 8 endereços, `/24` = 256 endereços +- **IP público**: Roteável na internet; **IP privado**: Somente redes internas (10.x, 172.16-31.x, 192.168.x) + +### Camadas de Rede + +- **Camada 1 (Física)**: Cabos, óptica, comprimentos de onda +- **Camada 2 (Enlace de Dados)**: Switches, VLANs, endereços MAC +- **Camada 3 (Rede)**: Roteadores, endereços IP, protocolos de roteamento + +### Termos Comuns + +- **MTU**: Unidade Máxima de Transmissão — tamanho máximo de pacote (tipicamente 9000 bytes para links WAN) +- **VLAN**: LAN Virtual — separa logicamente o tráfego em infraestrutura compartilhada +- **VRF**: Virtual Routing and Forwarding — isola tabelas de roteamento no mesmo dispositivo +- **BGP**: Border Gateway Protocol — troca de rotas entre redes +- **GRE**: Generic Routing Encapsulation — protocolo de tunelamento para redes overlay +- **TWAMP**: Two-Way Active Measurement Protocol — mede latência/perda entre dispositivos + +### Específico do DoubleZero + +- **Onchain**: No DoubleZero, os registros de dispositivos, as configurações de links e a telemetria são registrados no ledger DoubleZero, tornando o estado da rede transparente e verificável por todos os participantes +- **Controlador**: Serviço que deriva a configuração do DZD a partir do estado onchain no ledger DoubleZero + +--- + +Pronto para começar? Comece com [Requisitos e Arquitetura](contribute.md). diff --git a/docs/contribute-overview.zh.md b/docs/contribute-overview.zh.md new file mode 100644 index 0000000..55647ac --- /dev/null +++ b/docs/contribute-overview.zh.md @@ -0,0 +1,176 @@ +# 贡献者文档 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "术语" + 初次使用DoubleZero?请参阅[词汇表](glossary.md)了解[DZD](glossary.md#dzd-doublezero-device)、[DZX](glossary.md#dzx-doublezero-exchange)和[CYOA](glossary.md#cyoa-choose-your-own-adventure)等关键术语的定义。 + +欢迎阅读DoubleZero贡献者文档。本节涵盖成为网络贡献者所需的一切内容。 + +!!! tip "有兴趣成为网络贡献者?" + 请查看[需求与架构](contribute.md)页面,了解为DoubleZero网络做贡献所需的硬件、带宽和连接要求。 + +--- + +## 入职核对清单 + +使用此核对清单跟踪您的进度。**在您的贡献在技术上正式运营之前,所有项目必须完成。** + +### 第一阶段:前提条件 +- [ ] 在管理服务器上安装DoubleZero CLI +- [ ] 硬件已采购并符合[要求](contribute.md#hardware-requirements) +- [ ] 数据中心机架空间和电源可用(推荐4U、4KW) +- [ ] DZD已物理安装并具有管理连接 +- [ ] 为DZ协议分配公共IPv4地址块(**参见[DZ前缀规则](#dz-prefix-rules)**) + +### 第二阶段:账户设置 +- [ ] 生成服务密钥对(`doublezero keygen`) +- [ ] 生成指标发布者密钥对 +- [ ] 服务密钥已提交给DZF进行授权 +- [ ] 链上创建贡献者账户(通过`doublezero contributor list`验证) +- [ ] 获得[malbeclabs/contributors](https://github.com/malbeclabs/contributors)仓库访问权限 + +### 第三阶段:设备配置 +- [ ] 已应用基础设备配置(来自contributors仓库) +- [ ] 链上创建设备(`doublezero device create`) +- [ ] 设备接口已注册 +- [ ] 环回接口已创建(Loopback255 vpnv4,Loopback256 ipv4) +- [ ] CYOA/DIA接口已配置(如果是边缘/混合设备) + +### 第四阶段:链路建立与代理安装 +- [ ] WAN链路已创建(如适用) +- [ ] DZX链路已创建(状态:`requested`) +- [ ] DZX链路已由对等贡献者接受 +- [ ] 配置代理已安装并运行 +- [ ] 配置代理正在从控制器接收配置 +- [ ] 遥测代理已安装并运行 +- [ ] 指标发布者已在链上注册 +- [ ] 遥测提交在账本上可见 + +### 第五阶段:链路磨合 +- [ ] 所有链路已清空进行24小时磨合期 +- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz)显示24小时内零丢包和零错误 +- [ ] 清洁磨合后链路已取消清空 + +### 第六阶段:验证与激活 +- [ ] `doublezero device list`显示您的设备(`max_users = 0`) +- [ ] `doublezero link list`显示您的链路 +- [ ] 配置代理日志显示成功的配置拉取 +- [ ] 遥测代理日志显示成功的指标提交 +- [ ] **与DZ/Malbec Labs协调**运行连接测试(连接、接收路由、通过DZ路由) +- [ ] 测试通过后,通过`doublezero device update`将`max_users`设置为96 + +--- + +## 获取帮助 + +作为入职的一部分,DZF将把您添加到贡献者Slack频道: + +| 频道 | 用途 | +|---------|---------| +| **#dz-contributor-announcements** | DZF和Malbec Labs的官方通信——CLI/代理升级、重大更改、安全公告。监控关键更新;在线程中提问。 | +| **#dz-contributor-incidents** | 未计划的服务影响事件。事件通过API/Web表单自动发布,包含严重程度和受影响的设备/链路。讨论和故障排除在线程中进行。 | +| **#dz-contributor-maintenance** | 计划维护活动(升级、维修)。通过API/Web表单安排,包含计划开始/结束时间。讨论在线程中进行。 | +| **#dz-contributor-ops** | 所有贡献者的开放讨论——运营问题、CLI帮助、分享运行手册和操作手册。 | + +您还将获得一个用于您组织直接支持的**私有DZ/Malbec Labs频道**。 + +--- + +## DZ前缀规则 + +!!! warning "重要:DZ前缀池使用" + 您提供的DZ前缀池由**DoubleZero协议管理,用于IP分配**。 + + **DZ前缀的使用方式:** + + - **第一个IP**:为您的设备保留(分配给Loopback100接口) + - **剩余IP**:分配给连接到您DZD的特定用户类型: + - `IBRLWithAllocatedIP`用户 + - `EdgeFiltering`用户 + - 多播发布者 + - **IBRL用户**:不消耗此池(他们使用自己的公共IP) + + **您不能将这些地址用于:** + + - 您自己的网络设备 + - DIA接口上的点对点链路 + - 管理接口 + - DZ协议之外的任何基础设施 + + **要求:** + + - 必须是**全球可路由(公共)**的IPv4地址 + - 智能合约拒绝私有IP范围(10.x、172.16-31.x、192.168.x) + - **最小大小:/29**(8个地址),首选更大的前缀(如/28、/27) + - 整个地址块必须可用——不要预先分配任何地址 + + 如果您需要用于自己设备的地址(DIA接口IP、管理地址等),请使用**单独的地址池**。 + +--- + +## 快速参考:关键术语 + +初次使用DoubleZero?以下是基本术语(参见[完整词汇表](glossary.md)): + +| 术语 | 定义 | +|------|------------| +| **DZD** | DoubleZero设备——运行DZ代理的物理Arista交换机 | +| **DZX** | DoubleZero交换点——贡献者对等的城域互连点 | +| **CYOA** | 自选冒险——用户连接方法(GREOverDIA、GREOverFabric等) | +| **DIA** | 直接互联网访问——所有DZD用于控制器和遥测的互联网连接,通常用作边缘/混合设备上用户连接的CYOA类型 | +| **WAN链路** | 您自己的DZD之间的链路(同一贡献者) | +| **DZX链路** | 到另一贡献者DZD的链路(需要相互接受) | +| **配置代理** | 轮询控制器,将配置应用到您的DZD | +| **遥测代理** | 收集TWAMP延迟/丢包指标,提交到链上账本 | +| **服务密钥** | 您的贡献者身份密钥,用于CLI操作 | +| **指标发布者密钥** | 用于签署链上遥测提交的密钥 | + +--- + +--- + +## 文档结构 + +| 指南 | 描述 | +|-------|-------------| +| [需求与架构](contribute.md) | 硬件规格、网络架构、带宽选项 | +| [设备配置](contribute-provisioning.md) | 分步操作:密钥→仓库访问→设备→链路→代理 | +| [运营](contribute-operations.md) | 代理升级、链路管理、监控 | +| [词汇表](glossary.md) | 所有DoubleZero术语定义 | + +--- + +## 非网络工程师的网络基础知识 + +如果您不是网络工程师背景,以下是本文档中使用的概念入门: + +### IP寻址 + +- **IPv4地址**:网络上设备的唯一标识符(如`192.168.1.1`) +- **CIDR表示法**(`/29`、`/24`):指示子网大小。`/29` = 8个地址,`/24` = 256个地址 +- **公共IP**:在互联网上可路由;**私有IP**:仅限内部网络(10.x、172.16-31.x、192.168.x) + +### 网络层 + +- **第1层(物理层)**:电缆、光纤、波长 +- **第2层(数据链路层)**:交换机、VLAN、MAC地址 +- **第3层(网络层)**:路由器、IP地址、路由协议 + +### 常用术语 + +- **MTU**:最大传输单元——最大数据包大小(WAN链路通常为9000字节) +- **VLAN**:虚拟局域网——在共享基础设施上逻辑分隔流量 +- **VRF**:虚拟路由和转发——在同一设备上隔离路由表 +- **BGP**:边界网关协议——网络间路由交换 +- **GRE**:通用路由封装——覆盖网络的隧道协议 +- **TWAMP**:双向主动测量协议——测量设备之间的延迟/丢包 + +### DoubleZero特定 + +- **链上**:在DoubleZero中,设备注册、链路配置和遥测记录在DoubleZero账本上——使所有参与者都能透明和可验证地了解网络状态 +- **控制器**:从DoubleZero账本上的链上状态派生DZD配置的服务 + +--- + +准备好开始了吗?从[需求与架构](contribute.md)开始。 diff --git a/docs/contribute-provisioning.es.md b/docs/contribute-provisioning.es.md new file mode 100644 index 0000000..aa71b09 --- /dev/null +++ b/docs/contribute-provisioning.es.md @@ -0,0 +1,862 @@ +# Guía de Aprovisionamiento de Dispositivos +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Esta guía le lleva a través del aprovisionamiento de un Dispositivo DoubleZero (DZD) de principio a fin. Cada fase corresponde a la [Lista de Verificación de Incorporación](contribute-overview.md#onboarding-checklist). + +--- + +## Cómo Encaja Todo + +Antes de entrar en los pasos, aquí está el panorama general de lo que está construyendo: + +```mermaid +flowchart TB + subgraph Onchain + SC[Ledger DoubleZero] + end + + subgraph Your Infrastructure + MGMT[Servidor de Gestión
CLI DoubleZero] + DZD[Su DZD
Switch Arista] + DZD ---|Enlace WAN| DZD2[Su otro DZD] + end + + subgraph Other Contributor + OtherDZD[Su DZD] + end + + subgraph Users + VAL[Validadores] + RPC[Nodos RPC] + end + + MGMT -.->|Registra dispositivos,
enlaces, interfaces| SC + DZD ---|Enlace DZX| OtherDZD + VAL ---|Conectar via Internet| DZD + RPC ---|Conectar via Internet| DZD +``` + +--- + +## Fase 1: Requisitos Previos + +Antes de poder aprovisionar un dispositivo, necesita el hardware físico configurado y algunas direcciones IP asignadas. + +### Lo Que Necesita + +| Requisito | Por Qué Es Necesario | +|-------------|-----------------| +| **Hardware DZD** | Switch Arista 7280CR3A (consulte [especificaciones de hardware](contribute.md#hardware-requirements)) | +| **Espacio en Rack** | 4U con flujo de aire adecuado | +| **Energía** | Alimentaciones redundantes, ~4KW recomendado | +| **Acceso de Gestión** | Acceso SSH/consola para configurar el switch | +| **Conectividad a Internet** | Para publicación de métricas y para obtener configuración del controlador | +| **Bloque IPv4 Público** | Mínimo /29 para el pool de prefijos DZ (ver abajo) | + +### Instalar el CLI de DoubleZero + +El CLI de DoubleZero (`doublezero`) se usa durante todo el aprovisionamiento para registrar dispositivos, crear enlaces y gestionar su contribución. Debe instalarse en un **servidor de gestión o VM**, no en el switch DZD en sí. El switch solo ejecuta el Agente de Configuración y el Agente de Telemetría (instalados en la [Fase 4](#phase-4-link-establishment-agent-installation)). + +**Ubuntu / Debian:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +Verificar que el daemon esté ejecutándose: +```bash +sudo systemctl status doublezerod +``` + +### Comprendiendo Su Prefijo DZ + +Su prefijo DZ es un bloque de direcciones IP públicas que el protocolo DoubleZero gestiona para la asignación de IP. + +```mermaid +flowchart LR + subgraph "Su Bloque /29 (8 IPs)" + IP1["Primera IP
Reservada para
su dispositivo"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|Asignada a| LO[Loopback100
en su DZD] + IP2 -->|Asignada a| U1[Usuario 1] + IP3 -->|Asignada a| U2[Usuario 2] +``` + +**Cómo se usan los prefijos DZ:** + +- **Primera IP**: Reservada para su dispositivo (asignada a la interfaz Loopback100) +- **IPs restantes**: Asignadas a tipos específicos de usuarios que se conectan a su DZD: + - Usuarios `IBRLWithAllocatedIP` + - Usuarios `EdgeFiltering` + - Publicadores multicast +- **Usuarios IBRL**: NO consumen de este pool (usan su propia IP pública) + +!!! warning "Reglas de Prefijo DZ" + **NO PUEDE usar estas direcciones para:** + + - Su propio equipo de red + - Enlaces punto a punto en interfaces DIA + - Interfaces de gestión + - Cualquier infraestructura fuera del protocolo DZ + + **Requisitos:** + + - Deben ser direcciones IPv4 **globalmente enrutables (públicas)** + - Los rangos de IP privados (10.x, 172.16-31.x, 192.168.x) son rechazados por el contrato inteligente + - **Tamaño mínimo: /29** (8 direcciones), se prefieren prefijos más grandes (por ejemplo, /28, /27) + - Todo el bloque debe estar disponible — no preasigne ninguna dirección + + Si necesita direcciones para su propio equipo (IPs de interfaz DIA, gestión, etc.), use un **pool de direcciones separado**. + +--- + +## Fase 2: Configuración de Cuenta + +En esta fase, crea las claves criptográficas que lo identifican a usted y a sus dispositivos en la red. + +### Dónde Ejecutar el CLI + +!!! warning "NO instale el CLI en su switch" + El CLI de DoubleZero (`doublezero`) debe instalarse en un **servidor de gestión o VM**, no en su switch Arista. + + ```mermaid + flowchart LR + subgraph "Servidor/VM de Gestión" + CLI[CLI DoubleZero] + KEYS[Sus Keypairs] + end + + subgraph "Su Switch DZD" + CA[Agente de Configuración] + TA[Agente de Telemetría] + end + + CLI -->|Crea dispositivos, enlaces| BC[Blockchain] + CA -->|Obtiene configuración| CTRL[Controlador] + TA -->|Envía métricas| BC + ``` + + | Instalar en Servidor de Gestión | Instalar en Switch | + |-----------------------------|-------------------| + | CLI `doublezero` | Agente de Configuración | + | Su keypair de servicio | Agente de Telemetría | + | Su keypair de editor de métricas | Keypair de editor de métricas (copia) | + +### ¿Qué Son las Claves? + +Piense en las claves como credenciales de inicio de sesión seguras: + +- **Clave de Servicio**: Su identidad de contribuidor — usada para ejecutar comandos del CLI +- **Clave de Editor de Métricas**: La identidad de su dispositivo para enviar datos de telemetría + +Ambas son keypairs criptográficos (una clave pública que comparte, una clave privada que mantiene en secreto). + +```mermaid +flowchart LR + subgraph "Sus Claves" + SK[Clave de Servicio
~/.config/solana/id.json] + MK[Clave de Editor de Métricas
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|Usada para| CLI[Comandos CLI
doublezero device create
doublezero link create] + MK -->|Usada para| TEL[Agente de Telemetría
Envía métricas onchain] +``` + +### Paso 2.1: Generar Su Clave de Servicio + +Esta es su identidad principal para interactuar con DoubleZero. + +```bash +doublezero keygen +``` + +Esto crea un keypair en la ubicación predeterminada. La salida muestra su **clave pública** — esto es lo que compartirá con DZF. + +### Paso 2.2: Generar Su Clave de Editor de Métricas + +Esta clave la usa el Agente de Telemetría para firmar envíos de métricas. + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### Paso 2.3: Enviar Claves a DZF + +Contacte a la Fundación DoubleZero o Malbec Labs y proporcione: + +1. Su **clave pública de la clave de servicio** +2. Su **nombre de usuario de GitHub** (para acceso al repositorio) + +Ellos: + +- Crearán su **cuenta de contribuidor** onchain +- Otorgarán acceso al **repositorio de contribuidores** privado + +### Paso 2.4: Verificar Su Cuenta + +Una vez confirmado, verifique que su cuenta de contribuidor existe: + +```bash +doublezero contributor list +``` + +Debería ver su código de contribuidor en la lista. + +### Paso 2.5: Acceder al Repositorio de Contribuidores + +El repositorio [malbeclabs/contributors](https://github.com/malbeclabs/contributors) contiene: + +- Configuraciones base de dispositivos +- Perfiles TCAM +- Configuraciones ACL +- Instrucciones de configuración adicionales + +Siga las instrucciones allí para la configuración específica del dispositivo. + +--- + +## Fase 3: Aprovisionamiento de Dispositivos + +Ahora registrará su dispositivo físico en la blockchain y configurará sus interfaces. + +### Comprendiendo los Tipos de Dispositivos + +```mermaid +flowchart TB + subgraph "Dispositivo de Borde" + E[DZD de Borde] + EU[Los usuarios se conectan aquí] + EU --> E + E <-->|Enlace DZX| ED[Otro DZD] + end + + subgraph "Dispositivo de Tránsito" + T[DZD de Tránsito] + T <-->|Enlace WAN| T2[Otro DZD] + T <-->|Enlace DZX| TD[Otro DZD] + end + + subgraph "Dispositivo Híbrido" + H[DZD Híbrido] + HU[Los usuarios se conectan aquí] + HU --> H + H <-->|Enlace WAN| H2[Otro DZD] + H <-->|Enlace DZX| HD[Otro DZD] + end +``` + +| Tipo | Qué Hace | Cuándo Usar | +|------|--------------|-------------| +| **Borde** | Solo acepta conexiones de usuarios | Ubicación única, solo orientado al usuario | +| **Tránsito** | Mueve tráfico entre dispositivos | Conectividad de backbone, sin usuarios | +| **Híbrido** | Conexiones de usuarios Y backbone | Lo más común — hace todo | + +### Paso 3.1: Encontrar Su Ubicación e Exchange + +Antes de crear su dispositivo, busque los códigos de su ubicación de centro de datos y el exchange más cercano: + +```bash +# Listar ubicaciones disponibles (centros de datos) +doublezero location list + +# Listar exchanges disponibles (puntos de interconexión) +doublezero exchange list +``` + +### Paso 3.2: Crear Su Dispositivo Onchain + +Registre su dispositivo en la blockchain: + +```bash +doublezero device create \ + --code \ + --contributor \ + --device-type hybrid \ + --location \ + --exchange \ + --public-ip \ + --dz-prefixes +``` + +**Ejemplo:** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**Salida esperada:** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +Verifique que su dispositivo fue creado: + +```bash +doublezero device list | grep nyc-dz001 +``` + +**Parámetros explicados:** + +| Parámetro | Qué Significa | +|-----------|---------------| +| `--code` | Un nombre único para su dispositivo (por ejemplo, `nyc-dz001`) | +| `--contributor` | Su código de contribuidor (dado por DZF) | +| `--device-type` | `hybrid`, `transit` o `edge` | +| `--location` | Código del centro de datos de `location list` | +| `--exchange` | Código del exchange más cercano de `exchange list` | +| `--public-ip` | La IP pública donde los usuarios se conectan a su dispositivo a través de internet | +| `--dz-prefixes` | Su bloque de IP asignado para usuarios | + +### Paso 3.3: Crear Interfaces Loopback Requeridas + +Cada dispositivo necesita dos interfaces loopback para el enrutamiento interno: + +```bash +# Loopback VPNv4 +doublezero device interface create Loopback255 --loopback-type vpnv4 + +# Loopback IPv4 +doublezero device interface create Loopback256 --loopback-type ipv4 +``` + +**Salida esperada (para cada comando):** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### Paso 3.4: Crear Interfaces Físicas + +Registre los puertos físicos que usará: + +```bash +# Interfaz básica +doublezero device interface create Ethernet1/1 +``` + +**Salida esperada:** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### Paso 3.5: Crear Interfaz CYOA (para dispositivos de Borde/Híbridos) + +Si su dispositivo acepta conexiones de usuarios, necesita una interfaz CYOA (Elige Tu Propia Aventura). Esto le dice al sistema cómo los usuarios se conectan a usted. + +**Tipos CYOA Explicados:** + +| Tipo | En Términos Simples | Cuándo Usar | +|------|--------------|----------| +| `gre-over-dia` | Los usuarios se conectan a través de internet regular | Lo más común — los usuarios se conectan a través de la DIA a su DZD | +| `gre-over-private-peering` | Los usuarios se conectan a través de enlace privado | Los usuarios tienen conexión directa a su red | +| `gre-over-public-peering` | Los usuarios se conectan a través de IX | Los usuarios se emparejan con usted en un exchange de internet | +| `gre-over-fabric` | Los usuarios en la misma red local | Los usuarios en el mismo centro de datos | +| `gre-over-cable` | Cable directo al usuario | Usuario dedicado único | + +**Ejemplo — Usuarios estándar de internet:** + +```bash +doublezero device interface create Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**Salida esperada:** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**Parámetros explicados:** + +| Parámetro | Qué Significa | +|-----------|---------------| +| `--interface-cyoa` | Cómo se conectan los usuarios (ver tabla arriba) | +| `--interface-dia` | `dia` si este es un puerto orientado a internet | +| `--bandwidth` | Velocidad del puerto en Mbps (10000 = 10Gbps) | +| `--cir` | Tasa comprometida en Mbps (ancho de banda garantizado) | +| `--user-tunnel-endpoint` | Este puerto acepta túneles de usuario | + +### Paso 3.6: Verificar Su Dispositivo + +```bash +doublezero device list +``` + +**Ejemplo de salida:** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +Su dispositivo debería aparecer con el estado `activated`. + +--- + +## Fase 4: Establecimiento de Enlace e Instalación de Agentes + +Los enlaces conectan su dispositivo al resto de la red DoubleZero. + +### Comprendiendo los Enlaces + +```mermaid +flowchart LR + subgraph "Su Red" + D1[Su DZD 1
NYC] + D2[Su DZD 2
LAX] + end + + subgraph "Otro Contribuidor" + O1[Su DZD
NYC] + end + + D1 ---|Enlace WAN
Mismo contribuidor| D2 + D1 ---|Enlace DZX
Diferentes contribuidores| O1 +``` + +| Tipo de Enlace | Conecta | Aceptación | +|-----------|----------|------------| +| **Enlace WAN** | Dos de SUS dispositivos | Automática (usted posee ambos) | +| **Enlace DZX** | Su dispositivo a OTRO contribuidor | Requiere su aceptación | + +### Paso 4.1: Crear Enlaces WAN (si tiene múltiples dispositivos) + +Los enlaces WAN conectan sus propios dispositivos: + +```bash +doublezero link create wan \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --side-z-interface \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**Ejemplo:** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**Salida esperada:** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### Paso 4.2: Crear Enlaces DZX + +Los enlaces DZX conectan su dispositivo directamente al DZD de otro contribuidor: + +```bash +doublezero link create dzx \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --bandwidth \ + --mtu \ + --delay-ms \ + --jitter-ms +``` + +**Salida esperada:** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +Después de crear un enlace DZX, el otro contribuidor debe aceptarlo: + +```bash +# El OTRO contribuidor ejecuta esto +doublezero link accept \ + --code \ + --side-z-interface +``` + +**Salida esperada (para el contribuidor que acepta):** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### Paso 4.3: Verificar Enlaces + +```bash +doublezero link list +``` + +**Ejemplo de salida:** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +Los enlaces deben mostrar el estado `activated` una vez que ambos lados estén configurados. + +--- + +### Instalación de Agentes + +Dos agentes de software se ejecutan en su DZD: + +```mermaid +flowchart TB + subgraph "Su DZD" + CA[Agente de Configuración] + TA[Agente de Telemetría] + HW[Hardware/Software del Switch] + end + + CA -->|Obtiene configuración| CTRL[Servicio Controlador] + CA -->|Aplica configuración| HW + + HW -->|Métricas| TA + TA -->|Envía onchain| BC[Ledger DoubleZero] +``` + +| Agente | Qué Hace | +|-------|--------------| +| **Agente de Configuración** | Obtiene configuración del controlador, la aplica a su switch | +| **Agente de Telemetría** | Mide latencia/pérdida hacia otros dispositivos, reporta métricas onchain | + +### Paso 4.4: Instalar el Agente de Configuración + +#### Habilitar la API en su switch + +Agregar a la configuración EOS: + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "Nota sobre VRF" + Reemplace `default` con el nombre de su VRF de gestión si es diferente (por ejemplo, `management`). + +#### Descargar e instalar el agente + +```bash +# Entrar al bash en el switch +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# Instalar como extensión EOS +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Verificar la extensión + +```bash +switch# show extensions +``` + +El estado debe ser "A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configurar e iniciar el agente + +Agregar a la configuración EOS: + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey + no shut +``` + +!!! note "Nota sobre VRF" + Si su VRF de gestión no es `default` (es decir, el espacio de nombres no es `ns-default`), prefije el comando exec con `exec /sbin/ip netns exec ns-`. Por ejemplo, si su VRF es `management`: + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey + no shut + ``` + +Obtenga la pubkey de su dispositivo desde `doublezero device list` (la columna `account`). + +#### Verificar que está ejecutándose + +```bash +switch# show agent doublezero-agent logs +``` + +Debería ver "Starting doublezero-agent" y conexiones exitosas al controlador. + +### Paso 4.5: Instalar el Agente de Telemetría + +#### Copiar la clave de editor de métricas a su dispositivo + +```bash +scp ~/.config/doublezero/metrics-publisher.json :/mnt/flash/metrics-publisher-keypair.json +``` + +#### Registrar el editor de métricas onchain + +```bash +doublezero device update \ + --pubkey \ + --metrics-publisher +``` + +Obtenga la pubkey de su archivo metrics-publisher.json. + +#### Descargar e instalar el agente + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# Instalar como extensión EOS +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Verificar la extensión + +```bash +switch# show extensions +``` + +El estado debe ser "A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configurar e iniciar el agente + +Agregar a la configuración EOS: + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "Nota sobre VRF" + Si su VRF de gestión no es `default` (es decir, el espacio de nombres no es `ns-default`), agregue `--management-namespace ns-` al comando exec. Por ejemplo, si su VRF es `management`: + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### Verificar que está ejecutándose + +```bash +switch# show agent doublezero-telemetry logs +``` + +Debería ver "Starting telemetry collector" y "Starting submission loop". + +--- + +## Fase 5: Rodaje del Enlace + +!!! warning "Todos los nuevos enlaces deben rodar antes de transportar tráfico" + Los nuevos enlaces deben **estar drenados durante al menos 24 horas** antes de activarse para tráfico de producción. Este requisito de rodaje está definido en [RFC12: Aprovisionamiento de Red](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md), que especifica ~200,000 slots del Ledger DZ (~20 horas) de métricas limpias antes de que un enlace esté listo para servicio. + +Con los agentes instalados y funcionando, monitoree sus enlaces en [metrics.doublezero.xyz](https://metrics.doublezero.xyz) durante al menos 24 horas consecutivas: + +- Panel **"DoubleZero Device-Link Latencies"** — verifique **cero pérdida de paquetes** en el enlace a lo largo del tiempo +- Panel **"DoubleZero Network Metrics"** — verifique **cero errores** en sus enlaces + +Solo quite el drenado del enlace una vez que el período de rodaje muestre un enlace limpio con cero pérdidas y cero errores. + +--- + +## Fase 6: Verificación y Activación + +Repase esta lista de verificación para confirmar que todo está funcionando. + +!!! warning "Su dispositivo comienza bloqueado (`max_users = 0`)" + Cuando se crea un dispositivo, `max_users` se establece en **0** por defecto. Esto significa que ningún usuario puede conectarse a él todavía. Esto es intencional: debe verificar que todo funciona antes de aceptar tráfico de usuarios. + + **Antes de establecer `max_users` por encima de 0, debe:** + + 1. Confirmar que todos los enlaces han completado su **rodaje de 24 horas** con cero pérdidas/errores en [metrics.doublezero.xyz](https://metrics.doublezero.xyz) + 2. **Coordinar con DZ/Malbec Labs** para ejecutar una prueba de conectividad: + - ¿Puede un usuario de prueba conectarse a su dispositivo? + - ¿El usuario recibe rutas sobre la red DZ? + - ¿Puede el usuario enrutar tráfico sobre la red DZ de extremo a extremo? + 3. Solo después de que DZ/ML confirme que las pruebas pasen, establezca max_users en 96: + + ```bash + doublezero device update --pubkey --max-users 96 + ``` + +### Verificaciones del Dispositivo + +```bash +# Su dispositivo debería aparecer con el estado "activated" +doublezero device list | grep +``` + +**Salida esperada:** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# Sus interfaces deberían estar listadas +doublezero device interface list | grep +``` + +**Salida esperada:** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### Verificaciones de Enlace + +```bash +# Los enlaces deben mostrar el estado "activated" +doublezero link list | grep +``` + +**Salida esperada:** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### Verificaciones de Agentes + +En el switch: + +```bash +# El agente de configuración debe mostrar obtenciones de configuración exitosas +switch# show agent doublezero-agent logs | tail -20 + +# El agente de telemetría debe mostrar envíos exitosos +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### Diagrama de Verificación Final + +```mermaid +flowchart TB + subgraph "Lista de Verificación" + D[Estado del Dispositivo: activated?] + I[Interfaces: registradas?] + L[Enlaces: activated?] + CA[Agente de Configuración: obteniendo configuración?] + TA[Agente de Telemetría: enviando métricas?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[Todas las Verificaciones Pasan] --> NOTIFY[Notificar a DZF/Malbec Labs
¡Está técnicamente listo!] +``` + +--- + +## Solución de Problemas + +### La creación del dispositivo falla + +- Verifique que su clave de servicio esté autorizada (`doublezero contributor list`) +- Compruebe que los códigos de ubicación y exchange son válidos +- Asegúrese de que el prefijo DZ sea un rango de IP pública válido + +### Enlace atascado en estado "requested" + +- Los enlaces DZX requieren aceptación por parte del otro contribuidor +- Contáctelos para ejecutar `doublezero link accept` + +### El Agente de Configuración no se conecta + +- Verifique que la red de gestión tiene acceso a internet +- Compruebe que la configuración VRF coincide con su configuración +- Asegúrese de que la pubkey del dispositivo es correcta + +### El Agente de Telemetría no envía + +- Verifique que la clave de editor de métricas esté registrada onchain +- Compruebe que el archivo keypair existe en el switch +- Asegúrese de que la pubkey de la cuenta del dispositivo es correcta + +--- + +## Próximos Pasos + +- Revise la [Guía de Operaciones](contribute-operations.md) para actualizaciones de agentes y gestión de enlaces +- Consulte el [Glosario](glossary.md) para definiciones de términos +- Contacte a DZF/Malbec Labs si encuentra problemas diff --git a/docs/contribute-provisioning.fr.md b/docs/contribute-provisioning.fr.md new file mode 100644 index 0000000..803b966 --- /dev/null +++ b/docs/contribute-provisioning.fr.md @@ -0,0 +1,862 @@ +# Guide de Provisionnement des Dispositifs +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Ce guide vous accompagne dans le provisionnement d'un DoubleZero Device (DZD) du début à la fin. Chaque phase correspond à la [Liste de Contrôle d'Intégration](contribute-overview.md#onboarding-checklist). + +--- + +## Vue d'Ensemble + +Avant de plonger dans les étapes, voici la vue d'ensemble de ce que vous construisez : + +```mermaid +flowchart TB + subgraph Onchain + SC[Registre DoubleZero] + end + + subgraph Votre Infrastructure + MGMT[Serveur de Gestion
CLI DoubleZero] + DZD[Votre DZD
Commutateur Arista] + DZD ---|Lien WAN| DZD2[Votre autre DZD] + end + + subgraph Autre Contributeur + OtherDZD[Leur DZD] + end + + subgraph Utilisateurs + VAL[Validateurs] + RPC[Nœuds RPC] + end + + MGMT -.->|Enregistre dispositifs,
liens, interfaces| SC + DZD ---|Lien DZX| OtherDZD + VAL ---|Connexion via Internet| DZD + RPC ---|Connexion via Internet| DZD +``` + +--- + +## Phase 1 : Prérequis + +Avant de pouvoir provisionner un dispositif, vous avez besoin du matériel physique configuré et de quelques adresses IP allouées. + +### Ce Dont Vous Avez Besoin + +| Exigence | Pourquoi C'est Nécessaire | +|----------|--------------------------| +| **Matériel DZD** | Commutateur Arista 7280CR3A (voir [spécifications matérielles](contribute.md#hardware-requirements)) | +| **Espace Baie** | 4U avec une ventilation appropriée | +| **Alimentation** | Alimentations redondantes, ~4KW recommandé | +| **Accès Gestion** | Accès SSH/console pour configurer le commutateur | +| **Connectivité Internet** | Pour la publication de métriques et pour récupérer la configuration depuis le contrôleur | +| **Bloc IPv4 Public** | Minimum /29 pour le pool de préfixes DZ (voir ci-dessous) | + +### Installer la CLI DoubleZero + +La CLI DoubleZero (`doublezero`) est utilisée tout au long du provisionnement pour enregistrer les dispositifs, créer des liens et gérer votre contribution. Elle doit être installée sur un **serveur de gestion ou une VM** — pas sur le commutateur DZD lui-même. Le commutateur n'exécute que l'Agent de Configuration et l'Agent de Télémétrie (installés dans la [Phase 4](#phase-4-etablissement-des-liens-et-installation-des-agents)). + +**Ubuntu / Debian :** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL :** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +Vérifiez que le démon est en cours d'exécution : +```bash +sudo systemctl status doublezerod +``` + +### Comprendre Votre Préfixe DZ + +Votre préfixe DZ est un bloc d'adresses IP publiques que le protocole DoubleZero gère pour l'allocation IP. + +```mermaid +flowchart LR + subgraph "Votre Bloc /29 (8 IPs)" + IP1["Première IP
Réservée pour
votre dispositif"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|Attribuée à| LO[Loopback100
sur votre DZD] + IP2 -->|Allouée à| U1[Utilisateur 1] + IP3 -->|Allouée à| U2[Utilisateur 2] +``` + +**Comment les préfixes DZ sont utilisés :** + +- **Première IP** : Réservée pour votre dispositif (attribuée à l'interface Loopback100) +- **IPs restantes** : Allouées à des types d'utilisateurs spécifiques se connectant à votre DZD : + - Utilisateurs `IBRLWithAllocatedIP` + - Utilisateurs `EdgeFiltering` + - Éditeurs multicast +- **Utilisateurs IBRL** : N'utilisent PAS ce pool (ils utilisent leur propre IP publique) + +!!! warning "Règles du Préfixe DZ" + **Vous NE POUVEZ PAS utiliser ces adresses pour :** + + - Votre propre matériel réseau + - Les liens point à point sur les interfaces DIA + - Les interfaces de gestion + - Toute infrastructure en dehors du protocole DZ + + **Exigences :** + + - Doivent être des adresses IPv4 **globalement routables (publiques)** + - Les plages IP privées (10.x, 172.16-31.x, 192.168.x) sont rejetées par le contrat intelligent + - **Taille minimale : /29** (8 adresses), les préfixes plus grands sont préférés (par exemple, /28, /27) + - Le bloc entier doit être disponible — ne pré-allouez aucune adresse + + Si vous avez besoin d'adresses pour votre propre équipement (IPs d'interface DIA, gestion, etc.), utilisez un **pool d'adresses séparé**. + +--- + +## Phase 2 : Configuration du Compte + +Dans cette phase, vous créez les clés cryptographiques qui vous identifient, vous et vos dispositifs, sur le réseau. + +### Où Exécuter la CLI + +!!! warning "N'installez PAS la CLI sur votre commutateur" + La CLI DoubleZero (`doublezero`) doit être installée sur un **serveur de gestion ou une VM**, pas sur votre commutateur Arista. + + ```mermaid + flowchart LR + subgraph "Serveur/VM de Gestion" + CLI[CLI DoubleZero] + KEYS[Vos Paires de Clés] + end + + subgraph "Votre Commutateur DZD" + CA[Agent de Configuration] + TA[Agent de Télémétrie] + end + + CLI -->|Crée dispositifs, liens| BC[Blockchain] + CA -->|Récupère la config| CTRL[Contrôleur] + TA -->|Soumet les métriques| BC + ``` + + | Installer sur le Serveur de Gestion | Installer sur le Commutateur | + |------------------------------------|------------------------------| + | CLI `doublezero` | Agent de Configuration | + | Votre clé de service | Agent de Télémétrie | + | Votre clé de publication de métriques | Clé de publication de métriques (copie) | + +### Qu'est-ce que les Clés ? + +Pensez aux clés comme des identifiants de connexion sécurisés : + +- **Clé de Service** : Votre identité de contributeur — utilisée pour exécuter les commandes CLI +- **Clé de Publication de Métriques** : L'identité de votre dispositif pour soumettre les données de télémétrie + +Les deux sont des paires de clés cryptographiques (une clé publique que vous partagez, une clé privée que vous gardez secrète). + +```mermaid +flowchart LR + subgraph "Vos Clés" + SK[Clé de Service
~/.config/solana/id.json] + MK[Clé de Publication de Métriques
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|Utilisée pour| CLI[Commandes CLI
doublezero device create
doublezero link create] + MK -->|Utilisée pour| TEL[Agent de Télémétrie
Soumet les métriques onchain] +``` + +### Étape 2.1 : Générer Votre Clé de Service + +C'est votre identité principale pour interagir avec DoubleZero. + +```bash +doublezero keygen +``` + +Cela crée une paire de clés à l'emplacement par défaut. La sortie montre votre **clé publique** — c'est ce que vous partagerez avec DZF. + +### Étape 2.2 : Générer Votre Clé de Publication de Métriques + +Cette clé est utilisée par l'Agent de Télémétrie pour signer les soumissions de métriques. + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### Étape 2.3 : Soumettre les Clés à DZF + +Contactez la DoubleZero Foundation ou Malbec Labs et fournissez : + +1. Votre **clé publique de service** +2. Votre **nom d'utilisateur GitHub** (pour l'accès au dépôt) + +Ils vont : + +- Créer votre **compte de contributeur** onchain +- Accorder l'accès au **dépôt des contributeurs** privé + +### Étape 2.4 : Vérifier Votre Compte + +Une fois confirmé, vérifiez que votre compte de contributeur existe : + +```bash +doublezero contributor list +``` + +Vous devriez voir votre code de contributeur dans la liste. + +### Étape 2.5 : Accéder au Dépôt des Contributeurs + +Le dépôt [malbeclabs/contributors](https://github.com/malbeclabs/contributors) contient : + +- Configurations de base des dispositifs +- Profils TCAM +- Configurations ACL +- Instructions de configuration supplémentaires + +Suivez les instructions là-bas pour la configuration spécifique au dispositif. + +--- + +## Phase 3 : Provisionnement du Dispositif + +Vous allez maintenant enregistrer votre dispositif physique sur la blockchain et configurer ses interfaces. + +### Comprendre les Types de Dispositifs + +```mermaid +flowchart TB + subgraph "Dispositif Périphérique" + E[DZD Périphérique] + EU[Les utilisateurs se connectent ici] + EU --> E + E <-->|Lien DZX| ED[Autre DZD] + end + + subgraph "Dispositif de Transit" + T[DZD de Transit] + T <-->|Lien WAN| T2[Un autre DZD] + T <-->|Lien DZX| TD[Autre DZD] + end + + subgraph "Dispositif Hybride" + H[DZD Hybride] + HU[Les utilisateurs se connectent ici] + HU --> H + H <-->|Lien WAN| H2[Un autre DZD] + H <-->|Lien DZX| HD[Autre DZD] + end +``` + +| Type | Ce Qu'il Fait | Quand l'Utiliser | +|------|--------------|-----------------| +| **Périphérique** | Accepte uniquement les connexions utilisateurs | Emplacement unique, orienté utilisateurs uniquement | +| **Transit** | Déplace le trafic entre dispositifs | Connectivité backbone, sans utilisateurs | +| **Hybride** | Connexions utilisateurs ET backbone | Le plus courant — fait tout | + +### Étape 3.1 : Trouver Votre Emplacement et Exchange + +Avant de créer votre dispositif, recherchez les codes de votre emplacement de centre de données et de l'exchange le plus proche : + +```bash +# Lister les emplacements disponibles (centres de données) +doublezero location list + +# Lister les exchanges disponibles (points d'interconnexion) +doublezero exchange list +``` + +### Étape 3.2 : Créer Votre Dispositif Onchain + +Enregistrez votre dispositif sur la blockchain : + +```bash +doublezero device create \ + --code \ + --contributor \ + --device-type hybrid \ + --location \ + --exchange \ + --public-ip \ + --dz-prefixes +``` + +**Exemple :** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**Sortie attendue :** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +Vérifiez que votre dispositif a été créé : + +```bash +doublezero device list | grep nyc-dz001 +``` + +**Paramètres expliqués :** + +| Paramètre | Ce Qu'il Signifie | +|-----------|------------------| +| `--code` | Un nom unique pour votre dispositif (par exemple, `nyc-dz001`) | +| `--contributor` | Votre code de contributeur (donné par DZF) | +| `--device-type` | `hybrid`, `transit`, ou `edge` | +| `--location` | Code du centre de données de `location list` | +| `--exchange` | Code de l'exchange le plus proche de `exchange list` | +| `--public-ip` | L'IP publique où les utilisateurs se connectent à votre dispositif via internet | +| `--dz-prefixes` | Votre bloc IP alloué pour les utilisateurs | + +### Étape 3.3 : Créer les Interfaces Loopback Requises + +Chaque dispositif a besoin de deux interfaces loopback pour le routage interne : + +```bash +# Loopback VPNv4 +doublezero device interface create Loopback255 --loopback-type vpnv4 + +# Loopback IPv4 +doublezero device interface create Loopback256 --loopback-type ipv4 +``` + +**Sortie attendue (pour chaque commande) :** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### Étape 3.4 : Créer les Interfaces Physiques + +Enregistrez les ports physiques que vous utiliserez : + +```bash +# Interface de base +doublezero device interface create Ethernet1/1 +``` + +**Sortie attendue :** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### Étape 3.5 : Créer l'Interface CYOA (pour les dispositifs Périphériques/Hybrides) + +Si votre dispositif accepte des connexions utilisateurs, vous avez besoin d'une interface CYOA (Choose Your Own Adventure). Cela indique au système comment les utilisateurs se connectent à vous. + +**Types CYOA Expliqués :** + +| Type | Explication Simple | Quand Utiliser | +|------|-------------------|----------------| +| `gre-over-dia` | Les utilisateurs se connectent via internet normal | Le plus courant — les utilisateurs se connectent via le DIA à votre DZD | +| `gre-over-private-peering` | Les utilisateurs se connectent via lien privé | Les utilisateurs ont une connexion directe à votre réseau | +| `gre-over-public-peering` | Les utilisateurs se connectent via IX | Les utilisateurs peerent avec vous à un internet exchange | +| `gre-over-fabric` | Les utilisateurs sur le même réseau local | Les utilisateurs dans le même centre de données | +| `gre-over-cable` | Câble direct vers l'utilisateur | Utilisateur dédié unique | + +**Exemple - Utilisateurs internet standard :** + +```bash +doublezero device interface create Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**Sortie attendue :** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**Paramètres expliqués :** + +| Paramètre | Ce Qu'il Signifie | +|-----------|------------------| +| `--interface-cyoa` | Comment les utilisateurs se connectent (voir tableau ci-dessus) | +| `--interface-dia` | `dia` si c'est un port orienté internet | +| `--bandwidth` | Vitesse du port en Mbps (10000 = 10Gbps) | +| `--cir` | Débit engagé en Mbps (bande passante garantie) | +| `--user-tunnel-endpoint` | Ce port accepte les tunnels utilisateurs | + +### Étape 3.6 : Vérifier Votre Dispositif + +```bash +doublezero device list +``` + +**Exemple de sortie :** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +Votre dispositif devrait apparaître avec le statut `activated`. + +--- + +## Phase 4 : Établissement des Liens et Installation des Agents + +Les liens connectent votre dispositif au reste du réseau DoubleZero. + +### Comprendre les Liens + +```mermaid +flowchart LR + subgraph "Votre Réseau" + D1[Votre DZD 1
NYC] + D2[Votre DZD 2
LAX] + end + + subgraph "Autre Contributeur" + O1[Leur DZD
NYC] + end + + D1 ---|Lien WAN
Même contributeur| D2 + D1 ---|Lien DZX
Contributeurs différents| O1 +``` + +| Type de Lien | Connecte | Acceptation | +|-------------|----------|-------------| +| **Lien WAN** | Deux de VOS dispositifs | Automatique (vous possédez les deux) | +| **Lien DZX** | Votre dispositif à un AUTRE contributeur | Nécessite leur acceptation | + +### Étape 4.1 : Créer des Liens WAN (si vous avez plusieurs dispositifs) + +Les liens WAN connectent vos propres dispositifs : + +```bash +doublezero link create wan \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --side-z-interface \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**Exemple :** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**Sortie attendue :** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### Étape 4.2 : Créer des Liens DZX + +Les liens DZX connectent votre dispositif directement au DZD d'un autre contributeur : + +```bash +doublezero link create dzx \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --bandwidth \ + --mtu \ + --delay-ms \ + --jitter-ms +``` + +**Sortie attendue :** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +Après avoir créé un lien DZX, l'autre contributeur doit l'accepter : + +```bash +# L'AUTRE contributeur exécute ceci +doublezero link accept \ + --code \ + --side-z-interface +``` + +**Sortie attendue (pour le contributeur qui accepte) :** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### Étape 4.3 : Vérifier les Liens + +```bash +doublezero link list +``` + +**Exemple de sortie :** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +Les liens devraient afficher le statut `activated` une fois les deux côtés configurés. + +--- + +### Installation des Agents + +Deux agents logiciels s'exécutent sur votre DZD : + +```mermaid +flowchart TB + subgraph "Votre DZD" + CA[Agent de Configuration] + TA[Agent de Télémétrie] + HW[Matériel/Logiciel du Commutateur] + end + + CA -->|Interroge la config| CTRL[Service Contrôleur] + CA -->|Applique la config| HW + + HW -->|Métriques| TA + TA -->|Soumet onchain| BC[Registre DoubleZero] +``` + +| Agent | Ce Qu'il Fait | +|-------|--------------| +| **Agent de Configuration** | Récupère la configuration depuis le contrôleur, l'applique à votre commutateur | +| **Agent de Télémétrie** | Mesure la latence/perte vers les autres dispositifs, rapporte les métriques onchain | + +### Étape 4.4 : Installer l'Agent de Configuration + +#### Activer l'API sur votre commutateur + +Ajouter à la configuration EOS : + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "Note VRF" + Remplacez `default` par votre nom de VRF de gestion si différent (par exemple, `management`). + +#### Télécharger et installer l'agent + +```bash +# Entrer dans bash sur le commutateur +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# Installer comme extension EOS +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Vérifier l'extension + +```bash +switch# show extensions +``` + +Le Statut devrait être "A, I, B" : + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configurer et démarrer l'agent + +Ajouter à la configuration EOS : + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey + no shut +``` + +!!! note "Note VRF" + Si votre VRF de gestion n'est pas `default` (c'est-à-dire que le namespace n'est pas `ns-default`), préfixez la commande exec avec `exec /sbin/ip netns exec ns-`. Par exemple, si votre VRF est `management` : + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey + no shut + ``` + +Obtenez la pubkey de votre dispositif depuis `doublezero device list` (colonne `account`). + +#### Vérifier qu'il fonctionne + +```bash +switch# show agent doublezero-agent logs +``` + +Vous devriez voir "Starting doublezero-agent" et des connexions réussies au contrôleur. + +### Étape 4.5 : Installer l'Agent de Télémétrie + +#### Copier la clé de publication de métriques sur votre dispositif + +```bash +scp ~/.config/doublezero/metrics-publisher.json :/mnt/flash/metrics-publisher-keypair.json +``` + +#### Enregistrer la publication de métriques onchain + +```bash +doublezero device update \ + --pubkey \ + --metrics-publisher +``` + +Obtenez la pubkey depuis votre fichier metrics-publisher.json. + +#### Télécharger et installer l'agent + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# Installer comme extension EOS +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Vérifier l'extension + +```bash +switch# show extensions +``` + +Le Statut devrait être "A, I, B" : + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configurer et démarrer l'agent + +Ajouter à la configuration EOS : + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "Note VRF" + Si votre VRF de gestion n'est pas `default` (c'est-à-dire que le namespace n'est pas `ns-default`), ajoutez `--management-namespace ns-` à la commande exec. Par exemple, si votre VRF est `management` : + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### Vérifier qu'il fonctionne + +```bash +switch# show agent doublezero-telemetry logs +``` + +Vous devriez voir "Starting telemetry collector" et "Starting submission loop". + +--- + +## Phase 5 : Rodage du Lien + +!!! warning "Tous les nouveaux liens doivent être rodés avant de transporter du trafic" + Les nouveaux liens doivent être **drainés pendant au moins 24 heures** avant d'être activés pour le trafic de production. Cette exigence de rodage est définie dans [RFC12: Network Provisioning](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md), qui spécifie ~200 000 slots du Registre DZ (~20 heures) de métriques propres avant qu'un lien soit prêt pour le service. + +Avec les agents installés et en cours d'exécution, surveillez vos liens sur [metrics.doublezero.xyz](https://metrics.doublezero.xyz) pendant au moins 24 heures consécutives : + +- Tableau de bord **"DoubleZero Device-Link Latencies"** — vérifiez **zéro perte de paquets** sur le lien au fil du temps +- Tableau de bord **"DoubleZero Network Metrics"** — vérifiez **zéro erreurs** sur vos liens + +Ne dédrainer le lien qu'une fois que la période de rodage montre un lien propre avec zéro perte et zéro erreurs. + +--- + +## Phase 6 : Vérification et Activation + +Parcourez cette liste de contrôle pour confirmer que tout fonctionne. + +!!! warning "Votre dispositif commence verrouillé (`max_users = 0`)" + Lorsqu'un dispositif est créé, `max_users` est fixé à **0** par défaut. Cela signifie qu'aucun utilisateur ne peut encore s'y connecter. C'est intentionnel — vous devez vérifier que tout fonctionne avant d'accepter le trafic utilisateurs. + + **Avant de définir `max_users` au-dessus de 0, vous devez :** + + 1. Confirmer que tous les liens ont complété leur **rodage de 24 heures** avec zéro perte/erreurs sur [metrics.doublezero.xyz](https://metrics.doublezero.xyz) + 2. **Coordonner avec DZ/Malbec Labs** pour exécuter un test de connectivité : + - Un utilisateur de test peut-il se connecter à votre dispositif ? + - L'utilisateur reçoit-il des routes sur le réseau DZ ? + - L'utilisateur peut-il router le trafic sur le réseau DZ de bout en bout ? + 3. Seulement après que DZ/ML confirme que les tests réussissent, définissez max_users à 96 : + + ```bash + doublezero device update --pubkey --max-users 96 + ``` + +### Vérifications du Dispositif + +```bash +# Votre dispositif devrait apparaître avec le statut "activated" +doublezero device list | grep +``` + +**Sortie attendue :** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# Vos interfaces devraient être listées +doublezero device interface list | grep +``` + +**Sortie attendue :** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### Vérifications des Liens + +```bash +# Les liens devraient afficher le statut "activated" +doublezero link list | grep +``` + +**Sortie attendue :** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### Vérifications des Agents + +Sur le commutateur : + +```bash +# L'agent de configuration devrait afficher des extractions de configuration réussies +switch# show agent doublezero-agent logs | tail -20 + +# L'agent de télémétrie devrait afficher des soumissions réussies +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### Diagramme de Vérification Finale + +```mermaid +flowchart TB + subgraph "Liste de Vérification" + D[Statut Dispositif : activé ?] + I[Interfaces : enregistrées ?] + L[Liens : activés ?] + CA[Agent de Config : récupération de config ?] + TA[Agent de Télémétrie : soumission de métriques ?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[Toutes les Vérifications Réussies] --> NOTIFY[Notifier DZF/Malbec Labs
Vous êtes techniquement prêt !] +``` + +--- + +## Dépannage + +### La création du dispositif échoue + +- Vérifiez que votre clé de service est autorisée (`doublezero contributor list`) +- Vérifiez que les codes d'emplacement et d'exchange sont valides +- Assurez-vous que le préfixe DZ est une plage IP publique valide + +### Lien bloqué dans le statut "requested" + +- Les liens DZX nécessitent l'acceptation de l'autre contributeur +- Contactez-les pour exécuter `doublezero link accept` + +### L'Agent de Configuration ne se connecte pas + +- Vérifiez que le réseau de gestion a accès à internet +- Vérifiez que la configuration VRF correspond à votre configuration +- Assurez-vous que la pubkey du dispositif est correcte + +### L'Agent de Télémétrie ne soumet pas + +- Vérifiez que la clé de publication de métriques est enregistrée onchain +- Vérifiez que le fichier de paire de clés existe sur le commutateur +- Assurez-vous que la pubkey du compte du dispositif est correcte + +--- + +## Prochaines Étapes + +- Consultez le [Guide des Opérations](contribute-operations.md) pour les mises à niveau des agents et la gestion des liens +- Consultez le [Glossaire](glossary.md) pour les définitions des termes +- Contactez DZF/Malbec Labs si vous rencontrez des problèmes diff --git a/docs/contribute-provisioning.it.md b/docs/contribute-provisioning.it.md new file mode 100644 index 0000000..80bf6d5 --- /dev/null +++ b/docs/contribute-provisioning.it.md @@ -0,0 +1,862 @@ +# Guida al Provisioning dei Dispositivi +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Questa guida illustra il provisioning di un DoubleZero Device (DZD) dall'inizio alla fine. Ogni fase corrisponde alla [Checklist di Onboarding](contribute-overview.md#onboarding-checklist). + +--- + +## Come Si Incastra Tutto + +Prima di entrare nei dettagli, ecco il quadro generale di ciò che stai costruendo: + +```mermaid +flowchart TB + subgraph Onchain + SC[DoubleZero Ledger] + end + + subgraph Your Infrastructure + MGMT[Management Server
DoubleZero CLI] + DZD[Your DZD
Arista Switch] + DZD ---|WAN Link| DZD2[Your other DZD] + end + + subgraph Other Contributor + OtherDZD[Their DZD] + end + + subgraph Users + VAL[Validators] + RPC[RPC Nodes] + end + + MGMT -.->|Registers devices,
links, interfaces| SC + DZD ---|DZX Link| OtherDZD + VAL ---|Connect via Internet| DZD + RPC ---|Connect via Internet| DZD +``` + +--- + +## Fase 1: Prerequisiti + +Prima di poter effettuare il provisioning di un dispositivo, è necessario che l'hardware fisico sia configurato e alcuni indirizzi IP allocati. + +### Cosa Ti Serve + +| Requisito | Perché È Necessario | +|-----------|---------------------| +| **Hardware DZD** | Switch Arista 7280CR3A (vedi [specifiche hardware](contribute.md#hardware-requirements)) | +| **Spazio Rack** | 4U con adeguato flusso d'aria | +| **Alimentazione** | Alimentazioni ridondanti, ~4KW raccomandato | +| **Accesso di Gestione** | Accesso SSH/console per configurare lo switch | +| **Connettività Internet** | Per la pubblicazione di metriche e per recuperare la configurazione dal controller | +| **Blocco IPv4 Pubblico** | Minimo /29 per il pool di prefissi DZ (vedi sotto) | + +### Installa la CLI DoubleZero + +La CLI DoubleZero (`doublezero`) viene utilizzata durante tutto il provisioning per registrare dispositivi, creare link e gestire il contributo. Deve essere installata su un **server di gestione o VM** — non sullo switch DZD stesso. Lo switch esegue solo il Config Agent e il Telemetry Agent (installati nella [Fase 4](#fase-4-stabilimento-del-link-e-installazione-degli-agent)). + +**Ubuntu / Debian:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +Verifica che il daemon sia in esecuzione: +```bash +sudo systemctl status doublezerod +``` + +### Comprendere il Tuo Prefisso DZ + +Il tuo prefisso DZ è un blocco di indirizzi IP pubblici che il protocollo DoubleZero gestisce per l'allocazione degli IP. + +```mermaid +flowchart LR + subgraph "Your /29 Block (8 IPs)" + IP1["First IP
Reserved for
your device"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|Assigned to| LO[Loopback100
on your DZD] + IP2 -->|Allocated to| U1[User 1] + IP3 -->|Allocated to| U2[User 2] +``` + +**Come vengono usati i prefissi DZ:** + +- **Primo IP**: Riservato per il tuo dispositivo (assegnato all'interfaccia Loopback100) +- **IP Rimanenti**: Allocati a specifici tipi di utenti che si connettono al tuo DZD: + - Utenti `IBRLWithAllocatedIP` + - Utenti `EdgeFiltering` + - Publisher multicast +- **Utenti IBRL**: NON consumano da questo pool (usano il proprio IP pubblico) + +!!! warning "Regole del Prefisso DZ" + **NON PUOI usare questi indirizzi per:** + + - La tua infrastruttura di rete + - Link point-to-point sulle interfacce DIA + - Interfacce di gestione + - Qualsiasi infrastruttura al di fuori del protocollo DZ + + **Requisiti:** + + - Devono essere indirizzi IPv4 **globalmente instradabili (pubblici)** + - Gli intervalli IP privati (10.x, 172.16-31.x, 192.168.x) vengono rifiutati dallo smart contract + - **Dimensione minima: /29** (8 indirizzi), prefissi più grandi preferiti (es. /28, /27) + - L'intero blocco deve essere disponibile — non pre-allocare alcun indirizzo + + Se hai bisogno di indirizzi per la tua infrastruttura (IP di interfaccia DIA, gestione, ecc.), usa un **pool di indirizzi separato**. + +--- + +## Fase 2: Configurazione dell'Account + +In questa fase, crei le chiavi crittografiche che identificano te e i tuoi dispositivi sulla rete. + +### Dove Eseguire la CLI + +!!! warning "NON installare la CLI sul tuo switch" + La CLI DoubleZero (`doublezero`) deve essere installata su un **server di gestione o VM**, non sullo switch Arista. + + ```mermaid + flowchart LR + subgraph "Management Server/VM" + CLI[DoubleZero CLI] + KEYS[Your Keypairs] + end + + subgraph "Your DZD Switch" + CA[Config Agent] + TA[Telemetry Agent] + end + + CLI -->|Creates devices, links| BC[Blockchain] + CA -->|Pulls config| CTRL[Controller] + TA -->|Submits metrics| BC + ``` + + | Installare sul Server di Gestione | Installare sullo Switch | + |----------------------------------|------------------------| + | CLI `doublezero` | Config Agent | + | La tua service keypair | Telemetry Agent | + | La tua metrics publisher keypair | Metrics publisher keypair (copia) | + +### Cosa Sono le Chiavi? + +Pensa alle chiavi come credenziali di accesso sicure: + +- **Service Key**: La tua identità come contributore - usata per eseguire i comandi CLI +- **Metrics Publisher Key**: L'identità del tuo dispositivo per l'invio di dati di telemetria + +Entrambe sono keypair crittografiche (una chiave pubblica che condividi, una chiave privata che mantieni segreta). + +```mermaid +flowchart LR + subgraph "Your Keys" + SK[Service Key
~/.config/solana/id.json] + MK[Metrics Publisher Key
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|Used for| CLI[CLI Commands
doublezero device create
doublezero link create] + MK -->|Used for| TEL[Telemetry Agent
Submits metrics onchain] +``` + +### Passo 2.1: Genera la Tua Service Key + +Questa è la tua identità principale per interagire con DoubleZero. + +```bash +doublezero keygen +``` + +Questo crea una keypair nella posizione predefinita. L'output mostra la tua **chiave pubblica** - questa è quella che condividerai con DZF. + +### Passo 2.2: Genera la Tua Metrics Publisher Key + +Questa chiave viene utilizzata dal Telemetry Agent per firmare le submission delle metriche. + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### Passo 2.3: Invia le Chiavi a DZF + +Contatta la DoubleZero Foundation o Malbec Labs e fornisci: + +1. La tua **chiave pubblica della service key** +2. Il tuo **username GitHub** (per l'accesso al repository) + +Loro provvederanno a: + +- Creare il tuo **account contributore** on-chain +- Concedere l'accesso al **repository contributori** privato + +### Passo 2.4: Verifica il Tuo Account + +Una volta confermato, verifica che il tuo account contributore esista: + +```bash +doublezero contributor list +``` + +Dovresti vedere il tuo codice contributore nell'elenco. + +### Passo 2.5: Accedi al Repository Contributori + +Il repository [malbeclabs/contributors](https://github.com/malbeclabs/contributors) contiene: + +- Configurazioni base dei dispositivi +- Profili TCAM +- Configurazioni ACL +- Istruzioni di configurazione aggiuntive + +Segui le istruzioni lì per la configurazione specifica del dispositivo. + +--- + +## Fase 3: Provisioning del Dispositivo + +Ora registrerai il tuo dispositivo fisico sulla blockchain e configurerai le sue interfacce. + +### Comprendere i Tipi di Dispositivo + +```mermaid +flowchart TB + subgraph "Edge Device" + E[Edge DZD] + EU[Users connect here] + EU --> E + E <-->|DZX Link| ED[Other DZD] + end + + subgraph "Transit Device" + T[Transit DZD] + T <-->|WAN Link| T2[Another DZD] + T <-->|DZX Link| TD[Other DZD] + end + + subgraph "Hybrid Device" + H[Hybrid DZD] + HU[Users connect here] + HU --> H + H <-->|WAN Link| H2[Another DZD] + H <-->|DZX Link| HD[Other DZD] + end +``` + +| Tipo | Cosa Fa | Quando Usarlo | +|------|---------|---------------| +| **Edge** | Accetta solo connessioni utente | Singola posizione, solo rivolto agli utenti | +| **Transit** | Sposta il traffico tra dispositivi | Connettività backbone, nessun utente | +| **Hybrid** | Connessioni utente E backbone | Il più comune - fa tutto | + +### Passo 3.1: Trova la Tua Posizione e l'Exchange + +Prima di creare il tuo dispositivo, cerca i codici per la posizione del tuo data center e l'exchange più vicino: + +```bash +# List available locations (data centers) +doublezero location list + +# List available exchanges (interconnect points) +doublezero exchange list +``` + +### Passo 3.2: Crea il Tuo Dispositivo On-Chain + +Registra il tuo dispositivo sulla blockchain: + +```bash +doublezero device create \ + --code \ + --contributor \ + --device-type hybrid \ + --location \ + --exchange \ + --public-ip \ + --dz-prefixes +``` + +**Esempio:** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**Output atteso:** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +Verifica che il tuo dispositivo sia stato creato: + +```bash +doublezero device list | grep nyc-dz001 +``` + +**Parametri spiegati:** + +| Parametro | Cosa Significa | +|-----------|----------------| +| `--code` | Un nome univoco per il tuo dispositivo (es. `nyc-dz001`) | +| `--contributor` | Il tuo codice contributore (fornito da DZF) | +| `--device-type` | `hybrid`, `transit`, o `edge` | +| `--location` | Codice del data center da `location list` | +| `--exchange` | Codice dell'exchange più vicino da `exchange list` | +| `--public-ip` | L'IP pubblico dove gli utenti si connettono al tuo dispositivo via internet | +| `--dz-prefixes` | Il tuo blocco IP allocato per gli utenti | + +### Passo 3.3: Crea le Interfacce Loopback Richieste + +Ogni dispositivo ha bisogno di due interfacce loopback per il routing interno: + +```bash +# VPNv4 loopback +doublezero device interface create Loopback255 --loopback-type vpnv4 + +# IPv4 loopback +doublezero device interface create Loopback256 --loopback-type ipv4 +``` + +**Output atteso (per ogni comando):** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### Passo 3.4: Crea Interfacce Fisiche + +Registra le porte fisiche che utilizzerai: + +```bash +# Basic interface +doublezero device interface create Ethernet1/1 +``` + +**Output atteso:** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### Passo 3.5: Crea l'Interfaccia CYOA (per dispositivi Edge/Hybrid) + +Se il tuo dispositivo accetta connessioni utente, hai bisogno di un'interfaccia CYOA (Choose Your Own Adventure). Questo indica al sistema come gli utenti si connettono a te. + +**Tipi CYOA Spiegati:** + +| Tipo | In Italiano Semplice | Quando Usarlo | +|------|----------------------|---------------| +| `gre-over-dia` | Gli utenti si connettono tramite internet normale | Il più comune - gli utenti si connettono tramite il DIA al tuo DZD | +| `gre-over-private-peering` | Gli utenti si connettono tramite link privato | Gli utenti hanno una connessione diretta alla tua rete | +| `gre-over-public-peering` | Gli utenti si connettono tramite IX | Gli utenti fanno peering con te a un internet exchange | +| `gre-over-fabric` | Utenti sulla stessa rete locale | Utenti nello stesso data center | +| `gre-over-cable` | Cavo diretto all'utente | Singolo utente dedicato | + +**Esempio - Utenti internet standard:** + +```bash +doublezero device interface create Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**Output atteso:** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**Parametri spiegati:** + +| Parametro | Cosa Significa | +|-----------|----------------| +| `--interface-cyoa` | Come si connettono gli utenti (vedi tabella sopra) | +| `--interface-dia` | `dia` se questa è una porta rivolta a internet | +| `--bandwidth` | Velocità della porta in Mbps (10000 = 10Gbps) | +| `--cir` | Velocità impegnata in Mbps (larghezza di banda garantita) | +| `--user-tunnel-endpoint` | Questa porta accetta tunnel utente | + +### Passo 3.6: Verifica il Tuo Dispositivo + +```bash +doublezero device list +``` + +**Output di esempio:** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +Il tuo dispositivo dovrebbe apparire con stato `activated`. + +--- + +## Fase 4: Stabilimento del Link e Installazione degli Agent + +I link connettono il tuo dispositivo al resto della rete DoubleZero. + +### Comprendere i Link + +```mermaid +flowchart LR + subgraph "Your Network" + D1[Your DZD 1
NYC] + D2[Your DZD 2
LAX] + end + + subgraph "Other Contributor" + O1[Their DZD
NYC] + end + + D1 ---|WAN Link
Same contributor| D2 + D1 ---|DZX Link
Different contributors| O1 +``` + +| Tipo di Link | Connette | Accettazione | +|-------------|---------|--------------| +| **WAN Link** | Due dei TUOI dispositivi | Automatica (possiedi entrambi) | +| **DZX Link** | Il tuo dispositivo a quello di UN ALTRO contributore | Richiede la loro accettazione | + +### Passo 4.1: Crea WAN Link (se hai più dispositivi) + +I WAN link connettono i tuoi dispositivi: + +```bash +doublezero link create wan \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --side-z-interface \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**Esempio:** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**Output atteso:** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### Passo 4.2: Crea DZX Link + +I DZX link connettono il tuo dispositivo direttamente al DZD di un altro contributore: + +```bash +doublezero link create dzx \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --bandwidth \ + --mtu \ + --delay-ms \ + --jitter-ms +``` + +**Output atteso:** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +Dopo aver creato un DZX link, l'altro contributore deve accettarlo: + +```bash +# The OTHER contributor runs this +doublezero link accept \ + --code \ + --side-z-interface +``` + +**Output atteso (per il contributore che accetta):** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### Passo 4.3: Verifica i Link + +```bash +doublezero link list +``` + +**Output di esempio:** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +I link dovrebbero mostrare lo stato `activated` una volta che entrambi i lati sono configurati. + +--- + +### Installazione degli Agent + +Due software agent vengono eseguiti sul tuo DZD: + +```mermaid +flowchart TB + subgraph "Your DZD" + CA[Config Agent] + TA[Telemetry Agent] + HW[Switch Hardware/Software] + end + + CA -->|Polls for config| CTRL[Controller Service] + CA -->|Applies config| HW + + HW -->|Metrics| TA + TA -->|Submits onchain| BC[DoubleZero Ledger] +``` + +| Agent | Cosa Fa | +|-------|---------| +| **Config Agent** | Recupera la configurazione dal controller, la applica al tuo switch | +| **Telemetry Agent** | Misura latenza/perdita verso altri dispositivi, riporta le metriche on-chain | + +### Passo 4.4: Installa il Config Agent + +#### Abilita l'API sul tuo switch + +Aggiungi alla configurazione EOS: + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "Nota VRF" + Sostituisci `default` con il nome del tuo VRF di gestione se diverso (es. `management`). + +#### Scarica e installa l'agent + +```bash +# Enter bash on the switch +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# Install as EOS extension +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Verifica l'estensione + +```bash +switch# show extensions +``` + +Lo stato dovrebbe essere "A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configura e avvia l'agent + +Aggiungi alla configurazione EOS: + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey + no shut +``` + +!!! note "Nota VRF" + Se il tuo VRF di gestione non è `default` (cioè il namespace non è `ns-default`), anteponi al comando exec `exec /sbin/ip netns exec ns-`. Ad esempio, se il tuo VRF è `management`: + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey + no shut + ``` + +Ottieni la pubkey del tuo dispositivo da `doublezero device list` (la colonna `account`). + +#### Verifica che sia in esecuzione + +```bash +switch# show agent doublezero-agent logs +``` + +Dovresti vedere "Starting doublezero-agent" e connessioni riuscite al controller. + +### Passo 4.5: Installa il Telemetry Agent + +#### Copia la metrics publisher key sul tuo dispositivo + +```bash +scp ~/.config/doublezero/metrics-publisher.json :/mnt/flash/metrics-publisher-keypair.json +``` + +#### Registra il metrics publisher on-chain + +```bash +doublezero device update \ + --pubkey \ + --metrics-publisher +``` + +Ottieni la pubkey dal tuo file metrics-publisher.json. + +#### Scarica e installa l'agent + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# Install as EOS extension +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Verifica l'estensione + +```bash +switch# show extensions +``` + +Lo stato dovrebbe essere "A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configura e avvia l'agent + +Aggiungi alla configurazione EOS: + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "Nota VRF" + Se il tuo VRF di gestione non è `default` (cioè il namespace non è `ns-default`), aggiungi `--management-namespace ns-` al comando exec. Ad esempio, se il tuo VRF è `management`: + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### Verifica che sia in esecuzione + +```bash +switch# show agent doublezero-telemetry logs +``` + +Dovresti vedere "Starting telemetry collector" e "Starting submission loop". + +--- + +## Fase 5: Burn-in del Link + +!!! warning "Tutti i nuovi link devono completare il burn-in prima di trasportare traffico" + I nuovi link devono essere **drenati per almeno 24 ore** prima di essere attivati per il traffico di produzione. Questo requisito di burn-in è definito in [RFC12: Network Provisioning](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md), che specifica ~200.000 slot del DZ Ledger (~20 ore) di metriche pulite prima che un link sia pronto per il servizio. + +Con gli agent installati e in esecuzione, monitora i tuoi link su [metrics.doublezero.xyz](https://metrics.doublezero.xyz) per almeno 24 ore consecutive: + +- Dashboard **"DoubleZero Device-Link Latencies"** — verifica **zero perdita di pacchetti** sul link nel tempo +- Dashboard **"DoubleZero Network Metrics"** — verifica **zero errori** sui tuoi link + +Sblocca il link solo quando il periodo di burn-in mostra un link pulito con zero perdite e zero errori. + +--- + +## Fase 6: Verifica e Attivazione + +Esegui questa checklist per confermare che tutto funzioni. + +!!! warning "Il tuo dispositivo inizia bloccato (`max_users = 0`)" + Quando viene creato un dispositivo, `max_users` è impostato a **0** per impostazione predefinita. Ciò significa che nessun utente può ancora connettersi ad esso. Questo è intenzionale — devi verificare che tutto funzioni prima di accettare traffico utente. + + **Prima di impostare `max_users` sopra 0, devi:** + + 1. Confermare che tutti i link abbiano completato il **burn-in di 24 ore** con zero perdite/errori su [metrics.doublezero.xyz](https://metrics.doublezero.xyz) + 2. **Coordinarsi con DZ/Malbec Labs** per eseguire un test di connettività: + - Un utente di test può connettersi al tuo dispositivo? + - L'utente riceve route tramite la rete DZ? + - L'utente può instradare il traffico tramite la rete DZ end-to-end? + 3. Solo dopo che DZ/ML conferma che i test sono passati, imposta max_users a 96: + + ```bash + doublezero device update --pubkey --max-users 96 + ``` + +### Controlli del Dispositivo + +```bash +# Your device should appear with status "activated" +doublezero device list | grep +``` + +**Output atteso:** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# Your interfaces should be listed +doublezero device interface list | grep +``` + +**Output atteso:** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### Controlli dei Link + +```bash +# Links should show status "activated" +doublezero link list | grep +``` + +**Output atteso:** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### Controlli degli Agent + +Sullo switch: + +```bash +# Config agent should show successful config pulls +switch# show agent doublezero-agent logs | tail -20 + +# Telemetry agent should show successful submissions +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### Diagramma di Verifica Finale + +```mermaid +flowchart TB + subgraph "Verification Checklist" + D[Device Status: activated?] + I[Interfaces: registered?] + L[Links: activated?] + CA[Config Agent: pulling config?] + TA[Telemetry Agent: submitting metrics?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[All Checks Pass] --> NOTIFY[Notify DZF/Malbec Labs
You are technically ready!] +``` + +--- + +## Risoluzione dei Problemi + +### Creazione del dispositivo fallisce + +- Verifica che la tua service key sia autorizzata (`doublezero contributor list`) +- Controlla che i codici di posizione e exchange siano validi +- Assicurati che il prefisso DZ sia un intervallo IP pubblico valido + +### Link bloccato nello stato "requested" + +- I DZX link richiedono l'accettazione dall'altro contributore +- Contattali per eseguire `doublezero link accept` + +### Config Agent non si connette + +- Verifica che la rete di gestione abbia accesso a internet +- Controlla che la configurazione VRF corrisponda alla tua configurazione +- Assicurati che la pubkey del dispositivo sia corretta + +### Telemetry Agent non invia + +- Verifica che la metrics publisher key sia registrata on-chain +- Controlla che il file keypair esista sullo switch +- Assicurati che la pubkey dell'account del dispositivo sia corretta + +--- + +## Prossimi Passi + +- Consulta la [Guida Operativa](contribute-operations.md) per gli aggiornamenti degli agent e la gestione dei link +- Consulta il [Glossario](glossary.md) per le definizioni dei termini +- Contatta DZF/Malbec Labs se riscontri problemi diff --git a/docs/contribute-provisioning.ja.md b/docs/contribute-provisioning.ja.md new file mode 100644 index 0000000..f4c4494 --- /dev/null +++ b/docs/contribute-provisioning.ja.md @@ -0,0 +1,862 @@ +# デバイスプロビジョニングガイド +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +このガイドでは、DoubleZeroデバイス(DZD)を最初から最後までプロビジョニングする手順を説明します。各フェーズは[オンボーディングチェックリスト](contribute-overview.md#onboarding-checklist)に対応しています。 + +--- + +## 全体像 + +手順に入る前に、構築するものの全体像を確認しましょう: + +```mermaid +flowchart TB + subgraph Onchain + SC[DoubleZeroレジャー] + end + + subgraph Your Infrastructure + MGMT[管理サーバー
DoubleZero CLI] + DZD[あなたのDZD
Aristaスイッチ] + DZD ---|WANリンク| DZD2[もう一台のDZD] + end + + subgraph Other Contributor + OtherDZD[他のDZD] + end + + subgraph Users + VAL[バリデーター] + RPC[RPCノード] + end + + MGMT -.->|デバイス、リンク、
インターフェースを登録| SC + DZD ---|DZXリンク| OtherDZD + VAL ---|インターネット経由で接続| DZD + RPC ---|インターネット経由で接続| DZD +``` + +--- + +## フェーズ1:前提条件 + +デバイスをプロビジョニングする前に、物理的なハードウェアをセットアップし、いくつかのIPアドレスを割り当てる必要があります。 + +### 必要なもの + +| 要件 | 必要な理由 | +|-------------|-----------------| +| **DZDハードウェア** | Arista 7280CR3Aスイッチ([ハードウェア仕様](contribute.md#hardware-requirements)参照) | +| **ラックスペース** | 適切なエアフローを持つ4U | +| **電力** | 冗長フィード、約4KW推奨 | +| **管理アクセス** | スイッチを設定するためのSSH/コンソールアクセス | +| **インターネット接続** | メトリクスのパブリッシュとコントローラーからの設定取得のため | +| **パブリックIPv4ブロック** | DZプレフィックスプール用の最小/29(以下参照) | + +### DoubleZero CLIのインストール + +DoubleZero CLI(`doublezero`)はプロビジョニング全体でデバイスの登録、リンクの作成、貢献の管理に使用されます。DZDスイッチ自体ではなく、**管理サーバーまたはVM**にインストールする必要があります。スイッチはConfig AgentとTelemetry Agentのみを実行します([フェーズ4](#phase-4-link-establishment-agent-installation)でインストール)。 + +**Ubuntu / Debian:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +デーモンが実行中であることを確認します: +```bash +sudo systemctl status doublezerod +``` + +### DZプレフィックスについて + +DZプレフィックスはDoubleZeroプロトコルがIP割り当てに管理するパブリックIPアドレスのブロックです。 + +```mermaid +flowchart LR + subgraph "あなたの/29ブロック(8 IP)" + IP1["最初のIP
デバイス用に
予約"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|割り当て先| LO[DZD上の
Loopback100] + IP2 -->|割り当て先| U1[ユーザー1] + IP3 -->|割り当て先| U2[ユーザー2] +``` + +**DZプレフィックスの使用方法:** + +- **最初のIP**:デバイス用に予約(Loopback100インターフェースに割り当て) +- **残りのIP**:DZDに接続する特定のユーザータイプに割り当て: + - `IBRLWithAllocatedIP`ユーザー + - `EdgeFiltering`ユーザー + - マルチキャストパブリッシャー +- **IBRLユーザー**:このプールを消費しません(独自のパブリックIPを使用) + +!!! warning "DZプレフィックスルール" + **これらのアドレスは以下に使用できません:** + + - 自社のネットワーク機器 + - DIAインターフェースのポイントツーポイントリンク + - 管理インターフェース + - DZプロトコル外のインフラ + + **要件:** + + - **グローバルにルーティング可能(パブリック)**なIPv4アドレスである必要があります + - プライベートIP範囲(10.x、172.16-31.x、192.168.x)はスマートコントラクトで拒否されます + - **最小サイズ:/29**(8アドレス)、大きなプレフィックス推奨(例:/28、/27) + - ブロック全体が利用可能である必要があります — アドレスを事前に割り当てないでください + + 自社の機器用にアドレスが必要な場合(DIAインターフェースIP、管理など)は、**別のアドレスプール**を使用してください。 + +--- + +## フェーズ2:アカウントのセットアップ + +このフェーズでは、ネットワーク上でアカウントとデバイスを識別する暗号鍵を作成します。 + +### CLIを実行する場所 + +!!! warning "スイッチにCLIをインストールしないでください" + DoubleZero CLI(`doublezero`)はAristaスイッチではなく、**管理サーバーまたはVM**にインストールする必要があります。 + + ```mermaid + flowchart LR + subgraph "管理サーバー/VM" + CLI[DoubleZero CLI] + KEYS[キーペア] + end + + subgraph "DZDスイッチ" + CA[Config Agent] + TA[Telemetry Agent] + end + + CLI -->|デバイス、リンクを作成| BC[ブロックチェーン] + CA -->|設定を取得| CTRL[コントローラー] + TA -->|メトリクスを送信| BC + ``` + + | 管理サーバーにインストール | スイッチにインストール | + |-----------------------------|-------------------| + | `doublezero` CLI | Config Agent | + | サービスキーペア | Telemetry Agent | + | メトリクスパブリッシャーキーペア | メトリクスパブリッシャーキーペア(コピー) | + +### キーとは? + +キーは安全なログイン認証情報のようなものです: + +- **サービスキー**:コントリビューターアイデンティティ - CLIコマンドの実行に使用 +- **メトリクスパブリッシャーキー**:テレメトリデータを送信するためのデバイスアイデンティティ + +どちらも暗号鍵ペア(共有する公開鍵と秘密に保持する秘密鍵)です。 + +```mermaid +flowchart LR + subgraph "あなたのキー" + SK[サービスキー
~/.config/solana/id.json] + MK[メトリクスパブリッシャーキー
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|使用先| CLI[CLIコマンド
doublezero device create
doublezero link create] + MK -->|使用先| TEL[Telemetry Agent
メトリクスをオンチェーンに送信] +``` + +### ステップ2.1:サービスキーの生成 + +これはDoubleZeroと対話するためのメインアイデンティティです。 + +```bash +doublezero keygen +``` + +これにより、デフォルトの場所にキーペアが作成されます。出力には**公開鍵**が表示されます - これをDZFと共有します。 + +### ステップ2.2:メトリクスパブリッシャーキーの生成 + +このキーはTelemetry Agentがメトリクス送信に署名するために使用します。 + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### ステップ2.3:DZFへのキーの提出 + +DoubleZero FoundationまたはMalbec Labsに連絡し、以下を提供します: + +1. **サービスキーの公開鍵** +2. **GitHubユーザー名**(リポジトリアクセスのため) + +DZFは以下を行います: + +- **コントリビューターアカウント**をオンチェーンで作成 +- プライベートな**contributorsリポジトリ**へのアクセスを付与 + +### ステップ2.4:アカウントの確認 + +確認後、コントリビューターアカウントが存在することを確認します: + +```bash +doublezero contributor list +``` + +一覧にコントリビューターコードが表示されるはずです。 + +### ステップ2.5:Contributorsリポジトリへのアクセス + +[malbeclabs/contributors](https://github.com/malbeclabs/contributors)リポジトリには以下が含まれています: + +- ベースデバイス設定 +- TCAMプロファイル +- ACL設定 +- 追加セットアップ手順 + +デバイス固有の設定については、そこの指示に従ってください。 + +--- + +## フェーズ3:デバイスプロビジョニング + +ここでは物理的なデバイスをブロックチェーンに登録し、インターフェースを設定します。 + +### デバイスタイプについて + +```mermaid +flowchart TB + subgraph "エッジデバイス" + E[エッジDZD] + EU[ユーザーはここに接続] + EU --> E + E <-->|DZXリンク| ED[他のDZD] + end + + subgraph "トランジットデバイス" + T[トランジットDZD] + T <-->|WANリンク| T2[別のDZD] + T <-->|DZXリンク| TD[他のDZD] + end + + subgraph "ハイブリッドデバイス" + H[ハイブリッドDZD] + HU[ユーザーはここに接続] + HU --> H + H <-->|WANリンク| H2[別のDZD] + H <-->|DZXリンク| HD[他のDZD] + end +``` + +| タイプ | 機能 | 使用するとき | +|------|--------------|-------------| +| **エッジ** | ユーザー接続のみを受け入れる | 単一ロケーション、ユーザー向けのみ | +| **トランジット** | デバイス間のトラフィックを移動 | バックボーン接続、ユーザーなし | +| **ハイブリッド** | ユーザー接続とバックボーンの両方 | 最も一般的 - すべてを行う | + +### ステップ3.1:ロケーションとエクスチェンジを調べる + +デバイスを作成する前に、データセンターの場所と最寄りのエクスチェンジのコードを調べます: + +```bash +# 利用可能なロケーション(データセンター)を一覧表示 +doublezero location list + +# 利用可能なエクスチェンジ(相互接続ポイント)を一覧表示 +doublezero exchange list +``` + +### ステップ3.2:デバイスをオンチェーンで作成する + +ブロックチェーンにデバイスを登録します: + +```bash +doublezero device create \ + --code <デバイスコード> \ + --contributor <コントリビューターコード> \ + --device-type hybrid \ + --location <ロケーションコード> \ + --exchange <エクスチェンジコード> \ + --public-ip <デバイスパブリックIP> \ + --dz-prefixes +``` + +**例:** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**期待される出力:** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +デバイスが作成されたことを確認します: + +```bash +doublezero device list | grep nyc-dz001 +``` + +**パラメーターの説明:** + +| パラメーター | 意味 | +|-----------|---------------| +| `--code` | デバイスの一意の名前(例:`nyc-dz001`) | +| `--contributor` | コントリビューターコード(DZFから付与) | +| `--device-type` | `hybrid`、`transit`、または`edge` | +| `--location` | `location list`からのデータセンターコード | +| `--exchange` | `exchange list`からの最寄りエクスチェンジコード | +| `--public-ip` | ユーザーがインターネット経由でデバイスに接続するパブリックIP | +| `--dz-prefixes` | ユーザー用の割り当てIPブロック | + +### ステップ3.3:必要なループバックインターフェースを作成する + +すべてのデバイスには内部ルーティング用の2つのループバックインターフェースが必要です: + +```bash +# VPNv4ループバック +doublezero device interface create <デバイスコード> Loopback255 --loopback-type vpnv4 + +# IPv4ループバック +doublezero device interface create <デバイスコード> Loopback256 --loopback-type ipv4 +``` + +**期待される出力(各コマンド):** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### ステップ3.4:物理インターフェースを作成する + +使用する物理ポートを登録します: + +```bash +# 基本インターフェース +doublezero device interface create <デバイスコード> Ethernet1/1 +``` + +**期待される出力:** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### ステップ3.5:CYOAインターフェースを作成する(エッジ/ハイブリッドデバイスの場合) + +デバイスがユーザー接続を受け入れる場合、CYOA(Choose Your Own Adventure)インターフェースが必要です。これにより、ユーザーがどのように接続するかをシステムに伝えます。 + +**CYOAタイプの説明:** + +| タイプ | わかりやすい説明 | 使用する場合 | +|------|--------------|----------| +| `gre-over-dia` | ユーザーが通常のインターネット経由で接続 | 最も一般的 - ユーザーがDIAを通じてDZDに接続 | +| `gre-over-private-peering` | ユーザーがプライベートリンク経由で接続 | ユーザーがネットワークに直接接続 | +| `gre-over-public-peering` | ユーザーがIX経由で接続 | ユーザーがインターネットエクスチェンジでピアリング | +| `gre-over-fabric` | ユーザーが同じローカルネットワーク上 | ユーザーが同じデータセンターに存在 | +| `gre-over-cable` | ユーザーへの直接ケーブル | 単一専用ユーザー | + +**例 - 標準インターネットユーザー:** + +```bash +doublezero device interface create <デバイスコード> Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**期待される出力:** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**パラメーターの説明:** + +| パラメーター | 意味 | +|-----------|---------------| +| `--interface-cyoa` | ユーザーの接続方法(上記テーブル参照) | +| `--interface-dia` | これがインターネット向きポートの場合は`dia` | +| `--bandwidth` | Mbpsのポート速度(10000 = 10Gbps) | +| `--cir` | Mbpsのコミット済みレート(保証帯域幅) | +| `--user-tunnel-endpoint` | このポートはユーザートンネルを受け入れる | + +### ステップ3.6:デバイスを確認する + +```bash +doublezero device list +``` + +**出力例:** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +デバイスはステータス`activated`で表示されるはずです。 + +--- + +## フェーズ4:リンク確立とエージェントインストール + +リンクはデバイスをDoubleZeroネットワークの残りの部分に接続します。 + +### リンクについて + +```mermaid +flowchart LR + subgraph "あなたのネットワーク" + D1[あなたのDZD 1
NYC] + D2[あなたのDZD 2
LAX] + end + + subgraph "他のコントリビューター" + O1[彼らのDZD
NYC] + end + + D1 ---|WANリンク
同一コントリビューター| D2 + D1 ---|DZXリンク
異なるコントリビューター| O1 +``` + +| リンクタイプ | 接続先 | 承認 | +|-----------|----------|------------| +| **WANリンク** | あなたの2つのデバイス | 自動(両方を所有) | +| **DZXリンク** | あなたのデバイスと別のコントリビューターのデバイス | 相手の承認が必要 | + +### ステップ4.1:WANリンクを作成する(複数のデバイスがある場合) + +WANリンクは自分のデバイスを接続します: + +```bash +doublezero link create wan \ + --code <リンクコード> \ + --contributor <コントリビューター> \ + --side-a <デバイス1のコード> \ + --side-a-interface <デバイス1のインターフェース> \ + --side-z <デバイス2のコード> \ + --side-z-interface <デバイス2のインターフェース> \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**例:** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**期待される出力:** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### ステップ4.2:DZXリンクを作成する + +DZXリンクはデバイスを別のコントリビューターのDZDに直接接続します: + +```bash +doublezero link create dzx \ + --code <デバイスコードA:デバイスコードZ> \ + --contributor <コントリビューター> \ + --side-a <あなたのデバイスコード> \ + --side-a-interface <あなたのインターフェース> \ + --side-z <他のデバイスコード> \ + --bandwidth <帯域幅 Kbps、Mbps、またはGbps> \ + --mtu \ + --delay-ms <遅延> \ + --jitter-ms <ジッター> +``` + +**期待される出力:** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +DZXリンクを作成した後、他のコントリビューターがそれを承認する必要があります: + +```bash +# 他のコントリビューターがこれを実行する +doublezero link accept \ + --code <リンクコード> \ + --side-z-interface <彼らのインターフェース> +``` + +**期待される出力(承認するコントリビューター用):** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### ステップ4.3:リンクを確認する + +```bash +doublezero link list +``` + +**出力例:** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +両側が設定されるとリンクはステータス`activated`を表示するはずです。 + +--- + +### エージェントのインストール + +2つのソフトウェアエージェントがDZDで実行されます: + +```mermaid +flowchart TB + subgraph "あなたのDZD" + CA[Config Agent] + TA[Telemetry Agent] + HW[スイッチハードウェア/ソフトウェア] + end + + CA -->|設定をポーリング| CTRL[コントローラーサービス] + CA -->|設定を適用| HW + + HW -->|メトリクス| TA + TA -->|オンチェーンに送信| BC[DoubleZeroレジャー] +``` + +| エージェント | 機能 | +|-------|--------------| +| **Config Agent** | コントローラーから設定を取得し、スイッチに適用する | +| **Telemetry Agent** | 他のデバイスへのレイテンシ/ロスを測定し、メトリクスをオンチェーンに報告する | + +### ステップ4.4:Config Agentのインストール + +#### スイッチでAPIを有効にする + +EOS設定に追加します: + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "VRFに関する注意" + 異なる場合(例:`management`)は`default`を管理VRF名に置き換えてください。 + +#### エージェントのダウンロードとインストール + +```bash +# スイッチでbashに入る +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# EOS拡張機能としてインストール +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### 拡張機能を確認する + +```bash +switch# show extensions +``` + +ステータスは"A, I, B"であるべきです: + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### エージェントを設定して起動する + +EOS設定に追加します: + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey <デバイス公開鍵> + no shut +``` + +!!! note "VRFに関する注意" + 管理VRFが`default`でない場合(つまり名前空間が`ns-default`でない場合)、execコマンドに`exec /sbin/ip netns exec ns-`をプレフィックスします。例えば、VRFが`management`の場合: + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey <デバイス公開鍵> + no shut + ``` + +デバイスの公開鍵は`doublezero device list`(`account`列)から取得します。 + +#### 実行中であることを確認する + +```bash +switch# show agent doublezero-agent logs +``` + +"Starting doublezero-agent"とコントローラー接続の成功が表示されるはずです。 + +### ステップ4.5:Telemetry Agentのインストール + +#### メトリクスパブリッシャーキーをデバイスにコピーする + +```bash +scp ~/.config/doublezero/metrics-publisher.json <スイッチIP>:/mnt/flash/metrics-publisher-keypair.json +``` + +#### メトリクスパブリッシャーをオンチェーンに登録する + +```bash +doublezero device update \ + --pubkey <デバイスアカウント> \ + --metrics-publisher <メトリクスパブリッシャー公開鍵> +``` + +公開鍵はmetrics-publisher.jsonファイルから取得します。 + +#### エージェントのダウンロードとインストール + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# EOS拡張機能としてインストール +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### 拡張機能を確認する + +```bash +switch# show extensions +``` + +ステータスは"A, I, B"であるべきです: + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### エージェントを設定して起動する + +EOS設定に追加します: + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey <デバイスアカウント> --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "VRFに関する注意" + 管理VRFが`default`でない場合(つまり名前空間が`ns-default`でない場合)、execコマンドに`--management-namespace ns-`を追加します。例えば、VRFが`management`の場合: + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey <デバイスアカウント> --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### 実行中であることを確認する + +```bash +switch# show agent doublezero-telemetry logs +``` + +"Starting telemetry collector"と"Starting submission loop"が表示されるはずです。 + +--- + +## フェーズ5:リンクのバーンイン + +!!! warning "すべての新しいリンクはトラフィックを運ぶ前にバーンインする必要があります" + 新しいリンクは本番トラフィックのためにアクティベートされる前に、**少なくとも24時間ドレインする必要があります**。このバーンイン要件は[RFC12: Network Provisioning](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md)で定義されており、リンクがサービス準備完了になる前に約200,000 DZ Ledgerスロット(約20時間)のクリーンなメトリクスが必要です。 + +エージェントがインストールされて実行中になったら、少なくとも24時間連続して[metrics.doublezero.xyz](https://metrics.doublezero.xyz)でリンクを監視します: + +- **"DoubleZero Device-Link Latencies"**ダッシュボード — 時間経過によるリンクの**ゼロパケットロス**を確認 +- **"DoubleZero Network Metrics"**ダッシュボード — リンクの**ゼロエラー**を確認 + +バーンイン期間がゼロロスとゼロエラーのクリーンなリンクを示した後にのみ、リンクのドレインを解除してください。 + +--- + +## フェーズ6:確認とアクティベーション + +すべてが機能していることを確認するために、このチェックリストを実行します。 + +!!! warning "デバイスはロック状態(`max_users = 0`)で開始します" + デバイスが作成されると、`max_users`はデフォルトで**0**に設定されます。これはまだユーザーが接続できないことを意味します。これは意図的なものです — ユーザートラフィックを受け入れる前にすべてが機能していることを確認する必要があります。 + + **`max_users`を0以上に設定する前に、以下を実行する必要があります:** + + 1. すべてのリンクが[metrics.doublezero.xyz](https://metrics.doublezero.xyz)でゼロロス/エラーの**24時間バーンイン**を完了したことを確認 + 2. **DZ/Malbec Labsと協力**して接続テストを実行: + - テストユーザーはデバイスに接続できますか? + - ユーザーはDZネットワーク上でルートを受信しますか? + - ユーザーはDZネットワークエンドツーエンドでトラフィックをルーティングできますか? + 3. DZ/MLがテスト合格を確認した後にのみ、max_usersを96に設定します: + + ```bash + doublezero device update --pubkey <デバイスアカウント> --max-users 96 + ``` + +### デバイスの確認 + +```bash +# デバイスはステータス"activated"で表示されるべき +doublezero device list | grep <デバイスコード> +``` + +**期待される出力:** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# インターフェースが一覧表示されるべき +doublezero device interface list | grep <デバイスコード> +``` + +**期待される出力:** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### リンクの確認 + +```bash +# リンクはステータス"activated"を表示するべき +doublezero link list | grep <デバイスコード> +``` + +**期待される出力:** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### エージェントの確認 + +スイッチ上で: + +```bash +# Config Agentは設定プルの成功を表示するべき +switch# show agent doublezero-agent logs | tail -20 + +# Telemetry Agentは送信の成功を表示するべき +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### 最終確認図 + +```mermaid +flowchart TB + subgraph "確認チェックリスト" + D[デバイスステータス: activated?] + I[インターフェース: 登録済み?] + L[リンク: activated?] + CA[Config Agent: 設定を取得中?] + TA[Telemetry Agent: メトリクスを送信中?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[すべての確認に合格] --> NOTIFY[DZF/Malbec Labsに通知
技術的に準備完了です!] +``` + +--- + +## トラブルシューティング + +### デバイス作成に失敗する + +- サービスキーが承認されていることを確認(`doublezero contributor list`) +- ロケーションとエクスチェンジコードが有効であることを確認 +- DZプレフィックスが有効なパブリックIP範囲であることを確認 + +### リンクが"requested"ステータスから動かない + +- DZXリンクは他のコントリビューターの承認が必要 +- `doublezero link accept`を実行するよう連絡する + +### Config Agentが接続しない + +- 管理ネットワークがインターネットアクセスを持っていることを確認 +- VRF設定がセットアップに一致していることを確認 +- デバイスの公開鍵が正しいことを確認 + +### Telemetry Agentが送信しない + +- メトリクスパブリッシャーキーがオンチェーンに登録されていることを確認 +- キーペアファイルがスイッチに存在することを確認 +- デバイスアカウントの公開鍵が正しいことを確認 + +--- + +## 次のステップ + +- エージェントのアップグレードとリンク管理については[オペレーションガイド](contribute-operations.md)を確認する +- 用語の定義については[用語集](glossary.md)を確認する +- 問題が発生した場合はDZF/Malbec Labsに連絡する diff --git a/docs/contribute-provisioning.ko.md b/docs/contribute-provisioning.ko.md new file mode 100644 index 0000000..9419ebd --- /dev/null +++ b/docs/contribute-provisioning.ko.md @@ -0,0 +1,862 @@ +# 장치 프로비저닝 가이드 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +이 가이드는 처음부터 끝까지 DoubleZero 장치(DZD) 프로비저닝을 안내합니다. 각 단계는 [온보딩 체크리스트](contribute-overview.md#onboarding-checklist)와 일치합니다. + +--- + +## 전체 구성 이해 + +단계를 시작하기 전에 구축하는 것의 큰 그림을 살펴봅니다: + +```mermaid +flowchart TB + subgraph Onchain + SC[DoubleZero 레저] + end + + subgraph Your Infrastructure + MGMT[관리 서버
DoubleZero CLI] + DZD[귀하의 DZD
Arista 스위치] + DZD ---|WAN 링크| DZD2[귀하의 다른 DZD] + end + + subgraph Other Contributor + OtherDZD[상대방 DZD] + end + + subgraph Users + VAL[검증자] + RPC[RPC 노드] + end + + MGMT -.->|장치,
링크, 인터페이스 등록| SC + DZD ---|DZX 링크| OtherDZD + VAL ---|인터넷을 통해 연결| DZD + RPC ---|인터넷을 통해 연결| DZD +``` + +--- + +## 1단계: 사전 요구사항 + +장치를 프로비저닝하기 전에 물리적 하드웨어 설정과 일부 IP 주소 할당이 필요합니다. + +### 필요한 사항 + +| 요구사항 | 필요한 이유 | +|-------------|-----------------| +| **DZD 하드웨어** | Arista 7280CR3A 스위치 ([하드웨어 사양](contribute.md#hardware-requirements) 참조) | +| **랙 공간** | 적절한 공기 흐름을 갖춘 4U | +| **전원** | 이중 피드, ~4KW 권장 | +| **관리 액세스** | 스위치 구성을 위한 SSH/콘솔 액세스 | +| **인터넷 연결** | 메트릭 발행 및 컨트롤러에서 구성 가져오기 | +| **공개 IPv4 블록** | DZ 프리픽스 풀을 위한 최소 /29 (아래 참조) | + +### DoubleZero CLI 설치 + +DoubleZero CLI(`doublezero`)는 프로비저닝 전반에 걸쳐 장치 등록, 링크 생성 및 기여 관리에 사용됩니다. DZD 스위치가 아닌 **관리 서버 또는 VM**에 설치해야 합니다. 스위치는 Config Agent와 Telemetry Agent([4단계](#phase-4-link-establishment-agent-installation)에서 설치됨)만 실행합니다. + +**Ubuntu / Debian:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +데몬이 실행 중인지 확인합니다: +```bash +sudo systemctl status doublezerod +``` + +### DZ 프리픽스 이해 + +DZ 프리픽스는 DoubleZero 프로토콜이 IP 할당을 위해 관리하는 공개 IP 주소 블록입니다. + +```mermaid +flowchart LR + subgraph "귀하의 /29 블록 (8개 IP)" + IP1["첫 번째 IP
장치용
예약됨"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|할당됨| LO[귀하의 DZD의
Loopback100] + IP2 -->|할당됨| U1[사용자 1] + IP3 -->|할당됨| U2[사용자 2] +``` + +**DZ 프리픽스 사용 방법:** + +- **첫 번째 IP**: 장치용으로 예약됨 (Loopback100 인터페이스에 할당) +- **나머지 IP**: DZD에 연결하는 특정 유형의 사용자에게 할당됨: + - `IBRLWithAllocatedIP` 사용자 + - `EdgeFiltering` 사용자 + - 멀티캐스트 발행자 +- **IBRL 사용자**: 이 풀을 소비하지 않음 (자신의 공개 IP 사용) + +!!! warning "DZ 프리픽스 규칙" + **다음 용도로 사용할 수 없습니다:** + + - 자신의 네트워크 장비 + - DIA 인터페이스의 점대점 링크 + - 관리 인터페이스 + - DZ 프로토콜 외부의 모든 인프라 + + **요구사항:** + + - **전 세계적으로 라우팅 가능한(공개)** IPv4 주소여야 합니다 + - 사설 IP 범위(10.x, 172.16-31.x, 192.168.x)는 스마트 계약에서 거부됩니다 + - **최소 크기: /29** (8개 주소), 더 큰 프리픽스 권장 (예: /28, /27) + - 전체 블록이 사용 가능해야 합니다 — 어떤 주소도 사전 할당하지 마세요 + + 자신의 장비(DIA 인터페이스 IP, 관리 등)를 위한 주소가 필요한 경우 **별도의 주소 풀**을 사용하세요. + +--- + +## 2단계: 계정 설정 + +이 단계에서는 네트워크에서 귀하와 장치를 식별하는 암호화 키를 생성합니다. + +### CLI 실행 위치 + +!!! warning "스위치에 CLI를 설치하지 마세요" + DoubleZero CLI(`doublezero`)는 Arista 스위치가 아닌 **관리 서버 또는 VM**에 설치해야 합니다. + + ```mermaid + flowchart LR + subgraph "관리 서버/VM" + CLI[DoubleZero CLI] + KEYS[귀하의 키쌍] + end + + subgraph "귀하의 DZD 스위치" + CA[Config Agent] + TA[Telemetry Agent] + end + + CLI -->|장치, 링크 생성| BC[블록체인] + CA -->|구성 가져오기| CTRL[컨트롤러] + TA -->|메트릭 제출| BC + ``` + + | 관리 서버에 설치 | 스위치에 설치 | + |-----------------------------|-------------------| + | `doublezero` CLI | Config Agent | + | 서비스 키쌍 | Telemetry Agent | + | 메트릭 발행자 키쌍 | 메트릭 발행자 키쌍 (복사) | + +### 키란 무엇인가? + +키를 안전한 로그인 자격 증명으로 생각하세요: + +- **서비스 키**: 기여자 신원 - CLI 명령 실행에 사용 +- **메트릭 발행자 키**: 텔레메트리 데이터 제출을 위한 장치 신원 + +둘 다 암호화 키쌍입니다(공유하는 공개 키와 비밀로 유지하는 개인 키). + +```mermaid +flowchart LR + subgraph "귀하의 키" + SK[서비스 키
~/.config/solana/id.json] + MK[메트릭 발행자 키
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|사용됨| CLI[CLI 명령
doublezero device create
doublezero link create] + MK -->|사용됨| TEL[Telemetry Agent
온체인 메트릭 제출] +``` + +### 2.1단계: 서비스 키 생성 + +이것이 DoubleZero와 상호 작용하기 위한 주요 신원입니다. + +```bash +doublezero keygen +``` + +이는 기본 위치에 키쌍을 생성합니다. 출력은 **공개 키**를 보여줍니다 — 이것이 DZF와 공유할 것입니다. + +### 2.2단계: 메트릭 발행자 키 생성 + +이 키는 Telemetry Agent가 메트릭 제출에 서명하는 데 사용됩니다. + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### 2.3단계: DZF에 키 제출 + +DoubleZero Foundation 또는 Malbec Labs에 연락하여 다음을 제공합니다: + +1. **서비스 키 공개 키** +2. **GitHub 사용자 이름** (저장소 액세스용) + +그들은: + +- 온체인에서 **기여자 계정**을 생성합니다 +- 비공개 **기여자 저장소**에 대한 액세스를 부여합니다 + +### 2.4단계: 계정 확인 + +확인이 완료되면 기여자 계정이 존재하는지 확인합니다: + +```bash +doublezero contributor list +``` + +목록에 기여자 코드가 표시되어야 합니다. + +### 2.5단계: 기여자 저장소 액세스 + +[malbeclabs/contributors](https://github.com/malbeclabs/contributors) 저장소에는 다음이 포함됩니다: + +- 기본 장치 구성 +- TCAM 프로필 +- ACL 구성 +- 추가 설정 지침 + +장치별 구성을 위해 해당 지침을 따르세요. + +--- + +## 3단계: 장치 프로비저닝 + +이제 블록체인에 물리적 장치를 등록하고 인터페이스를 구성합니다. + +### 장치 유형 이해 + +```mermaid +flowchart TB + subgraph "엣지 장치" + E[엣지 DZD] + EU[사용자가 여기에 연결] + EU --> E + E <-->|DZX 링크| ED[다른 DZD] + end + + subgraph "트랜짓 장치" + T[트랜짓 DZD] + T <-->|WAN 링크| T2[다른 DZD] + T <-->|DZX 링크| TD[다른 DZD] + end + + subgraph "하이브리드 장치" + H[하이브리드 DZD] + HU[사용자가 여기에 연결] + HU --> H + H <-->|WAN 링크| H2[다른 DZD] + H <-->|DZX 링크| HD[다른 DZD] + end +``` + +| 유형 | 기능 | 사용 시기 | +|------|--------------|-------------| +| **엣지** | 사용자 연결만 허용 | 단일 위치, 사용자 대면만 | +| **트랜짓** | 장치 간 트래픽 이동 | 백본 연결, 사용자 없음 | +| **하이브리드** | 사용자 연결 및 백본 모두 | 가장 일반적 - 모든 것 수행 | + +### 3.1단계: 위치 및 Exchange 찾기 + +장치를 생성하기 전에 데이터 센터 위치와 가장 가까운 exchange의 코드를 조회합니다: + +```bash +# 사용 가능한 위치(데이터 센터) 목록 +doublezero location list + +# 사용 가능한 exchange(상호 연결 지점) 목록 +doublezero exchange list +``` + +### 3.2단계: 온체인에서 장치 생성 + +블록체인에 장치를 등록합니다: + +```bash +doublezero device create \ + --code \ + --contributor \ + --device-type hybrid \ + --location \ + --exchange \ + --public-ip \ + --dz-prefixes +``` + +**예시:** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**예상 출력:** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +장치가 생성되었는지 확인합니다: + +```bash +doublezero device list | grep nyc-dz001 +``` + +**파라미터 설명:** + +| 파라미터 | 의미 | +|-----------|---------------| +| `--code` | 장치의 고유 이름 (예: `nyc-dz001`) | +| `--contributor` | 기여자 코드 (DZF가 제공) | +| `--device-type` | `hybrid`, `transit` 또는 `edge` | +| `--location` | `location list`의 데이터 센터 코드 | +| `--exchange` | `exchange list`의 가장 가까운 exchange 코드 | +| `--public-ip` | 사용자가 인터넷을 통해 장치에 연결하는 공개 IP | +| `--dz-prefixes` | 사용자를 위해 할당된 IP 블록 | + +### 3.3단계: 필요한 루프백 인터페이스 생성 + +모든 장치에는 내부 라우팅을 위해 두 개의 루프백 인터페이스가 필요합니다: + +```bash +# VPNv4 루프백 +doublezero device interface create Loopback255 --loopback-type vpnv4 + +# IPv4 루프백 +doublezero device interface create Loopback256 --loopback-type ipv4 +``` + +**예상 출력 (각 명령):** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### 3.4단계: 물리적 인터페이스 생성 + +사용할 물리적 포트를 등록합니다: + +```bash +# 기본 인터페이스 +doublezero device interface create Ethernet1/1 +``` + +**예상 출력:** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### 3.5단계: CYOA 인터페이스 생성 (엣지/하이브리드 장치의 경우) + +장치가 사용자 연결을 허용하는 경우 CYOA(Choose Your Own Adventure) 인터페이스가 필요합니다. 이는 사용자가 귀하에게 연결하는 방법을 시스템에 알립니다. + +**CYOA 유형 설명:** + +| 유형 | 쉬운 설명 | 사용 시기 | +|------|--------------|----------| +| `gre-over-dia` | 사용자가 일반 인터넷을 통해 연결 | 가장 일반적 - 사용자가 DIA를 통해 DZD에 연결 | +| `gre-over-private-peering` | 사용자가 전용 링크를 통해 연결 | 사용자가 귀하의 네트워크에 직접 연결 | +| `gre-over-public-peering` | 사용자가 IX를 통해 연결 | 사용자가 인터넷 exchange에서 귀하와 피어링 | +| `gre-over-fabric` | 사용자가 동일한 로컬 네트워크에 있음 | 사용자가 동일한 데이터 센터에 있음 | +| `gre-over-cable` | 사용자에 대한 직접 케이블 | 단일 전용 사용자 | + +**예시 - 표준 인터넷 사용자:** + +```bash +doublezero device interface create Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**예상 출력:** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**파라미터 설명:** + +| 파라미터 | 의미 | +|-----------|---------------| +| `--interface-cyoa` | 사용자 연결 방법 (위 표 참조) | +| `--interface-dia` | 이것이 인터넷 대면 포트인 경우 `dia` | +| `--bandwidth` | Mbps 단위 포트 속도 (10000 = 10Gbps) | +| `--cir` | Mbps 단위 확약 요금 (보장된 대역폭) | +| `--user-tunnel-endpoint` | 이 포트가 사용자 터널을 허용함 | + +### 3.6단계: 장치 확인 + +```bash +doublezero device list +``` + +**예시 출력:** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +장치가 `activated` 상태로 표시되어야 합니다. + +--- + +## 4단계: 링크 설정 및 에이전트 설치 + +링크는 장치를 나머지 DoubleZero 네트워크에 연결합니다. + +### 링크 이해 + +```mermaid +flowchart LR + subgraph "귀하의 네트워크" + D1[귀하의 DZD 1
NYC] + D2[귀하의 DZD 2
LAX] + end + + subgraph "다른 기여자" + O1[상대방 DZD
NYC] + end + + D1 ---|WAN 링크
동일 기여자| D2 + D1 ---|DZX 링크
다른 기여자| O1 +``` + +| 링크 유형 | 연결 | 수락 | +|-----------|----------|------------| +| **WAN 링크** | 귀하의 두 장치 | 자동 (둘 다 소유) | +| **DZX 링크** | 귀하의 장치 대 다른 기여자 | 상대방 수락 필요 | + +### 4.1단계: WAN 링크 생성 (여러 장치가 있는 경우) + +WAN 링크는 귀하의 자체 장치를 연결합니다: + +```bash +doublezero link create wan \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --side-z-interface \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**예시:** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**예상 출력:** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### 4.2단계: DZX 링크 생성 + +DZX 링크는 장치를 다른 기여자의 DZD에 직접 연결합니다: + +```bash +doublezero link create dzx \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --bandwidth \ + --mtu \ + --delay-ms \ + --jitter-ms +``` + +**예상 출력:** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +DZX 링크를 생성한 후 다른 기여자가 이를 수락해야 합니다: + +```bash +# 다른 기여자가 이것을 실행합니다 +doublezero link accept \ + --code \ + --side-z-interface +``` + +**예상 출력 (수락하는 기여자):** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### 4.3단계: 링크 확인 + +```bash +doublezero link list +``` + +**예시 출력:** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +양쪽이 구성되면 링크는 `activated` 상태를 표시해야 합니다. + +--- + +### 에이전트 설치 + +두 개의 소프트웨어 에이전트가 DZD에서 실행됩니다: + +```mermaid +flowchart TB + subgraph "귀하의 DZD" + CA[Config Agent] + TA[Telemetry Agent] + HW[스위치 하드웨어/소프트웨어] + end + + CA -->|구성 폴링| CTRL[컨트롤러 서비스] + CA -->|구성 적용| HW + + HW -->|메트릭| TA + TA -->|온체인 제출| BC[DoubleZero 레저] +``` + +| 에이전트 | 기능 | +|-------|--------------| +| **Config Agent** | 컨트롤러에서 구성을 가져와 스위치에 적용 | +| **Telemetry Agent** | 다른 장치에 대한 대기 시간/손실 측정, 온체인으로 메트릭 보고 | + +### 4.4단계: Config Agent 설치 + +#### 스위치에서 API 활성화 + +EOS 구성에 추가: + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "VRF 참고" + 관리 VRF 이름이 다른 경우(예: `management`) `default`를 해당 이름으로 교체하세요. + +#### 에이전트 다운로드 및 설치 + +```bash +# 스위치에서 bash 입력 +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# EOS 확장으로 설치 +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### 확장 확인 + +```bash +switch# show extensions +``` + +상태는 "A, I, B"여야 합니다: + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### 에이전트 구성 및 시작 + +EOS 구성에 추가: + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey + no shut +``` + +!!! note "VRF 참고" + 관리 VRF가 `default`가 아닌 경우(즉, 네임스페이스가 `ns-default`가 아닌 경우) exec 명령 앞에 `exec /sbin/ip netns exec ns-`를 붙입니다. 예를 들어 VRF가 `management`인 경우: + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey + no shut + ``` + +장치 공개 키를 `doublezero device list`의 `account` 열에서 가져옵니다. + +#### 실행 확인 + +```bash +switch# show agent doublezero-agent logs +``` + +"Starting doublezero-agent" 및 성공적인 컨트롤러 연결이 표시되어야 합니다. + +### 4.5단계: Telemetry Agent 설치 + +#### 메트릭 발행자 키를 장치에 복사 + +```bash +scp ~/.config/doublezero/metrics-publisher.json :/mnt/flash/metrics-publisher-keypair.json +``` + +#### 온체인에 메트릭 발행자 등록 + +```bash +doublezero device update \ + --pubkey \ + --metrics-publisher +``` + +metrics-publisher.json 파일에서 공개 키를 가져옵니다. + +#### 에이전트 다운로드 및 설치 + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# EOS 확장으로 설치 +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### 확장 확인 + +```bash +switch# show extensions +``` + +상태는 "A, I, B"여야 합니다: + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### 에이전트 구성 및 시작 + +EOS 구성에 추가: + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "VRF 참고" + 관리 VRF가 `default`가 아닌 경우(즉, 네임스페이스가 `ns-default`가 아닌 경우) exec 명령에 `--management-namespace ns-`를 추가합니다. 예를 들어 VRF가 `management`인 경우: + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### 실행 확인 + +```bash +switch# show agent doublezero-telemetry logs +``` + +"Starting telemetry collector" 및 "Starting submission loop"가 표시되어야 합니다. + +--- + +## 5단계: 링크 번인 + +!!! warning "모든 새 링크는 트래픽을 전달하기 전에 번인해야 합니다" + 새 링크는 프로덕션 트래픽을 활성화하기 전에 **최소 24시간 동안 드레인되어야 합니다**. 이 번인 요구사항은 링크가 서비스 준비가 되기 전에 약 20만 DZ 레저 슬롯(~20시간)의 클린 메트릭을 지정하는 [RFC12: 네트워크 프로비저닝](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md)에 정의되어 있습니다. + +에이전트가 설치 및 실행되면 최소 24시간 연속으로 [metrics.doublezero.xyz](https://metrics.doublezero.xyz)에서 링크를 모니터링합니다: + +- **"DoubleZero Device-Link Latencies"** 대시보드 — 시간에 따른 링크의 **제로 패킷 손실** 확인 +- **"DoubleZero Network Metrics"** 대시보드 — 링크의 **제로 오류** 확인 + +번인 기간이 제로 손실 및 제로 오류의 클린 링크를 보여준 후에만 링크의 드레인을 해제합니다. + +--- + +## 6단계: 검증 및 활성화 + +모든 것이 작동하는지 확인하기 위해 이 체크리스트를 실행합니다. + +!!! warning "장치는 잠금 상태로 시작됩니다 (`max_users = 0`)" + 장치가 생성되면 `max_users`가 기본적으로 **0**으로 설정됩니다. 즉, 아직 사용자가 연결할 수 없습니다. 이는 의도적인 것입니다 — 사용자 트래픽을 허용하기 전에 모든 것이 작동하는지 확인해야 합니다. + + **`max_users`를 0 이상으로 설정하기 전에 다음을 완료해야 합니다:** + + 1. 모든 링크가 [metrics.doublezero.xyz](https://metrics.doublezero.xyz)에서 제로 손실/오류로 **24시간 번인**을 완료했는지 확인 + 2. **DZ/Malbec Labs와 조율**하여 연결 테스트 실행: + - 테스트 사용자가 장치에 연결할 수 있는가? + - 사용자가 DZ 네트워크를 통해 경로를 수신하는가? + - 사용자가 DZ 네트워크를 통해 엔드-투-엔드로 트래픽을 라우팅할 수 있는가? + 3. DZ/ML이 테스트 통과를 확인한 후에만 max_users를 96으로 설정합니다: + + ```bash + doublezero device update --pubkey --max-users 96 + ``` + +### 장치 확인 + +```bash +# 장치가 "activated" 상태로 표시되어야 합니다 +doublezero device list | grep +``` + +**예상 출력:** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# 인터페이스가 나열되어야 합니다 +doublezero device interface list | grep +``` + +**예상 출력:** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### 링크 확인 + +```bash +# 링크가 "activated" 상태를 표시해야 합니다 +doublezero link list | grep +``` + +**예상 출력:** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### 에이전트 확인 + +스위치에서: + +```bash +# Config Agent가 성공적인 구성 가져오기를 표시해야 합니다 +switch# show agent doublezero-agent logs | tail -20 + +# Telemetry Agent가 성공적인 제출을 표시해야 합니다 +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### 최종 검증 다이어그램 + +```mermaid +flowchart TB + subgraph "검증 체크리스트" + D[장치 상태: activated?] + I[인터페이스: 등록됨?] + L[링크: activated?] + CA[Config Agent: 구성 가져오는 중?] + TA[Telemetry Agent: 메트릭 제출 중?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[모든 확인 통과] --> NOTIFY[DZF/Malbec Labs에 통지
기술적으로 준비됨!] +``` + +--- + +## 문제 해결 + +### 장치 생성 실패 + +- 서비스 키가 승인되었는지 확인합니다 (`doublezero contributor list`) +- 위치 및 exchange 코드가 유효한지 확인합니다 +- DZ 프리픽스가 유효한 공개 IP 범위인지 확인합니다 + +### "requested" 상태에서 멈춘 링크 + +- DZX 링크는 다른 기여자의 수락이 필요합니다 +- 상대방에게 `doublezero link accept` 실행 요청 + +### Config Agent가 연결되지 않음 + +- 관리 네트워크에 인터넷 액세스가 있는지 확인합니다 +- VRF 구성이 설정과 일치하는지 확인합니다 +- 장치 공개 키가 올바른지 확인합니다 + +### Telemetry Agent가 제출하지 않음 + +- 메트릭 발행자 키가 온체인에 등록되었는지 확인합니다 +- 스위치에 키쌍 파일이 존재하는지 확인합니다 +- 장치 계정 공개 키가 올바른지 확인합니다 + +--- + +## 다음 단계 + +- 에이전트 업그레이드 및 링크 관리에 대한 [운영 가이드](contribute-operations.md) 검토 +- 용어 정의는 [용어집](glossary.md) 확인 +- 문제가 발생하면 DZF/Malbec Labs에 문의 diff --git a/docs/contribute-provisioning.pt.md b/docs/contribute-provisioning.pt.md new file mode 100644 index 0000000..9e69395 --- /dev/null +++ b/docs/contribute-provisioning.pt.md @@ -0,0 +1,862 @@ +# Guia de Provisionamento de Dispositivos +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Este guia orienta você no provisionamento de um Dispositivo DoubleZero (DZD) do início ao fim. Cada fase corresponde à [Lista de Verificação de Integração](contribute-overview.md#onboarding-checklist). + +--- + +## Como Tudo Se Encaixa + +Antes de mergulhar nas etapas, aqui está a visão geral do que você está construindo: + +```mermaid +flowchart TB + subgraph Onchain + SC[Ledger DoubleZero] + end + + subgraph Sua Infraestrutura + MGMT[Servidor de Gerenciamento
CLI DoubleZero] + DZD[Seu DZD
Switch Arista] + DZD ---|Link WAN| DZD2[Seu outro DZD] + end + + subgraph Outro Contribuidor + OtherDZD[DZD deles] + end + + subgraph Usuários + VAL[Validadores] + RPC[Nós RPC] + end + + MGMT -.->|Registra dispositivos,
links, interfaces| SC + DZD ---|Link DZX| OtherDZD + VAL ---|Conecta via Internet| DZD + RPC ---|Conecta via Internet| DZD +``` + +--- + +## Fase 1: Pré-requisitos + +Antes de poder provisionar um dispositivo, você precisa do hardware físico configurado e alguns endereços IP alocados. + +### O Que Você Precisa + +| Requisito | Por Que É Necessário | +|-------------|-----------------| +| **Hardware DZD** | Switch Arista 7280CR3A (consulte [especificações de hardware](contribute.md#hardware-requirements)) | +| **Espaço em Rack** | 4U com fluxo de ar adequado | +| **Energia** | Alimentações redundantes, ~4KW recomendado | +| **Acesso de Gerenciamento** | Acesso SSH/console para configurar o switch | +| **Conectividade à Internet** | Para publicação de métricas e busca de configuração do controlador | +| **Bloco IPv4 Público** | Mínimo /29 para o pool de prefixos DZ (veja abaixo) | + +### Instalar o CLI do DoubleZero + +O CLI do DoubleZero (`doublezero`) é usado ao longo do provisionamento para registrar dispositivos, criar links e gerenciar sua contribuição. Deve ser instalado em um **servidor ou VM de gerenciamento** — não no próprio switch DZD. O switch executa apenas o Config Agent e o Telemetry Agent (instalados na [Fase 4](#fase-4-estabelecimento-de-link-instalação-de-agentes)). + +**Ubuntu / Debian:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +Verificar se o daemon está em execução: +```bash +sudo systemctl status doublezerod +``` + +### Entendendo seu Prefixo DZ + +Seu prefixo DZ é um bloco de endereços IP públicos que o protocolo DoubleZero gerencia para alocação de IP. + +```mermaid +flowchart LR + subgraph "Seu Bloco /29 (8 IPs)" + IP1["Primeiro IP
Reservado para
seu dispositivo"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|Atribuído a| LO[Loopback100
no seu DZD] + IP2 -->|Alocado para| U1[Usuário 1] + IP3 -->|Alocado para| U2[Usuário 2] +``` + +**Como os prefixos DZ são usados:** + +- **Primeiro IP**: Reservado para seu dispositivo (atribuído à interface Loopback100) +- **IPs restantes**: Alocados para tipos específicos de usuários que se conectam ao seu DZD: + - Usuários `IBRLWithAllocatedIP` + - Usuários `EdgeFiltering` + - Publicadores multicast +- **Usuários IBRL**: NÃO consomem deste pool (usam seu próprio IP público) + +!!! warning "Regras de Prefixo DZ" + **Você NÃO PODE usar esses endereços para:** + + - Seu próprio equipamento de rede + - Links ponto a ponto em interfaces DIA + - Interfaces de gerenciamento + - Qualquer infraestrutura fora do protocolo DZ + + **Requisitos:** + + - Devem ser endereços IPv4 **globalmente roteáveis (públicos)** + - Intervalos de IP privados (10.x, 172.16-31.x, 192.168.x) são rejeitados pelo contrato inteligente + - **Tamanho mínimo: /29** (8 endereços), prefixos maiores são preferidos (por exemplo, /28, /27) + - Todo o bloco deve estar disponível — não pré-aloque nenhum endereço + + Se você precisar de endereços para seu próprio equipamento (IPs de interface DIA, gerenciamento, etc.), use um **pool de endereços separado**. + +--- + +## Fase 2: Configuração de Conta + +Nesta fase, você cria as chaves criptográficas que identificam você e seus dispositivos na rede. + +### Onde Executar o CLI + +!!! warning "NÃO instale o CLI no seu switch" + O CLI do DoubleZero (`doublezero`) deve ser instalado em um **servidor ou VM de gerenciamento**, não no seu switch Arista. + + ```mermaid + flowchart LR + subgraph "Servidor/VM de Gerenciamento" + CLI[CLI DoubleZero] + KEYS[Seus Keypairs] + end + + subgraph "Seu Switch DZD" + CA[Config Agent] + TA[Telemetry Agent] + end + + CLI -->|Cria dispositivos, links| BC[Blockchain] + CA -->|Busca config| CTRL[Controlador] + TA -->|Envia métricas| BC + ``` + + | Instalar no Servidor de Gerenciamento | Instalar no Switch | + |-----------------------------|-------------------| + | CLI `doublezero` | Config Agent | + | Seu keypair de serviço | Telemetry Agent | + | Seu keypair do editor de métricas | Keypair do editor de métricas (cópia) | + +### O Que São Chaves? + +Pense nas chaves como credenciais de login seguras: + +- **Chave de Serviço**: Sua identidade de contribuidor — usada para executar comandos CLI +- **Chave do Editor de Métricas**: A identidade do seu dispositivo para enviar dados de telemetria + +Ambas são keypairs criptográficos (uma chave pública que você compartilha, uma chave privada que você mantém em segredo). + +```mermaid +flowchart LR + subgraph "Suas Chaves" + SK[Chave de Serviço
~/.config/solana/id.json] + MK[Chave do Editor de Métricas
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|Usada para| CLI[Comandos CLI
doublezero device create
doublezero link create] + MK -->|Usada para| TEL[Telemetry Agent
Envia métricas onchain] +``` + +### Passo 2.1: Gerar Sua Chave de Serviço + +Esta é sua identidade principal para interagir com o DoubleZero. + +```bash +doublezero keygen +``` + +Isso cria um keypair no local padrão. A saída mostra sua **chave pública** — isso é o que você compartilhará com a DZF. + +### Passo 2.2: Gerar Sua Chave do Editor de Métricas + +Esta chave é usada pelo Telemetry Agent para assinar envios de métricas. + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### Passo 2.3: Enviar Chaves para a DZF + +Entre em contato com a DoubleZero Foundation ou Malbec Labs e forneça: + +1. Sua **chave pública de serviço** +2. Seu **nome de usuário GitHub** (para acesso ao repositório) + +Eles irão: + +- Criar sua **conta de contribuidor** onchain +- Conceder acesso ao **repositório de contribuidores** privado + +### Passo 2.4: Verificar Sua Conta + +Uma vez confirmado, verifique se sua conta de contribuidor existe: + +```bash +doublezero contributor list +``` + +Você deve ver seu código de contribuidor na lista. + +### Passo 2.5: Acessar o Repositório de Contribuidores + +O repositório [malbeclabs/contributors](https://github.com/malbeclabs/contributors) contém: + +- Configurações base do dispositivo +- Perfis TCAM +- Configurações ACL +- Instruções de configuração adicionais + +Siga as instruções lá para configuração específica do dispositivo. + +--- + +## Fase 3: Provisionamento de Dispositivos + +Agora você registrará seu dispositivo físico no blockchain e configurará suas interfaces. + +### Entendendo os Tipos de Dispositivos + +```mermaid +flowchart TB + subgraph "Dispositivo Edge" + E[DZD Edge] + EU[Usuários se conectam aqui] + EU --> E + E <-->|Link DZX| ED[Outro DZD] + end + + subgraph "Dispositivo Transit" + T[DZD Transit] + T <-->|Link WAN| T2[Outro DZD] + T <-->|Link DZX| TD[Outro DZD] + end + + subgraph "Dispositivo Hybrid" + H[DZD Hybrid] + HU[Usuários se conectam aqui] + HU --> H + H <-->|Link WAN| H2[Outro DZD] + H <-->|Link DZX| HD[Outro DZD] + end +``` + +| Tipo | O Que Faz | Quando Usar | +|------|--------------|-------------| +| **Edge** | Aceita conexões de usuários apenas | Localização única, voltado apenas para usuários | +| **Transit** | Move tráfego entre dispositivos | Conectividade de backbone, sem usuários | +| **Hybrid** | Conexões de usuários E backbone | Mais comum — faz tudo | + +### Passo 3.1: Encontrar Sua Localização e Exchange + +Antes de criar seu dispositivo, consulte os códigos para sua localização de data center e exchange mais próxima: + +```bash +# Listar localizações disponíveis (data centers) +doublezero location list + +# Listar exchanges disponíveis (pontos de interconexão) +doublezero exchange list +``` + +### Passo 3.2: Criar Seu Dispositivo Onchain + +Registrar seu dispositivo no blockchain: + +```bash +doublezero device create \ + --code \ + --contributor \ + --device-type hybrid \ + --location \ + --exchange \ + --public-ip \ + --dz-prefixes +``` + +**Exemplo:** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**Saída esperada:** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +Verificar se seu dispositivo foi criado: + +```bash +doublezero device list | grep nyc-dz001 +``` + +**Parâmetros explicados:** + +| Parâmetro | O Que Significa | +|-----------|---------------| +| `--code` | Um nome único para seu dispositivo (por exemplo, `nyc-dz001`) | +| `--contributor` | Seu código de contribuidor (fornecido pela DZF) | +| `--device-type` | `hybrid`, `transit` ou `edge` | +| `--location` | Código do data center em `location list` | +| `--exchange` | Código da exchange mais próxima em `exchange list` | +| `--public-ip` | O IP público onde os usuários se conectam ao seu dispositivo via internet | +| `--dz-prefixes` | Seu bloco de IP alocado para usuários | + +### Passo 3.3: Criar Interfaces Loopback Necessárias + +Todo dispositivo precisa de duas interfaces loopback para roteamento interno: + +```bash +# Loopback VPNv4 +doublezero device interface create Loopback255 --loopback-type vpnv4 + +# Loopback IPv4 +doublezero device interface create Loopback256 --loopback-type ipv4 +``` + +**Saída esperada (para cada comando):** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### Passo 3.4: Criar Interfaces Físicas + +Registrar as portas físicas que você usará: + +```bash +# Interface básica +doublezero device interface create Ethernet1/1 +``` + +**Saída esperada:** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### Passo 3.5: Criar Interface CYOA (para dispositivos Edge/Hybrid) + +Se seu dispositivo aceita conexões de usuários, você precisa de uma interface CYOA (Choose Your Own Adventure). Isso informa ao sistema como os usuários se conectam a você. + +**Tipos CYOA Explicados:** + +| Tipo | Em Português Claro | Usar Quando | +|------|--------------|----------| +| `gre-over-dia` | Usuários se conectam via internet regular | Mais comum — usuários se conectam via DIA ao seu DZD | +| `gre-over-private-peering` | Usuários se conectam via link privado | Usuários têm conexão direta com sua rede | +| `gre-over-public-peering` | Usuários se conectam via IX | Usuários fazem peering com você em uma internet exchange | +| `gre-over-fabric` | Usuários na mesma rede local | Usuários no mesmo data center | +| `gre-over-cable` | Cabo direto ao usuário | Único usuário dedicado | + +**Exemplo — Usuários padrão de internet:** + +```bash +doublezero device interface create Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**Saída esperada:** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**Parâmetros explicados:** + +| Parâmetro | O Que Significa | +|-----------|---------------| +| `--interface-cyoa` | Como os usuários se conectam (consulte a tabela acima) | +| `--interface-dia` | `dia` se esta é uma porta voltada para a internet | +| `--bandwidth` | Velocidade da porta em Mbps (10000 = 10Gbps) | +| `--cir` | Taxa comprometida em Mbps (largura de banda garantida) | +| `--user-tunnel-endpoint` | Esta porta aceita túneis de usuários | + +### Passo 3.6: Verificar Seu Dispositivo + +```bash +doublezero device list +``` + +**Exemplo de saída:** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +Seu dispositivo deve aparecer com status `activated`. + +--- + +## Fase 4: Estabelecimento de Link & Instalação de Agentes + +Os links conectam seu dispositivo ao restante da rede DoubleZero. + +### Entendendo os Links + +```mermaid +flowchart LR + subgraph "Sua Rede" + D1[Seu DZD 1
NYC] + D2[Seu DZD 2
LAX] + end + + subgraph "Outro Contribuidor" + O1[DZD deles
NYC] + end + + D1 ---|Link WAN
Mesmo contribuidor| D2 + D1 ---|Link DZX
Contribuidores diferentes| O1 +``` + +| Tipo de Link | Conecta | Aceitação | +|-----------|----------|------------| +| **Link WAN** | Dois dos SEUS dispositivos | Automática (você é dono de ambos) | +| **Link DZX** | Seu dispositivo com OUTRO contribuidor | Requer aceitação deles | + +### Passo 4.1: Criar Links WAN (se você tiver múltiplos dispositivos) + +Links WAN conectam seus próprios dispositivos: + +```bash +doublezero link create wan \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --side-z-interface \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**Exemplo:** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**Saída esperada:** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### Passo 4.2: Criar Links DZX + +Os links DZX conectam seu dispositivo diretamente ao DZD de outro contribuidor: + +```bash +doublezero link create dzx \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --bandwidth \ + --mtu \ + --delay-ms \ + --jitter-ms +``` + +**Saída esperada:** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +Após criar um link DZX, o outro contribuidor deve aceitá-lo: + +```bash +# O OUTRO contribuidor executa isso +doublezero link accept \ + --code \ + --side-z-interface +``` + +**Saída esperada (para o contribuidor que aceita):** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### Passo 4.3: Verificar Links + +```bash +doublezero link list +``` + +**Exemplo de saída:** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +Os links devem mostrar status `activated` uma vez que ambos os lados estejam configurados. + +--- + +### Instalação de Agentes + +Dois agentes de software são executados no seu DZD: + +```mermaid +flowchart TB + subgraph "Seu DZD" + CA[Config Agent] + TA[Telemetry Agent] + HW[Hardware/Software do Switch] + end + + CA -->|Busca config| CTRL[Serviço Controlador] + CA -->|Aplica config| HW + + HW -->|Métricas| TA + TA -->|Envia onchain| BC[Ledger DoubleZero] +``` + +| Agente | O Que Faz | +|-------|--------------| +| **Config Agent** | Busca configuração do controlador, aplica ao seu switch | +| **Telemetry Agent** | Mede latência/perda para outros dispositivos, reporta métricas onchain | + +### Passo 4.4: Instalar Config Agent + +#### Habilitar a API no seu switch + +Adicionar à configuração EOS: + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "Nota sobre VRF" + Substitua `default` pelo nome do seu VRF de gerenciamento se for diferente (por exemplo, `management`). + +#### Baixar e instalar o agente + +```bash +# Entrar no bash no switch +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# Instalar como extensão EOS +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Verificar a extensão + +```bash +switch# show extensions +``` + +O Status deve ser "A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configurar e iniciar o agente + +Adicionar à configuração EOS: + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey + no shut +``` + +!!! note "Nota sobre VRF" + Se seu VRF de gerenciamento não for `default` (ou seja, o namespace não é `ns-default`), prefixe o comando exec com `exec /sbin/ip netns exec ns-`. Por exemplo, se seu VRF for `management`: + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey + no shut + ``` + +Obtenha a pubkey do seu dispositivo com `doublezero device list` (coluna `account`). + +#### Verificar se está em execução + +```bash +switch# show agent doublezero-agent logs +``` + +Você deve ver "Starting doublezero-agent" e conexões bem-sucedidas ao controlador. + +### Passo 4.5: Instalar Telemetry Agent + +#### Copiar a chave do editor de métricas para o seu dispositivo + +```bash +scp ~/.config/doublezero/metrics-publisher.json :/mnt/flash/metrics-publisher-keypair.json +``` + +#### Registrar o editor de métricas onchain + +```bash +doublezero device update \ + --pubkey \ + --metrics-publisher +``` + +Obtenha a pubkey do seu arquivo metrics-publisher.json. + +#### Baixar e instalar o agente + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# Instalar como extensão EOS +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### Verificar a extensão + +```bash +switch# show extensions +``` + +O Status deve ser "A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### Configurar e iniciar o agente + +Adicionar à configuração EOS: + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "Nota sobre VRF" + Se seu VRF de gerenciamento não for `default` (ou seja, o namespace não é `ns-default`), adicione `--management-namespace ns-` ao comando exec. Por exemplo, se seu VRF for `management`: + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### Verificar se está em execução + +```bash +switch# show agent doublezero-telemetry logs +``` + +Você deve ver "Starting telemetry collector" e "Starting submission loop". + +--- + +## Fase 5: Rodagem do Link + +!!! warning "Todos os novos links devem passar por rodagem antes de transportar tráfego" + Novos links devem ser **drenados por pelo menos 24 horas** antes de serem ativados para tráfego de produção. Este requisito de rodagem é definido no [RFC12: Provisionamento de Rede](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md), que especifica ~200.000 slots do DZ Ledger (~20 horas) de métricas limpas antes que um link esteja pronto para serviço. + +Com os agentes instalados e em execução, monitore seus links em [metrics.doublezero.xyz](https://metrics.doublezero.xyz) por pelo menos 24 horas consecutivas: + +- Dashboard **"DoubleZero Device-Link Latencies"** — verifique **zero perda de pacotes** no link ao longo do tempo +- Dashboard **"DoubleZero Network Metrics"** — verifique **zero erros** nos seus links + +Remova o dreno do link apenas depois que o período de rodagem mostrar um link limpo com zero perda e zero erros. + +--- + +## Fase 6: Verificação & Ativação + +Percorra esta lista de verificação para confirmar que tudo está funcionando. + +!!! warning "Seu dispositivo começa bloqueado (`max_users = 0`)" + Quando um dispositivo é criado, `max_users` é definido como **0** por padrão. Isso significa que nenhum usuário pode se conectar a ele ainda. Isso é intencional — você deve verificar se tudo funciona antes de aceitar tráfego de usuários. + + **Antes de definir `max_users` acima de 0, você deve:** + + 1. Confirmar que todos os links completaram sua **rodagem de 24 horas** com zero perda/erros em [metrics.doublezero.xyz](https://metrics.doublezero.xyz) + 2. **Coordenar com DZ/Malbec Labs** para executar um teste de conectividade: + - Um usuário de teste pode se conectar ao seu dispositivo? + - O usuário recebe rotas pela rede DZ? + - O usuário pode rotear tráfego pela rede DZ de ponta a ponta? + 3. Somente após o DZ/ML confirmar que os testes passaram, defina max_users como 96: + + ```bash + doublezero device update --pubkey --max-users 96 + ``` + +### Verificações do Dispositivo + +```bash +# Seu dispositivo deve aparecer com status "activated" +doublezero device list | grep +``` + +**Saída esperada:** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# Suas interfaces devem estar listadas +doublezero device interface list | grep +``` + +**Saída esperada:** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### Verificações de Link + +```bash +# Os links devem mostrar status "activated" +doublezero link list | grep +``` + +**Saída esperada:** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### Verificações de Agente + +No switch: + +```bash +# O config agent deve mostrar extrações de configuração bem-sucedidas +switch# show agent doublezero-agent logs | tail -20 + +# O telemetry agent deve mostrar envios bem-sucedidos +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### Diagrama de Verificação Final + +```mermaid +flowchart TB + subgraph "Lista de Verificação" + D[Status do Dispositivo: activated?] + I[Interfaces: registradas?] + L[Links: activated?] + CA[Config Agent: buscando config?] + TA[Telemetry Agent: enviando métricas?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[Todas as Verificações Passaram] --> NOTIFY[Notifique DZF/Malbec Labs
Você está tecnicamente pronto!] +``` + +--- + +## Resolução de Problemas + +### Criação de dispositivo falha + +- Verifique se sua chave de serviço está autorizada (`doublezero contributor list`) +- Verifique se os códigos de localização e exchange são válidos +- Certifique-se de que o prefixo DZ é um intervalo de IP público válido + +### Link preso em status "requested" + +- Links DZX requerem aceitação do outro contribuidor +- Entre em contato com eles para executar `doublezero link accept` + +### Config Agent não se conecta + +- Verifique se a rede de gerenciamento tem acesso à internet +- Verifique se a configuração do VRF corresponde à sua configuração +- Certifique-se de que a pubkey do dispositivo está correta + +### Telemetry Agent não envia + +- Verifique se a chave do editor de métricas está registrada onchain +- Verifique se o arquivo de keypair existe no switch +- Certifique-se de que a pubkey da conta do dispositivo está correta + +--- + +## Próximas Etapas + +- Revise o [Guia de Operações](contribute-operations.md) para atualizações de agentes e gerenciamento de links +- Consulte o [Glossário](glossary.md) para definições de termos +- Entre em contato com DZF/Malbec Labs se encontrar problemas diff --git a/docs/contribute-provisioning.zh.md b/docs/contribute-provisioning.zh.md new file mode 100644 index 0000000..d0a9926 --- /dev/null +++ b/docs/contribute-provisioning.zh.md @@ -0,0 +1,862 @@ +# 设备配置指南 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +本指南将引导您从头到尾完成DoubleZero设备(DZD)的配置。每个阶段与[入驻清单](contribute-overview.md#onboarding-checklist)相对应。 + +--- + +## 整体架构概览 + +在深入步骤之前,先了解您正在构建的整体架构: + +```mermaid +flowchart TB + subgraph Onchain + SC[DoubleZero账本] + end + + subgraph Your Infrastructure + MGMT[管理服务器
DoubleZero CLI] + DZD[您的DZD
Arista交换机] + DZD ---|WAN链路| DZD2[您的其他DZD] + end + + subgraph Other Contributor + OtherDZD[他们的DZD] + end + + subgraph Users + VAL[验证器] + RPC[RPC节点] + end + + MGMT -.->|注册设备、
链路、接口| SC + DZD ---|DZX链路| OtherDZD + VAL ---|通过互联网连接| DZD + RPC ---|通过互联网连接| DZD +``` + +--- + +## 阶段1:前提条件 + +在配置设备之前,您需要完成物理硬件的安装并分配一些IP地址。 + +### 所需条件 + +| 要求 | 用途 | +|------|------| +| **DZD硬件** | Arista 7280CR3A交换机(参见[硬件规格](contribute.md#hardware-requirements)) | +| **机架空间** | 4U,需要适当的气流 | +| **电源** | 冗余供电,建议约4KW | +| **管理访问** | SSH/控制台访问以配置交换机 | +| **互联网连接** | 用于发布指标和从控制器获取配置 | +| **公共IPv4地址块** | DZ前缀池至少需要/29(参见下方) | + +### 安装DoubleZero CLI + +DoubleZero CLI(`doublezero`)在整个配置过程中用于注册设备、创建链路和管理您的贡献。应将其安装在**管理服务器或虚拟机**上——而不是DZD交换机本身。交换机只运行Config Agent和Telemetry Agent(在[阶段4](#phase-4-link-establishment-agent-installation)中安装)。 + +**Ubuntu / Debian:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +**Rocky Linux / RHEL:** +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +验证守护进程正在运行: +```bash +sudo systemctl status doublezerod +``` + +### 了解您的DZ前缀 + +您的DZ前缀是DoubleZero协议管理用于IP分配的公共IP地址块。 + +```mermaid +flowchart LR + subgraph "您的/29地址块(8个IP)" + IP1["第一个IP
为您的设备
保留"] + IP2["IP 2"] + IP3["IP 3"] + IP4["..."] + IP8["IP 8"] + end + + IP1 -->|分配给| LO[DZD上的
Loopback100] + IP2 -->|分配给| U1[用户1] + IP3 -->|分配给| U2[用户2] +``` + +**DZ前缀的使用方式:** + +- **第一个IP**:为您的设备保留(分配给Loopback100接口) +- **剩余IP**:分配给连接到您DZD的特定用户类型: + - `IBRLWithAllocatedIP`用户 + - `EdgeFiltering`用户 + - 多播发布者 +- **IBRL用户**:不消耗此池中的IP(他们使用自己的公共IP) + +!!! warning "DZ前缀规则" + **您不能将这些地址用于:** + + - 您自己的网络设备 + - DIA接口上的点对点链路 + - 管理接口 + - DZ协议之外的任何基础设施 + + **要求:** + + - 必须是**全球可路由(公共)**IPv4地址 + - 私有IP范围(10.x、172.16-31.x、192.168.x)会被智能合约拒绝 + - **最小大小:/29**(8个地址),建议使用更大的前缀(例如/28、/27) + - 整个地址块必须可用——不要预先分配任何地址 + + 如果您需要为自己的设备(DIA接口IP、管理等)分配地址,请使用**单独的地址池**。 + +--- + +## 阶段2:账户设置 + +在此阶段,您将创建在网络上标识您和您设备的加密密钥。 + +### 在哪里运行CLI + +!!! warning "请勿在交换机上安装CLI" + DoubleZero CLI(`doublezero`)应安装在**管理服务器或虚拟机**上,而不是您的Arista交换机上。 + + ```mermaid + flowchart LR + subgraph "管理服务器/虚拟机" + CLI[DoubleZero CLI] + KEYS[您的密钥对] + end + + subgraph "您的DZD交换机" + CA[Config Agent] + TA[Telemetry Agent] + end + + CLI -->|创建设备、链路| BC[区块链] + CA -->|拉取配置| CTRL[控制器] + TA -->|提交指标| BC + ``` + + | 安装在管理服务器上 | 安装在交换机上 | + |-------------------|--------------| + | `doublezero` CLI | Config Agent | + | 您的服务密钥 | Telemetry Agent | + | 您的指标发布者密钥 | 指标发布者密钥(副本) | + +### 什么是密钥? + +可以将密钥理解为安全登录凭据: + +- **服务密钥**:您的贡献者身份——用于运行CLI命令 +- **指标发布者密钥**:您设备用于提交遥测数据的身份 + +两者都是加密密钥对(您共享的公钥,您保密的私钥)。 + +```mermaid +flowchart LR + subgraph "您的密钥" + SK[服务密钥
~/.config/solana/id.json] + MK[指标发布者密钥
~/.config/doublezero/metrics-publisher.json] + end + + SK -->|用于| CLI[CLI命令
doublezero device create
doublezero link create] + MK -->|用于| TEL[Telemetry Agent
链上提交指标] +``` + +### 步骤2.1:生成服务密钥 + +这是您与DoubleZero交互的主要身份。 + +```bash +doublezero keygen +``` + +这将在默认位置创建一个密钥对。输出显示您的**公钥**——这是您将与DZF共享的内容。 + +### 步骤2.2:生成指标发布者密钥 + +此密钥由Telemetry Agent用于签署指标提交。 + +```bash +doublezero keygen -o ~/.config/doublezero/metrics-publisher.json +``` + +### 步骤2.3:向DZF提交密钥 + +联系DoubleZero基金会或Malbec Labs并提供: + +1. 您的**服务密钥公钥** +2. 您的**GitHub用户名**(用于仓库访问) + +他们将: + +- 在链上创建您的**贡献者账户** +- 授予对私有**贡献者仓库**的访问权限 + +### 步骤2.4:验证您的账户 + +确认后,验证您的贡献者账户是否存在: + +```bash +doublezero contributor list +``` + +您应该在列表中看到您的贡献者代码。 + +### 步骤2.5:访问贡献者仓库 + +[malbeclabs/contributors](https://github.com/malbeclabs/contributors) 仓库包含: + +- 基础设备配置 +- TCAM配置文件 +- ACL配置 +- 额外的安装说明 + +请按照其中的说明进行设备特定配置。 + +--- + +## 阶段3:设备配置 + +现在您将在区块链上注册物理设备并配置其接口。 + +### 了解设备类型 + +```mermaid +flowchart TB + subgraph "边缘设备" + E[边缘DZD] + EU[用户连接到此处] + EU --> E + E <-->|DZX链路| ED[其他DZD] + end + + subgraph "传输设备" + T[传输DZD] + T <-->|WAN链路| T2[另一个DZD] + T <-->|DZX链路| TD[其他DZD] + end + + subgraph "混合设备" + H[混合DZD] + HU[用户连接到此处] + HU --> H + H <-->|WAN链路| H2[另一个DZD] + H <-->|DZX链路| HD[其他DZD] + end +``` + +| 类型 | 功能 | 使用时机 | +|------|------|---------| +| **边缘** | 仅接受用户连接 | 单一位置,仅面向用户 | +| **传输** | 在设备之间传输流量 | 骨干连接,无用户 | +| **混合** | 同时支持用户连接和骨干 | 最常见——功能全面 | + +### 步骤3.1:查找您的位置和交换中心 + +在创建设备之前,查找您的数据中心位置和最近交换中心的代码: + +```bash +# 列出可用位置(数据中心) +doublezero location list + +# 列出可用交换中心(互连点) +doublezero exchange list +``` + +### 步骤3.2:在链上创建您的设备 + +在区块链上注册您的设备: + +```bash +doublezero device create \ + --code \ + --contributor \ + --device-type hybrid \ + --location \ + --exchange \ + --public-ip \ + --dz-prefixes +``` + +**示例:** + +```bash +doublezero device create \ + --code nyc-dz001 \ + --contributor acme \ + --device-type hybrid \ + --location EQX-NY5 \ + --exchange nyc \ + --public-ip "203.0.113.10" \ + --dz-prefixes "198.51.100.0/28" +``` + +**预期输出:** + +``` +Signature: 4vKz8H...truncated...7xPq2 +``` + +验证您的设备是否已创建: + +```bash +doublezero device list | grep nyc-dz001 +``` + +**参数说明:** + +| 参数 | 含义 | +|------|------| +| `--code` | 您设备的唯一名称(例如,`nyc-dz001`) | +| `--contributor` | 您的贡献者代码(由DZF提供) | +| `--device-type` | `hybrid`、`transit`或`edge` | +| `--location` | 来自`location list`的数据中心代码 | +| `--exchange` | 来自`exchange list`的最近交换中心代码 | +| `--public-ip` | 用户通过互联网连接到您设备的公共IP | +| `--dz-prefixes` | 分配给用户的IP地址块 | + +### 步骤3.3:创建必需的环回接口 + +每个设备需要两个环回接口用于内部路由: + +```bash +# VPNv4环回 +doublezero device interface create Loopback255 --loopback-type vpnv4 + +# IPv4环回 +doublezero device interface create Loopback256 --loopback-type ipv4 +``` + +**预期输出(每个命令):** + +``` +Signature: 3mNx9K...truncated...8wRt5 +``` + +### 步骤3.4:创建物理接口 + +注册您将使用的物理端口: + +```bash +# 基础接口 +doublezero device interface create Ethernet1/1 +``` + +**预期输出:** + +``` +Signature: 7pQw2R...truncated...4xKm9 +``` + +### 步骤3.5:创建CYOA接口(用于边缘/混合设备) + +如果您的设备接受用户连接,您需要一个CYOA(Choose Your Own Adventure)接口。这告诉系统用户如何连接到您。 + +**CYOA类型说明:** + +| 类型 | 通俗解释 | 使用时机 | +|------|---------|---------| +| `gre-over-dia` | 用户通过普通互联网连接 | 最常见——用户通过DIA连接到您的DZD | +| `gre-over-private-peering` | 用户通过私有链路连接 | 用户与您的网络有直接连接 | +| `gre-over-public-peering` | 用户通过IX连接 | 用户在互联网交换中心与您对等 | +| `gre-over-fabric` | 用户在同一本地网络 | 用户在同一数据中心 | +| `gre-over-cable` | 直接电缆连接到用户 | 单个专用用户 | + +**示例——标准互联网用户:** + +```bash +doublezero device interface create Ethernet1/2 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --bandwidth 10000 \ + --cir 1000 \ + --user-tunnel-endpoint \ + --wait +``` + +**预期输出:** + +``` +Signature: 2wLp8N...truncated...5vHt3 +``` + +**参数说明:** + +| 参数 | 含义 | +|------|------| +| `--interface-cyoa` | 用户如何连接(参见上表) | +| `--interface-dia` | 如果这是面向互联网的端口,则为`dia` | +| `--bandwidth` | 端口速度(Mbps),10000 = 10Gbps | +| `--cir` | 承诺速率(Mbps),保证带宽 | +| `--user-tunnel-endpoint` | 此端口接受用户隧道 | + +### 步骤3.6:验证您的设备 + +```bash +doublezero device list +``` + +**示例输出:** + +``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | health | mgmt_vrf | owner + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +您的设备应显示状态`activated`。 + +--- + +## 阶段4:链路建立与代理安装 + +链路将您的设备连接到DoubleZero网络的其余部分。 + +### 了解链路 + +```mermaid +flowchart LR + subgraph "您的网络" + D1[您的DZD 1
NYC] + D2[您的DZD 2
LAX] + end + + subgraph "其他贡献者" + O1[他们的DZD
NYC] + end + + D1 ---|WAN链路
同一贡献者| D2 + D1 ---|DZX链路
不同贡献者| O1 +``` + +| 链路类型 | 连接对象 | 接受方式 | +|---------|---------|---------| +| **WAN链路** | 您的两个设备 | 自动(您拥有两端) | +| **DZX链路** | 您的设备与另一个贡献者 | 需要对方接受 | + +### 步骤4.1:创建WAN链路(如果您有多个设备) + +WAN链路连接您自己的设备: + +```bash +doublezero link create wan \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --side-z-interface \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 20 \ + --jitter-ms 1 +``` + +**示例:** + +```bash +doublezero link create wan \ + --code nyc-lax-wan01 \ + --contributor acme \ + --side-a nyc-dz001 \ + --side-a-interface Ethernet3/1 \ + --side-z lax-dz001 \ + --side-z-interface Ethernet3/1 \ + --bandwidth 10000 \ + --mtu 9000 \ + --delay-ms 65 \ + --jitter-ms 1 +``` + +**预期输出:** + +``` +Signature: 5tNm7K...truncated...9pRw2 +``` + +### 步骤4.2:创建DZX链路 + +DZX链路将您的设备直接连接到另一个贡献者的DZD: + +```bash +doublezero link create dzx \ + --code \ + --contributor \ + --side-a \ + --side-a-interface \ + --side-z \ + --bandwidth \ + --mtu \ + --delay-ms \ + --jitter-ms +``` + +**预期输出:** + +``` +Signature: 8mKp3W...truncated...2nRx7 +``` + +创建DZX链路后,另一个贡献者必须接受它: + +```bash +# 另一个贡献者运行此命令 +doublezero link accept \ + --code \ + --side-z-interface +``` + +**预期输出(接受方贡献者):** + +``` +Signature: 6vQt9L...truncated...3wPm4 +``` + +### 步骤4.3:验证链路 + +```bash +doublezero link list +``` + +**示例输出:** + +``` + account | code | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net | status | health | owner + 8vkYpXaBW8RuknJq... | nyc-dz001:lax-dz001 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +一旦两端都配置完成,链路应显示状态`activated`。 + +--- + +### 代理安装 + +两个软件代理在您的DZD上运行: + +```mermaid +flowchart TB + subgraph "您的DZD" + CA[Config Agent] + TA[Telemetry Agent] + HW[交换机硬件/软件] + end + + CA -->|轮询配置| CTRL[控制器服务] + CA -->|应用配置| HW + + HW -->|指标| TA + TA -->|链上提交| BC[DoubleZero账本] +``` + +| 代理 | 功能 | +|------|------| +| **Config Agent** | 从控制器拉取配置,应用到您的交换机 | +| **Telemetry Agent** | 测量到其他设备的延迟/丢包,链上报告指标 | + +### 步骤4.4:安装Config Agent + +#### 在交换机上启用API + +添加到EOS配置: + +``` +management api eos-sdk-rpc + transport grpc eapilocal + localhost loopback vrf default + service all + no disabled +``` + +!!! note "VRF注意事项" + 如果您的管理VRF名称不同(例如`management`),请将`default`替换为您的管理VRF名称。 + +#### 下载并安装代理 + +```bash +# 在交换机上进入bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget AGENT_DOWNLOAD_URL +# exit +$ exit + +# 安装为EOS扩展 +switch# copy flash:AGENT_FILENAME extension: +switch# extension AGENT_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### 验证扩展 + +```bash +switch# show extensions +``` + +状态应为"A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +AGENT_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### 配置并启动代理 + +添加到EOS配置: + +``` +daemon doublezero-agent + exec /usr/local/bin/doublezero-agent -pubkey + no shut +``` + +!!! note "VRF注意事项" + 如果您的管理VRF不是`default`(即命名空间不是`ns-default`),请在exec命令前加上`exec /sbin/ip netns exec ns-`。例如,如果您的VRF是`management`: + ``` + daemon doublezero-agent + exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey + no shut + ``` + +从`doublezero device list`获取您的设备公钥(`account`列)。 + +#### 验证是否正在运行 + +```bash +switch# show agent doublezero-agent logs +``` + +您应该看到"Starting doublezero-agent"以及成功的控制器连接。 + +### 步骤4.5:安装Telemetry Agent + +#### 将指标发布者密钥复制到设备 + +```bash +scp ~/.config/doublezero/metrics-publisher.json :/mnt/flash/metrics-publisher-keypair.json +``` + +#### 在链上注册指标发布者 + +```bash +doublezero device update \ + --pubkey \ + --metrics-publisher +``` + +从您的metrics-publisher.json文件获取公钥。 + +#### 下载并安装代理 + +```bash +switch# bash +$ sudo bash +# cd /mnt/flash +# wget TELEMETRY_DOWNLOAD_URL +# exit +$ exit + +# 安装为EOS扩展 +switch# copy flash:TELEMETRY_FILENAME extension: +switch# extension TELEMETRY_FILENAME +switch# copy installed-extensions boot-extensions +``` + +#### 验证扩展 + +```bash +switch# show extensions +``` + +状态应为"A, I, B": + +``` +Name Version/Release Status Extension +------------------------------------------- ------------------- ---------- --------- +TELEMETRY_FILENAME MAINNET_CLIENT_VERSION/1 A, I, B 1 + +A: available | NA: not available | I: installed | F: forced | B: install at boot +``` + +#### 配置并启动代理 + +添加到EOS配置: + +``` +daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut +``` + +!!! note "VRF注意事项" + 如果您的管理VRF不是`default`(即命名空间不是`ns-default`),请在exec命令中添加`--management-namespace ns-`。例如,如果您的VRF是`management`: + ``` + daemon doublezero-telemetry + exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json + no shut + ``` + +#### 验证是否正在运行 + +```bash +switch# show agent doublezero-telemetry logs +``` + +您应该看到"Starting telemetry collector"和"Starting submission loop"。 + +--- + +## 阶段5:链路磨合 + +!!! warning "所有新链路在承载流量前必须完成磨合" + 新链路必须**至少排水24小时**,然后才能激活用于生产流量。此磨合要求在[RFC12:网络配置](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md)中定义,规定链路就绪前需要约200,000个DZ账本槽位(约20小时)的干净指标。 + +在代理安装并运行后,在[metrics.doublezero.xyz](https://metrics.doublezero.xyz)上监控您的链路至少连续24小时: + +- **"DoubleZero Device-Link Latencies"**仪表板——验证链路上随时间**零丢包** +- **"DoubleZero Network Metrics"**仪表板——验证链路上**零错误** + +只有当磨合期显示干净的链路(零丢包和零错误)时,才能解除排水状态。 + +--- + +## 阶段6:验证与激活 + +通过此清单确认一切正常工作。 + +!!! warning "您的设备初始锁定(`max_users = 0`)" + 创建设备时,`max_users`默认设置为**0**。这意味着还没有用户可以连接到它。这是有意为之——您必须在接受用户流量之前验证一切正常。 + + **在将`max_users`设置为0以上之前,您必须:** + + 1. 确认所有链路已在[metrics.doublezero.xyz](https://metrics.doublezero.xyz)上完成**24小时磨合**,零丢包/错误 + 2. **与DZ/Malbec Labs协调**进行连接测试: + - 测试用户能否连接到您的设备? + - 用户是否通过DZ网络接收路由? + - 用户是否能端到端通过DZ网络路由流量? + 3. 仅在DZ/ML确认测试通过后,将max_users设置为96: + + ```bash + doublezero device update --pubkey --max-users 96 + ``` + +### 设备检查 + +```bash +# 您的设备应显示状态"activated" +doublezero device list | grep +``` + +**预期输出:** + +``` + 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54... +``` + +```bash +# 您的接口应被列出 +doublezero device interface list | grep +``` + +**预期输出:** + +``` + nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32 | 56 | false | activated + nyc-dz001 | Loopback256 | loopback | ipv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0 | false | activated + nyc-dz001 | Ethernet1/1 | physical | none | none | none | 0 | 0 | 1500 | static | 0 | | 0 | false | activated +``` + +### 链路检查 + +```bash +# 链路应显示状态"activated" +doublezero link list | grep +``` + +**预期输出:** + +``` + 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54... +``` + +### 代理检查 + +在交换机上: + +```bash +# Config Agent应显示成功的配置拉取 +switch# show agent doublezero-agent logs | tail -20 + +# Telemetry Agent应显示成功的提交 +switch# show agent doublezero-telemetry logs | tail -20 +``` + +### 最终验证图 + +```mermaid +flowchart TB + subgraph "验证清单" + D[设备状态:已激活?] + I[接口:已注册?] + L[链路:已激活?] + CA[Config Agent:正在拉取配置?] + TA[Telemetry Agent:正在提交指标?] + end + + D --> PASS + I --> PASS + L --> PASS + CA --> PASS + TA --> PASS + + PASS[所有检查通过] --> NOTIFY[通知DZF/Malbec Labs
您在技术上已准备就绪!] +``` + +--- + +## 故障排除 + +### 设备创建失败 + +- 验证您的服务密钥已获授权(`doublezero contributor list`) +- 检查位置和交换中心代码是否有效 +- 确保DZ前缀是有效的公共IP范围 + +### 链路卡在"requested"状态 + +- DZX链路需要另一个贡献者的接受 +- 联系他们运行`doublezero link accept` + +### Config Agent无法连接 + +- 验证管理网络有互联网访问 +- 检查VRF配置是否与您的设置匹配 +- 确保设备公钥正确 + +### Telemetry Agent未提交 + +- 验证指标发布者密钥已在链上注册 +- 检查密钥文件是否存在于交换机上 +- 确保设备账户公钥正确 + +--- + +## 后续步骤 + +- 查阅[运营指南](contribute-operations.md)了解代理升级和链路管理 +- 在[词汇表](glossary.md)中查看术语定义 +- 如遇问题,请联系DZF/Malbec Labs diff --git a/docs/contribute.es.md b/docs/contribute.es.md new file mode 100644 index 0000000..ad903d5 --- /dev/null +++ b/docs/contribute.es.md @@ -0,0 +1,232 @@ +# Requisitos y Arquitectura para Contribuidores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## Resumen + +Cualquier persona que desee monetizar sus cables de fibra óptica y hardware de red subutilizados puede contribuir a la red DoubleZero. Los contribuidores de red deben proporcionar ancho de banda dedicado entre dos puntos, operar dispositivos compatibles con DoubleZero (DZDs) en cada extremo, y una conexión a internet pública en cada extremo. Los contribuidores de red también deben ejecutar software DoubleZero en cada DZD para proporcionar servicios como multicast, búsqueda de usuarios y filtrado de borde. + +El contrato inteligente de DoubleZero es la piedra angular para garantizar que la red mantenga enlaces de alta calidad que puedan medirse e integrarse en la topología, permitiendo a nuestros controladores de red desarrollar la ruta más eficiente de extremo a extremo entre nuestros diferentes usuarios y puntos finales. Tras la ejecución del contrato inteligente y el despliegue del equipo de red y el ancho de banda, una entidad se clasifica como contribuidor de red. Consulte [Economía de DoubleZero](https://economics.doublezero.xyz/overview) para comprender mejor la economía detrás de participar en DoubleZero como contribuidor de red. + +--- + +## Requisitos para ser Contribuidor de Red DoubleZero + +- Ancho de banda dedicado que pueda proporcionar conectividad IPv4 y un MTU de 2048 bytes entre dos centros de datos +- Hardware de Dispositivo DoubleZero (DZD) compatible con el protocolo DoubleZero +- Conectividad a internet y a otros contribuidores de red DoubleZero +- Instalación del software DoubleZero en el DZD + +## Guía de Inicio Rápido + +Como contribuidor de red, la forma más sencilla de comenzar en DoubleZero es identificando capacidad en su red que pueda dedicarse a DoubleZero. Una vez identificados, los DZDs deben desplegarse, facilitando la red superpuesta DoubleZero que solo requiere alcanzabilidad IPv4 y un MTU mínimo de 2048 bytes como dependencias de la red del contribuidor. + +La Figura 1 destaca el modelo más simple para contribuir con ancho de banda y servicios de envío y procesamiento de paquetes. Se despliega un DZD en cada centro de datos, interactuando con la red interna del contribuidor de red para proporcionar conectividad WAN de DoubleZero. Esto se complementa con internet local, típicamente una solución de Acceso Directo a Internet (DIA), que se usa como rampas de acceso para los usuarios de DoubleZero. Si bien se espera que DIA sea la opción preferida para facilitar el acceso a los usuarios de DoubleZero, son posibles numerosos modelos de conectividad, por ejemplo, cableado físico a servidores, extensión de fabric de red, etc. Nos referimos a estas opciones como Elige Tu Propia Aventura (CYOA), proporcionando al contribuidor flexibilidad para conectar usuarios locales o remotos de una manera que mejor se adapte a sus políticas de red internas. + +Como con cualquier red, la alcanzabilidad es una parte fundamental de la arquitectura, ya que los contribuidores de red no pueden vivir en aislamiento. Como tal, el DZD *debe* tener un enlace a un Exchange DoubleZero (DZX) para crear una red contigua entre los participantes. + +
+ ![Image title](images/figure1.png){ width="800" } +
Figura 1: Contribución de Ancho de Banda de Red DoubleZero Entre 2 Centros de Datos - Contribuidor Único
+
+ +### Ejemplos de Contribuciones + +Las formas en que un contribuidor de red puede hacer crecer sus contribuciones a DoubleZero son muchas, incluyendo: + +- Mejorar las características de rendimiento de sus contribuciones existentes: aumentar el ancho de banda, reducir la latencia +- Agregar múltiples enlaces entre los mismos centros de datos +- Agregar un nuevo enlace desde un centro de datos existente a un nuevo centro de datos +- Agregar un nuevo enlace independiente entre dos nuevos centros de datos + +#### Ejemplo 1: Contribuidor Único, 3 Centros de Datos, Dos Enlaces +
+ ![Image title](images/figure2.png){ width="800" } +
Figura 2: Contribución de Ancho de Banda de Red DoubleZero Entre 3 Centros de Datos - Contribuidor Único
+
+ +Un solo DZD puede soportar múltiples enlaces contribuidos a DoubleZero. La Figura 2 ilustra una topología potencial si un solo centro de datos, denominado 1, termina el ancho de banda hacia dos centros de datos remotos diferentes, 2 y 3. En este escenario, cada centro de datos contiene solo 1 DZD. Todos los DZDs utilizan DIA para las rampas de acceso de usuarios como su interfaz CYOA. + +#### Ejemplo 2: Contribuidor Único, 3 Centros de Datos, Tres Enlaces + +La Figura 3 describe la topología de DoubleZero cuando un único contribuidor despliega tres enlaces en una topología triangular entre 3 centros de datos. En un escenario similar al ejemplo 1, se despliega un único DZD en los centros de datos 1, 2 y 3, cada uno soportando 2 enlaces de red independientes. La topología resultante es un triángulo o anillo entre los centros de datos. + +
+ ![Image title](images/figure3.png){ width="800" } +
Figura 3: Contribución de Ancho de Banda de Red DoubleZero Entre 3 Centros de Datos - Contribuidor Único
+
+ +### Exchange DoubleZero + +La creación de una red contigua es un elemento fundamental de la arquitectura DoubleZero. Los contribuidores se interconectan a través de un Exchange DoubleZero (DZX) dentro de un área metropolitana, que es una ciudad como Nueva York (NYC), Londres (LON) o Tokio (TYO). Un DZX es un fabric de red similar a un Exchange de Internet, que permite el peering y el intercambio de rutas. + +En la figura 4, el contribuidor de red 1 opera en los centros de datos 1, 2 y 3, mientras que el contribuidor de red 2 opera en los centros de datos 2, 4 y 5. Al interconectarse en el centro de datos 2, el alcance de la red DoubleZero aumenta a 5 centros de datos contiguos. + +
+ ![Image title](images/figure4.png){ width="1000" } +
Figura 4: Contribución de Ancho de Banda de Red DoubleZero Entre 2 Contribuidores de Ancho de Banda de Red
+
+ +### Opciones de Contribución de Ancho de Banda + +DoubleZero requiere que un contribuidor de red ofrezca conectividad integrada mediante un perfil garantizado de ancho de banda, latencia y jitter entre DZDs en dos centros de datos terminales expresado a través de un contrato inteligente. DoubleZero no exige cómo un contribuidor de red implementa su contribución; sin embargo, en las siguientes secciones proporcionamos opciones indicativas para su uso a su sola discreción. + +Las áreas importantes a considerar para un contribuidor de red podrían ser: + +- Capacidad de garantizar el rendimiento de la red del servicio DoubleZero: ancho de banda, latencia y jitter +- Segregación de sus servicios de red interna existentes +- Conflictos de direccionamiento IPv4, específicamente con el espacio de direcciones del underlay del túnel +- Tiempo de actividad y disponibilidad +- Consideraciones de CAPEX y OPEX + +#### Ancho de Banda de Capa 1 +
+ ![Image title](images/figure5.png){ width="800" } +
Figura 5: Servicios Ópticos de Capa 1
+
+ +El ancho de banda de Capa 1, descrito más formalmente como servicios de longitud de onda, puede ver capacidad dedicada aprovisionada en una infraestructura óptica existente, como DWDM, CWDM o mediante multiplexores ópticos (MUX). En la figura 5, los DZDs utilizan una óptica de color que se conecta a un MUX L1, que intercala la longitud de onda del DZD en una fibra oscura existente. + +Esta solución tiene numerosos beneficios para los contribuidores de red que ya operan una red troncal existente. Los cambios operativos iterativos, así como los requisitos adicionales de CAPEX y OPEX, son modestos. Esta opción es particularmente robusta para ofrecer segregación de los servicios de red del contribuidor. + +#### Ancho de Banda de Red Conmutada por Paquetes + +Las redes conmutadas por paquetes pueden considerarse una red empresarial típica, ejecutando protocolos estándar de enrutamiento y conmutación para soportar aplicaciones de negocios. Hay numerosas tecnologías de red que logran conectividad, por ejemplo, extensiones de capa 2 (L2) usando etiquetas VLAN. + +##### Extensión L2 +
+ ![Image title](images/figure6.png){ width="800" } +
Figura 6: Redes Conmutadas por Paquetes - Extensión L2
+
+ +Una extensión L2 como se muestra en la Figura 6 puede facilitarse mediante el etiquetado de VLAN. El puerto de un DZD puede conectarse al switch de red interna de un contribuidor, con el puerto del switch configurado como puerto de acceso en, por ejemplo, VLAN 10. Mediante el etiquetado 802.1q, esta VLAN puede llevarse a través de múltiples saltos de switch en la red del contribuidor, terminando en el switch que interactúa con el DZD remoto. + +Esta solución se beneficia de ser ampliamente compatible y relativamente fácil de implementar, al tiempo que crea segmentación entre DoubleZero y los servicios de capa 3 internos. El ancho de banda puede controlarse según la velocidad de interfaz del switch o enrutador interno del contribuidor. Se debe prestar especial atención al rendimiento a través de la red L2 interna compartida mediante tecnologías como Calidad de Servicio (QoS) u otras políticas de gestión de tráfico. Sin embargo, las inversiones adicionales de CAPEX y OPEX deberían ser modestas si hay capacidad disponible dentro de la red troncal del contribuidor. + +#### Ancho de Banda Dedicado de Terceros +
+ ![Image title](images/figure7.png){ width="800" } +
Figura 7: Ancho de Banda Dedicado de Terceros
+
+ +Si bien reutilizar la capacidad disponible será atractivo para muchos contribuidores de red, también se puede dedicar ancho de banda recién adquirido a DoubleZero. En tal escenario, el DZD se conectaría directamente al operador de terceros sin ningún dispositivo interno del contribuidor en línea (figura 7). + +Esta opción es atractiva ya que garantiza ancho de banda dedicado para DoubleZero, es operativamente simple y asegura una segmentación completa de cualquier otro servicio de red. Esta opción probablemente tendrá el mayor aumento de OPEX y requiere nuevos contratos de servicio con operadores de terceros. + +--- + +## Requisitos de Hardware + +### Contribución de Ancho de Banda de 100 Gbps + +Tenga en cuenta que las cantidades a continuación reflejan el equipo necesario en dos centros de datos, es decir, el hardware total necesario para desplegar 1 cable de fibra óptica para la contribución de ancho de banda. + +??? warning "*Todas las FPGAs están sujetas a pruebas finales. Las contribuciones de 10G pueden ser compatibles usando switches Arista 7130LBR con FPGAs Virtex® UltraScale+™ integradas duales (si tiene alguna pregunta, la Fundación DoubleZero / Malbec Labs están felices de proporcionar más información)." + +#### Requisitos de Función y Puerto + +| Función | Velocidad de Puerto | Requisito DZ | CANT | Nota | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Ancho de Banda Privado | 100G | Sí | 1 | | +| Acceso Directo a Internet (DIA) | 10G | Sí | 2 | | +| DoubleZero eXchange (DZX) | 100G | Sí* | 1 | Debe ser compatible cuando más de 3 proveedores operan en la misma área metropolitana; antes de esto, se pueden usar conexiones cruzadas u otros acuerdos de peering para interconectarse con otros proveedores. | +| Gestión | | No | 1 | Determinado por las propias políticas de gestión interna del contribuidor. | +| Consola | | No | 1 | Determinado por las propias políticas de gestión interna del contribuidor. | + +#### Hardware de Red DZD + +| Fabricante | Modelo | Número de Parte | Requisito DZ | CANT | Nota | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | Sí | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Sí | 2 | Pueden ser posibles alternativas si los tiempos de entrega son desafiantes. | + +--- + +#### Óptica - 100G + +| Fabricante | Modelo | Número de Parte | Requisito DZ | CANT | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | No | 16 | La elección de cableado y óptica está disponible a discreción del contribuidor. Se requieren 100G para conectar FPGAs. | + +--- + +#### Óptica - 10G + +| Fabricante | Modelo | Número de Parte | Requisito DZ | CANT | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | No | 2 | La elección de cableado y óptica está disponible a discreción del contribuidor. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | No | 2 | La elección de cableado y óptica está disponible a discreción del contribuidor. | + +--- + +#### Direccionamiento IP + +| Direccionamiento IP | Tamaño Mínimo de Subred | Requisito DZ | Nota | +|--------------|-------------------|----------------|----------------------------------------------------------| +| IPv4 Pública | /29 | Sí (para DZDs de borde/híbridos) | Debe ser enrutable a través de DIA. Podemos eliminar la necesidad de esto con el tiempo. | + +Asegúrese de que el pool /29 completo esté disponible para el protocolo DZ. Cualquier requisito de direccionamiento punto a punto, por ejemplo, en interfaces DIA, debe gestionarse mediante un pool de direcciones diferente. + +### Contribución de Ancho de Banda de 10 Gbps + +Tenga en cuenta que las cantidades reflejan el equipo de dos centros de datos, es decir, el hardware total necesario para desplegar 1 contribución de ancho de banda. + +#### Requisitos de Función y Puerto + +| Función | Velocidad de Puerto | Requisito DZ | CANT | Nota | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Ancho de Banda Privado | 10G | Sí | 1 | | +| Acceso Directo a Internet (DIA) | 10G | Sí | 2 | | +| DoubleZero eXchange (DZX) | 100G | Sí* | 1 | Debe ser compatible cuando más de 3 proveedores operan en la misma área metropolitana; antes de esto, se pueden usar conexiones cruzadas u otros acuerdos de peering para interconectarse con otros proveedores. | +| Gestión | | No | 1 | Determinado por las propias políticas de gestión interna del contribuidor. | +| Consola | | No | 1 | Determinado por las propias políticas de gestión interna del contribuidor. | + +--- + +#### Hardware + +| Fabricante | Modelo | Número de Parte | Requisito DZ | CANT | Nota | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | Sí | 4 | | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Sí | 2 | Pueden ser posibles alternativas si los tiempos de entrega son desafiantes. | + +--- + +#### Óptica - 100G + +| Fabricante | Modelo | Número de Parte | Requisito DZ | CANT | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | No | 14 | La elección de cableado y óptica está disponible a discreción del contribuidor. Se requieren 100G para conectar FPGAs. | + +--- + +#### Óptica - 10G + +| Fabricante | Modelo | Número de Parte | Requisito DZ | CANT | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | No | 4 | La elección de cableado y óptica está disponible a discreción del contribuidor. | + Finisar | DynamiX QSA™ | MAM1Q00A-QSA | No | 4 | La elección de cableado y óptica está disponible a discreción del contribuidor. | +--- + +#### Direccionamiento IP + +| Direccionamiento IP | Tamaño Mínimo de Subred | Requisito DZ | Nota | +|--------------|-------------------|----------------|----------------------------------------------------------| +| IPv4 Pública | /29 | Sí (para DZDs de borde/híbridos) | Debe ser enrutable a través de DIA. Podemos eliminar la necesidad de esto con el tiempo. | + +Asegúrese de que el pool /29 completo esté disponible para el protocolo DZ. Cualquier requisito de direccionamiento punto a punto, por ejemplo, en interfaces DIA, debe gestionarse mediante un pool de direcciones diferente. + +### Requisitos del Centro de Datos + +#### Requisitos de Rack y Energía + +| Requisito | Especificación | +|-------------|--------------| +| Espacio en Rack | 4U | +| Energía | 4KW (recomendado) | + +--- + +## Próximos Pasos + +¿Listo para aprovisionar su primer DZD? Continúe a la [Guía de Aprovisionamiento de Dispositivos](contribute-provisioning.md). diff --git a/docs/contribute.fr.md b/docs/contribute.fr.md new file mode 100644 index 0000000..49861fa --- /dev/null +++ b/docs/contribute.fr.md @@ -0,0 +1,232 @@ +# Exigences et Architecture des Contributeurs +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## Résumé + +Toute personne souhaitant monétiser ses câbles à fibre optique et son matériel réseau sous-utilisés peut contribuer au réseau DoubleZero. Les contributeurs réseau doivent fournir une bande passante dédiée entre deux points, exploiter des dispositifs compatibles DoubleZero (DZD) à chaque extrémité, et une connexion à l'internet public à chaque extrémité. Les contributeurs réseau doivent également exécuter des logiciels DoubleZero sur chaque DZD pour fournir des services comme le multicast, la recherche d'utilisateurs, et le filtrage en périphérie. + +Le contrat intelligent DoubleZero est la pierre angulaire pour garantir que le réseau maintient des liaisons de haute qualité qui peuvent être mesurées et intégrées dans la topologie, permettant à nos contrôleurs de réseau de développer le chemin le plus efficace de bout en bout entre nos différents utilisateurs et points d'extrémité. Lors de l'exécution du contrat intelligent et du déploiement du matériel réseau et de la bande passante, une entité est classifiée comme contributeur réseau. Voir [DoubleZero Economics](https://economics.doublezero.xyz/overview) pour mieux comprendre les aspects économiques de la participation à DoubleZero en tant que contributeur réseau. + +--- + +## Exigences pour être un Contributeur Réseau DoubleZero + +- Bande passante dédiée pouvant fournir une connectivité IPv4 et un MTU de 2048 octets entre deux centres de données +- Matériel DoubleZero Device (DZD) compatible avec le protocole DoubleZero +- Connectivité à internet et aux autres contributeurs réseau DoubleZero +- Installation du logiciel DoubleZero sur le DZD + +## Guide de Démarrage Rapide + +En tant que contributeur réseau, la façon la plus simple de commencer avec DoubleZero est d'identifier la capacité dans votre réseau qui peut être dédiée à DoubleZero. Une fois identifiés, des DZD doivent être déployés, facilitant le réseau superposé DoubleZero qui ne nécessite que la connectivité IPv4 et un MTU minimum de 2048 octets comme dépendances du réseau du contributeur. + +La figure 1 met en évidence le modèle le plus simple pour contribuer des services de bande passante et d'envoi et de traitement de paquets. Un DZD est déployé dans chaque centre de données, s'interfaçant avec le réseau interne du contributeur réseau pour fournir une connectivité WAN DoubleZero. Cela est complété par un internet local, généralement une solution d'Accès Direct à Internet (DIA), qui est utilisé comme points d'entrée pour les utilisateurs DoubleZero. Bien qu'il soit prévu que DIA sera l'option préférée pour faciliter l'accès aux utilisateurs de DoubleZero, de nombreux modèles de connectivité sont possibles, par exemple le câblage physique vers des serveurs, l'extension de fabric réseau, etc. Nous appelons ces options Choose Your Own Adventure (CYOA), offrant au contributeur la flexibilité de connecter des utilisateurs locaux ou distants d'une manière qui convient le mieux à leurs politiques réseau internes. + +Comme pour tout réseau, la connectivité est une partie fondamentale de l'architecture, car les contributeurs réseau ne peuvent pas vivre en isolement. En tant que tel, le DZD *doit* avoir un lien vers un DoubleZero Exchange (DZX) pour créer un réseau contigu entre les participants. + +
+ ![Image title](images/figure1.png){ width="800" } +
Figure 1 : Contribution de Bande Passante Réseau DoubleZero Entre 2 Centres de Données - Contributeur Unique
+
+ +### Exemples de Contributions + +Les façons dont un contributeur réseau peut développer ses contributions DoubleZero sont nombreuses, notamment : + +- Améliorer les caractéristiques de performance de leurs contributions existantes : augmenter la bande passante, réduire la latence +- Ajouter plusieurs liens entre les mêmes centres de données +- Ajouter un nouveau lien d'un centre de données existant vers un nouveau centre de données +- Ajouter un nouveau lien indépendant entre deux nouveaux centres de données + +#### Exemple 1 : Contributeur Unique, 3 Centres de Données, Deux Liens +
+ ![Image title](images/figure2.png){ width="800" } +
Figure 2 : Contribution de Bande Passante Réseau DoubleZero Entre 3 Centres de Données - Contributeur Unique
+
+ +Un seul DZD peut prendre en charge plusieurs liens contribués à DoubleZero. La figure 2 illustre une topologie potentielle si un seul centre de données, désigné comme 1, termine la bande passante vers deux centres de données distants différents 2 et 3. Dans ce scénario, chaque centre de données ne contient qu'un seul DZD. Tous les DZD utilisent DIA pour les points d'entrée des utilisateurs comme interface CYOA. + +#### Exemple 2 : Contributeur Unique, 3 Centres de Données, Trois Liens + +La figure 3 décrit la topologie DoubleZero lorsqu'un seul contributeur déploie trois liens dans une topologie en triangle entre 3 centres de données. Dans un scénario similaire à l'exemple 1, un seul DZD est déployé dans les centres de données 1, 2 et 3, chacun prenant en charge 2 liens réseau indépendants. La topologie résultante est un triangle ou anneau entre les centres de données. + +
+ ![Image title](images/figure3.png){ width="800" } +
Figure 3 : Contribution de Bande Passante Réseau DoubleZero Entre 3 Centres de Données - Contributeur Unique
+
+ +### DoubleZero Exchange + +La création d'un réseau contigu est un élément fondamental de l'architecture DoubleZero. Les contributeurs s'interfacent via un DoubleZero Exchange (DZX) dans une zone métropolitaine, qui est une ville comme New York (NYC), Londres (LON) ou Tokyo (TYO). Un DZX est une fabric réseau similaire à un Internet Exchange, permettant le peering et l'échange de routes. + +Dans la figure 4, le contributeur réseau 1 opère dans les centres de données 1, 2 et 3, tandis que le contributeur réseau 2 opère dans les centres de données 2, 4 et 5. En s'interconnectant dans le centre de données 2, la portée du réseau DoubleZero s'étend à 5 centres de données contigus. + +
+ ![Image title](images/figure4.png){ width="1000" } +
Figure 4 : Contribution de Bande Passante Réseau DoubleZero Entre 2 Contributeurs de Bande Passante Réseau
+
+ +### Options de Contribution de Bande Passante + +DoubleZero exige qu'un contributeur réseau offre une connectivité intégrée via une bande passante garantie, un profil de latence et de gigue entre les DZD de deux centres de données de terminaison, exprimé via un contrat intelligent. DoubleZero ne mandate pas la façon dont un contributeur réseau met en œuvre sa contribution ; cependant, dans les sections suivantes, nous fournissons des options indicatives à leur usage à leur seule discrétion. + +Les domaines importants à considérer pour un contributeur réseau pourraient être : + +- Capacité à garantir les performances réseau du service DoubleZero : bande passante, latence et gigue +- Ségrégation de leurs services réseau internes existants +- Conflits d'adressage IPv4, en particulier avec l'espace d'adresses du tunnel underlay +- Temps de disponibilité et disponibilité +- Considérations CAPEX et OPEX + +#### Bande Passante de Couche 1 +
+ ![Image title](images/figure5.png){ width="800" } +
Figure 5 : Services Optiques de Couche 1
+
+ +La bande passante de couche 1, plus formellement décrite comme services de longueur d'onde, peut voir une capacité dédiée provisionnée sur une infrastructure optique existante, telle que DWDM, CWDM ou via des multiplexeurs optiques (MUX). Dans la figure 5, les DZD utilisent une optique colorée câblée à un MUX L1, qui entrelace la longueur d'onde du DZD sur une fibre noire existante. + +Cette solution présente de nombreux avantages pour les contributeurs réseau qui exploitent déjà un réseau cœur existant. Les changements opérationnels itératifs, ainsi que les exigences supplémentaires en CAPEX et OPEX, sont modestes. Cette option est particulièrement robuste pour offrir la ségrégation des services réseau du contributeur. + +#### Bande Passante Commutée par Paquets + +Les réseaux commutés par paquets peuvent être considérés comme un réseau d'entreprise typique, exécutant des protocoles de routage et de commutation standard prenant en charge des applications commerciales. Il existe de nombreuses technologies réseau qui permettent la connectivité, par exemple, les extensions de couche 2 (L2) utilisant des balises VLAN. + +##### Extension L2 +
+ ![Image title](images/figure6.png){ width="800" } +
Figure 6 : Réseaux Commutés par Paquets - Extension L2
+
+ +Une extension L2 comme illustrée dans la Figure 6 peut être facilitée par le balisage VLAN. Le port d'un DZD peut être câblé au commutateur du réseau interne d'un contributeur, avec le port de commutation configuré en mode accès dans, par exemple, VLAN 10. Via le balisage 802.1q, ce VLAN peut être transporté sur plusieurs sauts de commutation sur le réseau du contributeur, se terminant au commutateur interfaçant avec le DZD distant. + +Cette solution bénéficie d'un large support et d'une mise en œuvre relativement facile tout en créant une segmentation entre DoubleZero et les services de couche 3 internes. La bande passante peut être contrôlée en fonction de la vitesse d'interface du commutateur ou routeur interne du contributeur. Une attention particulière doit être accordée aux performances sur le réseau L2 interne partagé via des technologies telles que la Qualité de Service (QoS) ou d'autres politiques de gestion du trafic. Cependant, les investissements supplémentaires en CAPEX et OPEX devraient être modestes si la capacité existante est disponible dans le réseau cœur du contributeur. + +#### Bande Passante Tierce Dédiée +
+ ![Image title](images/figure7.png){ width="800" } +
Figure 7 : Bande Passante Tierce Dédiée
+
+ +Bien que la réutilisation de la capacité disponible soit attrayante pour de nombreux contributeurs réseau, on peut également dédier une bande passante nouvellement acquise à DoubleZero. Dans un tel scénario, le DZD se connecterait directement au transporteur tiers sans aucun dispositif interne du contributeur en ligne (figure 7). + +Cette option est attrayante car elle garantit une bande passante dédiée pour DoubleZero, est simple opérationnellement et assure une ségrégation complète de tout autre service réseau. Cette option aura probablement la plus forte augmentation d'OPEX et nécessite de nouveaux contrats de service avec des transporteurs tiers. + +--- + +## Exigences Matérielles + +### Contribution de Bande Passante 100Gbps + +Notez que les quantités ci-dessous reflètent le matériel nécessaire dans deux centres de données, c'est-à-dire le matériel total nécessaire pour déployer 1 câble à fibre optique pour la contribution de bande passante. + +??? warning "*Tous les FPGA sont soumis à des tests finaux. Les contributions 10G peuvent être prises en charge à l'aide de commutateurs Arista 7130LBR avec FPGA Virtex® UltraScale+™ double intégré (si vous avez des questions, la DoubleZero Foundation / Malbec Labs sont heureux de fournir plus d'informations)." + +#### Exigences de Fonction et de Port + +| Fonction | Vitesse de Port | Exigence DZ | QTY | Note | +|-----------------------------|-----------------|-------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Bande Passante Privée | 100G | Oui | 1 | | +| Accès Direct à Internet (DIA) | 10G | Oui | 2 | | +| DoubleZero eXchange (DZX) | 100G | Oui* | 1 | Doit être pris en charge une fois que plus de 3 fournisseurs opèrent dans la même zone métropolitaine, avant cela, des interconnexions croisées ou d'autres arrangements de peering peuvent être utilisés pour s'interconnecter avec d'autres fournisseurs. | +| Gestion | | Non | 1 | Déterminé par les politiques de gestion internes du contributeur. | +| Console | | Non | 1 | Déterminé par les politiques de gestion internes du contributeur. | + +#### Matériel Réseau DZD + +| Fabricant | Modèle | Numéro de Pièce | Exigence DZ | QTY | Note | +|-----------|-----------------|----------------------|-------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | Oui | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Oui | 2 | Des alternatives peuvent être possibles si les délais de livraison sont difficiles. | + +--- + +#### Optiques - 100G + +| Fabricant | Modèle | Numéro de Pièce | Exigence DZ | QTY | Note | +|-----------|-------------|----------------|-------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | Non | 16 | Le choix du câblage et de l'optique est à la discrétion du contributeur. 100G requis pour connecter les FPGA. | + +--- + +#### Optiques - 10G + +| Fabricant | Modèle | Numéro de Pièce | Exigence DZ | QTY | Note | +|-----------|-------------|----------------|-------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | Non | 2 | Le choix du câblage et de l'optique est à la discrétion du contributeur. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | Non | 2 | Le choix du câblage et de l'optique est à la discrétion du contributeur. | + +--- + +#### Adressage IP + +| Adressage IP | Taille de Sous-réseau Minimale | Exigence DZ | Note | +|--------------|-------------------------------|-------------|----------------------------------------------------------| +| IPv4 Public | /29 | Oui (pour DZD de périphérie/hybrides) | Doit être routable via DIA. Nous pourrions éliminer ce besoin au fil du temps. | + +Veuillez vous assurer que le pool /29 complet est disponible pour le protocole DZ. Les exigences pour l'adressage point à point, par exemple sur les interfaces DIA, doivent être gérées via un pool d'adresses différent. + +### Contribution de Bande Passante 10Gbps + +Notez que les quantités reflètent le matériel de deux centres de données, c'est-à-dire le matériel total nécessaire pour déployer 1 contribution de bande passante. + +#### Exigences de Fonction et de Port + +| Fonction | Vitesse de Port | Exigence DZ | QTY | Note | +|-----------------------------|-----------------|-------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Bande Passante Privée | 10G | Oui | 1 | | +| Accès Direct à Internet (DIA) | 10G | Oui | 2 | | +| DoubleZero eXchange (DZX) | 100G | Oui* | 1 | Doit être pris en charge une fois que plus de 3 fournisseurs opèrent dans la même zone métropolitaine ; avant cela, des interconnexions croisées ou d'autres arrangements de peering peuvent être utilisés pour s'interconnecter avec d'autres fournisseurs. | +| Gestion | | Non | 1 | Déterminé par les politiques de gestion internes du contributeur. | +| Console | | Non | 1 | Déterminé par les politiques de gestion internes du contributeur. | + +--- + +#### Matériel + +| Fabricant | Modèle | Numéro de Pièce | Exigence DZ | QTY | Note | +|-----------|-----------------|----------------------|-------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | Oui | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Oui | 2 | Des alternatives peuvent être possibles si les délais de livraison sont difficiles. | + +--- + +#### Optiques - 100G + +| Fabricant | Modèle | Numéro de Pièce | Exigence DZ | QTY | Note | +|-----------|-------------|----------------|-------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | Non | 14 | Le choix du câblage et de l'optique est à la discrétion du contributeur. 100G requis pour connecter les FPGA. | + +--- + +#### Optiques - 10G + +| Fabricant | Modèle | Numéro de Pièce | Exigence DZ | QTY | Note | +|-----------|-------------|----------------|-------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | Non | 4 | Le choix du câblage et de l'optique est à la discrétion du contributeur. | + Finisar | DynamiX QSA™ | MAM1Q00A-QSA | Non | 4 | Le choix du câblage et de l'optique est à la discrétion du contributeur. | +--- + +#### Adressage IP + +| Adressage IP | Taille de Sous-réseau Minimale | Exigence DZ | Note | +|--------------|-------------------------------|-------------|----------------------------------------------------------| +| IPv4 Public | /29 | Oui (pour DZD de périphérie/hybrides) | Doit être routable via DIA. Nous pourrions éliminer ce besoin au fil du temps. | + +Veuillez vous assurer que le pool /29 complet est disponible pour le protocole DZ. Les exigences pour l'adressage point à point, par exemple sur les interfaces DIA, doivent être gérées via un pool d'adresses différent. + +### Exigences du Centre de Données + +#### Exigences de Baie et d'Alimentation + +| Exigence | Spécification | +|-------------|--------------| +| Espace Baie | 4U | +| Alimentation | 4KW (recommandé) | + +--- + +## Prochaines Étapes + +Prêt à provisionner votre premier DZD ? Continuez avec le [Guide de Provisionnement des Dispositifs](contribute-provisioning.md). diff --git a/docs/contribute.it.md b/docs/contribute.it.md new file mode 100644 index 0000000..889d6cf --- /dev/null +++ b/docs/contribute.it.md @@ -0,0 +1,233 @@ +# Requisiti e Architettura per i Contributori +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## Sommario + +Chiunque desideri monetizzare i propri cavi in fibra ottica e hardware di rete sottoutilizzati può contribuire alla rete DoubleZero. I contributori di rete devono fornire larghezza di banda dedicata tra due punti, operare dispositivi compatibili con DoubleZero (DZD) ad entrambe le estremità, e una connessione alla rete internet pubblica ad entrambe le estremità. I contributori di rete devono anche eseguire il software DoubleZero su ogni DZD per fornire servizi come multicast, ricerca utenti e filtraggio perimetrale. + +Lo smart contract DoubleZero è il pilastro fondamentale per garantire che la rete mantenga link di alta qualità che possono essere misurati e integrati nella topologia, consentendo ai nostri controller di rete di sviluppare il percorso end-to-end più efficiente tra i diversi utenti e endpoint. A seguito dell'esecuzione dello smart contract e del deployment dell'infrastruttura di rete e della larghezza di banda, un'entità viene classificata come contributore di rete. Consulta [DoubleZero Economics](https://economics.doublezero.xyz/overview) per comprendere ulteriormente l'economia alla base della partecipazione a DoubleZero come contributore di rete. + +--- + +## Requisiti per Diventare un Contributore di Rete DoubleZero + +- Larghezza di banda dedicata in grado di fornire connettività IPv4 e un MTU di 2048 byte tra due data center +- Hardware DoubleZero Device (DZD) compatibile con il protocollo DoubleZero +- Connettività a internet e ad altri contributori della rete DoubleZero +- Installazione del software DoubleZero sul DZD + +## Guida Rapida all'Avvio + +Come contributore di rete, il modo più semplice per iniziare con DoubleZero è identificare la capacità nella propria rete che può essere dedicata a DoubleZero. Una volta identificata, i DZD devono essere distribuiti, facilitando la rete overlay DoubleZero che richiede solo raggiungibilità IPv4 e un MTU minimo di 2048 byte come dipendenze dalla rete del contributore. + +La Figura 1 illustra il modello più semplice per contribuire con larghezza di banda e servizi di invio ed elaborazione dei pacchetti. Un DZD viene distribuito in ogni data center, interfacciandosi con la rete interna del contributore per fornire connettività WAN DoubleZero. Questo è integrato da un accesso internet locale, tipicamente una soluzione Direct Internet Access (DIA), utilizzata come punto di accesso per gli utenti DoubleZero. Mentre ci si aspetta che il DIA sia l'opzione preferita per facilitare l'accesso agli utenti di DoubleZero, sono possibili numerosi modelli di connettività, ad esempio cablaggio fisico ai server, estensione del fabric di rete, ecc. Ci riferiamo a queste opzioni come Choose Your Own Adventure (CYOA), fornendo al contributore la flessibilità di connettere utenti locali o remoti nel modo che meglio si adatta alle proprie politiche di rete interne. + +Come in qualsiasi rete, la raggiungibilità è una parte fondamentale dell'architettura poiché i contributori di rete non possono vivere in isolamento. Pertanto, il DZD *deve* avere un link a un DoubleZero Exchange (DZX) per creare una rete contigua tra i partecipanti. + +
+ ![Image title](images/figure1.png){ width="800" } +
Figura 1: Contributo di Larghezza di Banda alla Rete DoubleZero Tra 2 Data Center - Singolo Contributore
+
+ +### Esempi di Contributo + +I modi in cui un contributore di rete può ampliare i propri contributi a DoubleZero sono molteplici, tra cui: + +- Migliorare le caratteristiche di prestazione dei contributi esistenti: aumentare la larghezza di banda, ridurre la latenza +- Aggiungere più link tra gli stessi data center +- Aggiungere un nuovo link da un data center esistente a un nuovo data center +- Aggiungere un nuovo link indipendente tra due nuovi data center + +#### Esempio 1: Singolo Contributore, 3 Data Center, Due Link +
+ ![Image title](images/figure2.png){ width="800" } +
Figura 2: Contributo di Larghezza di Banda alla Rete DoubleZero Tra 3 Data Center - Singolo Contributore
+
+ +Un singolo DZD può supportare più link contribuiti a DoubleZero. La Figura 2 illustra una potenziale topologia se un singolo data center, indicato come 1, termina la larghezza di banda verso due diversi data center remoti 2 e 3. In questo scenario, ogni data center contiene solo 1 DZD. Tutti i DZD utilizzano il DIA per i punti di accesso degli utenti come interfaccia CYOA. + +#### Esempio 2: Singolo Contributore, 3 Data Center, Tre Link + +La Figura 3 descrive la topologia DoubleZero quando un singolo contributore distribuisce tre link in una topologia a triangolo tra 3 data center. In uno scenario simile all'esempio 1, un singolo DZD viene distribuito nei data center 1, 2 e 3, ognuno dei quali supporta 2 link di rete indipendenti. La topologia risultante è un triangolo o anello tra i data center. + +
+ ![Image title](images/figure3.png){ width="800" } +
Figura 3: Contributo di Larghezza di Banda alla Rete DoubleZero Tra 3 Data Center - Singolo Contributore
+
+ +### DoubleZero Exchange + +La creazione di una rete contigua è un elemento fondamentale dell'architettura DoubleZero. I contributori si interfacciano tramite un DoubleZero Exchange (DZX) all'interno di un'area metropolitana, ovvero una città come New York (NYC), Londra (LON) o Tokyo (TYO). Un DZX è un fabric di rete simile a un Internet Exchange, che consente il peering e lo scambio di route. + +Nella Figura 4, il contributore di rete 1 opera nei data center 1, 2 e 3, mentre il contributore di rete 2 opera nei data center 2, 4 e 5. Interconnettendosi nel data center 2, la portata della rete DoubleZero si estende a 5 data center contigui. + +
+ ![Image title](images/figure4.png){ width="1000" } +
Figura 4: Contributo di Larghezza di Banda alla Rete DoubleZero Tra 2 Contributori di Larghezza di Banda
+
+ +### Opzioni di Contributo della Larghezza di Banda + +DoubleZero richiede a un contributore di rete di offrire connettività integrata tramite una larghezza di banda garantita, un profilo di latenza e jitter tra DZD in due data center di terminazione espresso tramite uno smart contract. DoubleZero non impone come un contributore di rete implementa il proprio contributo, tuttavia, nelle sezioni seguenti forniamo opzioni indicative per l'utilizzo a loro esclusiva discrezione. + +Aree importanti da considerare per un contributore di rete potrebbero essere: + +- Capacità di garantire le prestazioni di rete del servizio DoubleZero: larghezza di banda, latenza e jitter +- Segregazione dai servizi di rete interni esistenti +- Conflitti di indirizzamento IPv4, in particolare con lo spazio di indirizzi underlay del tunnel +- Uptime e disponibilità +- Considerazioni su CAPEX e OPEX + +#### Larghezza di Banda Layer 1 +
+ ![Image title](images/figure5.png){ width="800" } +
Figura 5: Servizi Ottici Layer 1
+
+ +La larghezza di banda Layer 1, più formalmente descritta come servizi a lunghezza d'onda, può prevedere capacità dedicata su un'infrastruttura ottica esistente, come DWDM, CWDM o tramite multiplexer ottici (MUX). Nella Figura 5, i DZD utilizzano un'ottica colorata cablata a un MUX L1, che sovrappone la lunghezza d'onda del DZD su una fibra scura esistente. + +Questa soluzione offre numerosi vantaggi per i contributori di rete che già gestiscono una rete core esistente. Le modifiche operative iterative, così come i requisiti aggiuntivi di CAPEX e OPEX, sono modesti. Questa opzione è particolarmente robusta nell'offrire segregazione dai servizi di rete del contributore. + +#### Larghezza di Banda Packet Switched + +Le reti packet switched possono essere considerate una tipica rete aziendale, che esegue protocolli standard di routing e switching a supporto delle applicazioni aziendali. Esistono numerose tecnologie di rete che raggiungono la connettività, ad esempio estensioni layer 2 (L2) tramite tag VLAN. + +##### Estensione L2 +
+ ![Image title](images/figure6.png){ width="800" } +
Figura 6: Reti Packet Switched - Estensione L2
+
+ +Un'estensione L2 come mostrato nella Figura 6 può essere facilitata tramite il tagging VLAN. La porta di un DZD può essere cablata a uno switch della rete interna del contributore, con la porta dello switch impostata come porta di accesso, ad esempio, nella VLAN 10. Tramite il tagging 802.1q, questa VLAN può essere trasportata su più hop di switch sulla rete del contributore, terminando allo switch che si interfaccia con il DZD remoto. + +Questa soluzione beneficia di un'ampia compatibilità e di una relativa facilità di implementazione, creando al contempo segmentazione tra DoubleZero e i servizi layer 3 interni. La larghezza di banda può essere controllata in base alla velocità dell'interfaccia dello switch o router interno del contributore. Occorre prestare particolare attenzione alle prestazioni attraverso la rete L2 interna condivisa tramite tecnologie come Quality of Service (QoS) o altre politiche di gestione del traffico. Tuttavia, gli investimenti aggiuntivi in CAPEX e OPEX dovrebbero essere modesti se è disponibile capacità esistente nella rete core del contributore. + +#### Larghezza di Banda di Terze Parti Dedicata +
+ ![Image title](images/figure7.png){ width="800" } +
Figura 7: Larghezza di Banda di Terze Parti Dedicata
+
+ +Sebbene il riutilizzo della capacità disponibile sarà interessante per molti contributori di rete, è possibile anche dedicare larghezza di banda appena acquisita a DoubleZero. In tale scenario, il DZD si collegherebbe direttamente al gestore di terze parti senza alcun dispositivo interno del contributore in linea (Figura 7). + +Questa opzione è interessante in quanto garantisce larghezza di banda dedicata per DoubleZero, è semplice dal punto di vista operativo e garantisce una completa segmentazione da qualsiasi altro servizio di rete. Questa opzione avrà probabilmente il maggiore aumento dell'OPEX e richiede nuovi contratti di servizio con gestori di terze parti. + +--- + +## Requisiti Hardware + +### Contributo di Larghezza di Banda 100Gbps + +Si noti che le quantità riportate di seguito riflettono l'attrezzatura necessaria in due data center, ovvero l'hardware totale necessario per distribuire 1 cavo in fibra ottica per il contributo di larghezza di banda. + +??? warning "*Tutti gli FPGA sono soggetti a test finali. I contributi 10G possono essere supportati utilizzando switch Arista 7130LBR con FPGA dual Virtex® UltraScale+™ integrati (per qualsiasi domanda, DoubleZero Foundation / Malbec Labs sono lieti di fornire ulteriori informazioni)." + +#### Requisiti di Funzione e Porta + +| Funzione | Velocità Porta | Requisito DZ | QTY | Note | +|-----------------------------|---------------|--------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Larghezza di Banda Privata | 100G | Sì | 1 | | +| Direct Internet Access (DIA) | 10G | Sì | 2 | | +| DoubleZero eXchange (DZX) | 100G | Sì* | 1 | Deve essere supportato una volta che più di 3 provider operano nella stessa area metropolitana; prima di ciò, cross-connect o altri accordi di peering possono essere utilizzati per interconnettersi con altri provider. | +| Management | | No | 1 | Determinato dalle politiche di gestione interne del contributore. | +| Console | | No | 1 | Determinato dalle politiche di gestione interne del contributore. | + +#### Hardware di Rete DZD + +| Produttore | Modello | Numero Parte | Requisito DZ | QTY | Note | +|------------|-----------------|----------------------|--------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | Sì | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Sì | 2 | Possono essere possibili alternative se i lead time sono problematici. | + +--- + +#### Ottiche - 100G + +| Produttore | Modello | Numero Parte | Requisito DZ | QTY | Note | +|------------|-------------|----------------|--------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | No | 16 | Scelta di cablaggio e ottica a discrezione del contributore. 100G richiesto per connettere gli FPGA. | + +--- + +#### Ottiche - 10G + +| Produttore | Modello | Numero Parte | Requisito DZ | QTY | Note | +|------------|-------------|----------------|--------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | No | 2 | Scelta di cablaggio e ottica a discrezione del contributore. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | No | 2 | Scelta di cablaggio e ottica a discrezione del contributore. | + +--- + +#### Indirizzamento IP + +| Indirizzamento IP | Dimensione Minima Sottorete | Requisito DZ | Note | +|------------------|---------------------------|--------------|----------------------------------------------------------| +| IPv4 Pubblico | /29 | Sì (per DZD edge/hybrid) | Deve essere instradabile tramite DIA. Potremmo eliminare la necessità di questo nel tempo. | + +Assicurarsi che l'intero pool /29 sia disponibile per il protocollo DZ. Eventuali requisiti per l'indirizzamento point-to-point, ad esempio sulle interfacce DIA, devono essere gestiti tramite un pool di indirizzi diverso. + +### Contributo di Larghezza di Banda 10Gbps + +Si noti che le quantità riflettono l'attrezzatura di due data center, ovvero l'hardware totale necessario per distribuire 1 contributo di larghezza di banda. + +#### Requisiti di Funzione e Porta + +| Funzione | Velocità Porta | Requisito DZ | QTY | Note | +|-----------------------------|---------------|--------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Larghezza di Banda Privata | 10G | Sì | 1 | | +| Direct Internet Access (DIA) | 10G | Sì | 2 | | +| DoubleZero eXchange (DZX) | 100G | Sì* | 1 | Deve essere supportato una volta che più di 3 provider operano nella stessa area metropolitana; prima di ciò, cross-connect o altri accordi di peering possono essere utilizzati per interconnettersi con altri provider. | +| Management | | No | 1 | Determinato dalle politiche di gestione interne del contributore. | +| Console | | No | 1 | Determinato dalle politiche di gestione interne del contributore. | + +--- + +#### Hardware + +| Produttore | Modello | Numero Parte | Requisito DZ | QTY | Note | +|------------|-----------------|----------------------|--------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | Sì | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Sì | 2 | Possono essere possibili alternative se i lead time sono problematici. | + +--- + +#### Ottiche - 100G + +| Produttore | Modello | Numero Parte | Requisito DZ | QTY | Note | +|------------|-------------|----------------|--------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | No | 14 | Scelta di cablaggio e ottica a discrezione del contributore. 100G richiesto per connettere gli FPGA. | + +--- + +#### Ottiche - 10G + +| Produttore | Modello | Numero Parte | Requisito DZ | QTY | Note | +|------------|-------------|----------------|--------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | No | 4 | Scelta di cablaggio e ottica a discrezione del contributore. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | No | 4 | Scelta di cablaggio e ottica a discrezione del contributore. | + +--- + +#### Indirizzamento IP + +| Indirizzamento IP | Dimensione Minima Sottorete | Requisito DZ | Note | +|------------------|---------------------------|--------------|----------------------------------------------------------| +| IPv4 Pubblico | /29 | Sì (per DZD edge/hybrid) | Deve essere instradabile tramite DIA. Potremmo eliminare la necessità di questo nel tempo. | + +Assicurarsi che l'intero pool /29 sia disponibile per il protocollo DZ. Eventuali requisiti per l'indirizzamento point-to-point, ad esempio sulle interfacce DIA, devono essere gestiti tramite un pool di indirizzi diverso. + +### Requisiti del Data Center + +#### Requisiti di Rack e Alimentazione + +| Requisito | Specifica | +|-------------|-----------| +| Spazio Rack | 4U | +| Alimentazione | 4KW (raccomandato) | + +--- + +## Prossimi Passi + +Pronto a effettuare il provisioning del tuo primo DZD? Continua con la [Guida al Provisioning dei Dispositivi](contribute-provisioning.md). diff --git a/docs/contribute.ja.md b/docs/contribute.ja.md new file mode 100644 index 0000000..3406210 --- /dev/null +++ b/docs/contribute.ja.md @@ -0,0 +1,233 @@ +# コントリビューターの要件とアーキテクチャ +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## 概要 + +未活用の光ファイバーケーブルとネットワークハードウェアを収益化したい方はどなたでもDoubleZeroネットワークに貢献できます。ネットワークコントリビューターは、2点間に専用帯域幅を提供し、各端でDoubleZero互換デバイス(DZD)を運用し、各端でパブリックインターネットへの接続が必要です。ネットワークコントリビューターはまた、マルチキャスト、ユーザー検索、エッジフィルタリングなどのサービスを提供するために各DZDでDoubleZeroソフトウェアを実行する必要があります。 + +DoubleZeroスマートコントラクトは、ネットワークが測定可能でトポロジーに統合できる高品質のリンクを維持することを保証するための礎です。これにより、ネットワークコントローラーが異なるユーザーとエンドポイント間で最も効率的なエンドツーエンドパスを開発できます。スマートコントラクトの実行とネットワーク機器と帯域幅のデプロイメント後、エンティティはネットワークコントリビューターとして分類されます。DoubleZeroネットワークコントリビューターとしての参加背後の経済学をさらに理解するには、[DoubleZero Economics](https://economics.doublezero.xyz/overview)を参照してください。 + +--- + +## DoubleZeroネットワークコントリビューターになる要件 + +- 2つのデータセンター間でIPv4接続とMTU 2048バイトを提供できる専用帯域幅 +- DoubleZeroプロトコルと互換性のあるDoubleZeroデバイス(DZD)ハードウェア +- インターネットおよびその他のDoubleZeroネットワークコントリビューターへの接続性 +- DZDへのDoubleZeroソフトウェアのインストール + +## クイックスタートガイド + +ネットワークコントリビューターとして、DoubleZeroを開始する最も簡単な方法は、DoubleZero専用に利用できる容量をネットワーク内で特定することです。特定したら、DZDをデプロイし、コントリビューターのネットワークからIPv4到達可能性と最低MTU 2048バイトのみを依存関係として必要とするDoubleZeroオーバーレイネットワークを促進する必要があります。 + +図1は帯域幅とパケット送信・処理サービスを貢献するための最もシンプルなモデルを示しています。DZDは各データセンターに配備され、コントリビューターの内部ネットワークとインターフェースしてDoubleZero WAN接続を提供します。これはローカルインターネット(通常はDirect Internet Access(DIA)ソリューション)によって補完され、DoubleZeroユーザーのオンランプとして使用されます。DIAがDoubleZeroのユーザーアクセスを促進する優先オプションになることが予想されますが、物理ケーブリングからサーバーへ、ネットワークファブリック拡張など、さまざまな接続モデルが可能です。これらのオプションをChoose Your Own Adventure(CYOA)と呼び、コントリビューターが内部ネットワークポリシーに最も適した方法でローカルまたはリモートユーザーを接続する柔軟性を提供します。 + +あらゆるネットワークと同様に、到達可能性はアーキテクチャの基本的な部分であり、ネットワークコントリビューターは孤立して存在できません。そのため、DZDは参加者間で連続したネットワークを作成するためにDoubleZero Exchange(DZX)へのリンクを**持たなければなりません**。 + +
+ ![Image title](images/figure1.png){ width="800" } +
図1:2つのデータセンター間のDoubleZeroネットワーク帯域幅貢献 - 単一コントリビューター
+
+ +### 貢献の例 + +ネットワークコントリビューターがDoubleZeroへの貢献を拡大できる方法は多数あります。例えば: + +- 既存の貢献のパフォーマンス特性を改善する:帯域幅を増やし、レイテンシを減らす +- 同じデータセンター間に複数のリンクを追加する +- 既存のデータセンターから新しいデータセンターへの新しいリンクを追加する +- 2つの新しいデータセンター間に新しい独立したリンクを追加する + +#### 例1:単一コントリビューター、3データセンター、2リンク +
+ ![Image title](images/figure2.png){ width="800" } +
図2:3つのデータセンター間のDoubleZeroネットワーク帯域幅貢献 - 単一コントリビューター
+
+ +単一のDZDはDoubleZeroに提供される複数のリンクをサポートできます。図2は、データセンター1とそれぞれ異なるリモートデータセンター2と3の間の帯域幅を単一のデータセンターが終端する場合の潜在的なトポロジーを示しています。このシナリオでは、各データセンターには1つのDZDのみが含まれています。すべてのDZDはCYOAインターフェースとしてDIAをユーザーオンランプに使用しています。 + +#### 例2:単一コントリビューター、3データセンター、3リンク + +図3は単一のコントリビューターが3つのデータセンター間のトライアングルトポロジーに3つのリンクを展開した場合のDoubleZeroトポロジーを説明しています。例1に似たシナリオで、単一のDZDがデータセンター1、2、3に展開され、それぞれ2つの独立したネットワークリンクをサポートします。結果として得られるトポロジーはデータセンター間のトライアングルまたはリングです。 + +
+ ![Image title](images/figure3.png){ width="800" } +
図3:3つのデータセンター間のDoubleZeroネットワーク帯域幅貢献 - 単一コントリビューター
+
+ +### DoubleZero Exchange + +連続したネットワークの作成はDoubleZeroアーキテクチャの基本的な構成要素です。コントリビューターはニューヨーク(NYC)、ロンドン(LON)、東京(TYO)などの都市である大都市圏内のDoubleZero Exchange(DZX)を通じてインターフェースします。DZXはインターネットエクスチェンジに似たネットワークファブリックであり、ピアリングとルート交換を可能にします。 + +図4では、ネットワークコントリビューター1はデータセンター1、2、3で運用し、ネットワークコントリビューター2はデータセンター2、4、5で運用しています。データセンター2で相互接続することで、DoubleZeroネットワークの到達範囲は5つの連続したデータセンターに拡大されます。 + +
+ ![Image title](images/figure4.png){ width="1000" } +
図4:2つのネットワーク帯域幅コントリビューター間のDoubleZeroネットワーク帯域幅貢献
+
+ +### 帯域幅貢献オプション + +DoubleZeroはネットワークコントリビューターに対し、スマートコントラクトを通じて表現される2つの終端データセンターのDZD間の保証された帯域幅、レイテンシ、ジッタープロファイルによる統合接続性を提供することを要求します。DoubleZeroはネットワークコントリビューターが貢献を実装する方法を義務付けていませんが、以下のセクションではそれぞれの判断で使用するための指示的オプションを提供します。 + +ネットワークコントリビューターにとって考慮すべき重要な分野: + +- DoubleZeroサービスのネットワークパフォーマンスを保証する能力:帯域幅、レイテンシ、ジッター +- 既存の内部ネットワークサービスからの分離 +- トンネルアンダーレイアドレス空間とのIPv4アドレッシングの衝突 +- アップタイムと可用性 +- CAPEXとOPEXの考慮事項 + +#### レイヤー1帯域幅 +
+ ![Image title](images/figure5.png){ width="800" } +
図5:レイヤー1光学サービス
+
+ +レイヤー1帯域幅(より正式には波長サービスとも呼ばれる)は、DWDM、CWDMまたは光マルチプレクサー(MUX)などの既存の光学インフラに専用容量をプロビジョニングする場合があります。図5では、DZDはL1 MUXにケーブル接続されたカラードオプティクスを使用し、DZDの波長を既存のダークファイバーに多重化します。 + +このソリューションには、既存のコアネットワークを運用しているネットワークコントリビューターにとって多くの利点があります。反復的な運用上の変更、および追加のCAPEXとOPEXの要件は控えめです。このオプションはネットワークコントリビューターのネットワークサービスからの分離を提供する上で特に堅牢です。 + +#### パケットスイッチド帯域幅 + +パケットスイッチドネットワークは、ビジネスアプリケーションをサポートする標準的なルーティングおよびスイッチングプロトコルを実行する典型的なエンタープライズネットワークと考えられます。VLANタグを使用したレイヤー2(L2)拡張など、接続を実現するさまざまなネットワーキング技術があります。 + +##### L2拡張 +
+ ![Image title](images/figure6.png){ width="800" } +
図6:パケットスイッチドネットワーク - L2拡張
+
+ +図6に示すL2拡張はVLANタギングを通じて実現できます。DZDのポートはコントリビューターの内部ネットワークスイッチにケーブル接続でき、スイッチポートは例えばVLAN 10のアクセスポートとして設定されます。802.1qタギングを通じて、このVLANはコントリビューターのネットワーク上の複数のスイッチホップを通じて運搬され、リモートDZDとインターフェースするスイッチで終端されます。 + +このソリューションは広くサポートされていて比較的実装が容易であり、DoubleZeroと内部レイヤー3サービス間のセグメンテーションを作成します。帯域幅はコントリビューターの内部スイッチまたはルーターのインターフェース速度に基づいて制御できます。Quality of Service(QoS)やその他のトラフィック管理ポリシーなどの技術を通じて、共有内部L2ネットワーク全体のパフォーマンスに慎重に考慮する必要があります。ただし、コントリビューターのコアネットワーク内に既存の容量がある場合、追加のCAPEXとOPEXの投資は控えめなはずです。 + +#### 専用サードパーティ帯域幅 +
+ ![Image title](images/figure7.png){ width="800" } +
図7:専用サードパーティ帯域幅
+
+ +利用可能な容量を再利用することは多くのネットワークコントリビューターにとって魅力的ですが、新たに取得した帯域幅をDoubleZeroに専用することもできます。このようなシナリオでは、DZDはコントリビューターの内部デバイスをインラインに配置することなく、サードパーティキャリアに直接接続されます(図7)。 + +このオプションはDoubleZero専用の帯域幅を確保し、運用がシンプルで、他のネットワークサービスからの完全な分離を確保するため魅力的です。このオプションはおそらく最も高いOPEXの増加をもたらし、サードパーティキャリアとの新しいサービス契約が必要です。 + +--- + +## ハードウェア要件 + +### 100Gbps帯域幅貢献 + +以下の数量は2つのデータセンターで必要な機器、すなわち1本の光ファイバーケーブルの帯域幅貢献を展開するために必要な合計ハードウェアを反映しています。 + +??? warning "*すべてのFPGAは最終テスト次第です。10G貢献は組み込みデュアルVirtex® UltraScale+™ FPGAを持つArista 7130LBRスイッチを使用してサポートされる場合があります(ご質問があれば、DoubleZero Foundation / Malbec Labsが喜んで詳細情報を提供します)。" + +#### 機能とポート要件 + +| 機能 | ポート速度 | DZ要件 | QTY | 注意 | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| プライベート帯域幅 | 100G | はい | 1 | | +| Direct Internet Access (DIA) | 10G | はい | 2 | | +| DoubleZero eXchange (DZX) | 100G | はい* | 1 | 同じ大都市圏で3社以上のプロバイダーが運営する場合にサポートする必要があります。それ以前は、クロスコネクトまたは他のピアリング手配を使用して他のプロバイダーと相互接続できます。 | +| 管理 | | いいえ | 1 | コントリビューター独自の内部管理ポリシーによって決定されます。 | +| コンソール | | いいえ | 1 | コントリビューター独自の内部管理ポリシーによって決定されます。 | + +#### DZDネットワークハードウェア + +| メーカー | モデル | 部品番号 | DZ要件 | QTY | 注意 | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | はい | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | はい | 2 | リードタイムが困難な場合は代替品も可能な場合があります。 | + +--- + +#### 光学部品 - 100G + +| メーカー | モデル | 部品番号 | DZ要件 | QTY | 注意 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | いいえ | 16 | ケーブリングと光学部品の選択はコントリビューターの裁量で利用可能です。FPGAの接続には100Gが必要です。 | + +--- + +#### 光学部品 - 10G + +| メーカー | モデル | 部品番号 | DZ要件 | QTY | 注意 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | いいえ | 2 | ケーブリングと光学部品の選択はコントリビューターの裁量で利用可能です。 | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | いいえ | 2 | ケーブリングと光学部品の選択はコントリビューターの裁量で利用可能です。 | + +--- + +#### IPアドレッシング + +| IPアドレッシング | 最小サブネットサイズ | DZ要件 | 注意 | +|--------------|-------------------|----------------|----------------------------------------------------------| +| パブリックIPv4 | /29 | はい(エッジ/ハイブリッドDZDの場合) | DIA経由でルーティング可能である必要があります。将来的にはこの必要性をなくす可能性があります。 | + +DZプロトコル用に完全な/29プールが利用可能であることを確認してください。DIAインターフェース上のポイントツーポイントアドレッシングなどの要件は、別のアドレスプールで管理する必要があります。 + +### 10Gbps帯域幅貢献 + +以下の数量は2つのデータセンターの機器、すなわち1つの帯域幅貢献を展開するために必要な合計ハードウェアを反映しています。 + +#### 機能とポート要件 + +| 機能 | ポート速度 | DZ要件 | QTY | 注意 | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| プライベート帯域幅 | 10G | はい | 1 | | +| Direct Internet Access (DIA) | 10G | はい | 2 | | +| DoubleZero eXchange (DZX) | 100G | はい* | 1 | 同じ大都市圏で3社以上のプロバイダーが運営する場合にサポートする必要があります。それ以前は、クロスコネクトまたは他のピアリング手配を使用して他のプロバイダーと相互接続できます。 | +| 管理 | | いいえ | 1 | コントリビューター独自の内部管理ポリシーによって決定されます。 | +| コンソール | | いいえ | 1 | コントリビューター独自の内部管理ポリシーによって決定されます。 | + +--- + +#### ハードウェア + +| メーカー | モデル | 部品番号 | DZ要件 | QTY | 注意 | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | はい | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | はい | 2 | リードタイムが困難な場合は代替品も可能な場合があります。 | + +--- + +#### 光学部品 - 100G + +| メーカー | モデル | 部品番号 | DZ要件 | QTY | 注意 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | いいえ | 14 | ケーブリングと光学部品の選択はコントリビューターの裁量で利用可能です。FPGAの接続には100Gが必要です。 | + +--- + +#### 光学部品 - 10G + +| メーカー | モデル | 部品番号 | DZ要件 | QTY | 注意 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | いいえ | 4 | ケーブリングと光学部品の選択はコントリビューターの裁量で利用可能です。 | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | いいえ | 4 | ケーブリングと光学部品の選択はコントリビューターの裁量で利用可能です。 | + +--- + +#### IPアドレッシング + +| IPアドレッシング | 最小サブネットサイズ | DZ要件 | 注意 | +|--------------|-------------------|----------------|----------------------------------------------------------| +| パブリックIPv4 | /29 | はい(エッジ/ハイブリッドDZDの場合) | DIA経由でルーティング可能である必要があります。将来的にはこの必要性をなくす可能性があります。 | + +DZプロトコル用に完全な/29プールが利用可能であることを確認してください。DIAインターフェース上のポイントツーポイントアドレッシングなどの要件は、別のアドレスプールで管理する必要があります。 + +### データセンター要件 + +#### ラックと電力要件 + +| 要件 | 仕様 | +|-------------|--------------| +| ラックスペース | 4U | +| 電力 | 4KW(推奨) | + +--- + +## 次のステップ + +最初のDZDをプロビジョニングする準備ができましたか?[デバイスプロビジョニングガイド](contribute-provisioning.md)に進んでください。 diff --git a/docs/contribute.ko.md b/docs/contribute.ko.md new file mode 100644 index 0000000..3e77281 --- /dev/null +++ b/docs/contribute.ko.md @@ -0,0 +1,232 @@ +# 기여자 요구사항 및 아키텍처 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## 요약 + +미활용 광섬유 케이블과 네트워크 하드웨어를 수익화하고자 하는 누구든지 DoubleZero 네트워크에 기여할 수 있습니다. 네트워크 기여자는 두 지점 간에 전용 대역폭을 제공하고, 각 끝에 DoubleZero 호환 장치(DZD)를 운영하며, 각 끝에 공개 인터넷에 대한 연결이 있어야 합니다. 또한 네트워크 기여자는 각 DZD에서 멀티캐스트, 사용자 조회, 엣지 필터링과 같은 서비스를 제공하는 DoubleZero 소프트웨어를 실행해야 합니다. + +DoubleZero 스마트 계약은 네트워크가 측정 가능하고 토폴로지에 통합될 수 있는 고품질 링크를 유지하도록 보장하는 핵심입니다. 이를 통해 네트워크 컨트롤러가 다양한 사용자와 엔드포인트 간의 가장 효율적인 엔드-투-엔드 경로를 개발할 수 있습니다. 스마트 계약 실행 및 네트워크 장비와 대역폭 배포 후에 해당 주체는 네트워크 기여자로 분류됩니다. DoubleZero 네트워크 기여자로서 참여하는 경제학을 더 잘 이해하려면 [DoubleZero 경제학](https://economics.doublezero.xyz/overview)을 참조하세요. + +--- + +## DoubleZero 네트워크 기여자가 되기 위한 요구사항 + +- 두 데이터 센터 간에 IPv4 연결 및 2048바이트 MTU를 제공할 수 있는 전용 대역폭 +- DoubleZero 프로토콜과 호환되는 DoubleZero 장치(DZD) 하드웨어 +- 인터넷 및 다른 DoubleZero 네트워크 기여자에 대한 연결 +- DZD에 DoubleZero 소프트웨어 설치 + +## 빠른 시작 가이드 + +네트워크 기여자로서 DoubleZero를 시작하는 가장 간단한 방법은 네트워크에서 DoubleZero에 전용으로 사용할 수 있는 용량을 파악하는 것입니다. 파악되면 DZD를 배포해야 하며, DZD는 기여자의 네트워크에서 의존성으로 IPv4 도달 가능성과 최소 2048바이트 MTU만 필요한 DoubleZero 오버레이 네트워크를 용이하게 합니다. + +그림 1은 대역폭 및 패킷 전송과 처리 서비스를 기여하는 가장 간단한 모델을 강조합니다. DZD는 각 데이터 센터에 배포되어 기여자의 내부 네트워크와 인터페이스하여 DoubleZero WAN 연결을 제공합니다. 이는 DoubleZero 사용자를 위한 온-램프로 사용되는 로컬 인터넷(일반적으로 DIA(Direct Internet Access) 솔루션)으로 보완됩니다. DIA가 DoubleZero 사용자에게 액세스를 용이하게 하는 선호 옵션이 될 것으로 예상되지만, 다양한 연결 모델이 가능합니다(예: 서버에 대한 물리적 케이블링, 네트워크 패브릭 확장 등). 이 옵션을 CYOA(Choose Your Own Adventure)라고 하며, 기여자가 내부 네트워크 정책에 가장 잘 맞는 방식으로 로컬 또는 원격 사용자를 연결할 수 있는 유연성을 제공합니다. + +모든 네트워크와 마찬가지로 도달 가능성은 아키텍처의 근본적인 부분입니다. 기여자들은 고립되어 있을 수 없기 때문입니다. 따라서 DZD는 참여자 간에 연속적인 네트워크를 만들기 위해 DoubleZero Exchange(DZX)에 링크가 있어야 합니다. + +
+ ![Image title](images/figure1.png){ width="800" } +
그림 1: 2개 데이터 센터 간 DoubleZero 네트워크 대역폭 기여 - 단일 기여자
+
+ +### 기여 예시 + +네트워크 기여자가 DoubleZero 기여를 확장할 수 있는 방법은 다음을 포함하여 다양합니다: + +- 기존 기여의 성능 특성 개선: 대역폭 증가, 대기 시간 감소 +- 동일한 데이터 센터 간에 여러 링크 추가 +- 기존 데이터 센터에서 새 데이터 센터로 새 링크 추가 +- 두 새 데이터 센터 간에 새로운 독립 링크 추가 + +#### 예시 1: 단일 기여자, 3개 데이터 센터, 2개 링크 +
+ ![Image title](images/figure2.png){ width="800" } +
그림 2: 3개 데이터 센터 간 DoubleZero 네트워크 대역폭 기여 - 단일 기여자
+
+ +단일 DZD는 DoubleZero에 기여하는 여러 링크를 지원할 수 있습니다. 그림 2는 1로 표시된 단일 데이터 센터가 두 개의 다른 원격 데이터 센터 2와 3에 대역폭을 종단하는 경우의 잠재적 토폴로지를 보여줍니다. 이 시나리오에서 각 데이터 센터에는 DZD가 하나만 있습니다. 모든 DZD는 CYOA 인터페이스로 DIA를 사용합니다. + +#### 예시 2: 단일 기여자, 3개 데이터 센터, 3개 링크 + +그림 3은 단일 기여자가 3개 데이터 센터 사이에 삼각형 토폴로지로 3개 링크를 배포할 때의 DoubleZero 토폴로지를 설명합니다. 예시 1과 유사한 시나리오에서, 단일 DZD가 데이터 센터 1, 2, 3에 각각 배포되며 각각 2개의 독립 네트워크 링크를 지원합니다. 결과 토폴로지는 데이터 센터 간의 삼각형 또는 링입니다. + +
+ ![Image title](images/figure3.png){ width="800" } +
그림 3: 3개 데이터 센터 간 DoubleZero 네트워크 대역폭 기여 - 단일 기여자
+
+ +### DoubleZero Exchange + +연속적인 네트워크 생성은 DoubleZero 아키텍처의 근본적인 구성 요소입니다. 기여자들은 뉴욕(NYC), 런던(LON) 또는 도쿄(TYO)와 같은 도시인 대도시권 내의 DoubleZero Exchange(DZX)를 통해 인터페이스하며, 이는 인터넷 익스체인지와 유사한 네트워크 패브릭으로 피어링 및 경로 교환을 허용합니다. + +그림 4에서 네트워크 기여자 1은 데이터 센터 1, 2, 3에서 운영하고, 네트워크 기여자 2는 데이터 센터 2, 4, 5에서 운영합니다. 데이터 센터 2에서 상호 연결함으로써 DoubleZero 네트워크 도달 범위가 5개의 연속 데이터 센터로 증가합니다. + +
+ ![Image title](images/figure4.png){ width="1000" } +
그림 4: 2개 네트워크 대역폭 기여자 간의 DoubleZero 네트워크 대역폭 기여
+
+ +### 대역폭 기여 옵션 + +DoubleZero는 네트워크 기여자가 스마트 계약을 통해 두 종단 데이터 센터의 DZD 간에 보장된 대역폭, 대기 시간 및 지터 프로필을 통해 통합 연결을 제공하도록 요구합니다. DoubleZero는 네트워크 기여자가 기여를 구현하는 방법을 의무화하지 않지만, 다음 섹션에서는 단독 재량으로 사용할 수 있는 지시적 옵션을 제공합니다. + +네트워크 기여자가 고려해야 할 중요한 영역은 다음과 같습니다: + +- DoubleZero 서비스의 네트워크 성능 보장 능력: 대역폭, 대기 시간 및 지터 +- 기존 내부 네트워크 서비스로부터의 격리 +- 특히 터널 언더레이 주소 공간과의 IPv4 주소 충돌 +- 가동 시간 및 가용성 +- CAPEX 및 OPEX 고려 사항 + +#### 계층 1 대역폭 +
+ ![Image title](images/figure5.png){ width="800" } +
그림 5: 계층 1 광학 서비스
+
+ +보다 공식적으로 파장 서비스로 설명되는 계층 1 대역폭은 DWDM, CWDM 또는 광학 멀티플렉서(MUX)를 통해 기존 광학 인프라에 전용 용량을 프로비저닝할 수 있습니다. 그림 5에서 DZD는 L1 MUX에 케이블로 연결된 컬러 옵틱을 사용하며, 이는 DZD 파장을 기존 다크 파이버에 인터리빙합니다. + +이 솔루션은 기존 핵심 네트워크를 이미 운영하는 네트워크 기여자에게 많은 이점을 제공합니다. 점진적인 운영 변경과 추가 CAPEX 및 OPEX 요구 사항은 적습니다. 이 옵션은 네트워크 기여자의 네트워크 서비스로부터 격리를 제공하는 데 특히 강력합니다. + +#### 패킷 교환 대역폭 + +패킷 교환 네트워크는 비즈니스 애플리케이션을 지원하는 표준 라우팅 및 스위칭 프로토콜을 실행하는 일반적인 엔터프라이즈 네트워크로 간주될 수 있습니다. VLAN 태그를 사용한 계층 2(L2) 확장 등 다양한 네트워킹 기술을 통해 연결성을 달성할 수 있습니다. + +##### L2 확장 +
+ ![Image title](images/figure6.png){ width="800" } +
그림 6: 패킷 교환 네트워크 - L2 확장
+
+ +그림 6에 표시된 L2 확장은 VLAN 태깅을 통해 용이하게 할 수 있습니다. DZD의 포트는 기여자의 내부 네트워크 스위치에 케이블로 연결될 수 있으며, 스위치 포트는 예를 들어 VLAN 10의 액세스 포트로 설정됩니다. 802.1q 태깅을 통해 이 VLAN은 기여자의 네트워크에서 여러 스위치 홉을 통해 전달되어 원격 DZD와 인터페이스하는 스위치에서 종단됩니다. + +이 솔루션은 널리 지원되고 구현하기 비교적 쉬우면서 DoubleZero와 내부 계층 3 서비스 간의 분리를 만드는 이점이 있습니다. 대역폭은 기여자의 내부 스위치 또는 라우터의 인터페이스 속도를 기반으로 제어할 수 있습니다. QoS(서비스 품질) 또는 기타 트래픽 관리 정책과 같은 기술을 통해 공유 내부 L2 네트워크의 성능에 신중한 고려가 필요합니다. 그러나 기여자의 핵심 네트워크 내에 기존 용량이 있는 경우 추가 CAPEX 및 OPEX 투자는 최소화되어야 합니다. + +#### 전용 3rd Party 대역폭 +
+ ![Image title](images/figure7.png){ width="800" } +
그림 7: 전용 3rd Party 대역폭
+
+ +사용 가능한 용량을 재사용하는 것이 많은 네트워크 기여자에게 매력적이지만, 새로 획득한 대역폭을 DoubleZero에 전용으로 사용할 수도 있습니다. 이러한 시나리오에서 DZD는 인라인에 기여자의 내부 장치 없이 3rd party 통신사에 직접 연결됩니다(그림 7). + +이 옵션은 DoubleZero를 위한 전용 대역폭을 보장하고 운영상 간단하며 다른 네트워크 서비스로부터 완전한 분리를 보장하기 때문에 매력적입니다. 이 옵션은 OPEX 증가가 가장 높고 3rd party 통신사와의 새로운 서비스 계약이 필요합니다. + +--- + +## 하드웨어 요구사항 + +### 100Gbps 대역폭 기여 + +아래 수량은 두 데이터 센터에 필요한 장비를 반영합니다. 즉, 1개의 광섬유 케이블 대역폭 기여를 배포하는 데 필요한 총 하드웨어입니다. + +??? warning "*모든 FPGA는 최종 테스트를 거칩니다. 10G 기여는 내장 이중 Virtex® UltraScale+™ FPGA가 있는 Arista 7130LBR 스위치를 사용하여 지원될 수 있습니다(질문이 있으면 DoubleZero Foundation / Malbec Labs가 기꺼이 더 많은 정보를 제공합니다)." + +#### 기능 및 포트 요구사항 + +| 기능 | 포트 속도 | DZ 요구사항 | 수량 | 참고 | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 전용 대역폭 | 100G | 예 | 1 | | +| DIA (Direct Internet Access) | 10G | 예 | 2 | | +| DoubleZero eXchange (DZX) | 100G | 예* | 1 | 동일한 대도시권에 3개 이상의 공급자가 운영하면 반드시 지원해야 합니다. 이전에는 크로스 커넥트 또는 기타 피어링 방식을 사용할 수 있습니다. | +| 관리 | | 아니오 | 1 | 기여자의 내부 관리 정책에 따라 결정됩니다. | +| 콘솔 | | 아니오 | 1 | 기여자의 내부 관리 정책에 따라 결정됩니다. | + +#### DZD 네트워크 하드웨어 + +| 제조사 | 모델 | 부품 번호 | DZ 요구사항 | 수량 | 참고 | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | 예 | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | 예 | 2 | 리드 타임이 어려운 경우 대안이 가능할 수 있습니다. | + +--- + +#### 광학 - 100G + +| 제조사 | 모델 | 부품 번호 | DZ 요구사항 | 수량 | 참고 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | 아니오 | 16 | 케이블링 및 광학 선택은 기여자의 재량에 따릅니다. FPGA를 연결하는 데 100G가 필요합니다. | + +--- + +#### 광학 - 10G + +| 제조사 | 모델 | 부품 번호 | DZ 요구사항 | 수량 | 참고 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | 아니오 | 2 | 케이블링 및 광학 선택은 기여자의 재량에 따릅니다. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | 아니오 | 2 | 케이블링 및 광학 선택은 기여자의 재량에 따릅니다. | + +--- + +#### IP 주소 지정 + +| IP 주소 지정 | 최소 서브넷 크기 | DZ 요구사항 | 참고 | +|--------------|-------------------|----------------|----------------------------------------------------------| +| 공개 IPv4 | /29 | 예 (엣지/하이브리드 DZD의 경우) | DIA를 통해 라우팅 가능해야 합니다. 시간이 지남에 따라 이 요구사항을 없앨 수 있습니다. | + +DZ 프로토콜을 위해 전체 /29 풀이 사용 가능한지 확인하세요. DIA 인터페이스의 점대점 주소 지정 등의 요구 사항은 별도의 주소 풀을 통해 관리되어야 합니다. + +### 10Gbps 대역폭 기여 + +아래 수량은 두 데이터 센터의 장비를 반영합니다. 즉, 1개의 대역폭 기여를 배포하는 데 필요한 총 하드웨어입니다. + +#### 기능 및 포트 요구사항 + +| 기능 | 포트 속도 | DZ 요구사항 | 수량 | 참고 | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 전용 대역폭 | 10G | 예 | 1 | | +| DIA (Direct Internet Access) | 10G | 예 | 2 | | +| DoubleZero eXchange (DZX) | 100G | 예* | 1 | 동일한 대도시권에 3개 이상의 공급자가 운영하면 반드시 지원해야 합니다. 이전에는 크로스 커넥트 또는 기타 피어링 방식을 사용할 수 있습니다. | +| 관리 | | 아니오 | 1 | 기여자의 내부 관리 정책에 따라 결정됩니다. | +| 콘솔 | | 아니오 | 1 | 기여자의 내부 관리 정책에 따라 결정됩니다. | + +--- + +#### 하드웨어 + +| 제조사 | 모델 | 부품 번호 | DZ 요구사항 | 수량 | 참고 | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | 예 | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | 예 | 2 | 리드 타임이 어려운 경우 대안이 가능할 수 있습니다. | + +--- + +#### 광학 - 100G + +| 제조사 | 모델 | 부품 번호 | DZ 요구사항 | 수량 | 참고 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | 아니오 | 14 | 케이블링 및 광학 선택은 기여자의 재량에 따릅니다. FPGA를 연결하는 데 100G가 필요합니다. | + +--- + +#### 광학 - 10G + +| 제조사 | 모델 | 부품 번호 | DZ 요구사항 | 수량 | 참고 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | 아니오 | 4 | 케이블링 및 광학 선택은 기여자의 재량에 따릅니다. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | 아니오 | 4 | 케이블링 및 광학 선택은 기여자의 재량에 따릅니다. | +--- + +#### IP 주소 지정 + +| IP 주소 지정 | 최소 서브넷 크기 | DZ 요구사항 | 참고 | +|--------------|-------------------|----------------|----------------------------------------------------------| +| 공개 IPv4 | /29 | 예 (엣지/하이브리드 DZD의 경우) | DIA를 통해 라우팅 가능해야 합니다. 시간이 지남에 따라 이 요구사항을 없앨 수 있습니다. | + +DZ 프로토콜을 위해 전체 /29 풀이 사용 가능한지 확인하세요. DIA 인터페이스의 점대점 주소 지정 등의 요구 사항은 별도의 주소 풀을 통해 관리되어야 합니다. + +### 데이터 센터 요구사항 + +#### 랙 및 전원 요구사항 + +| 요구사항 | 사양 | +|-------------|--------------| +| 랙 공간 | 4U | +| 전원 | 4KW (권장) | + +--- + +## 다음 단계 + +첫 번째 DZD를 프로비저닝할 준비가 되셨나요? [장치 프로비저닝 가이드](contribute-provisioning.md)를 계속하세요. diff --git a/docs/contribute.pt.md b/docs/contribute.pt.md new file mode 100644 index 0000000..0c6354a --- /dev/null +++ b/docs/contribute.pt.md @@ -0,0 +1,232 @@ +# Requisitos e Arquitetura para Contribuidores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## Resumo + +Qualquer pessoa que deseje monetizar seus cabos de fibra ótica e hardware de rede subutilizados pode contribuir para a rede DoubleZero. Os contribuidores de rede devem fornecer largura de banda dedicada entre dois pontos, operar dispositivos compatíveis com DoubleZero (DZDs) em cada extremidade e ter conexão com a internet pública em cada extremidade. Os contribuidores de rede também devem executar software DoubleZero em cada DZD para fornecer serviços como multicast, pesquisa de usuários e filtragem de borda. + +O contrato inteligente DoubleZero é a pedra angular para garantir que a rede mantenha links de alta qualidade que possam ser medidos e integrados à topologia, permitindo que nossos controladores de rede desenvolvam o caminho mais eficiente de ponta a ponta entre nossos diferentes usuários e endpoints. Após a execução do contrato inteligente e a implantação do equipamento de rede e da largura de banda, uma entidade é classificada como contribuidor de rede. Consulte [Economia do DoubleZero](https://economics.doublezero.xyz/overview) para entender melhor a economia por trás da participação no DoubleZero como contribuidor de rede. + +--- + +## Requisitos para ser um Contribuidor de Rede DoubleZero + +- Largura de banda dedicada capaz de fornecer conectividade IPv4 e um MTU de 2048 bytes entre dois data centers +- Hardware de Dispositivo DoubleZero (DZD) compatível com o protocolo DoubleZero +- Conectividade com a internet e outros contribuidores de rede DoubleZero +- Instalação do software DoubleZero no DZD + +## Guia de Início Rápido + +Como contribuidor de rede, a maneira mais simples de começar no DoubleZero é identificar capacidade em sua rede que possa ser dedicada ao DoubleZero. Uma vez identificados, os DZDs devem ser implantados, facilitando a rede overlay DoubleZero que requer apenas alcançabilidade IPv4 e um MTU mínimo de 2048 bytes como dependências da rede do contribuidor. + +A Figura 1 destaca o modelo mais simples para contribuição de largura de banda e serviços de envio e processamento de pacotes. Um DZD é implantado em cada data center, conectando-se à rede interna do contribuidor de rede para fornecer conectividade WAN DoubleZero. Isso é complementado pela internet local, tipicamente uma solução de Acesso Direto à Internet (DIA), que é usada como pontos de entrada para usuários DoubleZero. Embora se espere que o DIA seja a opção preferida para facilitar o acesso aos usuários do DoubleZero, vários modelos de conectividade são possíveis, como cabeamento físico para servidores, extensão de fabric de rede, etc. Nos referimos a essas opções como Choose Your Own Adventure (CYOA), fornecendo ao contribuidor flexibilidade para conectar usuários locais ou remotos de uma forma que melhor se adapte às suas políticas de rede internas. + +Como em qualquer rede, a alcançabilidade é uma parte fundamental da arquitetura, pois os contribuidores de rede não podem viver isolados. Como tal, o DZD *deve* ter um link para uma DoubleZero Exchange (DZX) para criar uma rede contígua entre os participantes. + +
+ ![Image title](images/figure1.png){ width="800" } +
Figura 1: Contribuição de Largura de Banda da Rede DoubleZero Entre 2 Data Centers - Contribuidor Único
+
+ +### Exemplos de Contribuições + +As formas pelas quais um contribuidor de rede pode expandir suas contribuições DoubleZero são muitas, incluindo: + +- Melhorar as características de desempenho de suas contribuições existentes: aumentar largura de banda, reduzir latência +- Adicionar múltiplos links entre os mesmos data centers +- Adicionar um novo link de um data center existente para um novo data center +- Adicionar um novo link independente entre dois novos data centers + +#### Exemplo 1: Contribuidor Único, 3 Data Centers, Dois Links +
+ ![Image title](images/figure2.png){ width="800" } +
Figura 2: Contribuição de Largura de Banda da Rede DoubleZero Entre 3 Data Centers - Contribuidor Único
+
+ +Um único DZD pode suportar múltiplos links contribuídos ao DoubleZero. A Figura 2 ilustra uma topologia potencial se um único data center, denominado 1, terminar largura de banda para dois data centers remotos diferentes 2 e 3. Neste cenário, cada data center contém apenas 1 DZD. Todos os DZDs estão usando DIA para pontos de entrada de usuários como sua interface CYOA. + +#### Exemplo 2: Contribuidor Único, 3 Data Centers, Três Links + +A Figura 3 descreve a topologia DoubleZero quando um único contribuidor implanta três links em uma topologia triangular entre 3 data centers. Em um cenário semelhante ao exemplo 1, um único DZD é implantado nos data centers 1, 2 e 3, cada um suportando 2 links de rede independentes. A topologia resultante é um triângulo ou anel entre os data centers. + +
+ ![Image title](images/figure3.png){ width="800" } +
Figura 3: Contribuição de Largura de Banda da Rede DoubleZero Entre 3 Data Centers - Contribuidor Único
+
+ +### DoubleZero Exchange + +A criação de uma rede contígua é um bloco fundamental da arquitetura DoubleZero. Os contribuidores se conectam via uma DoubleZero Exchange (DZX) dentro de uma área metropolitana, que é uma cidade como Nova York (NYC), Londres (LON) ou Tóquio (TYO). Uma DZX é um fabric de rede semelhante a uma Internet Exchange, permitindo peering e troca de rotas. + +Na Figura 4, o contribuidor de rede 1 opera nos data centers 1, 2 e 3, enquanto o contribuidor de rede 2 opera nos data centers 2, 4 e 5. Ao interconectar no data center 2, o alcance da rede DoubleZero aumenta para 5 data centers contíguos. + +
+ ![Image title](images/figure4.png){ width="1000" } +
Figura 4: Contribuição de Largura de Banda da Rede DoubleZero Entre 2 Contribuidores de Largura de Banda de Rede
+
+ +### Opções de Contribuição de Largura de Banda + +O DoubleZero requer que um contribuidor de rede ofereça conectividade integrada via um perfil garantido de largura de banda, latência e jitter entre DZDs em dois data centers terminadores, expresso via contrato inteligente. O DoubleZero não determina como um contribuidor de rede implementa sua contribuição; no entanto, nas seções a seguir, fornecemos opções indicativas para uso a seu exclusivo critério. + +Áreas importantes a considerar para um contribuidor de rede podem ser: + +- Capacidade de garantir o desempenho de rede do serviço DoubleZero: largura de banda, latência e jitter +- Segregação de seus serviços de rede internos existentes +- Conflitos de endereçamento IPv4, especialmente com o espaço de endereços subjacente ao túnel +- Tempo de atividade e disponibilidade +- Considerações de CAPEX e OPEX + +#### Largura de Banda Camada 1 +
+ ![Image title](images/figure5.png){ width="800" } +
Figura 5: Serviços Ópticos de Camada 1
+
+ +A largura de banda de Camada 1, mais formalmente descrita como serviços de comprimento de onda, pode ver capacidade dedicada provisionada em uma infraestrutura óptica existente, como DWDM, CWDM ou via multiplexadores ópticos (MUX). Na Figura 5, os DZDs usam uma óptica colorida que é cabeada para um MUX L1, que intercala o comprimento de onda do DZD em uma fibra escura existente. + +Esta solução tem inúmeros benefícios para contribuidores de rede que já operam uma rede principal existente. As mudanças operacionais iterativas, bem como os requisitos adicionais de CAPEX e OPEX, são modestos. Esta opção é particularmente robusta em oferecer segregação dos serviços de rede do contribuidor. + +#### Largura de Banda em Redes Comutadas por Pacotes + +As redes comutadas por pacotes podem ser consideradas uma rede empresarial típica, executando protocolos padrão de roteamento e comutação que suportam aplicações de negócios. Existem inúmeras tecnologias de rede que alcançam conectividade, por exemplo, extensões de camada 2 (L2) usando tags VLAN. + +##### Extensão L2 +
+ ![Image title](images/figure6.png){ width="800" } +
Figura 6: Redes Comutadas por Pacotes - Extensão L2
+
+ +Uma extensão L2 como mostrado na Figura 6 pode ser facilitada através de marcação VLAN. A porta de um DZD pode ser cabeada para um switch de rede interna do contribuidor, com a porta do switch sendo configurada como porta de acesso em, por exemplo, VLAN 10. Através de marcação 802.1q, esta VLAN pode ser transportada por múltiplos saltos de switch na rede do contribuidor, terminando no switch que se conecta ao DZD remoto. + +Esta solução se beneficia de ser amplamente suportada e relativamente fácil de implementar, ao mesmo tempo em que cria segmentação entre o DoubleZero e os serviços de camada 3 internos. A largura de banda pode ser controlada com base na velocidade de interface do switch ou roteador interno do contribuidor. Consideração cuidadosa deve ser dada ao desempenho na rede L2 interna compartilhada por meio de tecnologias como Qualidade de Serviço (QoS) ou outras políticas de gerenciamento de tráfego. No entanto, investimentos adicionais em CAPEX e OPEX devem ser modestos se houver capacidade existente disponível na rede principal do contribuidor. + +#### Largura de Banda Dedicada de Terceiros +
+ ![Image title](images/figure7.png){ width="800" } +
Figura 7: Largura de Banda Dedicada de Terceiros
+
+ +Embora a reutilização de capacidade disponível seja atraente para muitos contribuidores de rede, também é possível dedicar largura de banda recém-adquirida ao DoubleZero. Nesse cenário, o DZD se conectaria diretamente à operadora terceirizada sem quaisquer dispositivos internos do contribuidor em linha (Figura 7). + +Esta opção é atraente pois garante largura de banda dedicada para o DoubleZero, é simples operacionalmente e garante segmentação completa de quaisquer outros serviços de rede. Esta opção provavelmente terá o maior aumento de OPEX e requer novos contratos de serviço com operadoras terceirizadas. + +--- + +## Requisitos de Hardware + +### Contribuição de Largura de Banda de 100Gbps + +Observe que as quantidades abaixo refletem o equipamento necessário em dois data centers, ou seja, o total de hardware necessário para implantar 1 cabo de fibra ótica para contribuição de largura de banda. + +??? warning "*Todos os FPGAs estão sujeitos a testes finais. Contribuições de 10G podem ser suportadas usando switches Arista 7130LBR com FPGAs Virtex® UltraScale+™ duplos embutidos (se você tiver alguma dúvida, a DoubleZero Foundation / Malbec Labs terá prazer em fornecer mais informações)." + +#### Requisitos de Função e Porta + +| Função | Velocidade da Porta | Requisito DZ | QTD | Nota | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Largura de Banda Privada | 100G | Sim | 1 | | +| Acesso Direto à Internet (DIA) | 10G | Sim | 2 | | +| DoubleZero eXchange (DZX) | 100G | Sim* | 1 | Deve ser suportado quando mais de 3 provedores operam na mesma área metropolitana; antes disso, cross-connects ou outros arranjos de peering podem ser usados para interconectar outros provedores. | +| Gerenciamento | | Não | 1 | Determinado pelas próprias políticas de gerenciamento interno do contribuidor. | +| Console | | Não | 1 | Determinado pelas próprias políticas de gerenciamento interno do contribuidor. | + +#### Hardware de Rede DZD + +| Fabricante | Modelo | Número de Peça | Requisito DZ | QTD | Nota | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | Sim | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Sim | 2 | Alternativas podem ser possíveis se os prazos de entrega forem desafiadores. | + +--- + +#### Óptica - 100G + +| Fabricante | Modelo | Número de Peça | Requisito DZ | QTD | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | Não | 16 | Escolha de cabeamento e óptica disponível a critério do contribuidor. 100G necessário para conectar FPGAs. | + +--- + +#### Óptica - 10G + +| Fabricante | Modelo | Número de Peça | Requisito DZ | QTD | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | Não | 2 | Escolha de cabeamento e óptica disponível a critério do contribuidor. | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | Não | 2 | Escolha de cabeamento e óptica disponível a critério do contribuidor. | + +--- + +#### Endereçamento IP + +| Endereçamento IP | Tamanho Mínimo de Sub-rede | Requisito DZ | Nota | +|--------------|-------------------|----------------|----------------------------------------------------------| +| IPv4 Público | /29 | Sim (para DZDs edge/hybrid) | Deve ser roteável via DIA. Podemos eliminar a necessidade disso ao longo do tempo. | + +Certifique-se de que o pool completo /29 esteja disponível para o protocolo DZ. Quaisquer requisitos para endereçamento ponto a ponto, por exemplo, em interfaces DIA, devem ser gerenciados via um pool de endereços diferente. + +### Contribuição de Largura de Banda de 10Gbps + +Observe que as quantidades refletem o equipamento de dois data centers, ou seja, o total de hardware necessário para implantar 1 contribuição de largura de banda. + +#### Requisitos de Função e Porta + +| Função | Velocidade da Porta | Requisito DZ | QTD | Nota | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Largura de Banda Privada | 10G | Sim | 1 | | +| Acesso Direto à Internet (DIA) | 10G | Sim | 2 | | +| DoubleZero eXchange (DZX) | 100G | Sim* | 1 | Deve ser suportado quando mais de 3 provedores operam na mesma área metropolitana; antes disso, cross-connects ou outros arranjos de peering podem ser usados para interconectar outros provedores. | +| Gerenciamento | | Não | 1 | Determinado pelas próprias políticas de gerenciamento interno do contribuidor. | +| Console | | Não | 1 | Determinado pelas próprias políticas de gerenciamento interno do contribuidor. | + +--- + +#### Hardware + +| Fabricante | Modelo | Número de Peça | Requisito DZ | QTD | Nota | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | Sim | 4 | | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | Sim | 2 | Alternativas podem ser possíveis se os prazos de entrega forem desafiadores. | + +--- + +#### Óptica - 100G + +| Fabricante | Modelo | Número de Peça | Requisito DZ | QTD | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | Não | 14 | Escolha de cabeamento e óptica disponível a critério do contribuidor. 100G necessário para conectar FPGAs. | + +--- + +#### Óptica - 10G + +| Fabricante | Modelo | Número de Peça | Requisito DZ | QTD | Nota | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | Não | 4 | Escolha de cabeamento e óptica disponível a critério do contribuidor. | + Finisar | DynamiX QSA™ | MAM1Q00A-QSA | Não | 4 | Escolha de cabeamento e óptica disponível a critério do contribuidor. | +--- + +#### Endereçamento IP + +| Endereçamento IP | Tamanho Mínimo de Sub-rede | Requisito DZ | Nota | +|--------------|-------------------|----------------|----------------------------------------------------------| +| IPv4 Público | /29 | Sim (para DZDs edge/hybrid) | Deve ser roteável via DIA. Podemos eliminar a necessidade disso ao longo do tempo. | + +Certifique-se de que o pool completo /29 esteja disponível para o protocolo DZ. Quaisquer requisitos para endereçamento ponto a ponto, por exemplo, em interfaces DIA, devem ser gerenciados via um pool de endereços diferente. + +### Requisitos de Data Center + +#### Requisitos de Rack e Energia + +| Requisito | Especificação | +|-------------|--------------| +| Espaço em Rack | 4U | +| Energia | 4KW (recomendado) | + +--- + +## Próximas Etapas + +Pronto para provisionar seu primeiro DZD? Continue para o [Guia de Provisionamento de Dispositivos](contribute-provisioning.md). diff --git a/docs/contribute.zh.md b/docs/contribute.zh.md new file mode 100644 index 0000000..fa3f845 --- /dev/null +++ b/docs/contribute.zh.md @@ -0,0 +1,232 @@ +# 贡献者需求与架构 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +## 摘要 + +任何希望将其未充分利用的光纤电缆和网络硬件货币化的人都可以为DoubleZero网络做出贡献。网络贡献者必须在两点之间提供专用带宽,在每端运营DoubleZero兼容设备(DZD),并在每端连接到公共互联网。网络贡献者还必须在每个DZD上运行DoubleZero软件,以提供多播、用户查找和边缘过滤等服务。 + +DoubleZero智能合约是确保网络维持可测量并集成到拓扑中的高质量链路的基础,使我们的网络控制器能够开发不同用户和端点之间最高效的端到端路径。在执行智能合约并部署网络设备和带宽后,实体被归类为网络贡献者。请参阅[DoubleZero经济学](https://economics.doublezero.xyz/overview)进一步了解作为网络贡献者参与DoubleZero的经济学原理。 + +--- + +## 成为DoubleZero网络贡献者的要求 + +- 能够在两个数据中心之间提供IPv4连接和2048字节MTU的专用带宽 +- 与DoubleZero协议兼容的DoubleZero设备(DZD)硬件 +- 与互联网和其他DoubleZero网络贡献者的连接 +- 在DZD上安装DoubleZero软件 + +## 快速入门指南 + +作为网络贡献者,在DoubleZero中开始的最简单方式是识别您网络中可以专用于DoubleZero的容量。一旦确定,必须部署DZD,以便DoubleZero覆盖网络只需要IPv4可达性和最小2048字节MTU作为来自贡献者网络的依赖项。 + +图1展示了贡献带宽和数据包发送及处理服务的最简单模型。DZD部署在每个数据中心,与网络贡献者的内部网络接口,提供DoubleZero WAN连接。这由本地互联网补充,通常是直接互联网访问(DIA)解决方案,用作DoubleZero用户的接入点。虽然DIA预计是促进DoubleZero用户访问的首选选项,但多种连接模型也是可能的,例如到服务器的物理布线、网络结构扩展等。我们将这些选项称为自选冒险(CYOA),为贡献者提供以最适合其内部网络策略的方式连接本地或远程用户的灵活性。 + +与任何网络一样,可达性是架构的基本组成部分,因为网络贡献者不能孤立存在。因此,DZD*必须*有一条到DoubleZero交换点(DZX)的链路,以在参与者之间创建连续网络。 + +
+ ![Image title](images/figure1.png){ width="800" } +
图1:2个数据中心之间的DoubleZero网络带宽贡献 - 单一贡献者
+
+ +### 贡献示例 + +网络贡献者可以通过多种方式增加其DoubleZero贡献,包括: + +- 改善现有贡献的性能特征:增加带宽、减少延迟 +- 在相同数据中心之间添加多条链路 +- 从现有数据中心添加到新数据中心的新链路 +- 在两个新数据中心之间添加一条新的独立链路 + +#### 示例1:单一贡献者,3个数据中心,两条链路 +
+ ![Image title](images/figure2.png){ width="800" } +
图2:3个数据中心之间的DoubleZero网络带宽贡献 - 单一贡献者
+
+ +单个DZD可以支持向DoubleZero贡献的多条链路。图2展示了当标为1的单个数据中心向两个不同的远程数据中心2和3终止带宽时的潜在拓扑。在此场景中,每个数据中心只包含1个DZD。所有DZD都使用DIA作为其CYOA接口的用户接入点。 + +#### 示例2:单一贡献者,3个数据中心,三条链路 + +图3描述了当单个贡献者在3个数据中心之间以三角形拓扑部署三条链路时的DoubleZero拓扑。在类似示例1的场景中,单个DZD部署在数据中心1、2和3中,每个支持2条独立的网络链路。由此产生的拓扑是数据中心之间的三角形或环形。 + +
+ ![Image title](images/figure3.png){ width="800" } +
图3:3个数据中心之间的DoubleZero网络带宽贡献 - 单一贡献者
+
+ +### DoubleZero交换点 + +创建连续网络是DoubleZero架构的基本构建块。贡献者通过都市区内的DoubleZero交换点(DZX)进行接口,都市区是纽约(NYC)、伦敦(LON)或东京(TYO)等城市。DZX是类似于互联网交换点的网络结构,允许对等互联和路由交换。 + +在图4中,网络贡献者1在数据中心1、2和3运营,而网络贡献者2在数据中心2、4和5运营。通过在数据中心2互连,DoubleZero网络覆盖范围增加到5个连续数据中心。 + +
+ ![Image title](images/figure4.png){ width="1000" } +
图4:2个网络带宽贡献者之间的DoubleZero网络带宽贡献
+
+ +### 带宽贡献选项 + +DoubleZero要求网络贡献者通过智能合约提供在两个终止数据中心的DZD之间具有保证带宽、延迟和抖动配置文件的集成连接。DoubleZero不强制规定网络贡献者如何实施其贡献,但在以下章节中,我们提供可供其自行决定使用的参考选项。 + +网络贡献者可能需要考虑的重要领域: + +- 保证DoubleZero服务网络性能的能力:带宽、延迟和抖动 +- 与现有内部网络服务的隔离 +- IPv4地址冲突,特别是与隧道底层地址空间 +- 正常运行时间和可用性 +- 资本支出和运营支出考虑 + +#### 第1层带宽 +
+ ![Image title](images/figure5.png){ width="800" } +
图5:第1层光学服务
+
+ +第1层带宽,更正式地称为波长服务,可以在现有光学基础设施(如DWDM、CWDM或通过光学多路复用器(MUX))上配置专用容量。在图5中,DZD使用彩色光纤连接到L1 MUX,将DZD波长插入到现有暗光纤上。 + +对于已经运营现有核心网络的网络贡献者,此解决方案具有众多优势。迭代操作更改以及额外的资本支出和运营支出要求是适度的。此选项在提供与网络贡献者网络服务的隔离方面特别强大。 + +#### 分组交换带宽 + +分组交换网络可以被视为典型的企业网络,运行支持业务应用程序的标准路由和交换协议。有多种网络技术可以实现连接,例如使用VLAN标签的第2层(L2)扩展。 + +##### L2扩展 +
+ ![Image title](images/figure6.png){ width="800" } +
图6:分组交换网络 - L2扩展
+
+ +如图6所示的L2扩展可以通过VLAN标记实现。DZD的端口可以连接到贡献者的内部网络交换机,交换机端口设置为例如VLAN 10的接入端口。通过802.1q标记,此VLAN可以在贡献者网络的多个交换机跳上传输,终止于与远程DZD接口的交换机。 + +此解决方案受益于广泛支持和相对容易实施,同时在DoubleZero和内部第3层服务之间创建分段。带宽可以根据贡献者内部交换机或路由器的接口速度进行控制。必须通过服务质量(QoS)或其他流量管理策略等技术仔细考虑共享内部L2网络的性能。但是,如果贡献者的核心网络中有现有容量,额外的资本支出和运营支出投资应该是适度的。 + +#### 专用第三方带宽 +
+ ![Image title](images/figure7.png){ width="800" } +
图7:专用第三方带宽
+
+ +虽然重用可用容量对许多网络贡献者来说很有吸引力,但也可以将新获取的带宽专用于DoubleZero。在这种场景中,DZD将直接连接到第三方运营商,而没有任何贡献者的内部设备内联(图7)。 + +此选项很有吸引力,因为它确保了DoubleZero的专用带宽,操作简单,并确保与任何其他网络服务完全隔离。此选项可能会有最高的运营支出增加,并需要与第三方运营商签订新的服务合同。 + +--- + +## 硬件要求 + +### 100Gbps带宽贡献 + +请注意,以下数量反映了两个数据中心所需的设备,即部署1条光纤电缆进行带宽贡献所需的总硬件。 + +??? warning "*所有FPGA均需经过最终测试。使用内置双Virtex® UltraScale+™ FPGA的Arista 7130LBR交换机可能支持10G贡献(如有任何问题,DoubleZero基金会 / Malbec Labs很乐意提供更多信息)。" + +#### 功能与端口要求 + +| 功能 | 端口速度 | DZ要求 | 数量 | 备注 | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 私有带宽 | 100G | 是 | 1 | | +| 直接互联网访问(DIA) | 10G | 是 | 2 | | +| DoubleZero交换点(DZX) | 100G | 是* | 1 | 一旦同一都市区有超过3个提供商运营,必须支持;在此之前,可以使用交叉连接或其他对等互联安排与其他提供商互连。 | +| 管理 | | 否 | 1 | 由贡献者自己的内部管理策略决定。 | +| 控制台 | | 否 | 1 | 由贡献者自己的内部管理策略决定。 | + +#### DZD网络硬件 + +| 制造商 | 型号 | 部件编号 | DZ要求 | 数量 | 备注 | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474 | 是 | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | 是 | 2 | 如果交货期较长,可能有替代方案。 | + +--- + +#### 光纤 - 100G + +| 制造商 | 型号 | 部件编号 | DZ要求 | 数量 | 备注 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | 否 | 16 | 布线和光纤选择由贡献者自行决定。连接FPGA需要100G。 | + +--- + +#### 光纤 - 10G + +| 制造商 | 型号 | 部件编号 | DZ要求 | 数量 | 备注 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | 否 | 2 | 布线和光纤选择由贡献者自行决定。 | +| Finisar | DynamiX QSA™ | MAM1Q00A-QSA | 否 | 2 | 布线和光纤选择由贡献者自行决定。 | + +--- + +#### IP寻址 + +| IP寻址 | 最小子网大小 | DZ要求 | 备注 | +|--------------|-------------------|----------------|----------------------------------------------------------| +| 公共IPv4 | /29 | 是(对于边缘/混合DZD) | 必须通过DIA可路由。我们可能会随着时间的推移消除此需求。 | + +请确保整个/29池可用于DZ协议。任何点对点寻址的要求(例如DIA接口上的)应通过不同的地址池进行管理。 + +### 10Gbps带宽贡献 + +请注意,数量反映了两个数据中心的设备,即部署1个带宽贡献所需的总硬件。 + +#### 功能与端口要求 + +| 功能 | 端口速度 | DZ要求 | 数量 | 备注 | +|-----------------------------|------------|----------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 私有带宽 | 10G | 是 | 1 | | +| 直接互联网访问(DIA) | 10G | 是 | 2 | | +| DoubleZero交换点(DZX) | 100G | 是* | 1 | 一旦同一都市区有超过3个提供商运营,必须支持;在此之前,可以使用交叉连接或其他对等互联安排与其他提供商互连。 | +| 管理 | | 否 | 1 | 由贡献者自己的内部管理策略决定。 | +| 控制台 | | 否 | 1 | 由贡献者自己的内部管理策略决定。 | + +--- + +#### 硬件 + +| 制造商 | 型号 | 部件编号 | DZ要求 | 数量 | 备注 | +|----------|-----------------|----------------------|----------------|-----|-----------------------------------------------------------| +| AMD* | V80* | 24540474* | 是 | 4 | | +| Arista | 7280CR3A | DCS-7280CR3A-32S | 是 | 2 | 如果交货期较长,可能有替代方案。 | + +--- + +#### 光纤 - 100G + +| 制造商 | 型号 | 部件编号 | DZ要求 | 数量 | 备注 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 100GBASE-LR | QSFP-100G-LR | 否 | 14 | 布线和光纤选择由贡献者自行决定。连接FPGA需要100G。 | + +--- + +#### 光纤 - 10G + +| 制造商 | 型号 | 部件编号 | DZ要求 | 数量 | 备注 | +|--------|-------------|----------------|----------------|-----|-------------------------------------------------------------| +| Arista | 10GBASE-LR | SFP-10G-LR | 否 | 4 | 布线和光纤选择由贡献者自行决定。 | + Finisar | DynamiX QSA™ | MAM1Q00A-QSA | 否 | 4 | 布线和光纤选择由贡献者自行决定。 | +--- + +#### IP寻址 + +| IP寻址 | 最小子网大小 | DZ要求 | 备注 | +|--------------|-------------------|----------------|----------------------------------------------------------| +| 公共IPv4 | /29 | 是(对于边缘/混合DZD) | 必须通过DIA可路由。我们可能会随着时间的推移消除此需求。 | + +请确保整个/29池可用于DZ协议。任何点对点寻址的要求(例如DIA接口上的)应通过不同的地址池进行管理。 + +### 数据中心要求 + +#### 机架与电源要求 + +| 要求 | 规格 | +|-------------|--------------| +| 机架空间 | 4U | +| 电源 | 4KW(推荐) | + +--- + +## 后续步骤 + +准备好配置您的第一个DZD了吗?继续阅读[设备配置指南](contribute-provisioning.md)。 diff --git a/docs/glossary.es.md b/docs/glossary.es.md new file mode 100644 index 0000000..b433479 --- /dev/null +++ b/docs/glossary.es.md @@ -0,0 +1,158 @@ +# Glosario +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Esta página define la terminología específica de DoubleZero utilizada en toda la documentación. + +--- + +## Infraestructura de Red + +### DZD (Dispositivo DoubleZero) +El hardware físico de conmutación de red que termina los enlaces DoubleZero y ejecuta el software Agente DoubleZero. Los DZDs se despliegan en centros de datos y proporcionan servicios de enrutamiento, procesamiento de paquetes y conectividad de usuarios. Cada DZD requiere [especificaciones de hardware](contribute.md#dzd-network-hardware) específicas y ejecuta tanto el [Agente de Configuración](#config-agent) como el [Agente de Telemetría](#telemetry-agent). + +### DZX (Exchange DoubleZero) +Puntos de interconexión en la red de malla donde se unen diferentes enlaces de [contribuidores](#contributor). Los DZXs están ubicados en las principales áreas metropolitanas (por ejemplo, NYC, LON, TYO) donde se producen intersecciones de red. Los contribuidores de red deben interconectar sus enlaces a la malla DoubleZero más amplia en el DZX más cercano. Concepto similar a un Internet Exchange (IX). + +### Enlace WAN +Un enlace de Red de Área Amplia entre dos [DZDs](#dzd-doublezero-device) operados por el **mismo** contribuidor. Los enlaces WAN proporcionan conectividad de backbone dentro de la infraestructura de un solo contribuidor. + +### Enlace DZX +Un enlace entre [DZDs](#dzd-doublezero-device) operados por **diferentes** contribuidores, establecido en un [DZX](#dzx-doublezero-exchange). Los enlaces DZX requieren aceptación explícita de ambas partes. + +### Prefijo DZ +Asignaciones de direcciones IP en formato CIDR asignadas a un [DZD](#dzd-doublezero-device) para el direccionamiento de la red superpuesta. Se especifica durante la [creación del dispositivo](contribute-provisioning.md#step-32-create-your-device-onchain) usando el parámetro `--dz-prefixes`. + +--- + +## Tipos de Dispositivos + +### Dispositivo de Borde +Un [DZD](#dzd-doublezero-device) que proporciona conectividad de usuarios a la red DoubleZero. Los dispositivos de borde utilizan interfaces [CYOA](#cyoa-choose-your-own-adventure) para terminar usuarios (validadores, operadores RPC) y conectarlos a la red. + +### Dispositivo de Tránsito +Un [DZD](#dzd-doublezero-device) que proporciona conectividad de backbone dentro de la red DoubleZero. Los dispositivos de tránsito mueven el tráfico entre DZDs pero no terminan conexiones de usuarios directamente. + +### Dispositivo Híbrido +Un [DZD](#dzd-doublezero-device) que combina funcionalidades de [borde](#edge-device) y [tránsito](#transit-device), proporcionando tanto conectividad de usuarios como enrutamiento de backbone. + +--- + +## Conectividad + +### CYOA (Elige Tu Propia Aventura) +Tipos de interfaz que permiten a los [contribuidores](#contributor) registrar opciones de conectividad para que los usuarios se conecten a la red DoubleZero. Las interfaces CYOA incluyen varios métodos como [DIA](#dia-direct-internet-access), túneles GRE y peering privado. Consulte [Creación de Interfaces CYOA](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices) para obtener detalles de configuración. + +### DIA (Acceso Directo a Internet) +Un término de red estándar para la conectividad proporcionada a través de la internet pública. En DoubleZero, DIA es un tipo de interfaz [CYOA](#cyoa-choose-your-own-adventure) donde los usuarios (validadores, operadores RPC) se conectan a un [DZD](#dzd-doublezero-device) a través de su conexión a internet existente. + +### IBRL (Aumentar Ancho de Banda Reducir Latencia) +Un modo de conexión que permite a los validadores y nodos RPC conectarse a DoubleZero sin reiniciar sus clientes blockchain. IBRL usa la dirección IP pública existente y establece un túnel superpuesto al [DZD](#dzd-doublezero-device) más cercano. Consulte [Conexión Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) para instrucciones de configuración. + +### Multicast +Un método de entrega de paquetes de uno a muchos compatible con DoubleZero. El modo multicast tiene dos roles: **publicador** (envía paquetes a través de la red) y **suscriptor** (recibe paquetes del publicador). Utilizado por equipos de desarrollo para una distribución eficiente de datos. Consulte [Otra Conexión Multicast](Other%20Multicast%20Connection.md) para obtener detalles de conexión. + +--- + +## Componentes de Software + +### doublezerod +El servicio daemon DoubleZero que se ejecuta en servidores de usuarios (validadores, nodos RPC). Gestiona la conexión a la red DoubleZero, maneja el establecimiento de túneles y mantiene la conectividad con los [DZDs](#dzd-doublezero-device). Se configura mediante systemd y se controla a través de la CLI [`doublezero`](#doublezero-cli). + +### doublezero (CLI) +La interfaz de línea de comandos para interactuar con la red DoubleZero. Se usa para conectarse, gestionar identidades, verificar el estado y realizar operaciones administrativas. Se comunica con el daemon [`doublezerod`](#doublezerod). + +### Agente de Configuración +Agente de software que se ejecuta en los [DZDs](#dzd-doublezero-device) y gestiona la configuración del dispositivo. Lee la configuración del servicio [Controlador](#controller) y aplica los cambios al dispositivo. Consulte [Instalación del Agente de Configuración](contribute-provisioning.md#step-44-install-config-agent) para la configuración. + +### Agente de Telemetría +Agente de software que se ejecuta en los [DZDs](#dzd-doublezero-device) y recopila métricas de rendimiento (latencia, jitter, pérdida de paquetes) y las envía al ledger DoubleZero. Consulte [Instalación del Agente de Telemetría](contribute-provisioning.md#step-45-install-telemetry-agent) para la configuración. + +### Controlador +Un servicio que proporciona configuración a los agentes [DZD](#dzd-doublezero-device). El Controlador deriva las configuraciones de dispositivos a partir del estado [onchain](#onchain) en el ledger DoubleZero. + +--- + +## Estados de Enlace + +### Activado +El estado operativo normal de un enlace. El tráfico fluye a través del enlace y participa en las decisiones de enrutamiento. + +### Drenado Suave +Un estado de mantenimiento donde el tráfico se desalienta en un enlace específico. Se usa para ventanas de mantenimiento controladas. Puede transitar a [activado](#activated) o [drenado duro](#hard-drained). + +### Drenado Duro +Un estado de mantenimiento donde el enlace se retira completamente del servicio. No fluye tráfico a través del enlace. Debe transitar a [drenado suave](#soft-drained) antes de volver a [activado](#activated). + +--- + +## Organizaciones y Tokens + +### DZF (Fundación DoubleZero) +La Fundación DoubleZero es una empresa de fundación sin fines de lucro de las Islas Caimán que se formó para apoyar el desarrollo, la descentralización, la seguridad y la adopción de la red DoubleZero. + +### Token 2Z +El token nativo de la red DoubleZero. Se usa para pagar las tarifas de los validadores y se distribuye como recompensas a los [contribuidores](#contributor). Los validadores pueden pagar tarifas en 2Z a través de un programa de intercambio onchain. Consulte [Pagar Tarifas con 2Z](paying-fees2z.md) e [Intercambiar SOL por 2Z](Swapping-sol-to-2z.md). + +### Contribuidor +Un proveedor de infraestructura de red que aporta ancho de banda y hardware a la red DoubleZero. Los contribuidores operan [DZDs](#dzd-doublezero-device), proporcionan enlaces [WAN](#wan-link) y [DZX](#dzx-link), y reciben incentivos en tokens [2Z](#2z-token) por su contribución. Consulte la [Documentación para Contribuidores](contribute-overview.md) para comenzar. + +--- + +## Conceptos de Redes + +### MTU (Unidad Máxima de Transmisión) +El tamaño máximo de paquete (en bytes) que se puede transmitir a través de un enlace de red. Los enlaces WAN de DoubleZero típicamente usan MTU 9000 (tramas jumbo) para mayor eficiencia. + +### VRF (Enrutamiento y Reenvío Virtual) +Una tecnología que permite que existan múltiples tablas de enrutamiento aisladas en el mismo router físico. Los contribuidores a menudo usan un VRF de gestión separado para aislar el tráfico de gestión del switch del tráfico de producción. + +### GRE (Encapsulación de Enrutamiento Genérico) +Un protocolo de tunelización que encapsula paquetes de red dentro de paquetes IP. Usado por conexiones [IBRL](#ibrl-increase-bandwidth-reduce-latency) y [CYOA](#cyoa-choose-your-own-adventure) para crear túneles superpuestos entre usuarios y DZDs. + +### BGP (Protocolo de Puerta de Enlace de Borde) +El protocolo de enrutamiento utilizado para intercambiar información de enrutamiento entre redes en internet. DoubleZero usa BGP internamente con ASN 65342. + +### ASN (Número de Sistema Autónomo) +Un identificador único asignado a una red para el enrutamiento BGP. Todos los dispositivos DoubleZero usan **ASN 65342** para el proceso BGP interno. + +### Interfaz Loopback +Una interfaz de red virtual en un router/switch utilizada para gestión y propósitos de enrutamiento. Los DZDs usan Loopback255 (VPNv4) y Loopback256 (IPv4) para el enrutamiento interno. + +### CIDR (Enrutamiento entre Dominios sin Clases) +Una notación para especificar rangos de direcciones IP. El formato es `IP/longitud-de-prefijo` donde la longitud del prefijo indica el tamaño de la red (por ejemplo, `/29` = 8 direcciones, `/24` = 256 direcciones). + +### Jitter +Variación en la latencia de los paquetes a lo largo del tiempo. El bajo jitter es crítico para aplicaciones en tiempo real. + +### RTT (Tiempo de Ida y Vuelta) +El tiempo que tarda un paquete en viajar desde el origen hasta el destino y volver. Se usa para medir la latencia de red entre dispositivos. + +### TWAMP (Protocolo de Medición Activa Bidireccional) +Un protocolo para medir métricas de rendimiento de red como la latencia y la pérdida de paquetes. El [Agente de Telemetría](#telemetry-agent) usa TWAMP para recopilar métricas entre DZDs. + +### IS-IS (Sistema Intermedio a Sistema Intermedio) +Un protocolo de enrutamiento de estado de enlace utilizado internamente por la red DoubleZero. Las métricas IS-IS se ajustan durante las operaciones de [drenado de enlaces](#soft-drained). + +--- + +## Blockchain y Claves + +### Onchain +En el contexto de DoubleZero, onchain se refiere a los datos y operaciones registrados en el ledger DoubleZero. A diferencia de las redes tradicionales donde las configuraciones de dispositivos y enlaces viven en sistemas de gestión centralizados, DoubleZero registra las registraciones de dispositivos, las configuraciones de enlaces y las presentaciones de telemetría onchain, lo que hace que el estado de la red sea transparente y verificable por todos los participantes. + +### Clave de Servicio +Un par de claves criptográficas utilizado para autenticar las operaciones de CLI. Esta es su identidad de contribuidor para interactuar con el contrato inteligente DoubleZero. Se almacena en `~/.config/solana/id.json`. + +### Clave de Editor de Métricas +Un par de claves criptográficas utilizado por el [Agente de Telemetría](#telemetry-agent) para firmar las presentaciones de métricas a la blockchain. Separado de la clave de servicio para el aislamiento de seguridad. Se almacena en `~/.config/doublezero/metrics-publisher.json`. + +--- + +## Hardware y Software + +### EOS (Sistema Operativo Extensible) +El sistema operativo de red de Arista que se ejecuta en los switches DZD. Los contribuidores instalan el [Agente de Configuración](#config-agent) y el [Agente de Telemetría](#telemetry-agent) como extensiones EOS. + +### Extensión EOS +Un paquete de software que puede instalarse en switches Arista EOS. Los agentes DZ se distribuyen como archivos `.rpm` y se instalan mediante el comando `extension`. diff --git a/docs/glossary.fr.md b/docs/glossary.fr.md new file mode 100644 index 0000000..dcf019c --- /dev/null +++ b/docs/glossary.fr.md @@ -0,0 +1,158 @@ +# Glossaire +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Cette page définit la terminologie spécifique à DoubleZero utilisée dans toute la documentation. + +--- + +## Infrastructure Réseau + +### DZD (DoubleZero Device) +Le matériel de commutation réseau physique qui termine les liens DoubleZero et exécute le logiciel DoubleZero Agent. Les DZD sont déployés dans des centres de données et fournissent des services de routage, de traitement des paquets et de connectivité utilisateur. Chaque DZD nécessite des [spécifications matérielles](contribute.md#dzd-network-hardware) spécifiques et exécute à la fois le [Config Agent](#config-agent) et le [Telemetry Agent](#telemetry-agent). + +### DZX (DoubleZero Exchange) +Points d'interconnexion dans le réseau maillé où différents liens de [contributeurs](#contributeur) sont reliés ensemble. Les DZX sont situés dans les grandes zones métropolitaines (p. ex., NYC, LON, TYO) où se produisent les intersections de réseau. Les contributeurs réseau doivent cross-connecter leurs liens dans le maillage DoubleZero plus large au niveau du DZX le plus proche. Concept similaire à un Internet Exchange (IX). + +### Lien WAN +Un lien Wide Area Network entre deux [DZD](#dzd-doublezero-device) exploités par le **même** contributeur. Les liens WAN fournissent une connectivité backbone au sein de l'infrastructure d'un seul contributeur. + +### Lien DZX +Un lien entre des [DZD](#dzd-doublezero-device) exploités par des **contributeurs différents**, établi au niveau d'un [DZX](#dzx-doublezero-exchange). Les liens DZX nécessitent une acceptation explicite des deux parties. + +### Préfixe DZ +Allocations d'adresses IP au format CIDR attribuées à un [DZD](#dzd-doublezero-device) pour l'adressage du réseau overlay. Spécifié lors de la [création du dispositif](contribute-provisioning.md#step-32-create-your-device-onchain) en utilisant le paramètre `--dz-prefixes`. + +--- + +## Types de Dispositifs + +### Dispositif Edge +Un [DZD](#dzd-doublezero-device) qui fournit une connectivité utilisateur au réseau DoubleZero. Les dispositifs edge exploitent les interfaces [CYOA](#cyoa-choose-your-own-adventure) pour terminer les utilisateurs (validateurs, opérateurs RPC) et les connecter au réseau. + +### Dispositif Transit +Un [DZD](#dzd-doublezero-device) qui fournit une connectivité backbone au sein du réseau DoubleZero. Les dispositifs transit déplacent le trafic entre les DZD mais ne terminent pas directement les connexions utilisateur. + +### Dispositif Hybride +Un [DZD](#dzd-doublezero-device) qui combine à la fois les fonctionnalités [edge](#dispositif-edge) et [transit](#dispositif-transit), fournissant à la fois la connectivité utilisateur et le routage backbone. + +--- + +## Connectivité + +### CYOA (Choose Your Own Adventure) +Types d'interfaces qui permettent aux [contributeurs](#contributeur) d'enregistrer des options de connectivité pour que les utilisateurs se connectent au réseau DoubleZero. Les interfaces CYOA incluent diverses méthodes comme [DIA](#dia-direct-internet-access), les tunnels GRE et le peering privé. Consultez [Création d'Interfaces CYOA](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices) pour les détails de configuration. + +### DIA (Direct Internet Access) +Un terme réseau standard pour la connectivité fournie via l'internet public. Dans DoubleZero, DIA est un type d'interface [CYOA](#cyoa-choose-your-own-adventure) où les utilisateurs (validateurs, opérateurs RPC) se connectent à un [DZD](#dzd-doublezero-device) via leur connexion internet existante. + +### IBRL (Increase Bandwidth Reduce Latency) +Un mode de connexion qui permet aux validateurs et aux nœuds RPC de se connecter à DoubleZero sans redémarrer leurs clients blockchain. IBRL utilise l'adresse IP publique existante et établit un tunnel overlay vers le [DZD](#dzd-doublezero-device) le plus proche. Consultez [Connexion Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) pour les instructions de configuration. + +### Multicast +Une méthode de livraison de paquets un-vers-plusieurs prise en charge par DoubleZero. Le mode multicast a deux rôles : **éditeur** (envoie des paquets sur le réseau) et **abonné** (reçoit des paquets de l'éditeur). Utilisé par les équipes de développement pour une distribution efficace des données. Consultez [Autre Connexion Multicast](Other%20Multicast%20Connection.md) pour les détails de connexion. + +--- + +## Composants Logiciels + +### doublezerod +Le service daemon DoubleZero qui s'exécute sur les serveurs utilisateurs (validateurs, nœuds RPC). Il gère la connexion au réseau DoubleZero, gère l'établissement des tunnels et maintient la connectivité aux [DZD](#dzd-doublezero-device). Configuré via systemd et contrôlé via l'interface de ligne de commande [`doublezero`](#doublezero-cli). + +### doublezero (CLI) +L'interface de ligne de commande pour interagir avec le réseau DoubleZero. Utilisée pour se connecter, gérer les identités, vérifier le statut et effectuer des opérations administratives. Communique avec le daemon [`doublezerod`](#doublezerod). + +### Config Agent +Agent logiciel s'exécutant sur les [DZD](#dzd-doublezero-device) qui gère la configuration des dispositifs. Lit la configuration depuis le service [Contrôleur](#contrôleur) et applique les changements au dispositif. Consultez [Installation du Config Agent](contribute-provisioning.md#step-44-install-config-agent) pour la configuration. + +### Telemetry Agent +Agent logiciel s'exécutant sur les [DZD](#dzd-doublezero-device) qui collecte les métriques de performance (latence, gigue, perte de paquets) et les soumet au registre DoubleZero. Consultez [Installation du Telemetry Agent](contribute-provisioning.md#step-45-install-telemetry-agent) pour la configuration. + +### Contrôleur +Un service qui fournit la configuration aux agents [DZD](#dzd-doublezero-device). Le Contrôleur dérive les configurations des dispositifs à partir de l'état [on-chain](#on-chain) sur le registre DoubleZero. + +--- + +## États des Liens + +### Activé +L'état opérationnel normal pour un lien. Le trafic circule à travers le lien et il participe aux décisions de routage. + +### Soft-Drained +Un état de maintenance où le trafic sera découragé sur un lien spécifique. Utilisé pour les fenêtres de maintenance progressives. Peut passer à [activé](#activé) ou [hard-drained](#hard-drained). + +### Hard-Drained +Un état de maintenance où le lien est complètement retiré du service. Aucun trafic ne circule à travers le lien. Doit passer à [soft-drained](#soft-drained) avant de revenir à [activé](#activé). + +--- + +## Organisations & Tokens + +### DZF (DoubleZero Foundation) +La DoubleZero Foundation est une société fondation des Îles Caïmans à but non lucratif sans membres, créée pour soutenir le développement, la décentralisation, la sécurité et l'adoption du réseau DoubleZero. + +### Token 2Z +Le token natif du réseau DoubleZero. Utilisé pour payer les frais des validateurs et distribué comme récompenses aux [contributeurs](#contributeur). Les validateurs peuvent payer les frais en 2Z via un programme d'échange on-chain. Consultez [Payer les Frais avec 2Z](paying-fees2z.md) et [Échanger SOL contre 2Z](Swapping-sol-to-2z.md). + +### Contributeur +Un fournisseur d'infrastructure réseau qui contribue de la bande passante et du matériel au réseau DoubleZero. Les contributeurs exploitent des [DZD](#dzd-doublezero-device), fournissent des liens [WAN](#lien-wan) et [DZX](#lien-dzx), et reçoivent des incitations en tokens [2Z](#token-2z) pour leur contribution. Consultez [Documentation Contributeur](contribute-overview.md) pour commencer. + +--- + +## Concepts Réseau + +### MTU (Maximum Transmission Unit) +La taille de paquet maximale (en octets) pouvant être transmise sur un lien réseau. Les liens WAN DoubleZero utilisent généralement MTU 9000 (trames jumbo) pour l'efficacité. + +### VRF (Virtual Routing and Forwarding) +Une technologie qui permet à plusieurs tables de routage isolées d'exister sur le même routeur physique. Les contributeurs utilisent souvent un VRF de gestion séparé pour isoler le trafic de gestion du commutateur du trafic de production. + +### GRE (Generic Routing Encapsulation) +Un protocole de tunneling qui encapsule des paquets réseau dans des paquets IP. Utilisé par les connexions [IBRL](#ibrl-increase-bandwidth-reduce-latency) et [CYOA](#cyoa-choose-your-own-adventure) pour créer des tunnels overlay entre les utilisateurs et les DZD. + +### BGP (Border Gateway Protocol) +Le protocole de routage utilisé pour échanger des informations de routage entre les réseaux sur internet. DoubleZero utilise BGP en interne avec l'ASN 65342. + +### ASN (Autonomous System Number) +Un identifiant unique attribué à un réseau pour le routage BGP. Tous les dispositifs DoubleZero utilisent **ASN 65342** pour le processus BGP interne. + +### Interface Loopback +Une interface réseau virtuelle sur un routeur/commutateur utilisée à des fins de gestion et de routage. Les DZD utilisent Loopback255 (VPNv4) et Loopback256 (IPv4) pour le routage interne. + +### CIDR (Classless Inter-Domain Routing) +Une notation pour spécifier des plages d'adresses IP. Le format est `IP/longueur-préfixe` où la longueur du préfixe indique la taille du réseau (p. ex., `/29` = 8 adresses, `/24` = 256 adresses). + +### Gigue (Jitter) +Variation de la latence des paquets dans le temps. Une faible gigue est essentielle pour les applications en temps réel. + +### RTT (Round-Trip Time) +Le temps pour qu'un paquet voyage de la source à la destination et retour. Utilisé pour mesurer la latence réseau entre les dispositifs. + +### TWAMP (Two-Way Active Measurement Protocol) +Un protocole pour mesurer les métriques de performance réseau telles que la latence et la perte de paquets. Le [Telemetry Agent](#telemetry-agent) utilise TWAMP pour collecter des métriques entre les DZD. + +### IS-IS (Intermediate System to Intermediate System) +Un protocole de routage à état de lien utilisé en interne par le réseau DoubleZero. Les métriques IS-IS sont ajustées lors des opérations de [vidage de lien](#soft-drained). + +--- + +## Blockchain & Clés + +### On-chain +Dans le contexte DoubleZero, on-chain fait référence aux données et opérations enregistrées sur le registre DoubleZero. Contrairement aux réseaux traditionnels où les configurations des dispositifs et des liens résident dans des systèmes de gestion centralisés, DoubleZero enregistre les enregistrements de dispositifs, les configurations de liens et les soumissions de télémétrie on-chain — rendant l'état du réseau transparent et vérifiable par tous les participants. + +### Clé de Service +Une paire de clés cryptographiques utilisée pour authentifier les opérations CLI. Il s'agit de votre identité de contributeur pour interagir avec le contrat intelligent DoubleZero. Stockée dans `~/.config/solana/id.json`. + +### Clé d'Éditeur de Métriques +Une paire de clés cryptographiques utilisée par le [Telemetry Agent](#telemetry-agent) pour signer les soumissions de métriques à la blockchain. Séparée de la clé de service pour l'isolation de sécurité. Stockée dans `~/.config/doublezero/metrics-publisher.json`. + +--- + +## Matériel & Logiciel + +### EOS (Extensible Operating System) +Le système d'exploitation réseau d'Arista qui s'exécute sur les commutateurs DZD. Les contributeurs installent le [Config Agent](#config-agent) et le [Telemetry Agent](#telemetry-agent) comme extensions EOS. + +### Extension EOS +Un paquet logiciel pouvant être installé sur les commutateurs Arista EOS. Les agents DZ sont distribués sous forme de fichiers `.rpm` et installés via la commande `extension`. diff --git a/docs/glossary.it.md b/docs/glossary.it.md new file mode 100644 index 0000000..cb11ae1 --- /dev/null +++ b/docs/glossary.it.md @@ -0,0 +1,158 @@ +# Glossario +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Questa pagina definisce la terminologia specifica di DoubleZero utilizzata in tutta la documentazione. + +--- + +## Infrastruttura di Rete + +### DZD (DoubleZero Device) +L'hardware di switching di rete fisico che termina i link DoubleZero ed esegue il software DoubleZero Agent. I DZD vengono distribuiti nei data center e forniscono servizi di routing, elaborazione dei pacchetti e connettività degli utenti. Ogni DZD richiede [specifiche hardware](contribute.md#hardware-requirements) specifiche ed esegue sia il [Config Agent](#config-agent) che il [Telemetry Agent](#telemetry-agent). + +### DZX (DoubleZero Exchange) +Punti di interconnessione nella rete mesh dove diversi link dei [contributori](#contributor) vengono collegati insieme. Le DZX sono situate nelle principali aree metropolitane (es. NYC, LON, TYO) dove si verificano le intersezioni di rete. I contributori di rete devono cross-connectare i propri link nella più ampia rete DoubleZero mesh presso la DZX più vicina. Concettualmente simile a un Internet Exchange (IX). + +### WAN Link +Un link Wide Area Network tra due [DZD](#dzd-doublezero-device) operati dallo **stesso** contributore. I WAN link forniscono connettività backbone all'interno dell'infrastruttura di un singolo contributore. + +### DZX Link +Un link tra [DZD](#dzd-doublezero-device) operati da **diversi** contributori, stabilito presso una [DZX](#dzx-doublezero-exchange). I DZX link richiedono accettazione esplicita da entrambe le parti. + +### DZ Prefix +Allocazioni di indirizzi IP in formato CIDR assegnate a un [DZD](#dzd-doublezero-device) per l'indirizzamento della rete overlay. Specificato durante la [creazione del dispositivo](contribute-provisioning.md#step-32-create-your-device-onchain) usando il parametro `--dz-prefixes`. + +--- + +## Tipi di Dispositivo + +### Dispositivo Edge +Un [DZD](#dzd-doublezero-device) che fornisce connettività utente alla rete DoubleZero. I dispositivi edge sfruttano le interfacce [CYOA](#cyoa-choose-your-own-adventure) per terminare gli utenti (validatori, operatori RPC) e connetterli alla rete. + +### Dispositivo Transit +Un [DZD](#dzd-doublezero-device) che fornisce connettività backbone all'interno della rete DoubleZero. I dispositivi transit spostano il traffico tra i DZD ma non terminano direttamente le connessioni utente. + +### Dispositivo Hybrid +Un [DZD](#dzd-doublezero-device) che combina le funzionalità sia di [edge](#edge-device) che di [transit](#transit-device), fornendo sia connettività utente che routing backbone. + +--- + +## Connettività + +### CYOA (Choose Your Own Adventure) +Tipi di interfaccia che consentono ai [contributori](#contributor) di registrare opzioni di connettività per gli utenti per connettersi alla rete DoubleZero. Le interfacce CYOA includono vari metodi come [DIA](#dia-direct-internet-access), tunnel GRE e peering privato. Consulta [Creazione Interfacce CYOA](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices) per i dettagli di configurazione. + +### DIA (Direct Internet Access) +Un termine di rete standard per la connettività fornita tramite l'internet pubblico. In DoubleZero, DIA è un tipo di interfaccia [CYOA](#cyoa-choose-your-own-adventure) dove gli utenti (validatori, operatori RPC) si connettono a un [DZD](#dzd-doublezero-device) tramite la loro connessione internet esistente. + +### IBRL (Increase Bandwidth Reduce Latency) +Una modalità di connessione che consente a validatori e nodi RPC di connettersi a DoubleZero senza riavviare i propri client blockchain. IBRL utilizza l'indirizzo IP pubblico esistente e stabilisce un tunnel overlay verso il [DZD](#dzd-doublezero-device) più vicino. Consulta [Connessione Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) per le istruzioni di configurazione. + +### Multicast +Un metodo di consegna dei pacchetti one-to-many supportato da DoubleZero. La modalità multicast ha due ruoli: **publisher** (invia pacchetti attraverso la rete) e **subscriber** (riceve pacchetti dal publisher). Utilizzato dai team di sviluppo per la distribuzione efficiente dei dati. Consulta [Altra Connessione Multicast](Other%20Multicast%20Connection.md) per i dettagli di connessione. + +--- + +## Componenti Software + +### doublezerod +Il servizio daemon DoubleZero che viene eseguito sui server degli utenti (validatori, nodi RPC). Gestisce la connessione alla rete DoubleZero, gestisce la creazione dei tunnel e mantiene la connettività ai [DZD](#dzd-doublezero-device). Configurato tramite systemd e controllato attraverso la CLI [`doublezero`](#doublezero-cli). + +### doublezero (CLI) +L'interfaccia a riga di comando per interagire con la rete DoubleZero. Utilizzata per connettersi, gestire le identità, controllare lo stato ed eseguire operazioni amministrative. Comunica con il daemon [`doublezerod`](#doublezerod). + +### Config Agent +Agente software in esecuzione sui [DZD](#dzd-doublezero-device) che gestisce la configurazione del dispositivo. Legge la configurazione dal servizio [Controller](#controller) e applica le modifiche al dispositivo. Consulta [Installazione Config Agent](contribute-provisioning.md#step-44-install-config-agent) per la configurazione. + +### Telemetry Agent +Agente software in esecuzione sui [DZD](#dzd-doublezero-device) che raccoglie metriche di prestazione (latenza, jitter, perdita di pacchetti) e le invia al registro DoubleZero. Consulta [Installazione Telemetry Agent](contribute-provisioning.md#step-45-install-telemetry-agent) per la configurazione. + +### Controller +Un servizio che fornisce la configurazione agli agenti [DZD](#dzd-doublezero-device). Il Controller deriva le configurazioni dei dispositivi dallo stato [onchain](#onchain) nel registro DoubleZero. + +--- + +## Stati dei Link + +### Activated +Lo stato operativo normale di un link. Il traffico scorre attraverso il link e partecipa alle decisioni di routing. + +### Soft-Drained +Uno stato di manutenzione in cui il traffico sarà scoraggiato su un link specifico. Utilizzato per finestre di manutenzione graduali. Può passare a [activated](#activated) o [hard-drained](#hard-drained). + +### Hard-Drained +Uno stato di manutenzione in cui il link è completamente rimosso dal servizio. Nessun traffico scorre attraverso il link. Deve passare a [soft-drained](#soft-drained) prima di tornare a [activated](#activated). + +--- + +## Organizzazioni e Token + +### DZF (DoubleZero Foundation) +La DoubleZero Foundation è una società fondazionale senza soci delle Isole Cayman costituita per supportare lo sviluppo, la decentralizzazione, la sicurezza e l'adozione della rete DoubleZero. + +### Token 2Z +Il token nativo della rete DoubleZero. Utilizzato per pagare le commissioni dei validatori e distribuito come ricompense ai [contributori](#contributor). I validatori possono pagare le commissioni in 2Z tramite un programma di swap on-chain. Consulta [Pagamento Commissioni con 2Z](paying-fees2z.md) e [Scambio SOL per 2Z](Swapping-sol-to-2z.md). + +### Contributor +Un provider di infrastrutture di rete che contribuisce larghezza di banda e hardware alla rete DoubleZero. I contributori operano [DZD](#dzd-doublezero-device), forniscono link [WAN](#wan-link) e [DZX](#dzx-link), e ricevono incentivi in token [2Z](#2z-token) per il loro contributo. Consulta la [Documentazione Contributori](contribute-overview.md) per iniziare. + +--- + +## Concetti di Rete + +### MTU (Maximum Transmission Unit) +La dimensione massima del pacchetto (in byte) che può essere trasmessa su un link di rete. I WAN link DoubleZero utilizzano tipicamente MTU 9000 (jumbo frame) per l'efficienza. + +### VRF (Virtual Routing and Forwarding) +Una tecnologia che consente a più tabelle di routing isolate di esistere sullo stesso router fisico. I contributori spesso utilizzano un VRF di gestione separato per isolare il traffico di gestione degli switch dal traffico di produzione. + +### GRE (Generic Routing Encapsulation) +Un protocollo di tunneling che incapsula i pacchetti di rete all'interno di pacchetti IP. Utilizzato dalle connessioni [IBRL](#ibrl-increase-bandwidth-reduce-latency) e [CYOA](#cyoa-choose-your-own-adventure) per creare tunnel overlay tra utenti e DZD. + +### BGP (Border Gateway Protocol) +Il protocollo di routing utilizzato per lo scambio di informazioni di routing tra reti su internet. DoubleZero utilizza BGP internamente con ASN 65342. + +### ASN (Autonomous System Number) +Un identificatore univoco assegnato a una rete per il routing BGP. Tutti i dispositivi DoubleZero utilizzano **ASN 65342** per il processo BGP interno. + +### Interfaccia Loopback +Un'interfaccia di rete virtuale su un router/switch utilizzata per scopi di gestione e routing. I DZD utilizzano Loopback255 (VPNv4) e Loopback256 (IPv4) per il routing interno. + +### CIDR (Classless Inter-Domain Routing) +Una notazione per specificare gli intervalli di indirizzi IP. Il formato è `IP/lunghezza-prefisso` dove la lunghezza del prefisso indica le dimensioni della rete (es. `/29` = 8 indirizzi, `/24` = 256 indirizzi). + +### Jitter +Variazione nella latenza dei pacchetti nel tempo. Il jitter basso è fondamentale per le applicazioni in tempo reale. + +### RTT (Round-Trip Time) +Il tempo necessario a un pacchetto per viaggiare dalla sorgente alla destinazione e ritorno. Utilizzato per misurare la latenza di rete tra i dispositivi. + +### TWAMP (Two-Way Active Measurement Protocol) +Un protocollo per la misurazione delle metriche di prestazione di rete come latenza e perdita di pacchetti. Il [Telemetry Agent](#telemetry-agent) utilizza TWAMP per raccogliere metriche tra i DZD. + +### IS-IS (Intermediate System to Intermediate System) +Un protocollo di routing link-state utilizzato internamente dalla rete DoubleZero. Le metriche IS-IS vengono regolate durante le operazioni di [drenaggio dei link](#soft-drained). + +--- + +## Blockchain e Chiavi + +### Onchain +Nel contesto DoubleZero, onchain si riferisce a dati e operazioni registrati nel registro DoubleZero. A differenza delle reti tradizionali dove le configurazioni di dispositivi e link risiedono in sistemi di gestione centralizzati, DoubleZero registra le registrazioni dei dispositivi, le configurazioni dei link e le trasmissioni di telemetria onchain, rendendo lo stato della rete trasparente e verificabile da tutti i partecipanti. + +### Service Key +Un keypair crittografico utilizzato per autenticare le operazioni CLI. Questa è la tua identità di contributore per interagire con lo smart contract DoubleZero. Memorizzata in `~/.config/solana/id.json`. + +### Metrics Publisher Key +Un keypair crittografico utilizzato dal [Telemetry Agent](#telemetry-agent) per firmare le trasmissioni di metriche alla blockchain. Separata dalla service key per l'isolamento della sicurezza. Memorizzata in `~/.config/doublezero/metrics-publisher.json`. + +--- + +## Hardware e Software + +### EOS (Extensible Operating System) +Il sistema operativo di rete di Arista che viene eseguito sugli switch DZD. I contributori installano [Config Agent](#config-agent) e [Telemetry Agent](#telemetry-agent) come estensioni EOS. + +### EOS Extension +Un pacchetto software che può essere installato sugli switch Arista EOS. Gli agenti DZ vengono distribuiti come file `.rpm` e installati tramite il comando `extension`. diff --git a/docs/glossary.ja.md b/docs/glossary.ja.md new file mode 100644 index 0000000..77f1820 --- /dev/null +++ b/docs/glossary.ja.md @@ -0,0 +1,158 @@ +# 用語集 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +このページでは、ドキュメント全体で使用されるDoubleZero固有の用語を定義します。 + +--- + +## ネットワークインフラ + +### DZD(DoubleZeroデバイス) +DoubleZeroリンクを終端し、DoubleZeroエージェントソフトウェアを実行する物理ネットワークスイッチングハードウェアです。DZDはデータセンターに配備され、ルーティング、パケット処理、ユーザー接続サービスを提供します。各DZDは特定の[ハードウェア仕様](contribute.md#dzd-network-hardware)を必要とし、[Config Agent](#config-agent)と[Telemetry Agent](#telemetry-agent)の両方を実行します。 + +### DZX(DoubleZero Exchange) +異なる[コントリビューター](#contributor)リンクが橋渡しされるメッシュネットワークの相互接続点です。DZXはネットワーク交差が発生する主要な大都市圏(NYC、LON、TYOなど)に位置しています。ネットワークコントリビューターは、最寄りのDZXでより広いDoubleZeroメッシュにリンクをクロスコネクトする必要があります。概念的にはインターネットエクスチェンジ(IX)に類似しています。 + +### WANリンク +**同一**コントリビューターが運用する2つの[DZD](#dzd-doublezero-device)間のワイドエリアネットワークリンクです。WANリンクは、単一コントリビューターのインフラ内でバックボーン接続を提供します。 + +### DZXリンク +[DZX](#dzx-doublezero-exchange)において**異なる**コントリビューターが運用する[DZD](#dzd-doublezero-device)間に確立されるリンクです。DZXリンクは双方の明示的な承認が必要です。 + +### DZプレフィックス +オーバーレイネットワークアドレッシングのために[DZD](#dzd-doublezero-device)に割り当てられるCIDR形式のIPアドレス割り当てです。`--dz-prefixes`パラメーターを使用して[デバイス作成](contribute-provisioning.md#step-32-create-your-device-onchain)時に指定します。 + +--- + +## デバイスタイプ + +### エッジデバイス +ユーザーにDoubleZeroネットワークへの接続を提供する[DZD](#dzd-doublezero-device)です。エッジデバイスは[CYOA](#cyoa-choose-your-own-adventure)インターフェースを活用してユーザー(バリデーター、RPCオペレーター)を終端し、ネットワークに接続します。 + +### トランジットデバイス +DoubleZeroネットワーク内でバックボーン接続を提供する[DZD](#dzd-doublezero-device)です。トランジットデバイスはDZD間でトラフィックを移動しますが、ユーザー接続を直接終端しません。 + +### ハイブリッドデバイス +[エッジ](#edge-device)と[トランジット](#transit-device)の両機能を組み合わせ、ユーザー接続とバックボーンルーティングの両方を提供する[DZD](#dzd-doublezero-device)です。 + +--- + +## 接続性 + +### CYOA(Choose Your Own Adventure) +[コントリビューター](#contributor)がユーザーのDoubleZeroネットワーク接続オプションを登録できるインターフェースタイプです。CYOAインターフェースには、[DIA](#dia-direct-internet-access)、GREトンネル、プライベートピアリングなどのさまざまな方式が含まれます。設定の詳細は[CYOAインターフェースの作成](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices)を参照してください。 + +### DIA(Direct Internet Access) +パブリックインターネット経由で提供される接続の標準ネットワーク用語です。DoubleZeroでは、DIAはユーザー(バリデーター、RPCオペレーター)が既存のインターネット接続を通じて[DZD](#dzd-doublezero-device)に接続する[CYOA](#cyoa-choose-your-own-adventure)インターフェースタイプです。 + +### IBRL(Increase Bandwidth Reduce Latency) +バリデーターとRPCノードがブロックチェーンクライアントを再起動せずにDoubleZeroに接続できる接続モードです。IBRLは既存のパブリックIPアドレスを使用し、最寄りの[DZD](#dzd-doublezero-device)へのオーバーレイトンネルを確立します。セットアップ手順は[メインネットベータ接続](DZ%20Mainnet-beta%20Connection.md)を参照してください。 + +### マルチキャスト +DoubleZeroがサポートする1対多パケット配信方式です。マルチキャストモードには2つの役割があります:**パブリッシャー**(ネットワーク全体にパケットを送信)と**サブスクライバー**(パブリッシャーからパケットを受信)。開発チームが効率的なデータ配信に使用します。接続の詳細は[その他のマルチキャスト接続](Other%20Multicast%20Connection.md)を参照してください。 + +--- + +## ソフトウェアコンポーネント + +### doublezerod +ユーザーサーバー(バリデーター、RPCノード)で実行されるDoubleZeroデーモンサービスです。DoubleZeroネットワークへの接続を管理し、トンネル確立を処理し、[DZD](#dzd-doublezero-device)への接続を維持します。systemdで設定され、[`doublezero`](#doublezero-cli) CLIを通じて制御されます。 + +### doublezero(CLI) +DoubleZeroネットワークと対話するためのコマンドラインインターフェースです。接続、アイデンティティ管理、ステータス確認、管理操作に使用されます。[`doublezerod`](#doublezerod)デーモンと通信します。 + +### Config Agent +[DZD](#dzd-doublezero-device)上で実行されるデバイス設定管理ソフトウェアエージェントです。[コントローラー](#controller)サービスから設定を読み込み、デバイスに変更を適用します。セットアップは[Config Agentのインストール](contribute-provisioning.md#step-44-install-config-agent)を参照してください。 + +### Telemetry Agent +[DZD](#dzd-doublezero-device)上で実行されるパフォーマンスメトリクス(レイテンシ、ジッター、パケットロス)を収集し、DoubleZeroレジャーに送信するソフトウェアエージェントです。セットアップは[Telemetry Agentのインストール](contribute-provisioning.md#step-45-install-telemetry-agent)を参照してください。 + +### コントローラー +[DZD](#dzd-doublezero-device)エージェントに設定を提供するサービスです。コントローラーはDoubleZeroレジャーの[オンチェーン](#onchain)状態からデバイス設定を導出します。 + +--- + +## リンク状態 + +### アクティベート済み +リンクの通常の動作状態です。トラフィックがリンクを通じて流れ、ルーティング決定に参加します。 + +### ソフトドレイン済み +特定のリンクでトラフィックが抑制されるメンテナンス状態です。グレースフルなメンテナンスウィンドウに使用されます。[アクティベート済み](#activated)または[ハードドレイン済み](#hard-drained)に移行できます。 + +### ハードドレイン済み +リンクが完全にサービスから除外されるメンテナンス状態です。リンクを通じてトラフィックは流れません。[アクティベート済み](#activated)に戻る前に[ソフトドレイン済み](#soft-drained)に移行する必要があります。 + +--- + +## 組織・トークン + +### DZF(DoubleZero Foundation) +DoubleZero Foundationは、DoubleZeroネットワークの開発、分散化、セキュリティ、および普及を支援するために設立されたケイマン諸島のメンバーなし非営利財団会社です。 + +### 2Zトークン +DoubleZeroネットワークのネイティブトークンです。バリデーター手数料の支払いに使用され、[コントリビューター](#contributor)への報酬として配布されます。バリデーターはオンチェーンスワッププログラムを通じて2Zで手数料を支払うことができます。[2Zでの手数料支払い](paying-fees2z.md)と[SOLから2Zへのスワップ](Swapping-sol-to-2z.md)を参照してください。 + +### コントリビューター +DoubleZeroネットワークに帯域幅とハードウェアを提供するネットワークインフラプロバイダーです。コントリビューターは[DZD](#dzd-doublezero-device)を運用し、[WAN](#wan-link)および[DZX](#dzx-link)リンクを提供し、その貢献に対して[2Z](#2z-token)トークンインセンティブを受け取ります。開始するには[コントリビューターのドキュメント](contribute-overview.md)を参照してください。 + +--- + +## ネットワーキングの概念 + +### MTU(Maximum Transmission Unit) +ネットワークリンクで送信できる最大パケットサイズ(バイト単位)です。DoubleZero WANリンクは通常、効率化のためにMTU 9000(ジャンボフレーム)を使用します。 + +### VRF(Virtual Routing and Forwarding) +同一の物理ルーター上に複数の独立したルーティングテーブルを共存させる技術です。コントリビューターは、スイッチ管理トラフィックを本番トラフィックから分離するために、独立した管理VRFを使用することが多いです。 + +### GRE(Generic Routing Encapsulation) +IPパケット内にネットワークパケットをカプセル化するトンネリングプロトコルです。[IBRL](#ibrl-increase-bandwidth-reduce-latency)および[CYOA](#cyoa-choose-your-own-adventure)接続がユーザーとDZD間のオーバーレイトンネルを作成するために使用します。 + +### BGP(Border Gateway Protocol) +インターネット上のネットワーク間でルーティング情報を交換するために使用されるルーティングプロトコルです。DoubleZeroはASN 65342を使用して内部的にBGPを使用します。 + +### ASN(Autonomous System Number) +BGPルーティングのためにネットワークに割り当てられる一意の識別子です。すべてのDoubleZeroデバイスは内部BGPプロセスに**ASN 65342**を使用します。 + +### ループバックインターフェース +管理とルーティングの目的でルーター/スイッチ上に存在する仮想ネットワークインターフェースです。DZDは内部ルーティングにLoopback255(VPNv4)とLoopback256(IPv4)を使用します。 + +### CIDR(Classless Inter-Domain Routing) +IPアドレス範囲を指定するための表記法です。形式は`IP/プレフィックス長`で、プレフィックス長はネットワークサイズを示します(例:`/29` = 8アドレス、`/24` = 256アドレス)。 + +### ジッター +時間経過によるパケットレイテンシの変動です。低ジッターはリアルタイムアプリケーションに重要です。 + +### RTT(Round-Trip Time) +パケットが送信元から宛先へ、そして戻るまでの時間です。デバイス間のネットワークレイテンシを測定するために使用されます。 + +### TWAMP(Two-Way Active Measurement Protocol) +レイテンシやパケットロスなどのネットワークパフォーマンスメトリクスを測定するプロトコルです。[Telemetry Agent](#telemetry-agent)はDZD間のメトリクス収集にTWAMPを使用します。 + +### IS-IS(Intermediate System to Intermediate System) +DoubleZeroネットワーク内部で使用されるリンクステートルーティングプロトコルです。IS-ISメトリクスは[リンクドレイン](#soft-drained)操作中に調整されます。 + +--- + +## ブロックチェーン・キー + +### オンチェーン +DoubleZeroのコンテキストでは、オンチェーンとはDoubleZeroレジャーに記録されたデータと操作を指します。デバイスとリンクの設定が中央集権的な管理システムに存在する従来のネットワークとは異なり、DoubleZeroはデバイス登録、リンク設定、テレメトリ送信をオンチェーンに記録します。これにより、ネットワーク状態がすべての参加者に対して透明で検証可能になります。 + +### サービスキー +CLI操作を認証するために使用される暗号鍵ペアです。これはDoubleZeroスマートコントラクトと対話するためのコントリビューターアイデンティティです。`~/.config/solana/id.json`に保存されます。 + +### メトリクスパブリッシャーキー +[Telemetry Agent](#telemetry-agent)がブロックチェーンへのメトリクス送信に署名するために使用する暗号鍵ペアです。セキュリティの分離のためにサービスキーとは別です。`~/.config/doublezero/metrics-publisher.json`に保存されます。 + +--- + +## ハードウェア・ソフトウェア + +### EOS(Extensible Operating System) +DZDスイッチ上で実行されるAristaのネットワークオペレーティングシステムです。コントリビューターは[Config Agent](#config-agent)と[Telemetry Agent](#telemetry-agent)をEOS拡張機能としてインストールします。 + +### EOS拡張機能 +Arista EOSスイッチにインストールできるソフトウェアパッケージです。DZエージェントは`.rpm`ファイルとして配布され、`extension`コマンドを通じてインストールされます。 diff --git a/docs/glossary.ko.md b/docs/glossary.ko.md new file mode 100644 index 0000000..4b04e1e --- /dev/null +++ b/docs/glossary.ko.md @@ -0,0 +1,158 @@ +# 용어집 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +이 페이지는 문서 전반에 사용되는 DoubleZero 전용 용어를 정의합니다. + +--- + +## 네트워크 인프라 + +### DZD (DoubleZero Device) +DoubleZero 링크를 종단하고 DoubleZero 에이전트 소프트웨어를 실행하는 물리적 네트워크 스위칭 하드웨어입니다. DZD는 데이터 센터에 배포되며 라우팅, 패킷 처리 및 사용자 연결 서비스를 제공합니다. 각 DZD는 특정 [하드웨어 사양](contribute.md#dzd-network-hardware)을 필요로 하며 [Config Agent](#config-agent) 와 [Telemetry Agent](#telemetry-agent) 를 모두 실행합니다. + +### DZX (DoubleZero Exchange) +서로 다른 [기여자](#contributor) 링크가 연결되는 메시 네트워크의 상호 연결 지점입니다. DZX는 네트워크 교차점이 발생하는 주요 도시 지역(예: NYC, LON, TYO)에 위치합니다. 네트워크 기여자는 가장 가까운 DZX에서 링크를 더 광범위한 DoubleZero 메시에 크로스 커넥트해야 합니다. 인터넷 교환(IX)과 개념적으로 유사합니다. + +### WAN 링크 +**동일한** 기여자가 운영하는 두 [DZD](#dzd-doublezero-device) 간의 광역 네트워크 링크입니다. WAN 링크는 단일 기여자의 인프라 내에서 백본 연결을 제공합니다. + +### DZX 링크 +[DZX](#dzx-doublezero-exchange)에서 설정된, **서로 다른** 기여자가 운영하는 [DZD](#dzd-doublezero-device) 간의 링크입니다. DZX 링크는 양쪽 당사자의 명시적인 수락이 필요합니다. + +### DZ 프리픽스 +오버레이 네트워크 주소 지정을 위해 [DZD](#dzd-doublezero-device)에 할당된 CIDR 형식의 IP 주소 할당입니다. `--dz-prefixes` 파라미터를 사용하여 [장치 생성](contribute-provisioning.md#step-32-create-your-device-onchain) 중에 지정됩니다. + +--- + +## 장치 유형 + +### 엣지 장치 +DoubleZero 네트워크에 사용자 연결을 제공하는 [DZD](#dzd-doublezero-device)입니다. 엣지 장치는 [CYOA](#cyoa-choose-your-own-adventure) 인터페이스를 활용하여 사용자(검증자, RPC 운영자)를 종단하고 네트워크에 연결합니다. + +### 트랜짓 장치 +DoubleZero 네트워크 내에서 백본 연결을 제공하는 [DZD](#dzd-doublezero-device)입니다. 트랜짓 장치는 DZD 간에 트래픽을 이동하지만 사용자 연결을 직접 종단하지 않습니다. + +### 하이브리드 장치 +[엣지](#edge-device)와 [트랜짓](#transit-device) 기능을 모두 결합한 [DZD](#dzd-doublezero-device)로, 사용자 연결과 백본 라우팅을 모두 제공합니다. + +--- + +## 연결 + +### CYOA (Choose Your Own Adventure) +[기여자](#contributor)가 사용자가 DoubleZero 네트워크에 연결하기 위한 연결 옵션을 등록할 수 있는 인터페이스 유형입니다. CYOA 인터페이스에는 [DIA](#dia-direct-internet-access), GRE 터널, 프라이빗 피어링 등 다양한 방법이 포함됩니다. 구성 세부 정보는 [CYOA 인터페이스 생성](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices)을 참조하세요. + +### DIA (Direct Internet Access) +공용 인터넷을 통해 제공되는 연결에 대한 표준 네트워킹 용어입니다. DoubleZero에서 DIA는 사용자(검증자, RPC 운영자)가 기존 인터넷 연결을 통해 [DZD](#dzd-doublezero-device)에 연결하는 [CYOA](#cyoa-choose-your-own-adventure) 인터페이스 유형입니다. + +### IBRL (Increase Bandwidth Reduce Latency) +검증자와 RPC 노드가 블록체인 클라이언트를 재시작하지 않고 DoubleZero에 연결할 수 있는 연결 모드입니다. IBRL은 기존 공개 IP 주소를 사용하고 가장 가까운 [DZD](#dzd-doublezero-device)에 오버레이 터널을 설정합니다. 설정 지침은 [Mainnet-Beta 연결](DZ%20Mainnet-beta%20Connection.md)을 참조하세요. + +### 멀티캐스트 +DoubleZero에서 지원하는 일대다 패킷 전달 방법입니다. 멀티캐스트 모드에는 **발행자**(네트워크 전체에 패킷 전송)와 **구독자**(발행자로부터 패킷 수신)의 두 가지 역할이 있습니다. 개발 팀이 효율적인 데이터 배포를 위해 사용합니다. 연결 세부 정보는 [기타 멀티캐스트 연결](Other%20Multicast%20Connection.md)을 참조하세요. + +--- + +## 소프트웨어 구성 요소 + +### doublezerod +사용자 서버(검증자, RPC 노드)에서 실행되는 DoubleZero 데몬 서비스입니다. DoubleZero 네트워크에 대한 연결을 관리하고, 터널 설정을 처리하며, [DZD](#dzd-doublezero-device)에 대한 연결을 유지합니다. systemd를 통해 구성되고 [`doublezero`](#doublezero-cli) CLI를 통해 제어됩니다. + +### doublezero (CLI) +DoubleZero 네트워크와 상호작용하기 위한 명령줄 인터페이스입니다. 연결, 아이덴티티 관리, 상태 확인 및 관리 작업에 사용됩니다. [`doublezerod`](#doublezerod) 데몬과 통신합니다. + +### Config Agent +[DZD](#dzd-doublezero-device)에서 실행되어 장치 구성을 관리하는 소프트웨어 에이전트입니다. [컨트롤러](#controller) 서비스에서 구성을 읽고 장치에 변경사항을 적용합니다. 설정은 [Config Agent 설치](contribute-provisioning.md#step-44-install-config-agent)를 참조하세요. + +### Telemetry Agent +[DZD](#dzd-doublezero-device)에서 실행되어 성능 지표(대기 시간, 지터, 패킷 손실)를 수집하고 DoubleZero 레저에 제출하는 소프트웨어 에이전트입니다. 설정은 [Telemetry Agent 설치](contribute-provisioning.md#step-45-install-telemetry-agent)를 참조하세요. + +### 컨트롤러 +[DZD](#dzd-doublezero-device) 에이전트에 구성을 제공하는 서비스입니다. 컨트롤러는 DoubleZero 레저의 [온체인](#onchain) 상태에서 장치 구성을 도출합니다. + +--- + +## 링크 상태 + +### 활성화됨 (Activated) +링크의 정상 운영 상태입니다. 트래픽이 링크를 통해 흐르고 라우팅 결정에 참여합니다. + +### 소프트 드레인 (Soft-Drained) +특정 링크의 트래픽을 줄이는 유지보수 상태입니다. 점진적인 유지보수 창에 사용됩니다. [활성화됨](#activated) 또는 [하드 드레인](#hard-drained)으로 전환할 수 있습니다. + +### 하드 드레인 (Hard-Drained) +링크가 서비스에서 완전히 제거되는 유지보수 상태입니다. 링크를 통해 트래픽이 흐르지 않습니다. [활성화됨](#activated)으로 돌아가기 전에 [소프트 드레인](#soft-drained)으로 전환해야 합니다. + +--- + +## 조직 및 토큰 + +### DZF (DoubleZero Foundation) +DoubleZero Foundation은 DoubleZero 네트워크의 개발, 탈중앙화, 보안 및 채택을 지원하기 위해 설립된 비회원 비영리 케이맨 제도 파운데이션 컴퍼니입니다. + +### 2Z 토큰 +DoubleZero 네트워크의 네이티브 토큰입니다. 검증자 수수료 납부 및 [기여자](#contributor)에게 보상 배포에 사용됩니다. 검증자는 온체인 스왑 프로그램을 통해 2Z로 수수료를 납부할 수 있습니다. [2Z로 수수료 납부](paying-fees2z.md) 및 [SOL을 2Z로 스왑](Swapping-sol-to-2z.md)을 참조하세요. + +### 기여자 (Contributor) +DoubleZero 네트워크에 대역폭과 하드웨어를 기여하는 네트워크 인프라 제공업체입니다. 기여자는 [DZD](#dzd-doublezero-device)를 운영하고 [WAN](#wan-link) 및 [DZX](#dzx-link) 링크를 제공하며 기여에 대한 [2Z](#2z-token) 토큰 인센티브를 받습니다. 시작하려면 [기여자 문서](contribute-overview.md)를 참조하세요. + +--- + +## 네트워킹 개념 + +### MTU (Maximum Transmission Unit) +네트워크 링크를 통해 전송할 수 있는 가장 큰 패킷 크기(바이트)입니다. DoubleZero WAN 링크는 일반적으로 효율성을 위해 MTU 9000(점보 프레임)을 사용합니다. + +### VRF (Virtual Routing and Forwarding) +동일한 물리적 라우터에 여러 개의 격리된 라우팅 테이블이 존재할 수 있는 기술입니다. 기여자는 종종 별도의 관리 VRF를 사용하여 스위치 관리 트래픽을 프로덕션 트래픽으로부터 격리합니다. + +### GRE (Generic Routing Encapsulation) +IP 패킷 내에 네트워크 패킷을 캡슐화하는 터널링 프로토콜입니다. 사용자와 DZD 간에 오버레이 터널을 생성하기 위해 [IBRL](#ibrl-increase-bandwidth-reduce-latency) 및 [CYOA](#cyoa-choose-your-own-adventure) 연결에 사용됩니다. + +### BGP (Border Gateway Protocol) +인터넷의 네트워크 간 라우팅 정보 교환에 사용되는 라우팅 프로토콜입니다. DoubleZero는 ASN 65342로 내부적으로 BGP를 사용합니다. + +### ASN (Autonomous System Number) +BGP 라우팅을 위해 네트워크에 할당된 고유 식별자입니다. 모든 DoubleZero 장치는 내부 BGP 프로세스에 **ASN 65342**를 사용합니다. + +### 루프백 인터페이스 +관리 및 라우팅 목적으로 라우터/스위치에 사용되는 가상 네트워크 인터페이스입니다. DZD는 내부 라우팅에 Loopback255 (VPNv4) 및 Loopback256 (IPv4)을 사용합니다. + +### CIDR (Classless Inter-Domain Routing) +IP 주소 범위를 지정하기 위한 표기법입니다. 형식은 `IP/프리픽스-길이`이며 프리픽스 길이는 네트워크 크기를 나타냅니다(예: `/29` = 8개 주소, `/24` = 256개 주소). + +### 지터 (Jitter) +시간이 지남에 따라 패킷 대기 시간의 변동입니다. 낮은 지터는 실시간 애플리케이션에 매우 중요합니다. + +### RTT (Round-Trip Time) +패킷이 소스에서 목적지까지 이동하고 다시 돌아오는 시간입니다. 장치 간 네트워크 대기 시간을 측정하는 데 사용됩니다. + +### TWAMP (Two-Way Active Measurement Protocol) +대기 시간 및 패킷 손실과 같은 네트워크 성능 지표를 측정하기 위한 프로토콜입니다. [Telemetry Agent](#telemetry-agent)는 TWAMP를 사용하여 DZD 간의 지표를 수집합니다. + +### IS-IS (Intermediate System to Intermediate System) +DoubleZero 네트워크에서 내부적으로 사용되는 링크 상태 라우팅 프로토콜입니다. IS-IS 지표는 [링크 드레인](#soft-drained) 작업 중에 조정됩니다. + +--- + +## 블록체인 및 키 + +### 온체인 (Onchain) +DoubleZero 맥락에서 온체인은 DoubleZero 레저에 기록된 데이터와 작업을 의미합니다. 장치 및 링크 구성이 중앙화된 관리 시스템에 있는 기존 네트워크와 달리 DoubleZero는 장치 등록, 링크 구성 및 텔레메트리 제출을 온체인으로 기록하여 모든 참여자가 네트워크 상태를 투명하고 검증 가능하게 합니다. + +### 서비스 키 (Service Key) +CLI 작업을 인증하는 데 사용되는 암호화 키쌍입니다. DoubleZero 스마트 계약과 상호작용하기 위한 기여자 아이덴티티입니다. `~/.config/solana/id.json`에 저장됩니다. + +### 메트릭스 발행자 키 (Metrics Publisher Key) +블록체인에 지표 제출을 서명하기 위해 [Telemetry Agent](#telemetry-agent)가 사용하는 암호화 키쌍입니다. 보안 격리를 위해 서비스 키와 별도입니다. `~/.config/doublezero/metrics-publisher.json`에 저장됩니다. + +--- + +## 하드웨어 및 소프트웨어 + +### EOS (Extensible Operating System) +DZD 스위치에서 실행되는 Arista의 네트워크 운영 체제입니다. 기여자는 [Config Agent](#config-agent) 및 [Telemetry Agent](#telemetry-agent)를 EOS 확장으로 설치합니다. + +### EOS 확장 +Arista EOS 스위치에 설치할 수 있는 소프트웨어 패키지입니다. DZ 에이전트는 `.rpm` 파일로 배포되며 `extension` 명령을 통해 설치됩니다. diff --git a/docs/glossary.pt.md b/docs/glossary.pt.md new file mode 100644 index 0000000..3d1391e --- /dev/null +++ b/docs/glossary.pt.md @@ -0,0 +1,158 @@ +# Glossário +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Esta página define a terminologia específica do DoubleZero usada em toda a documentação. + +--- + +## Infraestrutura de Rede + +### DZD (Dispositivo DoubleZero) +O hardware de switching de rede físico que termina links DoubleZero e executa o software DoubleZero Agent. Os DZDs são implantados em data centers e fornecem serviços de roteamento, processamento de pacotes e conectividade de usuários. Cada DZD requer [especificações de hardware](contribute.md#dzd-network-hardware) específicas e executa tanto o [Config Agent](#config-agent) quanto o [Telemetry Agent](#telemetry-agent). + +### DZX (DoubleZero Exchange) +Pontos de interconexão na rede mesh onde diferentes links de [contribuidores](#contributor) são conectados. Os DZXs estão localizados nas principais áreas metropolitanas (por exemplo, NYC, LON, TYO) onde ocorrem interseções de rede. Os contribuidores de rede devem fazer cross-connect de seus links na mesh DoubleZero mais ampla no DZX mais próximo. Semelhante em conceito a um Internet Exchange (IX). + +### Link WAN +Um link de Wide Area Network entre dois [DZDs](#dzd-doublezero-device) operados pelo **mesmo** contribuidor. Os links WAN fornecem conectividade de backbone dentro da infraestrutura de um único contribuidor. + +### Link DZX +Um link entre [DZDs](#dzd-doublezero-device) operados por **diferentes** contribuidores, estabelecido em um [DZX](#dzx-doublezero-exchange). Os links DZX requerem aceitação explícita de ambas as partes. + +### Prefixo DZ +Alocações de endereços IP em formato CIDR atribuídas a um [DZD](#dzd-doublezero-device) para endereçamento de rede overlay. Especificado durante a [criação de dispositivos](contribute-provisioning.md#step-32-create-your-device-onchain) usando o parâmetro `--dz-prefixes`. + +--- + +## Tipos de Dispositivos + +### Dispositivo de Borda +Um [DZD](#dzd-doublezero-device) que fornece conectividade de usuários à rede DoubleZero. Os dispositivos de borda utilizam interfaces [CYOA](#cyoa-choose-your-own-adventure) para terminar usuários (validadores, operadores de RPC) e conectá-los à rede. + +### Dispositivo de Trânsito +Um [DZD](#dzd-doublezero-device) que fornece conectividade de backbone dentro da rede DoubleZero. Os dispositivos de trânsito movem tráfego entre DZDs, mas não terminam conexões de usuários diretamente. + +### Dispositivo Híbrido +Um [DZD](#dzd-doublezero-device) que combina funcionalidade de [borda](#edge-device) e [trânsito](#transit-device), fornecendo tanto conectividade de usuários quanto roteamento de backbone. + +--- + +## Conectividade + +### CYOA (Choose Your Own Adventure) +Tipos de interface que permitem aos [contribuidores](#contributor) registrar opções de conectividade para que os usuários se conectem à rede DoubleZero. As interfaces CYOA incluem vários métodos como [DIA](#dia-direct-internet-access), túneis GRE e peering privado. Consulte [Criando Interfaces CYOA](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices) para detalhes de configuração. + +### DIA (Acesso Direto à Internet) +Um termo de rede padrão para conectividade fornecida pela internet pública. No DoubleZero, DIA é um tipo de interface [CYOA](#cyoa-choose-your-own-adventure) onde os usuários (validadores, operadores de RPC) se conectam a um [DZD](#dzd-doublezero-device) pela sua conexão de internet existente. + +### IBRL (Increase Bandwidth Reduce Latency) +Um modo de conexão que permite que validadores e nós RPC se conectem ao DoubleZero sem reiniciar seus clientes blockchain. O IBRL usa o endereço IP público existente e estabelece um túnel overlay para o [DZD](#dzd-doublezero-device) mais próximo. Consulte [Conexão Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) para instruções de configuração. + +### Multicast +Um método de entrega de pacotes um-para-muitos suportado pelo DoubleZero. O modo multicast tem dois papéis: **publicador** (envia pacotes pela rede) e **assinante** (recebe pacotes do publicador). Usado por equipes de desenvolvimento para distribuição eficiente de dados. Consulte [Outra Conexão Multicast](Other%20Multicast%20Connection.md) para detalhes de conexão. + +--- + +## Componentes de Software + +### doublezerod +O serviço daemon do DoubleZero que é executado em servidores de usuários (validadores, nós RPC). Ele gerencia a conexão com a rede DoubleZero, lida com o estabelecimento de túneis e mantém a conectividade com os [DZDs](#dzd-doublezero-device). Configurado via systemd e controlado pelo CLI [`doublezero`](#doublezero-cli). + +### doublezero (CLI) +A interface de linha de comando para interagir com a rede DoubleZero. Usada para conectar, gerenciar identidades, verificar status e operações administrativas. Comunica-se com o daemon [`doublezerod`](#doublezerod). + +### Config Agent +Agente de software executado nos [DZDs](#dzd-doublezero-device) que gerencia a configuração do dispositivo. Lê a configuração do serviço [Controller](#controller) e aplica mudanças ao dispositivo. Consulte [Instalação do Config Agent](contribute-provisioning.md#step-44-install-config-agent) para configuração. + +### Telemetry Agent +Agente de software executado nos [DZDs](#dzd-doublezero-device) que coleta métricas de desempenho (latência, jitter, perda de pacotes) e as envia ao ledger DoubleZero. Consulte [Instalação do Telemetry Agent](contribute-provisioning.md#step-45-install-telemetry-agent) para configuração. + +### Controller +Um serviço que fornece configuração para agentes [DZD](#dzd-doublezero-device). O Controller deriva as configurações do dispositivo a partir do estado [onchain](#onchain) no ledger DoubleZero. + +--- + +## Estados de Link + +### Ativado +O estado operacional normal de um link. O tráfego flui pelo link e ele participa das decisões de roteamento. + +### Drenagem Suave +Um estado de manutenção onde o tráfego será desencorajado em um link específico. Usado para janelas de manutenção gradual. Pode transitar para [ativado](#activated) ou [drenagem rígida](#hard-drained). + +### Drenagem Rígida +Um estado de manutenção onde o link é completamente removido do serviço. Nenhum tráfego flui pelo link. Deve transitar para [drenagem suave](#soft-drained) antes de retornar para [ativado](#activated). + +--- + +## Organizações e Tokens + +### DZF (DoubleZero Foundation) +A DoubleZero Foundation é uma empresa de fundação sem membros nas Ilhas Cayman, sem fins lucrativos, formada para apoiar o desenvolvimento, descentralização, segurança e adoção da rede DoubleZero. + +### Token 2Z +O token nativo da rede DoubleZero. Usado para pagar taxas de validadores e distribuído como recompensas aos [contribuidores](#contributor). Os validadores podem pagar taxas em 2Z via um programa de swap onchain. Consulte [Pagando Taxas com 2Z](paying-fees2z.md) e [Trocando SOL por 2Z](Swapping-sol-to-2z.md). + +### Contribuidor +Um provedor de infraestrutura de rede que contribui com largura de banda e hardware para a rede DoubleZero. Os contribuidores operam [DZDs](#dzd-doublezero-device), fornecem links [WAN](#wan-link) e [DZX](#dzx-link) e recebem incentivos em tokens [2Z](#2z-token) por sua contribuição. Consulte a [Documentação para Contribuidores](contribute-overview.md) para começar. + +--- + +## Conceitos de Rede + +### MTU (Unidade Máxima de Transmissão) +O maior tamanho de pacote (em bytes) que pode ser transmitido por um link de rede. Os links WAN do DoubleZero normalmente usam MTU 9000 (jumbo frames) para eficiência. + +### VRF (Virtual Routing and Forwarding) +Uma tecnologia que permite que múltiplas tabelas de roteamento isoladas existam no mesmo roteador físico. Os contribuidores frequentemente usam um VRF de gerenciamento separado para isolar o tráfego de gerenciamento do switch do tráfego de produção. + +### GRE (Generic Routing Encapsulation) +Um protocolo de tunelamento que encapsula pacotes de rede dentro de pacotes IP. Usado por conexões [IBRL](#ibrl-increase-bandwidth-reduce-latency) e [CYOA](#cyoa-choose-your-own-adventure) para criar túneis overlay entre usuários e DZDs. + +### BGP (Border Gateway Protocol) +O protocolo de roteamento usado para trocar informações de roteamento entre redes na internet. O DoubleZero usa BGP internamente com ASN 65342. + +### ASN (Número de Sistema Autônomo) +Um identificador único atribuído a uma rede para roteamento BGP. Todos os dispositivos DoubleZero usam **ASN 65342** para o processo BGP interno. + +### Interface Loopback +Uma interface de rede virtual em um roteador/switch usada para fins de gerenciamento e roteamento. Os DZDs usam Loopback255 (VPNv4) e Loopback256 (IPv4) para roteamento interno. + +### CIDR (Roteamento Inter-Domínio sem Classe) +Uma notação para especificar intervalos de endereços IP. O formato é `IP/comprimento-prefixo` onde o comprimento do prefixo indica o tamanho da rede (por exemplo, `/29` = 8 endereços, `/24` = 256 endereços). + +### Jitter +Variação na latência de pacotes ao longo do tempo. Baixo jitter é crítico para aplicações em tempo real. + +### RTT (Round-Trip Time) +O tempo para um pacote viajar da origem ao destino e de volta. Usado para medir a latência de rede entre dispositivos. + +### TWAMP (Protocolo de Medição Ativa Bidirecional) +Um protocolo para medir métricas de desempenho de rede como latência e perda de pacotes. O [Telemetry Agent](#telemetry-agent) usa TWAMP para coletar métricas entre DZDs. + +### IS-IS (Intermediate System to Intermediate System) +Um protocolo de roteamento de estado de link usado internamente pela rede DoubleZero. As métricas IS-IS são ajustadas durante operações de [drenagem de link](#soft-drained). + +--- + +## Blockchain e Chaves + +### Onchain +No contexto do DoubleZero, onchain refere-se a dados e operações registrados no ledger DoubleZero. Ao contrário das redes tradicionais onde as configurações de dispositivos e links vivem em sistemas de gerenciamento centralizados, o DoubleZero registra registros de dispositivos, configurações de links e envios de telemetria onchain — tornando o estado da rede transparente e verificável por todos os participantes. + +### Chave de Serviço +Um keypair criptográfico usado para autenticar operações do CLI. Esta é a sua identidade de contribuidor para interagir com o contrato inteligente do DoubleZero. Armazenada em `~/.config/solana/id.json`. + +### Chave do Editor de Métricas +Um keypair criptográfico usado pelo [Telemetry Agent](#telemetry-agent) para assinar envios de métricas à blockchain. Separada da chave de serviço para isolamento de segurança. Armazenada em `~/.config/doublezero/metrics-publisher.json`. + +--- + +## Hardware e Software + +### EOS (Extensible Operating System) +O sistema operacional de rede da Arista que é executado nos switches DZD. Os contribuidores instalam o [Config Agent](#config-agent) e o [Telemetry Agent](#telemetry-agent) como extensões EOS. + +### Extensão EOS +Um pacote de software que pode ser instalado em switches Arista EOS. Os agentes DZ são distribuídos como arquivos `.rpm` e instalados via o comando `extension`. diff --git a/docs/glossary.zh.md b/docs/glossary.zh.md new file mode 100644 index 0000000..65af66d --- /dev/null +++ b/docs/glossary.zh.md @@ -0,0 +1,158 @@ +# 词汇表 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +本页面定义了文档中使用的DoubleZero专用术语。 + +--- + +## 网络基础设施 + +### DZD(DoubleZero设备) +终止DoubleZero链路并运行DoubleZero代理软件的物理网络交换硬件。DZD部署在数据中心,提供路由、数据包处理和用户连接服务。每个DZD需要特定的[硬件规格](contribute.md#dzd-network-hardware),并同时运行[配置代理](#config-agent)和[遥测代理](#telemetry-agent)。 + +### DZX(DoubleZero交换点) +网状网络中不同[贡献者](#contributor)链路相互桥接的互连点。DZX位于发生网络交叉的主要都市区(如纽约、伦敦、东京)。网络贡献者必须在最近的DZX将其链路交叉连接到更广泛的DoubleZero网状网络。概念上类似于互联网交换点(IX)。 + +### WAN链路 +由**同一**贡献者运营的两个[DZD](#dzd-doublezero-device)之间的广域网链路。WAN链路在单个贡献者的基础设施内提供骨干连接。 + +### DZX链路 +由**不同**贡献者运营的[DZD](#dzd-doublezero-device)之间在[DZX](#dzx-doublezero-exchange)建立的链路。DZX链路需要双方明确接受。 + +### DZ前缀 +以CIDR格式分配给[DZD](#dzd-doublezero-device)的IP地址分配,用于覆盖网络寻址。在[设备创建](contribute-provisioning.md#step-32-create-your-device-onchain)时使用`--dz-prefixes`参数指定。 + +--- + +## 设备类型 + +### 边缘设备 +为DoubleZero网络提供用户连接的[DZD](#dzd-doublezero-device)。边缘设备利用[CYOA](#cyoa-choose-your-own-adventure)接口终止用户(验证器、RPC运营商)并将其连接到网络。 + +### 中转设备 +在DoubleZero网络内提供骨干连接的[DZD](#dzd-doublezero-device)。中转设备在DZD之间传输流量,但不直接终止用户连接。 + +### 混合设备 +结合[边缘](#edge-device)和[中转](#transit-device)功能的[DZD](#dzd-doublezero-device),同时提供用户连接和骨干路由。 + +--- + +## 连接性 + +### CYOA(自选冒险) +允许[贡献者](#contributor)为用户注册连接选项以连接到DoubleZero网络的接口类型。CYOA接口包括[DIA](#dia-direct-internet-access)、GRE隧道和私有对等互联等各种方法。有关配置详情,请参阅[创建CYOA接口](contribute-provisioning.md#step-35-create-cyoa-interface-for-edgehybrid-devices)。 + +### DIA(直接互联网访问) +通过公共互联网提供连接的标准网络术语。在DoubleZero中,DIA是一种[CYOA](#cyoa-choose-your-own-adventure)接口类型,用户(验证器、RPC运营商)通过其现有互联网连接连接到[DZD](#dzd-doublezero-device)。 + +### IBRL(增加带宽减少延迟) +允许验证器和RPC节点在不重启区块链客户端的情况下连接到DoubleZero的连接模式。IBRL使用现有公共IP地址,并建立到最近[DZD](#dzd-doublezero-device)的覆盖隧道。有关设置说明,请参阅[主网Beta连接](DZ%20Mainnet-beta%20Connection.md)。 + +### 多播 +DoubleZero支持的一对多数据包传送方法。多播模式有两种角色:**发布者**(跨网络发送数据包)和**订阅者**(从发布者接收数据包)。开发团队使用此方式进行高效的数据分发。有关连接详情,请参阅[其他多播连接](Other%20Multicast%20Connection.md)。 + +--- + +## 软件组件 + +### doublezerod +运行在用户服务器(验证器、RPC节点)上的DoubleZero守护程序服务。它管理到DoubleZero网络的连接、处理隧道建立,并维持与[DZD](#dzd-doublezero-device)的连接。通过systemd配置,并通过[`doublezero`](#doublezero-cli) CLI控制。 + +### doublezero(CLI) +用于与DoubleZero网络交互的命令行界面。用于连接、管理身份、检查状态和行政操作。与[`doublezerod`](#doublezerod)守护程序通信。 + +### 配置代理 +运行在[DZD](#dzd-doublezero-device)上的软件代理,管理设备配置。从[控制器](#controller)服务读取配置并将更改应用到设备。有关设置,请参阅[配置代理安装](contribute-provisioning.md#step-44-install-config-agent)。 + +### 遥测代理 +运行在[DZD](#dzd-doublezero-device)上的软件代理,收集性能指标(延迟、抖动、丢包)并将其提交到DoubleZero账本。有关设置,请参阅[遥测代理安装](contribute-provisioning.md#step-45-install-telemetry-agent)。 + +### 控制器 +向[DZD](#dzd-doublezero-device)代理提供配置的服务。控制器从DoubleZero账本上的[链上](#onchain)状态派生设备配置。 + +--- + +## 链路状态 + +### 已激活 +链路的正常运行状态。流量通过链路流动,并参与路由决策。 + +### 软清空 +流量将在特定链路上被阻止的维护状态。用于优雅的维护窗口。可以过渡到[已激活](#activated)或[硬清空](#hard-drained)。 + +### 硬清空 +链路完全从服务中移除的维护状态。没有流量通过链路。必须先过渡到[软清空](#soft-drained)才能返回到[已激活](#activated)。 + +--- + +## 组织与代币 + +### DZF(DoubleZero基金会) +DoubleZero基金会是一个无成员的非营利开曼群岛基金会公司,成立目的是支持DoubleZero网络的开发、去中心化、安全性和采用。 + +### 2Z代币 +DoubleZero网络的原生代币。用于支付验证器费用并作为奖励分配给[贡献者](#contributor)。验证器可以通过链上兑换程序以2Z支付费用。请参阅[使用2Z支付费用](paying-fees2z.md)和[将SOL兑换为2Z](Swapping-sol-to-2z.md)。 + +### 贡献者 +向DoubleZero网络贡献带宽和硬件的网络基础设施提供商。贡献者运营[DZD](#dzd-doublezero-device),提供[WAN](#wan-link)和[DZX](#dzx-link)链路,并因其贡献而获得[2Z](#2z-token)代币激励。请参阅[贡献者文档](contribute-overview.md)以开始。 + +--- + +## 网络概念 + +### MTU(最大传输单元) +可以通过网络链路传输的最大数据包大小(以字节为单位)。DoubleZero WAN链路通常使用MTU 9000(巨型帧)以提高效率。 + +### VRF(虚拟路由和转发) +允许同一物理路由器上存在多个隔离路由表的技术。贡献者通常使用单独的管理VRF将交换机管理流量与生产流量隔离。 + +### GRE(通用路由封装) +将网络数据包封装在IP数据包内的隧道协议。[IBRL](#ibrl-increase-bandwidth-reduce-latency)和[CYOA](#cyoa-choose-your-own-adventure)连接使用GRE在用户和DZD之间创建覆盖隧道。 + +### BGP(边界网关协议) +用于在互联网上的网络之间交换路由信息的路由协议。DoubleZero内部使用BGP,ASN为65342。 + +### ASN(自治系统号) +分配给网络用于BGP路由的唯一标识符。所有DoubleZero设备使用**ASN 65342**作为内部BGP进程。 + +### 环回接口 +路由器/交换机上用于管理和路由目的的虚拟网络接口。DZD使用Loopback255(VPNv4)和Loopback256(IPv4)进行内部路由。 + +### CIDR(无类别域间路由) +指定IP地址范围的表示法。格式为`IP/前缀长度`,其中前缀长度表示网络大小(如`/29` = 8个地址,`/24` = 256个地址)。 + +### 抖动 +随时间变化的数据包延迟变化。低抖动对于实时应用至关重要。 + +### RTT(往返时间) +数据包从源到目的地再返回所需的时间。用于测量设备之间的网络延迟。 + +### TWAMP(双向主动测量协议) +用于测量延迟和丢包等网络性能指标的协议。[遥测代理](#telemetry-agent)使用TWAMP收集DZD之间的指标。 + +### IS-IS(中间系统到中间系统) +DoubleZero网络内部使用的链路状态路由协议。在[链路清空](#soft-drained)操作期间调整IS-IS指标。 + +--- + +## 区块链与密钥 + +### 链上 +在DoubleZero语境中,链上指记录在DoubleZero账本上的数据和操作。与传统网络中设备和链路配置存在于集中式管理系统不同,DoubleZero将设备注册、链路配置和遥测提交记录在链上——使所有参与者都能透明和可验证地了解网络状态。 + +### 服务密钥 +用于验证CLI操作的加密密钥对。这是您与DoubleZero智能合约交互的贡献者身份。存储于`~/.config/solana/id.json`。 + +### 指标发布者密钥 +[遥测代理](#telemetry-agent)用于签署向区块链提交指标的加密密钥对。与服务密钥分开,以实现安全隔离。存储于`~/.config/doublezero/metrics-publisher.json`。 + +--- + +## 硬件与软件 + +### EOS(可扩展操作系统) +运行在DZD交换机上的Arista网络操作系统。贡献者将[配置代理](#config-agent)和[遥测代理](#telemetry-agent)作为EOS扩展安装。 + +### EOS扩展 +可以安装在Arista EOS交换机上的软件包。DZ代理以`.rpm`文件形式分发,通过`extension`命令安装。 diff --git a/docs/index.es.md b/docs/index.es.md new file mode 100644 index 0000000..12e279c --- /dev/null +++ b/docs/index.es.md @@ -0,0 +1,36 @@ +# Bienvenido a DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero es un protocolo y red descentralizada de alto rendimiento, optimizado para sistemas distribuidos como las blockchains. Los usuarios de DoubleZero disfrutan de un servicio integrado para la transmisión y preprocesamiento altamente optimizados de datos de sistemas distribuidos. + +## ¿Para quién es DoubleZero? + +### Contribuidores + +Los contribuidores de DoubleZero disponen de capacidad de red en forma de enlaces de fibra privada y hardware subutilizados (por ejemplo, switches y dispositivos FPGA). Configurar estos recursos para extender la red DoubleZero crea un servicio de información integrado. Usando el protocolo DZ, los contribuidores de red unen esta capacidad en una malla global dinámica y expansiva, y reciben incentivos en tokens por su contribución. + +### Usuarios + +Los usuarios de DoubleZero participan en sistemas distribuidos, como blockchains, que requieren conectividad de red de alto rendimiento. Al interconectar un sistema blockchain con DoubleZero, los usuarios obtienen un conjunto de funciones de optimización para acelerar su E/S de red. + +En su implementación inicial, la red DoubleZero es compatible con clientes validadores de blockchain, así como con proveedores de infraestructura RPC y MEV. Estos sistemas de usuario pasan por un control de admisión que verifica sus direcciones de clave pública únicas en sus respectivos ledgers antes de permitirles el acceso a la red. A medida que la red evolucione para incluir sistemas de usuario de otros ecosistemas, se añadirán estrategias adicionales de identificación y autenticación adaptadas a cada comunidad de proyecto. + +## Beneficios + +La única alternativa a DoubleZero es la internet pública. En comparación con la internet pública, la red DoubleZero ofrece dos mejoras para las blockchains. + +*Primero*, las transacciones entrantes pueden ser filtradas en el borde de forma no discrecional a nivel del hardware del contribuidor de red (es decir, eliminación de spam y duplicados) antes de enviarse a los usuarios (por ejemplo, nodos blockchain) de la red DoubleZero. Esto permite que las blockchains se beneficien de recursos de filtrado compartidos a nivel del sistema, en lugar de que cada validador individual tenga que aprovisionar recursos suficientes. Como resultado, los validadores pueden reasignar sus recursos hacia actividades que generen ingresos directamente. Esta función aún no está disponible. + +*Segundo*, los mensajes salientes se enrutan de forma más directa y se priorizan para mejorar la eficiencia. Esto es posible ya que en DoubleZero la lógica de enrutamiento del movimiento global de datos está optimizada para la velocidad, a diferencia de la internet pública. Así, los validadores se benefician de un menor jitter, definido como la cantidad de variación en la latencia entre dos extremos de un cable de datos. En esencia, los nodos blockchain pueden enviar y recibir bloques más rápidamente. + +En conjunto, estos beneficios de la red DoubleZero pueden alcanzar niveles de rendimiento que de otro modo serían inalcanzables a través de la internet pública. + +Para más detalles, consulte el whitepaper del [Protocolo DoubleZero](https://doublezero.xyz/whitepaper.pdf). + + +## Próximos Pasos + +* *Para Usuarios* - Comience con nuestro [Asistente de Conexión Rápida](quick-connect.md) para crear una configuración personalizada según el tipo de usuario, o vaya directamente a la [configuración inicial](setup.md) y siga el flujo de configuración manualmente. +* *Para Contribuidores* - Vea cómo [Contribuir](contribute-overview.md) capacidad adicional para hacer crecer la red DoubleZero. +* *Más Información* - Lea más sobre la [Arquitectura](architecture.md) de la red DoubleZero. diff --git a/docs/index.fr.md b/docs/index.fr.md new file mode 100644 index 0000000..34c06ba --- /dev/null +++ b/docs/index.fr.md @@ -0,0 +1,36 @@ +# Bienvenue sur DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero est un protocole et un réseau décentralisé haute performance, optimisé pour les systèmes distribués, tels que les blockchains. Les utilisateurs de DoubleZero bénéficient d'un service intégré pour la transmission et le prétraitement hautement optimisés des données des systèmes distribués. + +## À qui s'adresse DoubleZero ? + +### Contributeurs + +Les contributeurs DoubleZero disposent d'une capacité réseau sous forme de liens fibre privés sous-utilisés et de matériel (par exemple, des commutateurs et des dispositifs FPGA). La configuration de ces ressources pour étendre le réseau DoubleZero crée un service d'information intégré. En utilisant le protocole DZ, les contributeurs réseau assemblent cette capacité réseau en un réseau maillé mondial dynamique et expansif, et reçoivent des incitations en tokens pour leur contribution. + +### Utilisateurs + +Les utilisateurs DoubleZero participent à des systèmes distribués, tels que les blockchains, qui nécessitent une connectivité réseau haute performance. En interconnectant un système blockchain avec DoubleZero, les utilisateurs bénéficient d'un ensemble de fonctionnalités d'optimisation pour accélérer leurs entrées/sorties réseau. + +Dans son implémentation initiale, le réseau DoubleZero est compatible avec les clients validateurs blockchain ainsi que les fournisseurs d'infrastructure RPC et MEV. Ces systèmes utilisateurs subissent un contrôle d'admission en vérifiant leurs adresses de clé publique d'identification unique sur leurs registres respectifs avant de leur permettre d'accéder au réseau. Au fur et à mesure que le réseau évolue pour inclure des systèmes utilisateurs d'autres écosystèmes, des stratégies d'identification et d'authentification supplémentaires seront ajoutées, adaptées à chaque communauté de projets utilisateurs. + +## Avantages + +La seule alternative à DoubleZero est l'internet public. Par rapport à l'internet public, le réseau DoubleZero offre deux améliorations aux blockchains. + +*Premièrement*, les transactions entrantes peuvent être filtrées en périphérie de manière non discrétionnaire au niveau du matériel du contributeur réseau (c'est-à-dire la suppression du spam et des doublons) avant d'être envoyées aux utilisateurs (par exemple, les nœuds blockchain) du réseau DoubleZero. Cela permet aux blockchains de bénéficier de ressources de filtration partagées à l'échelle du système plutôt que d'exiger que chaque validateur individuel provisionne des ressources suffisantes. En conséquence, les validateurs peuvent réaffecter leurs ressources vers des activités directement génératrices de revenus. Cette fonctionnalité n'est pas encore opérationnelle. + +*Deuxièmement*, les messages sortants sont acheminés de manière plus directe et priorisés pour améliorer l'efficacité. Cela est possible car dans DoubleZero, la logique de routage du mouvement global des données est optimisée pour la vitesse, contrairement à l'internet public. Ainsi, les validateurs bénéficient d'une réduction de la gigue, définie comme la variation de latence entre deux extrémités de câble de données. En substance, les nœuds blockchain peuvent envoyer et recevoir des blocs plus rapidement. + +Pris ensemble, ces avantages du réseau DoubleZero peuvent atteindre des niveaux de performance autrement inaccessibles via l'internet public. + +Pour plus de détails, consultez le livre blanc [DoubleZero Protocol](https://doublezero.xyz/whitepaper.pdf). + + +## Prochaines Étapes + +* *Pour les Utilisateurs* - Commencez par notre [Assistant de Connexion Rapide](quick-connect.md) pour créer un guide de configuration personnalisé basé sur le type d'utilisateur, ou allez directement à la [configuration initiale](setup.md) et suivez le flux de configuration manuellement. +* *Pour les Contributeurs* - Découvrez comment [Contribuer](contribute-overview.md) à une capacité supplémentaire pour développer davantage le réseau DoubleZero. +* *Plus d'Informations* - En savoir plus sur les composants de l'[Architecture](architecture.md) du réseau DoubleZero. diff --git a/docs/index.it.md b/docs/index.it.md new file mode 100644 index 0000000..9f98140 --- /dev/null +++ b/docs/index.it.md @@ -0,0 +1,36 @@ +# Benvenuti in DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero è un protocollo e una rete decentralizzati ad alte prestazioni, ottimizzati per i sistemi distribuiti, come le blockchain. Gli utenti di DoubleZero beneficiano di un servizio integrato per la trasmissione altamente ottimizzata e il pre-processing dei dati dei sistemi distribuiti. + +## A chi è destinato DoubleZero? + +### Contributori + +I contributori di DoubleZero dispongono di capacità di rete sotto forma di link in fibra privati sottoutilizzati e hardware (es. switch e dispositivi FPGA). La configurazione di queste risorse per estendere la rete DoubleZero crea un servizio informativo integrato. Utilizzando il protocollo DZ, i contributori di rete uniscono questa capacità in una rete mesh globale dinamica ed espansiva e ricevono incentivi in token per il loro contributo. + +### Utenti + +Gli utenti di DoubleZero partecipano a sistemi distribuiti, come le blockchain, che richiedono connettività di rete ad alte prestazioni. Collegando un sistema blockchain a DoubleZero, gli utenti ottengono un insieme di funzionalità di ottimizzazione per accelerare gli I/O di rete. + +Nella sua implementazione iniziale, la rete DoubleZero è compatibile con i client validatori blockchain, nonché con i provider di infrastrutture RPC e MEV. Questi sistemi utente vengono sottoposti al controllo degli accessi verificando i loro indirizzi di chiave pubblica univoci sui rispettivi registri prima di consentire l'accesso alla rete. Man mano che la rete evolve per includere sistemi utente di altri ecosistemi, verranno aggiunte strategie di identificazione e autenticazione aggiuntive, personalizzate per ciascuna comunità di progetti utenti. + +## Vantaggi + +L'unica alternativa a DoubleZero è l'internet pubblico. Rispetto all'internet pubblico, la rete DoubleZero offre due miglioramenti per le blockchain. + +*Primo*, le transazioni in entrata possono essere filtrate al margine in modo non discrezionale a livello hardware del contributore di rete (cioè rimozione di spam e duplicati) prima di essere inviate agli utenti (es. nodi blockchain) della rete DoubleZero. Ciò consente alle blockchain di beneficiare di risorse di filtraggio condivise a livello di sistema, anziché richiedere a ogni singolo validatore di fornire risorse sufficienti. Di conseguenza, i validatori possono riallocare le proprie risorse verso attività direttamente generatrici di ricavi. Questa funzionalità non è ancora operativa. + +*Secondo*, i messaggi in uscita vengono instradati in modo più diretto e prioritizzati per migliorare l'efficienza. Ciò è possibile perché in DoubleZero la logica di instradamento del movimento dati globale è ottimizzata per la velocità, a differenza dell'internet pubblico. Pertanto, i validatori beneficiano di un jitter ridotto, definito come la quantità di variazione nella latenza tra due endpoint di cavo dati. In sostanza, i nodi blockchain possono inviare e ricevere blocchi più velocemente. + +Complessivamente, questi vantaggi della rete DoubleZero possono raggiungere livelli di prestazioni altrimenti irraggiungibili tramite l'internet pubblico. + +Per ulteriori dettagli, consultare il whitepaper [DoubleZero Protocol](https://doublezero.xyz/whitepaper.pdf). + + +## Prossimi Passi + +* *Per gli Utenti* - Inizia con il nostro [Wizard di Connessione Rapida](quick-connect.md) per creare una guida di configurazione personalizzata in base al tipo di utente, oppure vai direttamente alla [configurazione iniziale](setup.md) e segui il flusso di configurazione manualmente. +* *Per i Contributori* - Scopri come [Contribuire](contribute-overview.md) capacità aggiuntiva per far crescere ulteriormente la rete DoubleZero. +* *Ulteriori Informazioni* - Leggi di più su cosa costituisce l'[Architettura](architecture.md) della rete DoubleZero. diff --git a/docs/index.ja.md b/docs/index.ja.md new file mode 100644 index 0000000..813acf0 --- /dev/null +++ b/docs/index.ja.md @@ -0,0 +1,36 @@ +# DoubleZeroへようこそ +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZeroは、ブロックチェーンのような分散システム向けに最適化された、高性能な分散型プロトコルとネットワークです。DoubleZeroのユーザーは、分散システムデータの高度に最適化された送信と前処理のための統合サービスを享受できます。 + +## DoubleZeroの対象者 + +### コントリビューター + +DoubleZeroコントリビューターは、未活用のプライベートファイバーリンクとハードウェア(スイッチやFPGAデバイスなど)という形でネットワーク容量を持っています。これらのリソースを構成してDoubleZeroネットワークを拡張することで、統合情報サービスが作成されます。DZプロトコルを使用して、ネットワークコントリビューターはこのネットワーク容量を動的で広大なグローバルメッシュネットワークに組み込み、貢献に対してトークンインセンティブを受け取ります。 + +### ユーザー + +DoubleZeroユーザーは、高性能なネットワーク接続を必要とするブロックチェーンなどの分散システムに参加しています。DoubleZeroとブロックチェーンシステムを相互接続することで、ユーザーはネットワークI/Oを加速するための最適化機能のバンドルを獲得します。 + +初期実装では、DoubleZeroネットワークはブロックチェーンバリデータークライアント、RPCおよびMEVインフラプロバイダーと互換性があります。これらのユーザーシステムは、それぞれのレジャー上の固有の識別公開鍵アドレスを確認することでネットワークへのアクセスを許可する前に入場制御を受けます。ネットワークが他のエコシステムからのユーザーシステムを含むよう進化するにつれて、各ユーザープロジェクトコミュニティに合わせた追加の識別および認証戦略が追加されます。 + +## メリット + +DoubleZeroの唯一の代替手段は公共インターネットです。公共インターネットと比較して、DoubleZeroネットワークはブロックチェーンに2つの改善を提供します。 + +*第一に*、受信トランザクションはDoubleZeroネットワークのユーザー(例:ブロックチェーンノード)に送信される前に、ネットワークコントリビューターハードウェアレベルで非裁量的な方法でエッジフィルタリング(スパムと重複の除去)できます。これにより、各バリデーターが十分なリソースをプロビジョニングするのではなく、ブロックチェーンがシステム全体の共有フィルタリングリソースから恩恵を受けることができます。その結果、バリデーターはリソースを直接収益を生み出す活動に再配分できます。この機能はまだ機能していません。 + +*第二に*、送信メッセージはより直接的にルーティングされ、効率を改善するために優先順位が付けられます。これは、DoubleZeroのグローバルデータ移動のルーティングロジックが速度のために最適化されているためで、公共インターネットとは異なります。したがって、バリデーターは2つのデータケーブルエンドポイント間のレイテンシの変動量として定義されるジッターの低減から恩恵を受けます。本質的に、ブロックチェーンノードはより速くブロックを送受信できます。 + +これらのDoubleZeroネットワークのメリットを合わせると、公共インターネットでは達成できないパフォーマンスレベルを実現できます。 + +詳細については、[DoubleZeroプロトコル](https://doublezero.xyz/whitepaper.pdf)ホワイトペーパーをご覧ください。 + + +## 次のステップ + +* *ユーザー向け* - [クイックコネクトウィザード](quick-connect.md)でユーザータイプに基づいたカスタムセットアップガイドを作成するか、[初期設定](setup.md)に直接移動して手動でセットアップフローに従います。 +* *コントリビューター向け* - DoubleZeroネットワークをさらに拡張するための追加容量の[貢献方法](contribute-overview.md)をご覧ください。 +* *詳細情報* - DoubleZeroネットワークの[アーキテクチャ](architecture.md)を構成するものについての詳細をお読みください。 diff --git a/docs/index.ko.md b/docs/index.ko.md new file mode 100644 index 0000000..2a62820 --- /dev/null +++ b/docs/index.ko.md @@ -0,0 +1,36 @@ +# DoubleZero에 오신 것을 환영합니다 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero는 블록체인과 같은 분산 시스템에 최적화된 고성능 분산 프로토콜 및 네트워크입니다. DoubleZero 사용자는 분산 시스템 데이터의 고도로 최적화된 전송 및 전처리를 위한 통합 서비스를 이용합니다. + +## DoubleZero는 누구를 위한 것인가요? + +### 기여자 + +DoubleZero 기여자는 미활용 전용 광섬유 링크 및 하드웨어(예: 스위치 및 FPGA 장치) 형태의 네트워크 용량을 보유하고 있습니다. 이러한 리소스를 DoubleZero 네트워크 확장에 기여하면 통합 정보 서비스가 생성됩니다. DZ 프로토콜을 사용하여 네트워크 기여자들은 이 네트워크 용량을 동적이고 광범위한 글로벌 메시 네트워크로 엮고 기여에 대한 토큰 인센티브를 받습니다. + +### 사용자 + +DoubleZero 사용자는 고성능 네트워크 연결이 필요한 블록체인과 같은 분산 시스템에 참여합니다. 블록체인 시스템을 DoubleZero와 상호 연결함으로써 사용자는 네트워크 I/O를 가속화하는 최적화 기능의 번들을 이용할 수 있습니다. + +초기 구현에서 DoubleZero 네트워크는 블록체인 검증자 클라이언트와 RPC 및 MEV 인프라 제공업체와 호환됩니다. 이러한 사용자 시스템은 네트워크 접근을 허용하기 전에 각 레저에서 고유하게 식별하는 공개 키 주소를 검증하는 승인 제어를 거칩니다. 네트워크가 다른 에코시스템의 사용자 시스템을 포함하도록 발전함에 따라 각 사용자 프로젝트 커뮤니티에 맞춤화된 추가 식별 및 인증 전략이 추가될 것입니다. + +## 혜택 + +DoubleZero의 유일한 대안은 공용 인터넷입니다. 공용 인터넷과 비교하여 DoubleZero 네트워크는 블록체인에 두 가지 개선 사항을 제공합니다. + +*첫째*, 인바운드 트랜잭션은 DoubleZero 네트워크 사용자(예: 블록체인 노드)에게 전송되기 전에 네트워크 기여자 하드웨어 레벨에서 비재량적 방식으로 엣지 필터링될 수 있습니다(즉, 스팸 및 중복 제거). 이를 통해 블록체인은 각 개별 검증자가 충분한 리소스를 프로비저닝할 필요 없이 시스템 전체 공유 필터링 리소스를 활용할 수 있습니다. 결과적으로 검증자는 직접 수익 창출 활동으로 리소스를 재배치할 수 있습니다. 이 기능은 아직 작동하지 않습니다. + +*둘째*, 아웃바운드 메시지는 효율성을 개선하기 위해 더 직접적으로 라우팅되고 우선순위가 지정됩니다. DoubleZero에서는 글로벌 데이터 이동의 라우팅 로직이 공용 인터넷과 달리 속도에 최적화되어 있기 때문에 이것이 가능합니다. 따라서 검증자는 지터 감소의 혜택을 받습니다. 지터는 두 데이터 케이블 엔드포인트 간의 대기 시간 변동량으로 정의됩니다. 본질적으로 블록체인 노드는 블록을 더 빠르게 보내고 받을 수 있습니다. + +이러한 DoubleZero 네트워크 혜택을 종합하면 공용 인터넷으로는 달성할 수 없는 성능 수준을 달성할 수 있습니다. + +자세한 내용은 [DoubleZero 프로토콜](https://doublezero.xyz/whitepaper.pdf) 백서를 참조하세요. + + +## 다음 단계 + +* *사용자를 위해* - [빠른 연결 마법사](quick-connect.md)로 시작하여 사용자 유형에 맞는 맞춤형 설정 가이드를 만들거나 [초기 설정](setup.md)으로 바로 이동하여 수동으로 설정 흐름을 따르세요. +* *기여자를 위해* - DoubleZero 네트워크를 더욱 성장시키기 위한 추가 용량을 [기여](contribute-overview.md)하는 방법을 참조하세요. +* *추가 정보* - DoubleZero 네트워크의 [아키텍처](architecture.md)를 구성하는 요소에 대해 더 자세히 읽어보세요. diff --git a/docs/index.pt.md b/docs/index.pt.md new file mode 100644 index 0000000..8dfe19f --- /dev/null +++ b/docs/index.pt.md @@ -0,0 +1,36 @@ +# Bem-vindo ao DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero é um protocolo e rede descentralizada de alto desempenho, otimizado para sistemas distribuídos, como blockchains. Os usuários do DoubleZero desfrutam de um serviço integrado para transmissão altamente otimizada e pré-processamento de dados de sistemas distribuídos. + +## Para quem é o DoubleZero? + +### Contribuidores + +Os contribuidores do DoubleZero possuem capacidade de rede na forma de links de fibra privados subutilizados e hardware (por exemplo, switches e dispositivos FPGA). Configurar esses recursos para estender a rede DoubleZero cria um serviço de informação integrado. Usando o protocolo DZ, os contribuidores de rede unem essa capacidade em uma rede mesh global dinâmica e expansiva e recebem incentivos em tokens por sua contribuição. + +### Usuários + +Os usuários do DoubleZero participam de sistemas distribuídos, como blockchains, que requerem conectividade de rede de alto desempenho. Ao interconectar um sistema blockchain com o DoubleZero, os usuários obtêm um conjunto de recursos de otimização para acelerar seu I/O de rede. + +Em sua implementação inicial, a rede DoubleZero é compatível com clientes validadores de blockchain, bem como provedores de infraestrutura RPC e MEV. Esses sistemas de usuários passam por controle de admissão verificando seus endereços de chave pública de identificação única em seus respectivos ledgers antes de permitir acesso à rede. À medida que a rede evolui para incluir sistemas de usuários de outros ecossistemas, estratégias adicionais de identificação e autenticação serão adicionadas, adaptadas a cada comunidade de projeto de usuário. + +## Benefícios + +A única alternativa ao DoubleZero é a internet pública. Comparado à internet pública, a rede DoubleZero oferece duas melhorias para blockchains. + +*Primeiro*, as transações de entrada podem ser filtradas na borda de maneira não discricionária no nível do hardware do contribuidor de rede (ou seja, remoção de spam e duplicatas) antes de serem enviadas aos usuários (por exemplo, nós de blockchain) da rede DoubleZero. Isso permite que as blockchains se beneficiem de recursos de filtragem compartilhados em todo o sistema, em vez de precisar que cada validador individual provisione recursos suficientes. Como resultado, os validadores podem realocar seus recursos para atividades diretamente geradoras de receita. Este recurso ainda não está funcional. + +*Segundo*, as mensagens de saída são roteadas de forma mais direta e priorizadas para melhorar a eficiência. Isso é possível porque no DoubleZero a lógica de roteamento do movimento global de dados é otimizada para velocidade, ao contrário da internet pública. Assim, os validadores se beneficiam de redução de jitter, que é definido como a quantidade de variação na latência entre dois endpoints de cabo de dados. Em essência, os nós de blockchain podem enviar e receber blocos mais rapidamente. + +Juntos, esses benefícios da rede DoubleZero podem alcançar níveis de desempenho que de outra forma seriam inacessíveis pela internet pública. + +Para mais detalhes, consulte o whitepaper do [Protocolo DoubleZero](https://doublezero.xyz/whitepaper.pdf). + + +## Próximos Passos + +* *Para Usuários* - Comece com nosso [Assistente de Conexão Rápida](quick-connect.md) para criar um guia de configuração personalizado com base no tipo de usuário, ou vá direto para a [configuração inicial](setup.md) e siga o fluxo de configuração manualmente. +* *Para Contribuidores* - Veja como [Contribuir](contribute-overview.md) com capacidade adicional para expandir ainda mais a rede DoubleZero. +* *Mais Informações* - Leia mais sobre o que compõe a [Arquitetura](architecture.md) da rede DoubleZero. diff --git a/docs/index.zh.md b/docs/index.zh.md new file mode 100644 index 0000000..2575ce2 --- /dev/null +++ b/docs/index.zh.md @@ -0,0 +1,36 @@ +# 欢迎来到DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero是一个高性能去中心化协议和网络,专为分布式系统(如区块链)优化。DoubleZero的用户享有一体化服务,用于分布式系统数据的高度优化传输和预处理。 + +## DoubleZero适合哪些人? + +### 贡献者 + +DoubleZero贡献者拥有以未充分利用的私有光纤链路和硬件(如交换机和FPGA设备)形式的网络容量。将这些资源配置为扩展DoubleZero网络,可创建一体化信息服务。使用DZ协议,网络贡献者将这些网络容量编织成一个动态、广泛的全球网状网络,并因其贡献而获得代币激励。 + +### 用户 + +DoubleZero用户参与需要高性能网络连接的分布式系统,例如区块链。将区块链系统与DoubleZero互连后,用户获得一套优化功能包,以加速其网络I/O。 + +在最初实施中,DoubleZero网络与区块链验证器客户端以及RPC和MEV基础设施提供商兼容。这些用户系统在允许其访问网络之前,通过在各自账本上验证其唯一标识公钥地址来进行准入控制。随着网络发展为包含其他生态系统的用户系统,将添加针对每个用户项目社区定制的额外识别和身份验证策略。 + +## 优势 + +DoubleZero唯一的替代方案是公共互联网。与公共互联网相比,DoubleZero网络为区块链提供了两项改进。 + +*首先*,入站交易可以在网络贡献者硬件层面以非自由裁量方式进行边缘过滤(即删除垃圾邮件和重复内容),然后再发送给DoubleZero网络的用户(如区块链节点)。这使区块链能够受益于共享的全系统过滤资源,而无需每个单独的验证器配置足够的资源。因此,验证器可以将其资源重新分配到直接产生收入的活动中。此功能尚未启用。 + +*其次*,出站消息被更直接地路由和优先处理,以提高效率。这是可能的,因为在DoubleZero中,全球数据移动的路由逻辑是为速度优化的,不像公共互联网。因此,验证器受益于减少抖动——抖动定义为两个数据线缆端点之间延迟变化的数量。从本质上讲,区块链节点可以更快地发送和接收区块。 + +综合来看,这些DoubleZero网络优势可以实现通过公共互联网无法达到的性能水平。 + +更多详情,请参阅[DoubleZero协议](https://doublezero.xyz/whitepaper.pdf)白皮书。 + + +## 后续步骤 + +* *对于用户* - 从我们的[快速连接向导](quick-connect.md)开始,根据用户类型创建个性化设置指南,或直接转到[初始设置](setup.md)并手动按照设置流程操作。 +* *对于贡献者* - 了解如何[贡献](contribute-overview.md)额外容量以进一步扩展DoubleZero网络。 +* *更多信息* - 阅读更多关于DoubleZero网络[架构](architecture.md)的内容。 diff --git a/docs/multicast-admin.es.md b/docs/multicast-admin.es.md new file mode 100644 index 0000000..4793a40 --- /dev/null +++ b/docs/multicast-admin.es.md @@ -0,0 +1,151 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# Gestión de Grupos Multicast en DoubleZero + +Un **grupo multicast** es una colección lógica de dispositivos o nodos de red que comparten un identificador común (típicamente una dirección IP multicast) para transmitir datos eficientemente a múltiples destinatarios. A diferencia de la comunicación unicast (uno a uno) o broadcast (uno a todos), el multicast permite a un remitente transmitir un único flujo de datos que es replicado por la red solo para los receptores que se han unido al grupo. + +Este enfoque optimiza el uso del ancho de banda y reduce la carga tanto en el remitente como en la infraestructura de red, ya que los paquetes se transmiten solo una vez por enlace y se duplican solo cuando es necesario para llegar a múltiples suscriptores. Los grupos multicast se usan comúnmente en escenarios como transmisión de video en vivo, conferencias, distribución de datos financieros y sistemas de mensajería en tiempo real. + +En DoubleZero, los grupos multicast proporcionan un mecanismo seguro y controlado para gestionar quién puede enviar (publicadores) y recibir (suscriptores) datos dentro de cada grupo, garantizando una distribución de información eficiente y gobernada. + +```mermaid +flowchart LR + subgraph Publishers + P1[Publicador 1] + P2[Publicador 2] + P3[Publicador 3] + end + subgraph Subscribers + S1[Suscriptor 1] + S2[Suscriptor 2] + S3[Suscriptor 3] + S4[Suscriptor 4] + end + P1 --> B[Grupo Multicast] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +El diagrama anterior muestra cómo múltiples usuarios pueden publicar mensajes en un grupo multicast, y múltiples usuarios pueden suscribirse para recibir esos mensajes. La red DoubleZero replica eficientemente los paquetes, asegurando que todos los suscriptores reciban los mensajes sin sobrecarga de transmisión innecesaria. + +## 1. Creación y Listado de Grupos Multicast + +Los grupos multicast son la base para la distribución segura y eficiente de datos en DoubleZero. Cada grupo se identifica de forma única y se configura con un ancho de banda y propietario específicos. Solo los administradores de la Fundación DoubleZero pueden crear nuevos grupos multicast, garantizando una gobernanza y asignación de recursos adecuadas. + +Una vez creados, los grupos multicast pueden listarse para proporcionar una visión general de todos los grupos disponibles, su configuración y su estado actual. Esto es esencial para que los operadores de red y propietarios de grupos monitoreen recursos y gestionen el acceso. + +**Creación de un grupo multicast:** + +Solo la Fundación DoubleZero puede crear nuevos grupos multicast. El comando de creación requiere un código único, el ancho de banda máximo y la clave pública del propietario (o 'me' para el pagador actual). + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code `: Código único para el grupo multicast (por ejemplo, mg01) +- `--max-bandwidth `: Ancho de banda máximo para el grupo (por ejemplo, 10Gbps, 100Mbps) +- `--owner `: Clave pública del propietario + + +**Listar todos los grupos multicast:** + +Para listar todos los grupos multicast y ver información resumida (incluyendo el código del grupo, IP multicast, ancho de banda, número de publicadores y suscriptores, estado y propietario): + +``` +doublezero multicast group list +``` + +Este comando muestra una tabla con todos los grupos multicast y sus principales propiedades. + +Una vez creado un grupo, el propietario puede gestionar qué usuarios pueden conectarse como publicadores o suscriptores. + + +## 2. Gestión de Listas de Permitidos de Publicadores/Suscriptores + +Las listas de permitidos de publicadores y suscriptores son esenciales para controlar el acceso a los grupos multicast en DoubleZero. Estas listas definen explícitamente qué usuarios pueden publicar (enviar datos) o suscribirse (recibir datos) dentro de un grupo multicast específico. + +- **Lista de permitidos de publicadores:** Solo los usuarios añadidos a la lista de permitidos de publicadores pueden enviar datos al grupo multicast. Esto garantiza que solo las fuentes autorizadas puedan distribuir información, evitando la publicación no autorizada o maliciosa. +- **Lista de permitidos de suscriptores:** Solo los usuarios presentes en la lista de permitidos de suscriptores pueden suscribirse y recibir datos del grupo multicast. Esto protege el acceso a la información transmitida, asegurando que solo los destinatarios aprobados puedan recibir mensajes. + +Gestionar estas listas es responsabilidad del propietario del grupo, quien puede añadir, eliminar o ver publicadores y suscriptores autorizados usando el CLI de DoubleZero. + +> **Nota:** Para suscribirse o publicar en un grupo multicast, un usuario debe estar primero autorizado para conectarse a DoubleZero siguiendo los procedimientos de conexión estándar. Los comandos de lista de permitidos descritos aquí solo asocian un usuario DoubleZero ya autorizado con un grupo multicast. Añadir una nueva IP a la lista de permitidos de un grupo multicast no otorga por sí mismo acceso a DoubleZero; el usuario debe haber completado ya el proceso de autorización general antes de interactuar con grupos multicast. + + +### Añadir un publicador a la lista de permitidos + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code `: Código del grupo multicast al que añadir el publicador +- `--client-ip `: Dirección IP del cliente en formato IPv4 +- `--user-payer `: Clave pública del publicador o 'me' para el pagador actual + + +### Eliminar un publicador de la lista de permitidos + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code `: Código o pubkey del grupo multicast para eliminar la lista de permitidos del publicador +- `--client-ip `: Dirección IP del cliente en formato IPv4 +- `--user-payer `: Clave pública del publicador o 'me' para el pagador actual + + +### Listar la lista de permitidos de publicadores de un grupo + +Para listar todos los publicadores en la lista de permitidos de un grupo multicast específico, use: + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code `: El código del grupo multicast cuya lista de permitidos de publicadores desea ver. + +Este comando muestra todos los publicadores actualmente autorizados para conectarse al grupo especificado, incluyendo su cuenta, código de grupo, IP del cliente y pagador de usuario. + + +### Añadir un suscriptor a la lista de permitidos + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code `: Código o pubkey del grupo multicast para añadir la lista de permitidos del suscriptor +- `--client-ip `: Dirección IP del cliente en formato IPv4 +- `--user-payer `: Clave pública del suscriptor o 'me' para el pagador actual + + +### Eliminar un suscriptor de la lista de permitidos + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code `: Código o pubkey del grupo multicast para eliminar la lista de permitidos del suscriptor +- `--client-ip `: Dirección IP del cliente en formato IPv4 +- `--user-payer `: Clave pública del suscriptor o 'me' para el pagador actual + + +### Listar la lista de permitidos de suscriptores de un grupo + +Para listar todos los suscriptores en la lista de permitidos de un grupo multicast específico, use: + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code `: El código del grupo multicast cuya lista de permitidos de suscriptores desea ver. + +Este comando muestra todos los suscriptores actualmente autorizados para conectarse al grupo especificado. + +--- + +Para más información sobre conexión y uso de multicast, consulte [Otras Conexiones Multicast](Other%20Multicast%20Connection.md). diff --git a/docs/multicast-admin.fr.md b/docs/multicast-admin.fr.md new file mode 100644 index 0000000..3cc76d3 --- /dev/null +++ b/docs/multicast-admin.fr.md @@ -0,0 +1,210 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# Gestion des Groupes Multicast dans DoubleZero + +Un **groupe multicast** est une collection logique de dispositifs ou de nœuds réseau qui partagent un identifiant commun (généralement une adresse IP multicast) pour transmettre efficacement des données à plusieurs destinataires. Contrairement à la communication unicast (un-vers-un) ou broadcast (un-vers-tous), le multicast permet à un émetteur de transmettre un seul flux de données qui est répliqué par le réseau uniquement pour les récepteurs qui ont rejoint le groupe. + +Cette approche optimise l'utilisation de la bande passante et réduit la charge sur l'émetteur et sur l'infrastructure réseau, car les paquets ne sont transmis qu'une seule fois par lien et ne sont dupliqués que lorsque cela est nécessaire pour atteindre plusieurs abonnés. Les groupes multicast sont couramment utilisés dans des scénarios tels que la diffusion vidéo en direct, les conférences, la distribution de données financières et les systèmes de messagerie en temps réel. + +Dans DoubleZero, les groupes multicast fournissent un mécanisme sécurisé et contrôlé pour gérer qui peut envoyer (éditeurs) et recevoir (abonnés) des données au sein de chaque groupe, assurant une distribution d'informations efficace et gouvernée. + +```mermaid +flowchart LR + subgraph Éditeurs + P1[Éditeur 1] + P2[Éditeur 2] + P3[Éditeur 3] + end + subgraph Abonnés + S1[Abonné 1] + S2[Abonné 2] + S3[Abonné 3] + S4[Abonné 4] + end + P1 --> B[Groupe Multicast] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +Le diagramme ci-dessus montre comment plusieurs utilisateurs peuvent publier des messages vers un groupe multicast, et plusieurs utilisateurs peuvent s'abonner pour recevoir ces messages. Le réseau DoubleZero réplique efficacement les paquets, s'assurant que tous les abonnés reçoivent les messages sans surcharge de transmission inutile. + +## 1. Création et Liste des Groupes Multicast + +Les groupes multicast sont la base d'une distribution de données sécurisée et efficace dans DoubleZero. Chaque groupe est identifié de manière unique et configuré avec une bande passante et un propriétaire spécifiques. Seuls les administrateurs de la DoubleZero Foundation peuvent créer de nouveaux groupes multicast, assurant une bonne gouvernance et une allocation appropriée des ressources. + +Une fois créés, les groupes multicast peuvent être listés pour fournir un aperçu de tous les groupes disponibles, de leur configuration et de leur statut actuel. Ceci est essentiel pour que les opérateurs réseau et les propriétaires de groupes puissent surveiller les ressources et gérer les accès. + +**Création d'un groupe multicast :** + +Seule la DoubleZero Foundation peut créer de nouveaux groupes multicast. La commande de création nécessite un code unique, la bande passante maximale et la clé publique du propriétaire (ou 'me' pour le payeur actuel). + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code ` : Code unique pour le groupe multicast (p. ex., mg01) +- `--max-bandwidth ` : Bande passante maximale pour le groupe (p. ex., 10Gbps, 100Mbps) +- `--owner ` : Clé publique du propriétaire + + + +**Liste de tous les groupes multicast :** + +Pour lister tous les groupes multicast et afficher les informations récapitulatives (y compris le code du groupe, l'IP multicast, la bande passante, le nombre d'éditeurs et d'abonnés, le statut et le propriétaire) : + +``` +doublezero multicast group list +``` + +Exemple de sortie : + +``` + account | code | multicast_ip | max_bandwidth | publishers | subscribers | status | owner + 3eUvZvcpCtsfJ8wqCZvhiyBhbY2Sjn56JcQWpDwsESyX | jito-shredstream | 233.84.178.2 | 200Mbps | 8 | 0 | activated | 44NdeuZfjhHg61grggBUBpCvPSs96ogXFDo1eRNSKj42 + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 233.84.178.0 | 1Gbps | 0 | 0 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 2CuZeqMrQsrJ4h4PaAuTEpL3ETHQNkSC2XDo66vbDoxw | reserve | 233.84.178.1 | 100Kbps | 0 | 0 | activated | DZfPq5hgfwrSB3aKAvcbua9MXE3CABZ233yj6ymncmnd + 4LezgDr5WZs9XNTgajkJYBsUqfJYSd19rCHekNFCcN5D | turbine | 233.84.178.3 | 1Gbps | 0 | 4 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +Cette commande affiche un tableau avec tous les groupes multicast et leurs principales propriétés : +- `account` : Adresse du compte du groupe +- `code` : Code du groupe multicast +- `multicast_ip` : Adresse IP multicast attribuée au groupe +- `max_bandwidth` : Bande passante maximale autorisée pour le groupe +- `publishers` : Nombre d'éditeurs dans le groupe +- `subscribers` : Nombre d'abonnés dans le groupe +- `status` : Statut actuel (p. ex., activé) +- `owner` : Clé publique du propriétaire + + +Une fois qu'un groupe est créé, le propriétaire peut gérer quels utilisateurs sont autorisés à se connecter en tant qu'éditeurs ou abonnés. + + +## 2. Gestion des Listes d'Autorisation Éditeur/Abonné + +Les listes d'autorisation des éditeurs et des abonnés sont essentielles pour contrôler l'accès aux groupes multicast dans DoubleZero. Ces listes définissent explicitement quels utilisateurs sont autorisés à publier (envoyer des données) ou à s'abonner (recevoir des données) au sein d'un groupe multicast spécifique. + +- **Liste d'autorisation des éditeurs :** Seuls les utilisateurs ajoutés à la liste d'autorisation des éditeurs peuvent envoyer des données au groupe multicast. Cela garantit que seules les sources autorisées peuvent distribuer des informations, empêchant toute publication non autorisée ou malveillante. +- **Liste d'autorisation des abonnés :** Seuls les utilisateurs présents dans la liste d'autorisation des abonnés peuvent s'abonner et recevoir des données du groupe multicast. Cela protège l'accès aux informations transmises, s'assurant que seuls les destinataires approuvés peuvent recevoir les messages. + +La gestion de ces listes est la responsabilité du propriétaire du groupe, qui peut ajouter, supprimer ou consulter les éditeurs et abonnés autorisés à l'aide de la CLI DoubleZero. Une gestion appropriée des listes d'autorisation est essentielle pour maintenir la sécurité, l'intégrité et la traçabilité des communications multicast. + +> **Note :** Pour s'abonner ou publier dans un groupe multicast, un utilisateur doit d'abord être autorisé à se connecter à DoubleZero en suivant les procédures de connexion standard. Les commandes de liste d'autorisation décrites ici associent uniquement un utilisateur DoubleZero déjà autorisé à un groupe multicast. L'ajout d'une nouvelle IP à la liste d'autorisation d'un groupe multicast n'accorde pas par lui-même l'accès à DoubleZero ; l'utilisateur doit avoir déjà complété le processus d'autorisation général avant d'interagir avec les groupes multicast. + + +### Ajouter un éditeur à la liste d'autorisation + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code ` : Code du groupe multicast auquel ajouter l'éditeur +- `--client-ip ` : Adresse IP du client au format IPv4 +- `--user-payer ` : Clé publique de l'éditeur ou 'me' pour le payeur actuel + + +### Supprimer un éditeur de la liste d'autorisation + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code ` : Code ou clé publique du groupe multicast pour lequel supprimer la liste d'autorisation de l'éditeur +- `--client-ip ` : Adresse IP du client au format IPv4 +- `--user-payer ` : Clé publique de l'éditeur ou 'me' pour le payeur actuel + + +### Lister la liste d'autorisation des éditeurs pour un groupe + +Pour lister tous les éditeurs dans la liste d'autorisation d'un groupe multicast spécifique, utilisez : + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code ` : Le code du groupe multicast dont vous souhaitez consulter la liste d'autorisation des éditeurs. + +**Exemple :** + +``` +doublezero multicast group allowlist publisher list --code mg01 +``` + +Exemple de sortie : + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +Cette commande affiche tous les éditeurs actuellement autorisés à se connecter au groupe spécifié, y compris leur compte, le code du groupe, l'IP du client et le payeur utilisateur. + + +### Ajouter un abonné à la liste d'autorisation + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code ` : Code ou clé publique du groupe multicast pour lequel ajouter la liste d'autorisation de l'abonné +- `--client-ip ` : Adresse IP du client au format IPv4 +- `--user-payer ` : Clé publique de l'abonné ou 'me' pour le payeur actuel + + +### Supprimer un abonné de la liste d'autorisation + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code ` : Code ou clé publique du groupe multicast pour lequel supprimer la liste d'autorisation de l'abonné +- `--client-ip ` : Adresse IP du client au format IPv4 +- `--user-payer ` : Clé publique de l'abonné ou 'me' pour le payeur actuel + + +### Lister la liste d'autorisation des abonnés pour un groupe + +Pour lister tous les abonnés dans la liste d'autorisation d'un groupe multicast spécifique, utilisez : + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code ` : Le code du groupe multicast dont vous souhaitez consulter la liste d'autorisation des abonnés. + +**Exemple :** + +``` +doublezero multicast group allowlist subscriber list --code mg01 +``` + +Exemple de sortie : + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +Cette commande affiche tous les abonnés actuellement autorisés à se connecter au groupe spécifié, y compris leur compte, le code du groupe, l'IP du client et le payeur utilisateur. + +--- + +Pour plus d'informations sur la connexion et l'utilisation du multicast, consultez [Autre Connexion Multicast](Other%20Multicast%20Connection.md). diff --git a/docs/multicast-admin.it.md b/docs/multicast-admin.it.md new file mode 100644 index 0000000..74e1d05 --- /dev/null +++ b/docs/multicast-admin.it.md @@ -0,0 +1,210 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# Gestione dei Gruppi Multicast in DoubleZero + +Un **gruppo multicast** è una raccolta logica di dispositivi o nodi di rete che condividono un identificatore comune (tipicamente un indirizzo IP multicast) per trasmettere in modo efficiente i dati a più destinatari. A differenza della comunicazione unicast (uno-a-uno) o broadcast (uno-a-tutti), il multicast consente a un mittente di trasmettere un singolo flusso di dati che viene replicato dalla rete solo per i ricevitori che si sono uniti al gruppo. + +Questo approccio ottimizza l'utilizzo della larghezza di banda e riduce il carico sia sul mittente che sull'infrastruttura di rete, poiché i pacchetti vengono trasmessi una sola volta per link e duplicati solo quando necessario per raggiungere più subscriber. I gruppi multicast sono comunemente utilizzati in scenari come lo streaming video in diretta, le conferenze, la distribuzione di dati finanziari e i sistemi di messaggistica in tempo reale. + +In DoubleZero, i gruppi multicast forniscono un meccanismo sicuro e controllato per gestire chi può inviare (publisher) e ricevere (subscriber) dati all'interno di ciascun gruppo, garantendo una distribuzione delle informazioni efficiente e governata. + +```mermaid +flowchart LR + subgraph Publisher + P1[Publisher 1] + P2[Publisher 2] + P3[Publisher 3] + end + subgraph Subscriber + S1[Subscriber 1] + S2[Subscriber 2] + S3[Subscriber 3] + S4[Subscriber 4] + end + P1 --> B[Gruppo Multicast] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +Il diagramma sopra mostra come più utenti possono pubblicare messaggi in un gruppo multicast e come più utenti possono sottoscrivere per ricevere quei messaggi. La rete DoubleZero replica efficientemente i pacchetti, garantendo che tutti i subscriber ricevano i messaggi senza inutile overhead di trasmissione. + +## 1. Creazione e Visualizzazione dei Gruppi Multicast + +I gruppi multicast sono la base per la distribuzione sicura ed efficiente dei dati in DoubleZero. Ogni gruppo è identificato in modo univoco e configurato con una larghezza di banda specifica e un proprietario. Solo gli amministratori della DoubleZero Foundation possono creare nuovi gruppi multicast, garantendo una corretta governance e allocazione delle risorse. + +Una volta creati, i gruppi multicast possono essere elencati per fornire una panoramica di tutti i gruppi disponibili, della loro configurazione e del loro stato attuale. Questo è essenziale per gli operatori di rete e i proprietari dei gruppi per monitorare le risorse e gestire gli accessi. + +**Creazione di un gruppo multicast:** + +Solo la DoubleZero Foundation può creare nuovi gruppi multicast. Il comando di creazione richiede un codice univoco, la larghezza di banda massima e la chiave pubblica del proprietario (o 'me' per il pagante corrente). + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code `: Codice univoco per il gruppo multicast (es. mg01) +- `--max-bandwidth `: Larghezza di banda massima per il gruppo (es. 10Gbps, 100Mbps) +- `--owner `: Chiave pubblica del proprietario + + + +**Elenco di tutti i gruppi multicast:** + +Per elencare tutti i gruppi multicast e visualizzare le informazioni di riepilogo (inclusi codice gruppo, IP multicast, larghezza di banda, numero di publisher e subscriber, stato e proprietario): + +``` +doublezero multicast group list +``` + +Esempio di output: + +``` + account | code | multicast_ip | max_bandwidth | publishers | subscribers | status | owner + 3eUvZvcpCtsfJ8wqCZvhiyBhbY2Sjn56JcQWpDwsESyX | jito-shredstream | 233.84.178.2 | 200Mbps | 8 | 0 | activated | 44NdeuZfjhHg61grggBUBpCvPSs96ogXFDo1eRNSKj42 + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 233.84.178.0 | 1Gbps | 0 | 0 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 2CuZeqMrQsrJ4h4PaAuTEpL3ETHQNkSC2XDo66vbDoxw | reserve | 233.84.178.1 | 100Kbps | 0 | 0 | activated | DZfPq5hgfwrSB3aKAvcbua9MXE3CABZ233yj6ymncmnd + 4LezgDr5WZs9XNTgajkJYBsUqfJYSd19rCHekNFCcN5D | turbine | 233.84.178.3 | 1Gbps | 0 | 4 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +Questo comando mostra una tabella con tutti i gruppi multicast e le loro principali proprietà: +- `account`: Indirizzo account del gruppo +- `code`: Codice del gruppo multicast +- `multicast_ip`: Indirizzo IP multicast assegnato al gruppo +- `max_bandwidth`: Larghezza di banda massima consentita per il gruppo +- `publishers`: Numero di publisher nel gruppo +- `subscribers`: Numero di subscriber nel gruppo +- `status`: Stato attuale (es. activated) +- `owner`: Chiave pubblica del proprietario + + +Una volta creato un gruppo, il proprietario può gestire quali utenti sono autorizzati a connettersi come publisher o subscriber. + + +## 2. Gestione delle Allowlist Publisher/Subscriber + +Le allowlist di publisher e subscriber sono essenziali per controllare l'accesso ai gruppi multicast in DoubleZero. Queste liste definiscono esplicitamente quali utenti sono autorizzati a pubblicare (inviare dati) o sottoscrivere (ricevere dati) all'interno di un gruppo multicast specifico. + +- **Allowlist publisher:** Solo gli utenti aggiunti all'allowlist publisher possono inviare dati al gruppo multicast. Ciò garantisce che solo le sorgenti autorizzate possano distribuire informazioni, prevenendo pubblicazioni non autorizzate o malevole. +- **Allowlist subscriber:** Solo gli utenti presenti nell'allowlist subscriber possono sottoscrivere e ricevere dati dal gruppo multicast. Questo protegge l'accesso alle informazioni trasmesse, garantendo che solo i destinatari approvati possano ricevere i messaggi. + +La gestione di queste liste è responsabilità del proprietario del gruppo, che può aggiungere, rimuovere o visualizzare publisher e subscriber autorizzati usando la CLI DoubleZero. Una corretta gestione delle allowlist è fondamentale per mantenere la sicurezza, l'integrità e la tracciabilità delle comunicazioni multicast. + +> **Nota:** Per sottoscrivere o pubblicare in un gruppo multicast, un utente deve prima essere autorizzato a connettersi a DoubleZero seguendo le procedure di connessione standard. I comandi allowlist descritti qui associano solo un utente DoubleZero già autorizzato a un gruppo multicast. L'aggiunta di un nuovo IP all'allowlist di un gruppo multicast non concede di per sé l'accesso a DoubleZero; l'utente deve aver già completato il processo di autorizzazione generale prima di interagire con i gruppi multicast. + + +### Aggiunta di un publisher all'allowlist + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code `: Codice del gruppo multicast a cui aggiungere il publisher +- `--client-ip `: Indirizzo IP client in formato IPv4 +- `--user-payer `: Chiave pubblica del publisher o 'me' per il pagante corrente + + +### Rimozione di un publisher dall'allowlist + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code `: Codice o pubkey del gruppo multicast per cui rimuovere l'allowlist publisher +- `--client-ip `: Indirizzo IP client in formato IPv4 +- `--user-payer `: Chiave pubblica del publisher o 'me' per il pagante corrente + + +### Visualizzazione dell'allowlist publisher per un gruppo + +Per elencare tutti i publisher nell'allowlist per un gruppo multicast specifico, usa: + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code `: Il codice del gruppo multicast di cui vuoi visualizzare l'allowlist publisher. + +**Esempio:** + +``` +doublezero multicast group allowlist publisher list --code mg01 +``` + +Esempio di output: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +Questo comando mostra tutti i publisher attualmente autorizzati a connettersi al gruppo specificato, inclusi il loro account, codice gruppo, IP client e pagante utente. + + +### Aggiunta di un subscriber all'allowlist + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code `: Codice o pubkey del gruppo multicast per cui aggiungere l'allowlist subscriber +- `--client-ip `: Indirizzo IP client in formato IPv4 +- `--user-payer `: Chiave pubblica del subscriber o 'me' per il pagante corrente + + +### Rimozione di un subscriber dall'allowlist + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code `: Codice o pubkey del gruppo multicast per cui rimuovere l'allowlist subscriber +- `--client-ip `: Indirizzo IP client in formato IPv4 +- `--user-payer `: Chiave pubblica del subscriber o 'me' per il pagante corrente + + +### Visualizzazione dell'allowlist subscriber per un gruppo + +Per elencare tutti i subscriber nell'allowlist per un gruppo multicast specifico, usa: + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code `: Il codice del gruppo multicast di cui vuoi visualizzare l'allowlist subscriber. + +**Esempio:** + +``` +doublezero multicast group allowlist subscriber list --code mg01 +``` + +Esempio di output: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +Questo comando mostra tutti i subscriber attualmente autorizzati a connettersi al gruppo specificato, inclusi il loro account, codice gruppo, IP client e pagante utente. + +--- + +Per ulteriori informazioni sulla connessione e l'utilizzo del multicast, consulta [Altra Connessione Multicast](Other%20Multicast%20Connection.md). diff --git a/docs/multicast-admin.ja.md b/docs/multicast-admin.ja.md new file mode 100644 index 0000000..ab79c62 --- /dev/null +++ b/docs/multicast-admin.ja.md @@ -0,0 +1,210 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# DoubleZeroにおけるマルチキャストグループ管理 + +**マルチキャストグループ**は、データを複数の受信者に効率的に送信するために共通の識別子(通常はマルチキャストIPアドレス)を共有するデバイスやネットワークノードの論理的な集合体です。ユニキャスト(1対1)やブロードキャスト(1対全)通信とは異なり、マルチキャストではグループに参加した受信者に対してのみ、ネットワークによって複製される単一のデータストリームを送信者が送信できます。 + +このアプローチにより、パケットはリンクごとに1度だけ送信され、複数のサブスクライバーに到達するために必要な場合にのみ複製されるため、帯域幅の使用を最適化し、送信者とネットワークインフラの両方への負荷を軽減します。マルチキャストグループは、ライブビデオストリーミング、会議、金融データ配信、リアルタイムメッセージングシステムなどのシナリオで一般的に使用されます。 + +DoubleZeroでは、マルチキャストグループは各グループ内でデータを送信(パブリッシャー)および受信(サブスクライバー)できるユーザーを管理するための安全で制御されたメカニズムを提供し、効率的でガバナンスされた情報配信を確保します。 + +```mermaid +flowchart LR + subgraph Publishers + P1[パブリッシャー 1] + P2[パブリッシャー 2] + P3[パブリッシャー 3] + end + subgraph Subscribers + S1[サブスクライバー 1] + S2[サブスクライバー 2] + S3[サブスクライバー 3] + S4[サブスクライバー 4] + end + P1 --> B[マルチキャストグループ] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +上の図は、複数のユーザーがマルチキャストグループにメッセージをパブリッシュでき、複数のユーザーがそれらのメッセージを受信するためにサブスクライブできることを示しています。DoubleZeroネットワークはパケットを効率的に複製し、すべてのサブスクライバーが不要な送信オーバーヘッドなしにメッセージを受信できるようにします。 + +## 1. マルチキャストグループの作成と一覧表示 + +マルチキャストグループはDoubleZeroにおける安全で効率的なデータ配信の基盤です。各グループは一意に識別され、特定の帯域幅とオーナーで設定されます。新しいマルチキャストグループを作成できるのはDoubleZero Foundation管理者のみであり、適切なガバナンスとリソース割り当てが確保されます。 + +作成後、マルチキャストグループを一覧表示して、利用可能なすべてのグループ、その設定、現在のステータスの概要を確認できます。これはネットワークオペレーターとグループオーナーがリソースを監視してアクセスを管理するために不可欠です。 + +**マルチキャストグループの作成:** + +新しいマルチキャストグループはDoubleZero Foundationのみが作成できます。作成コマンドには一意のコード、最大帯域幅、オーナーの公開鍵(または現在のペイヤーのための「me」)が必要です。 + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code `:マルチキャストグループの一意のコード(例:mg01) +- `--max-bandwidth `:グループの最大帯域幅(例:10Gbps、100Mbps) +- `--owner `:オーナーの公開鍵 + + + +**すべてのマルチキャストグループの一覧表示:** + +すべてのマルチキャストグループを一覧表示し、要約情報(グループコード、マルチキャストIP、帯域幅、パブリッシャーとサブスクライバーの数、ステータス、オーナーを含む)を表示するには: + +``` +doublezero multicast group list +``` + +サンプル出力: + +``` + account | code | multicast_ip | max_bandwidth | publishers | subscribers | status | owner + 3eUvZvcpCtsfJ8wqCZvhiyBhbY2Sjn56JcQWpDwsESyX | jito-shredstream | 233.84.178.2 | 200Mbps | 8 | 0 | activated | 44NdeuZfjhHg61grggBUBpCvPSs96ogXFDo1eRNSKj42 + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 233.84.178.0 | 1Gbps | 0 | 0 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 2CuZeqMrQsrJ4h4PaAuTEpL3ETHQNkSC2XDo66vbDoxw | reserve | 233.84.178.1 | 100Kbps | 0 | 0 | activated | DZfPq5hgfwrSB3aKAvcbua9MXE3CABZ233yj6ymncmnd + 4LezgDr5WZs9XNTgajkJYBsUqfJYSd19rCHekNFCcN5D | turbine | 233.84.178.3 | 1Gbps | 0 | 4 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +このコマンドはすべてのマルチキャストグループとその主要なプロパティのテーブルを表示します: +- `account`:グループアカウントアドレス +- `code`:マルチキャストグループコード +- `multicast_ip`:グループに割り当てられたマルチキャストIPアドレス +- `max_bandwidth`:グループの最大許容帯域幅 +- `publishers`:グループ内のパブリッシャー数 +- `subscribers`:グループ内のサブスクライバー数 +- `status`:現在のステータス(例:activated) +- `owner`:オーナーの公開鍵 + + +グループが作成されると、オーナーはどのユーザーがパブリッシャーまたはサブスクライバーとして接続できるかを管理できます。 + + +## 2. パブリッシャー/サブスクライバー許可リストの管理 + +パブリッシャーとサブスクライバーの許可リストは、DoubleZeroのマルチキャストグループへのアクセスを制御するために不可欠です。これらのリストは、特定のマルチキャストグループ内でデータのパブリッシュ(送信)またはサブスクライブ(受信)が許可されているユーザーを明示的に定義します。 + +- **パブリッシャー許可リスト:** パブリッシャー許可リストに追加されたユーザーのみがマルチキャストグループにデータを送信できます。これにより、承認されたソースのみが情報を配信できるようになり、無許可または悪意のあるパブリッシングを防ぎます。 +- **サブスクライバー許可リスト:** サブスクライバー許可リストに存在するユーザーのみがマルチキャストグループをサブスクライブして、データを受信できます。これにより、送信された情報へのアクセスが保護され、承認された受信者のみがメッセージを受信できるようになります。 + +これらのリストの管理はグループオーナーの責任であり、DoubleZero CLIを使用して承認されたパブリッシャーとサブスクライバーの追加、削除、表示を行うことができます。適切な許可リスト管理は、マルチキャスト通信のセキュリティ、整合性、トレーサビリティを維持するために重要です。 + +> **注意:** マルチキャストグループをサブスクライブまたはパブリッシュするには、ユーザーはまず標準の接続手順に従ってDoubleZeroへの接続を承認される必要があります。ここで説明する許可リストコマンドは、既に承認されたDoubleZeroユーザーをマルチキャストグループに関連付けるだけです。マルチキャストグループの許可リストに新しいIPを追加しても、それだけではDoubleZeroへのアクセスは許可されません。マルチキャストグループと対話する前に、ユーザーは既に一般的な承認プロセスを完了している必要があります。 + + +### パブリッシャーを許可リストに追加する + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code `:パブリッシャーを追加するマルチキャストグループコード +- `--client-ip `:IPv4形式のクライアントIPアドレス +- `--user-payer `:パブリッシャーの公開鍵または現在のペイヤーのための「me」 + + +### パブリッシャーを許可リストから削除する + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code `:パブリッシャー許可リストを削除するマルチキャストグループコードまたは公開鍵 +- `--client-ip `:IPv4形式のクライアントIPアドレス +- `--user-payer `:パブリッシャーの公開鍵または現在のペイヤーのための「me」 + + +### グループのパブリッシャー許可リストを表示する + +特定のマルチキャストグループの許可リストにあるすべてのパブリッシャーを一覧表示するには: + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code `:パブリッシャー許可リストを表示したいマルチキャストグループのコード。 + +**例:** + +``` +doublezero multicast group allowlist publisher list --code mg01 +``` + +サンプル出力: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +このコマンドは、指定されたグループへの接続が現在許可されているすべてのパブリッシャーをアカウント、グループコード、クライアントIP、ユーザーペイヤーとともに表示します。 + + +### サブスクライバーを許可リストに追加する + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code `:サブスクライバー許可リストを追加するマルチキャストグループコードまたは公開鍵 +- `--client-ip `:IPv4形式のクライアントIPアドレス +- `--user-payer `:サブスクライバーの公開鍵または現在のペイヤーのための「me」 + + +### サブスクライバーを許可リストから削除する + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code `:サブスクライバー許可リストを削除するマルチキャストグループコードまたは公開鍵 +- `--client-ip `:IPv4形式のクライアントIPアドレス +- `--user-payer `:サブスクライバーの公開鍵または現在のペイヤーのための「me」 + + +### グループのサブスクライバー許可リストを表示する + +特定のマルチキャストグループの許可リストにあるすべてのサブスクライバーを一覧表示するには: + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code `:サブスクライバー許可リストを表示したいマルチキャストグループのコード。 + +**例:** + +``` +doublezero multicast group allowlist subscriber list --code mg01 +``` + +サンプル出力: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +このコマンドは、指定されたグループへの接続が現在許可されているすべてのサブスクライバーをアカウント、グループコード、クライアントIP、ユーザーペイヤーとともに表示します。 + +--- + +マルチキャストの接続と使用方法の詳細については、[その他のマルチキャスト接続](Other%20Multicast%20Connection.md)を参照してください。 diff --git a/docs/multicast-admin.ko.md b/docs/multicast-admin.ko.md new file mode 100644 index 0000000..f83875d --- /dev/null +++ b/docs/multicast-admin.ko.md @@ -0,0 +1,210 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# DoubleZero 멀티캐스트 그룹 관리 + +**멀티캐스트 그룹**은 공통 식별자(일반적으로 멀티캐스트 IP 주소)를 공유하여 여러 수신자에게 데이터를 효율적으로 전송하는 장치 또는 네트워크 노드의 논리적 집합입니다. 유니캐스트(1:1) 또는 브로드캐스트(1:전체) 통신과 달리 멀티캐스트는 송신자가 단일 데이터 스트림을 전송하면 네트워크가 그룹에 가입한 수신자에게만 이를 복제하여 전달합니다. + +이 방식은 패킷이 링크당 한 번만 전송되고 여러 구독자에게 도달하기 위해 필요할 때만 복제되므로 대역폭 사용을 최적화하고 송신자 및 네트워크 인프라의 부하를 줄입니다. 멀티캐스트 그룹은 라이브 비디오 스트리밍, 회의, 금융 데이터 배포, 실시간 메시징 시스템 등의 시나리오에서 일반적으로 사용됩니다. + +DoubleZero에서 멀티캐스트 그룹은 각 그룹 내에서 데이터를 보낼 수 있는 사람(발행자)과 받을 수 있는 사람(구독자)을 관리하는 안전하고 제어된 메커니즘을 제공하여 효율적이고 관리되는 정보 배포를 보장합니다. + +```mermaid +flowchart LR + subgraph Publishers + P1[발행자 1] + P2[발행자 2] + P3[발행자 3] + end + subgraph Subscribers + S1[구독자 1] + S2[구독자 2] + S3[구독자 3] + S4[구독자 4] + end + P1 --> B[멀티캐스트 그룹] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +위 다이어그램은 여러 사용자가 멀티캐스트 그룹에 메시지를 발행하고 여러 사용자가 해당 메시지를 수신하기 위해 구독할 수 있는 방법을 보여줍니다. DoubleZero 네트워크는 패킷을 효율적으로 복제하여 모든 구독자가 불필요한 전송 오버헤드 없이 메시지를 받을 수 있도록 합니다. + +## 1. 멀티캐스트 그룹 생성 및 목록 조회 + +멀티캐스트 그룹은 DoubleZero의 안전하고 효율적인 데이터 배포를 위한 기반입니다. 각 그룹은 고유하게 식별되며 특정 대역폭과 소유자로 구성됩니다. 새 멀티캐스트 그룹은 DoubleZero Foundation 관리자만 생성할 수 있어 적절한 거버넌스와 리소스 할당을 보장합니다. + +생성된 멀티캐스트 그룹은 모든 사용 가능한 그룹, 그 구성 및 현재 상태에 대한 개요를 제공하기 위해 목록 조회가 가능합니다. 이는 네트워크 운영자와 그룹 소유자가 리소스를 모니터링하고 액세스를 관리하는 데 필수적입니다. + +**멀티캐스트 그룹 생성:** + +새 멀티캐스트 그룹은 DoubleZero Foundation만 생성할 수 있습니다. 생성 명령에는 고유 코드, 최대 대역폭, 소유자 공개 키(또는 현재 지불자의 경우 'me')가 필요합니다. + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code `: 멀티캐스트 그룹의 고유 코드 (예: mg01) +- `--max-bandwidth `: 그룹의 최대 대역폭 (예: 10Gbps, 100Mbps) +- `--owner `: 소유자 공개 키 + + + +**모든 멀티캐스트 그룹 목록 조회:** + +모든 멀티캐스트 그룹과 요약 정보(그룹 코드, 멀티캐스트 IP, 대역폭, 발행자 및 구독자 수, 상태, 소유자 포함)를 조회하려면: + +``` +doublezero multicast group list +``` + +샘플 출력: + +``` + account | code | multicast_ip | max_bandwidth | publishers | subscribers | status | owner + 3eUvZvcpCtsfJ8wqCZvhiyBhbY2Sjn56JcQWpDwsESyX | jito-shredstream | 233.84.178.2 | 200Mbps | 8 | 0 | activated | 44NdeuZfjhHg61grggBUBpCvPSs96ogXFDo1eRNSKj42 + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 233.84.178.0 | 1Gbps | 0 | 0 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 2CuZeqMrQsrJ4h4PaAuTEpL3ETHQNkSC2XDo66vbDoxw | reserve | 233.84.178.1 | 100Kbps | 0 | 0 | activated | DZfPq5hgfwrSB3aKAvcbua9MXE3CABZ233yj6ymncmnd + 4LezgDr5WZs9XNTgajkJYBsUqfJYSd19rCHekNFCcN5D | turbine | 233.84.178.3 | 1Gbps | 0 | 4 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +이 명령은 모든 멀티캐스트 그룹과 주요 속성이 포함된 표를 표시합니다: +- `account`: 그룹 계정 주소 +- `code`: 멀티캐스트 그룹 코드 +- `multicast_ip`: 그룹에 할당된 멀티캐스트 IP 주소 +- `max_bandwidth`: 그룹의 최대 허용 대역폭 +- `publishers`: 그룹의 발행자 수 +- `subscribers`: 그룹의 구독자 수 +- `status`: 현재 상태 (예: activated) +- `owner`: 소유자 공개 키 + + +그룹이 생성되면 소유자는 발행자 또는 구독자로 연결할 수 있는 사용자를 관리할 수 있습니다. + + +## 2. 발행자/구독자 허용 목록 관리 + +발행자 및 구독자 허용 목록은 DoubleZero의 멀티캐스트 그룹에 대한 액세스를 제어하는 데 필수적입니다. 이 목록은 특정 멀티캐스트 그룹 내에서 데이터를 발행(전송)하거나 구독(수신)할 수 있는 사용자를 명시적으로 정의합니다. + +- **발행자 허용 목록:** 발행자 허용 목록에 추가된 사용자만 멀티캐스트 그룹으로 데이터를 보낼 수 있습니다. 이는 승인된 소스만 정보를 배포할 수 있도록 하여 무단 또는 악의적인 발행을 방지합니다. +- **구독자 허용 목록:** 구독자 허용 목록에 있는 사용자만 멀티캐스트 그룹에서 데이터를 구독하고 수신할 수 있습니다. 이는 전송된 정보에 대한 액세스를 보호하여 승인된 수신자만 메시지를 받을 수 있도록 합니다. + +이 목록 관리는 그룹 소유자의 책임이며, DoubleZero CLI를 사용하여 승인된 발행자와 구독자를 추가, 제거하거나 볼 수 있습니다. 적절한 허용 목록 관리는 멀티캐스트 통신의 보안, 무결성 및 추적 가능성을 유지하는 데 중요합니다. + +> **참고:** 멀티캐스트 그룹에 구독하거나 발행하려면 사용자가 먼저 표준 연결 절차를 따라 DoubleZero에 연결하도록 승인되어야 합니다. 여기에 설명된 허용 목록 명령은 이미 승인된 DoubleZero 사용자를 멀티캐스트 그룹과 연결하기만 합니다. 멀티캐스트 그룹의 허용 목록에 새 IP를 추가하는 것 자체로는 DoubleZero에 대한 액세스가 부여되지 않습니다. 사용자는 멀티캐스트 그룹과 상호 작용하기 전에 이미 일반 승인 프로세스를 완료했어야 합니다. + + +### 허용 목록에 발행자 추가 + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code `: 발행자를 추가할 멀티캐스트 그룹 코드 +- `--client-ip `: IPv4 형식의 클라이언트 IP 주소 +- `--user-payer `: 발행자 공개 키 또는 현재 지불자의 경우 'me' + + +### 허용 목록에서 발행자 제거 + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code `: 발행자 허용 목록을 제거할 멀티캐스트 그룹 코드 또는 공개 키 +- `--client-ip `: IPv4 형식의 클라이언트 IP 주소 +- `--user-payer `: 발행자 공개 키 또는 현재 지불자의 경우 'me' + + +### 그룹의 발행자 허용 목록 조회 + +특정 멀티캐스트 그룹의 허용 목록에 있는 모든 발행자를 조회하려면 다음을 사용합니다: + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code `: 발행자 허용 목록을 보려는 멀티캐스트 그룹의 코드. + +**예시:** + +``` +doublezero multicast group allowlist publisher list --code mg01 +``` + +샘플 출력: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +이 명령은 지정된 그룹에 연결할 수 있는 현재 승인된 모든 발행자(계정, 그룹 코드, 클라이언트 IP, 사용자 지불자 포함)를 표시합니다. + + +### 허용 목록에 구독자 추가 + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code `: 구독자 허용 목록을 추가할 멀티캐스트 그룹 코드 또는 공개 키 +- `--client-ip `: IPv4 형식의 클라이언트 IP 주소 +- `--user-payer `: 구독자 공개 키 또는 현재 지불자의 경우 'me' + + +### 허용 목록에서 구독자 제거 + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code `: 구독자 허용 목록을 제거할 멀티캐스트 그룹 코드 또는 공개 키 +- `--client-ip `: IPv4 형식의 클라이언트 IP 주소 +- `--user-payer `: 구독자 공개 키 또는 현재 지불자의 경우 'me' + + +### 그룹의 구독자 허용 목록 조회 + +특정 멀티캐스트 그룹의 허용 목록에 있는 모든 구독자를 조회하려면 다음을 사용합니다: + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code `: 구독자 허용 목록을 보려는 멀티캐스트 그룹의 코드. + +**예시:** + +``` +doublezero multicast group allowlist subscriber list --code mg01 +``` + +샘플 출력: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +이 명령은 지정된 그룹에 연결할 수 있는 현재 승인된 모든 구독자(계정, 그룹 코드, 클라이언트 IP, 사용자 지불자 포함)를 표시합니다. + +--- + +멀티캐스트 연결 및 사용에 대한 자세한 내용은 [기타 멀티캐스트 연결](Other%20Multicast%20Connection.md)을 참조하세요. diff --git a/docs/multicast-admin.pt.md b/docs/multicast-admin.pt.md new file mode 100644 index 0000000..a979d28 --- /dev/null +++ b/docs/multicast-admin.pt.md @@ -0,0 +1,151 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# Gerenciamento de Grupos Multicast no DoubleZero + +Um **grupo multicast** é uma coleção lógica de dispositivos ou nós de rede que compartilham um identificador comum (tipicamente um endereço IP multicast) para transmitir dados eficientemente para múltiplos destinatários. Ao contrário da comunicação unicast (um para um) ou broadcast (um para todos), o multicast permite que um remetente transmita um único fluxo de dados que é replicado pela rede apenas para os receptores que ingressaram no grupo. + +Esta abordagem otimiza o uso de largura de banda e reduz a carga tanto no remetente quanto na infraestrutura de rede, pois os pacotes são transmitidos apenas uma vez por link e duplicados somente quando necessário para alcançar múltiplos assinantes. Os grupos multicast são comumente usados em cenários como transmissão de vídeo ao vivo, conferências, distribuição de dados financeiros e sistemas de mensagens em tempo real. + +No DoubleZero, os grupos multicast fornecem um mecanismo seguro e controlado para gerenciar quem pode enviar (publicadores) e receber (assinantes) dados dentro de cada grupo, garantindo uma distribuição de informações eficiente e governada. + +```mermaid +flowchart LR + subgraph Publishers + P1[Publicador 1] + P2[Publicador 2] + P3[Publicador 3] + end + subgraph Subscribers + S1[Assinante 1] + S2[Assinante 2] + S3[Assinante 3] + S4[Assinante 4] + end + P1 --> B[Grupo Multicast] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +O diagrama acima mostra como múltiplos usuários podem publicar mensagens em um grupo multicast, e múltiplos usuários podem assinar para receber essas mensagens. A rede DoubleZero replica eficientemente os pacotes, garantindo que todos os assinantes recebam as mensagens sem sobrecarga de transmissão desnecessária. + +## 1. Criação e Listagem de Grupos Multicast + +Os grupos multicast são a base para a distribuição segura e eficiente de dados no DoubleZero. Cada grupo é identificado de forma única e configurado com uma largura de banda e proprietário específicos. Apenas os administradores da Fundação DoubleZero podem criar novos grupos multicast, garantindo uma governança adequada e alocação de recursos. + +Uma vez criados, os grupos multicast podem ser listados para fornecer uma visão geral de todos os grupos disponíveis, sua configuração e seu status atual. Isso é essencial para que os operadores de rede e proprietários de grupos monitorem recursos e gerenciem o acesso. + +**Criando um grupo multicast:** + +Apenas a Fundação DoubleZero pode criar novos grupos multicast. O comando de criação requer um código único, a largura de banda máxima e a chave pública do proprietário (ou 'me' para o pagador atual). + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code `: Código único para o grupo multicast (por exemplo, mg01) +- `--max-bandwidth `: Largura de banda máxima para o grupo (por exemplo, 10Gbps, 100Mbps) +- `--owner `: Chave pública do proprietário + + +**Listando todos os grupos multicast:** + +Para listar todos os grupos multicast e ver informações resumidas (incluindo o código do grupo, IP multicast, largura de banda, número de publicadores e assinantes, status e proprietário): + +``` +doublezero multicast group list +``` + +Este comando exibe uma tabela com todos os grupos multicast e suas principais propriedades. + +Uma vez criado um grupo, o proprietário pode gerenciar quais usuários podem se conectar como publicadores ou assinantes. + + +## 2. Gerenciamento de Listas de Permissão de Publicadores/Assinantes + +As listas de permissão de publicadores e assinantes são essenciais para controlar o acesso aos grupos multicast no DoubleZero. Essas listas definem explicitamente quais usuários podem publicar (enviar dados) ou assinar (receber dados) dentro de um grupo multicast específico. + +- **Lista de permissão de publicadores:** Apenas os usuários adicionados à lista de permissão de publicadores podem enviar dados ao grupo multicast. Isso garante que apenas fontes autorizadas possam distribuir informações, evitando publicação não autorizada ou maliciosa. +- **Lista de permissão de assinantes:** Apenas os usuários presentes na lista de permissão de assinantes podem assinar e receber dados do grupo multicast. Isso protege o acesso às informações transmitidas, garantindo que apenas destinatários aprovados possam receber mensagens. + +Gerenciar essas listas é responsabilidade do proprietário do grupo, que pode adicionar, remover ou visualizar publicadores e assinantes autorizados usando o CLI do DoubleZero. + +> **Nota:** Para assinar ou publicar em um grupo multicast, um usuário deve primeiro estar autorizado a se conectar ao DoubleZero seguindo os procedimentos de conexão padrão. Os comandos de lista de permissão descritos aqui apenas associam um usuário DoubleZero já autorizado com um grupo multicast. Adicionar um novo IP à lista de permissão de um grupo multicast não concede por si só acesso ao DoubleZero; o usuário deve ter concluído o processo de autorização geral antes de interagir com grupos multicast. + + +### Adicionar um publicador à lista de permissão + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code `: Código do grupo multicast ao qual adicionar o publicador +- `--client-ip `: Endereço IP do cliente no formato IPv4 +- `--user-payer `: Chave pública do publicador ou 'me' para o pagador atual + + +### Remover um publicador da lista de permissão + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code `: Código ou pubkey do grupo multicast para remover da lista de permissão do publicador +- `--client-ip `: Endereço IP do cliente no formato IPv4 +- `--user-payer `: Chave pública do publicador ou 'me' para o pagador atual + + +### Listar a lista de permissão de publicadores de um grupo + +Para listar todos os publicadores na lista de permissão de um grupo multicast específico, use: + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code `: O código do grupo multicast cuja lista de permissão de publicadores você deseja ver. + +Este comando exibe todos os publicadores atualmente autorizados a se conectar ao grupo especificado, incluindo sua conta, código do grupo, IP do cliente e pagador do usuário. + + +### Adicionar um assinante à lista de permissão + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code `: Código ou pubkey do grupo multicast para adicionar à lista de permissão do assinante +- `--client-ip `: Endereço IP do cliente no formato IPv4 +- `--user-payer `: Chave pública do assinante ou 'me' para o pagador atual + + +### Remover um assinante da lista de permissão + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code `: Código ou pubkey do grupo multicast para remover da lista de permissão do assinante +- `--client-ip `: Endereço IP do cliente no formato IPv4 +- `--user-payer `: Chave pública do assinante ou 'me' para o pagador atual + + +### Listar a lista de permissão de assinantes de um grupo + +Para listar todos os assinantes na lista de permissão de um grupo multicast específico, use: + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code `: O código do grupo multicast cuja lista de permissão de assinantes você deseja ver. + +Este comando exibe todos os assinantes atualmente autorizados a se conectar ao grupo especificado. + +--- + +Para mais informações sobre conexão e uso de multicast, consulte [Outras Conexões Multicast](Other%20Multicast%20Connection.md). diff --git a/docs/multicast-admin.zh.md b/docs/multicast-admin.zh.md new file mode 100644 index 0000000..4b0daba --- /dev/null +++ b/docs/multicast-admin.zh.md @@ -0,0 +1,210 @@ + +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + +# DoubleZero中的多播组管理 + +**多播组**是共享公共标识符(通常是多播IP地址)的设备或网络节点的逻辑集合,用于高效地向多个接收者传输数据。与单播(一对一)或广播(一对全部)通信不同,多播使发送方能够传输单个数据流,网络仅为已加入该组的接收者复制该数据流。 + +这种方法优化了带宽使用,并减少了发送方和网络基础设施的负载,因为数据包在每条链路上只传输一次,仅在必要时才会复制以到达多个订阅者。多播组通常用于实时视频流、会议、金融数据分发和实时消息系统等场景。 + +在DoubleZero中,多播组提供了一种安全且受控的机制,用于管理谁可以在每个组内发送(发布者)和接收(订阅者)数据,确保高效且受治理的信息分发。 + +```mermaid +flowchart LR + subgraph 发布者 + P1[发布者 1] + P2[发布者 2] + P3[发布者 3] + end + subgraph 订阅者 + S1[订阅者 1] + S2[订阅者 2] + S3[订阅者 3] + S4[订阅者 4] + end + P1 --> B[多播组] + P2 --> B + P3 --> B + B --> S1 + B --> S2 + B --> S3 + B --> S4 +``` + +上图显示了多个用户如何向多播组发布消息,以及多个用户如何订阅接收这些消息。DoubleZero网络高效地复制数据包,确保所有订阅者都能收到消息,而不会产生不必要的传输开销。 + +## 1. 创建和列出多播组 + +多播组是DoubleZero中安全高效数据分发的基础。每个组都有唯一标识,并配置了特定的带宽和所有者。只有DoubleZero基金会管理员才能创建新的多播组,确保适当的治理和资源分配。 + +创建后,可以列出多播组,以提供所有可用组、其配置和当前状态的概览。这对于网络运营商和组所有者监控资源和管理访问至关重要。 + +**创建多播组:** + +只有DoubleZero基金会才能创建新的多播组。创建命令需要唯一代码、最大带宽和所有者公钥(或当前付款人的"me")。 + +``` +doublezero multicast group create --code --max-bandwidth --owner +``` + +- `--code `:多播组的唯一代码(如mg01) +- `--max-bandwidth `:组的最大带宽(如10Gbps、100Mbps) +- `--owner `:所有者公钥 + + + +**列出所有多播组:** + +要列出所有多播组并查看摘要信息(包括组代码、多播IP、带宽、发布者和订阅者数量、状态和所有者): + +``` +doublezero multicast group list +``` + +示例输出: + +``` + account | code | multicast_ip | max_bandwidth | publishers | subscribers | status | owner + 3eUvZvcpCtsfJ8wqCZvhiyBhbY2Sjn56JcQWpDwsESyX | jito-shredstream | 233.84.178.2 | 200Mbps | 8 | 0 | activated | 44NdeuZfjhHg61grggBUBpCvPSs96ogXFDo1eRNSKj42 + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 233.84.178.0 | 1Gbps | 0 | 0 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 2CuZeqMrQsrJ4h4PaAuTEpL3ETHQNkSC2XDo66vbDoxw | reserve | 233.84.178.1 | 100Kbps | 0 | 0 | activated | DZfPq5hgfwrSB3aKAvcbua9MXE3CABZ233yj6ymncmnd + 4LezgDr5WZs9XNTgajkJYBsUqfJYSd19rCHekNFCcN5D | turbine | 233.84.178.3 | 1Gbps | 0 | 4 | activated | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +此命令显示包含所有多播组及其主要属性的表格: +- `account`:组账户地址 +- `code`:多播组代码 +- `multicast_ip`:分配给组的多播IP地址 +- `max_bandwidth`:组允许的最大带宽 +- `publishers`:组中的发布者数量 +- `subscribers`:组中的订阅者数量 +- `status`:当前状态(如activated) +- `owner`:所有者公钥 + + +创建组后,所有者可以管理哪些用户可以作为发布者或订阅者连接。 + + +## 2. 管理发布者/订阅者允许列表 + +发布者和订阅者允许列表对于控制DoubleZero中多播组的访问至关重要。这些列表明确定义了哪些用户被允许在特定多播组内发布(发送数据)或订阅(接收数据)。 + +- **发布者允许列表:** 只有添加到发布者允许列表的用户才能向多播组发送数据。这确保只有授权的来源才能分发信息,防止未经授权或恶意的发布。 +- **订阅者允许列表:** 只有订阅者允许列表中的用户才能订阅和接收来自多播组的数据。这保护了传输信息的访问,确保只有经批准的接收者才能收到消息。 + +管理这些列表是组所有者的责任,他可以使用DoubleZero CLI添加、删除或查看授权的发布者和订阅者。适当的允许列表管理对于维护多播通信的安全性、完整性和可追溯性至关重要。 + +> **注意:** 要订阅或发布到多播组,用户必须首先按照标准连接程序获得连接到DoubleZero的授权。这里描述的允许列表命令仅将已授权的DoubleZero用户与多播组关联。将新IP添加到多播组的允许列表本身不授予对DoubleZero的访问权限;用户必须在与多播组交互之前已完成一般授权流程。 + + +### 将发布者添加到允许列表 + +``` +doublezero multicast group allowlist publisher add --code --client-ip --user-payer +``` + +- `--code `:要添加发布者的多播组代码 +- `--client-ip `:IPv4格式的客户端IP地址 +- `--user-payer `:发布者公钥或当前付款人的"me" + + +### 从允许列表中删除发布者 + +``` +doublezero multicast group allowlist publisher remove --code --client-ip --user-payer +``` + +- `--code `:要删除发布者允许列表的多播组代码或公钥 +- `--client-ip `:IPv4格式的客户端IP地址 +- `--user-payer `:发布者公钥或当前付款人的"me" + + +### 列出组的发布者允许列表 + +要列出特定多播组允许列表中的所有发布者,请使用: + +``` +doublezero multicast group allowlist publisher list --code +``` + +- `--code `:您要查看其发布者允许列表的多播组的代码。 + +**示例:** + +``` +doublezero multicast group allowlist publisher list --code mg01 +``` + +示例输出: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +此命令显示当前允许连接到指定组的所有发布者,包括其账户、组代码、客户端IP和用户付款人。 + + +### 将订阅者添加到允许列表 + +``` +doublezero multicast group allowlist subscriber add --code --client-ip --user-payer +``` + +- `--code `:要添加订阅者允许列表的多播组代码或公钥 +- `--client-ip `:IPv4格式的客户端IP地址 +- `--user-payer `:订阅者公钥或当前付款人的"me" + + +### 从允许列表中删除订阅者 + +``` +doublezero multicast group allowlist subscriber remove --code --client-ip --user-payer +``` + +- `--code `:要删除订阅者允许列表的多播组代码或公钥 +- `--client-ip `:IPv4格式的客户端IP地址 +- `--user-payer `:订阅者公钥或当前付款人的"me" + + +### 列出组的订阅者允许列表 + +要列出特定多播组允许列表中的所有订阅者,请使用: + +``` +doublezero multicast group allowlist subscriber list --code +``` + +- `--code `:您要查看其订阅者允许列表的多播组的代码。 + +**示例:** + +``` +doublezero multicast group allowlist subscriber list --code mg01 +``` + +示例输出: + +``` + account | multicast_group | client_ip | user_payer + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 186.233.185.50 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 206.189.166.187 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 164.92.244.134 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 204.74.232.130 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 161.35.58.190 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan + 8ZmH3bx4k1JNYLyEviNAsCFxRoDoG3Y4ntVCUxu24fUF | mg01 | 159.223.46.72 | DZfHfcCXTLwgZeCRKQ1FL1UuwAwFAZM93g86NMYpfYan +``` + + +此命令显示当前允许连接到指定组的所有订阅者,包括其账户、组代码、客户端IP和用户付款人。 + +--- + +有关连接和使用多播的更多信息,请参阅[其他多播连接](Other%20Multicast%20Connection.md)。 diff --git a/docs/paying-fees.es.md b/docs/paying-fees.es.md new file mode 100644 index 0000000..4ec838e --- /dev/null +++ b/docs/paying-fees.es.md @@ -0,0 +1,88 @@ +# Precios y Tarifas para Validadores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**Precios simples y alineados para validadores Solana** + +Las tarifas comenzarán en la época 859, que inicia el sábado 4 de octubre a las 4am ET. Se cobra una tarifa plana del 5% sobre las recompensas por firma de bloques y las tarifas de prioridad. + +Las tarifas financian directamente la infraestructura que hace posible DoubleZero, incluyendo líneas de fibra física y equipos en centros de datos. + +Una exploración detallada sobre por qué existen las tarifas y el modelo de precios para validadores se puede encontrar [aquí](https://doublezero.xyz/fees). + +***Esta guía se enfoca en cómo se pagan las tarifas desde una perspectiva técnica.*** + +## **Modelo de Liquidación** + +- Las tarifas están denominadas en SOL y se liquidan por época +- La deuda del validador se calcula on-chain por el programa de Distribución de Ingresos +- Cada validador tiene una cuenta de depósito (PDA) para pagos +- Ventana de financiamiento: Las tarifas se depositan durante la época de Solana siguiente a su acumulación. Es decir, las tarifas acumuladas durante la época 860 deben pagarse en la época 861. +- Se admite la prefinanciación. Los saldos se reducen a lo largo de las épocas + +--- + +# **Estimación de Tarifas** + +Las estimaciones históricas y los datos por pubkey están disponibles en el [Repositorio de Estimaciones de Tarifas](http://github.com/doublezerofoundation/fees). El repositorio no reemplaza los datos on-chain. Usted es responsable del saldo on-chain, no del saldo en este repositorio. + +¿Preguntas? Contacte a Nihar Shah en nihar@doublezero.us + +# Detalles para Desarrolladores + +### Interfaz de Línea de Comandos +El CLI de DoubleZero proporciona comandos para gestionar los depósitos de validadores y monitorear saldos. +Necesitará SOL en la cuenta desde la que ejecute estos comandos para pagar el gas. + +
+ +### Paso 1: Comprender la Deuda Adeudada + +Para ver la deuda en una dirección específica puede usar este formato: +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +Examinaremos un ejemplo de salida a continuación: + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +En el ejemplo de salida hay dos posibles resultados bajo `note`. `Not funded` significa que la cuenta no ha sido financiada. En el ejemplo, `0.632515639 SOL needed` es la cantidad pendiente de SOL necesaria para pagar todas las deudas actualmente adeudadas asociadas con el ID de Validador objetivo. + +
+ +
+ +### Paso 2: Pagar la Deuda Adeudada + +!!! note inline end + Puede programar este comando para que se ejecute a intervalos regulares. + +Para pagar la deuda adeudada puede usar el siguiente comando. Esto usará automáticamente el keypair predeterminado en `$HOME/.config/solana/id.json` + +Puede especificar el keypair con el que desea pagar su deuda añadiendo el argumento `-k path/to/keypair.json` al final del comando. + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +A continuación se proporciona un ejemplo de salida: + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` devuelve la cuenta de depósito que fue financiada + +`Funded:` devuelve el hash de la transacción, que puede consultar en su explorador Solana favorito + +`Node ID:` devuelve el ID del Validador por el que se pagó + +`Balance:` devuelve la cantidad de SOL que hay en la cuenta de depósito, después de que se complete la transferencia + +
diff --git a/docs/paying-fees.fr.md b/docs/paying-fees.fr.md new file mode 100644 index 0000000..5365fdf --- /dev/null +++ b/docs/paying-fees.fr.md @@ -0,0 +1,89 @@ +# Tarification et Frais des Validateurs +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**Tarification simple et alignée pour les validateurs Solana** + +Les frais commenceront à l'époque 859, qui débute le samedi 4 octobre à 4h du matin ET. Des frais fixes de 5 % sont prélevés sur les récompenses de signature de blocs et les frais de priorité. + +Les frais financent directement l'infrastructure qui rend DoubleZero possible. Y compris les lignes de fibre physiques et l'équipement dans les centres de données. + +Une exploration approfondie de la raison d'être des frais et du modèle de tarification des validateurs se trouve [ici](https://doublezero.xyz/fees). + +***Ce guide se concentre sur la façon dont les frais sont payés d'un point de vue technique.*** + +## **Modèle de Règlement** + +- Les frais sont libellés en SOL et réglés par époque +- La dette du validateur est calculée on-chain par le programme de Distribution des Revenus +- Chaque validateur dispose d'un compte de dépôt (PDA) pour les paiements +- Fenêtre de financement : Les frais sont déposés pendant l'époque Solana suivant leur accumulation. C'est-à-dire que les frais accumulés pendant l'époque 860 doivent être payés à l'époque 861. + +- Le pré-financement est pris en charge. Les soldes diminuent au fil des époques + +--- + +# **Estimation des Frais** + +Les estimations historiques et les données par clé publique sont disponibles dans le [Dépôt d'Estimation des Frais](http://github.com/doublezerofoundation/fees). Le dépôt ne remplace pas les données on-chain. Vous êtes responsable du solde on-chain, pas du solde dans ce dépôt. + +Questions ? Contactez Nihar Shah à nihar@doublezero.us + +# Détails pour les Développeurs + +### Interface de Ligne de Commande +La CLI DoubleZero fournit des commandes pour gérer les dépôts des validateurs et surveiller les soldes. +Vous aurez besoin de SOL dans le compte depuis lequel vous exécutez ces commandes pour payer les frais de gaz. + +
+ +### Étape 1 : Comprendre la Dette Due + +Pour consulter la dette à une adresse spécifique, vous pouvez utiliser ce format : +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +Nous examinerons un exemple de sortie ci-dessous : + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +Dans l'exemple de sortie, deux résultats différents sont possibles sous `note`. `Not funded` signifie que le compte n'a pas été financé. Dans l'exemple, `0.632515639 SOL needed` est le montant SOL restant nécessaire pour payer toutes les dettes actuellement dues associées à l'ID Validateur cible. + +
+ +
+ +### Étape 2 : Payer la Dette Due + +!!! note inline end + Vous pouvez planifier l'exécution de cette commande à intervalles réguliers. + +Pour rembourser la dette due, vous pouvez utiliser la commande suivante. Cela utilisera automatiquement la keypair par défaut dans `$HOME/.config/solana/id.json` + +Vous pouvez spécifier la keypair avec laquelle vous souhaitez payer votre dette en ajoutant l'argument `-k path/to/keypair.json` à la fin de la commande. + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +Un exemple de sortie est fourni ci-dessous + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` renvoie le compte de dépôt qui a été financé + +`Funded:` renvoie le hash de transaction, que vous pouvez consulter dans votre explorateur Solana préféré + +`Node ID:` renvoie l'ID Validateur pour lequel le paiement a été effectué + +`Balance:` renvoie le montant de SOL dans le compte de dépôt, après le transfert terminé + +
diff --git a/docs/paying-fees.it.md b/docs/paying-fees.it.md new file mode 100644 index 0000000..1e367ea --- /dev/null +++ b/docs/paying-fees.it.md @@ -0,0 +1,89 @@ +# Prezzi e Commissioni per Validatori +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**Prezzi semplici e allineati per i validatori Solana** + +Le commissioni inizieranno dall'epoca 859, che inizia sabato 4 ottobre alle 4:00 ET. Viene applicata una commissione fissa del 5% sulle ricompense per la firma dei blocchi e sulle commissioni prioritarie. + +Le commissioni finanziano direttamente l'infrastruttura che rende possibile DoubleZero, incluse le linee in fibra fisica e le apparecchiature nei data center. + +Un'esplorazione approfondita del perché esistono le commissioni e del modello di prezzi per i validatori è disponibile [qui](https://doublezero.xyz/fees). + +***Questa guida si concentra su come vengono pagate le commissioni dal punto di vista tecnico.*** + +## **Modello di Liquidazione** + +- Le commissioni sono denominate in SOL e liquidate per epoca +- Il debito del validatore viene calcolato on-chain dal programma Revenue Distribution +- Ogni validatore ha un account di deposito (PDA) per i pagamenti +- Finestra di finanziamento: Le commissioni vengono depositate durante l'epoca Solana successiva alla loro maturazione. Ovvero, le commissioni accumulate durante l'epoca 860 devono essere pagate nell'epoca 861. + +- Il pre-finanziamento è supportato. I saldi si riducono tra le epoche + +--- + +# **Stima delle Commissioni** + +Stime storiche e dati per chiave pubblica sono disponibili nel [Repository Stime Commissioni](http://github.com/doublezerofoundation/fees). Il repository non sostituisce i dati on-chain. Sei responsabile del saldo on-chain, non del saldo in questo repository. + +Domande? Contatta Nihar Shah a nihar@doublezero.us + +# Dettagli per Sviluppatori + +### Interfaccia a Riga di Comando +La CLI DoubleZero fornisce comandi per gestire i depositi dei validatori e monitorare i saldi. +Avrai bisogno di SOL nell'account da cui esegui questi comandi per pagare il gas. + +
+ +### Passo 1: Comprendere il Debito Dovuto + +Per visualizzare il debito a un indirizzo specifico puoi usare questo formato: +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +Esaminiamo un esempio di output di seguito: + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +Nell'output di esempio ci sono due possibili output sotto `note`. `Not funded` significa che l'account non è stato finanziato. Nell'esempio, `0.632515639 SOL needed` è l'importo in sospeso di SOL necessario per pagare tutti i debiti attualmente dovuti associati all'ID Validatore target. + +
+ +
+ +### Passo 2: Pagare il Debito Dovuto + +!!! note inline end + Puoi pianificare l'esecuzione di questo comando a intervalli regolari. + +Per pagare il debito dovuto puoi usare il seguente comando. Utilizzerà automaticamente il keypair predefinito in `$HOME/.config/solana/id.json` + +Puoi specificare il keypair con cui vuoi pagare il debito aggiungendo l'argomento `-k path/to/keypair.json` alla fine del comando. + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +Di seguito è fornito un esempio di output + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` restituisce l'account di deposito che è stato finanziato + +`Funded:` restituisce l'hash della transazione, che puoi cercare nel tuo explorer Solana preferito + +`Node ID:` restituisce l'ID Validatore per cui è stato effettuato il pagamento + +`Balance:` restituisce l'importo di SOL nell'account di deposito, dopo il completamento del trasferimento + +
diff --git a/docs/paying-fees.ja.md b/docs/paying-fees.ja.md new file mode 100644 index 0000000..9b0576d --- /dev/null +++ b/docs/paying-fees.ja.md @@ -0,0 +1,89 @@ +# バリデーターの料金体系 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**Solanaバリデーター向けのシンプルで公平な料金設定** + +手数料はエポック859から開始し、東部時間10月4日(土)午前4時から始まります。ブロック署名報酬とプライオリティ手数料に対して一律5%の手数料が徴収されます。 + +手数料はDoubleZeroを可能にするインフラに直接充当されます。物理的な光ファイバーケーブルやデータセンターの機器などが含まれます。 + +手数料が存在する理由とバリデーターの料金モデルの詳細は[こちら](https://doublezero.xyz/fees)をご覧ください。 + +***このガイドは技術的な観点から手数料の支払い方法に焦点を当てています。*** + +## **決済モデル** + +- 手数料はSOL建てで、エポックごとに決済されます +- バリデーターの負債は収益配分プログラムによってオンチェーンで計算されます +- 各バリデーターには支払い用のデポジットアカウント(PDA)があります +- 資金調達ウィンドウ:手数料は発生した次のSolanaエポック中に預け入れられます。例えば、エポック860中に蓄積された手数料は、エポック861に支払う必要があります。 + +- 先払いに対応しています。残高は複数のエポックにわたって引き落とされます。 + +--- + +# **手数料の見積もり** + +過去の見積もりと公開鍵ごとのデータは[手数料見積もりリポジトリ](http://github.com/doublezerofoundation/fees)で確認できます。このリポジトリはオンチェーンデータの代替ではありません。オンチェーンの残高はあなた自身の責任であり、このリポジトリの残高ではありません。 + +ご質問はNihar Shah(nihar@doublezero.us)までお問い合わせください。 + +# 開発者向け詳細 + +### コマンドラインインターフェース +DoubleZero CLIは、バリデーターのデポジットを管理し、残高を監視するコマンドを提供します。 +これらのコマンドを実行するアカウントにガス代としてSOLが必要です。 + +
+ +### ステップ1:未払い負債の確認 + +特定のアドレスの負債を表示するには、次の形式を使用します: +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +以下に出力例を示します: + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +サンプル出力には`note`列に2種類の出力が表示される場合があります。`Not funded`はアカウントへの資金調達がされていないことを意味します。例の`0.632515639 SOL needed`は、対象バリデーターIDに関連する現在の未払い負債全額を支払うために必要な未払いSOL額です。 + +
+ +
+ +### ステップ2:未払い負債の支払い + +!!! note inline end + このコマンドを定期的な間隔で実行するようにスケジュールできます。 + +未払い負債を支払うには、次のコマンドを使用します。これにより、`$HOME/.config/solana/id.json`のデフォルトキーペアが自動的に使用されます。 + +コマンドの末尾に`-k path/to/keypair.json`引数を追加することで、負債の支払いに使用するキーペアを指定できます。 + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +以下に出力例を示します。 + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` は資金が投入されたデポジットアカウントを返します + +`Funded:` はトランザクションハッシュを返します。お好みのSolanaエクスプローラーで確認できます + +`Node ID:` は支払いが行われたバリデーターIDを返します + +`Balance:` は転送完了後のデポジットアカウントのSOL残高を返します + +
diff --git a/docs/paying-fees.ko.md b/docs/paying-fees.ko.md new file mode 100644 index 0000000..892679d --- /dev/null +++ b/docs/paying-fees.ko.md @@ -0,0 +1,89 @@ +# 검증자 가격 및 수수료 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**Solana 검증자를 위한 간단하고 투명한 가격** + +수수료는 2024년 10월 4일 토요일 동부 시간 오전 4시에 시작되는 859 에포크부터 시작됩니다. 블록 서명 보상 및 우선 수수료에 대해 균일한 5% 수수료가 부과됩니다. + +수수료는 DoubleZero를 가능하게 하는 인프라, 즉 데이터 센터의 물리적 광섬유 라인 및 장비에 직접 자금을 지원합니다. + +수수료가 존재하는 이유와 검증자 가격 모델에 대한 심층적인 탐구는 [여기](https://doublezero.xyz/fees)에서 찾을 수 있습니다. + +***이 가이드는 기술적 관점에서 수수료가 어떻게 납부되는지에 초점을 맞춥니다.*** + +## **결제 모델** + +- 수수료는 SOL로 표시되며 에포크별로 정산됩니다 +- 검증자 채무는 Revenue Distribution 프로그램에 의해 온체인으로 계산됩니다 +- 각 검증자는 결제를 위한 보증금 계정(PDA)을 가집니다 +- 자금 조달 기간: 수수료는 발생한 Solana 에포크 이후 에포크에 입금됩니다. 즉, 860 에포크 동안 적립된 수수료는 861 에포크에 납부해야 합니다. + +- 선결제가 지원됩니다. 잔액은 에포크에 걸쳐 차감됩니다 + +--- + +# **수수료 추정** + +과거 추정치 및 공개 키별 데이터는 [수수료 추정 저장소](http://github.com/doublezerofoundation/fees)에서 확인할 수 있습니다. 저장소는 온체인 데이터를 대체하지 않습니다. 저장소의 잔액이 아닌 온체인 잔액을 관리할 책임이 있습니다. + +질문이 있으시면 Nihar Shah(nihar@doublezero.us)에게 연락하세요. + +# 개발자 세부 정보 + +### 명령줄 인터페이스 +DoubleZero CLI는 검증자 보증금을 관리하고 잔액을 모니터링하는 명령을 제공합니다. +이 명령을 실행하는 계정에는 가스 비용을 위한 SOL이 필요합니다. + +
+ +### 1단계: 미납 채무 이해 + +특정 주소의 채무를 보려면 다음 형식을 사용할 수 있습니다: +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +아래에서 예제 출력을 살펴보겠습니다: + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +샘플 출력에는 `note` 아래에 두 가지 다른 출력이 있습니다. `Not funded`는 계정에 자금이 없음을 의미합니다. 예에서 `0.632515639 SOL needed`는 대상 검증자 ID와 관련된 현재 미납 채무를 모두 납부하는 데 필요한 미납 SOL 금액입니다. + +
+ +
+ +### 2단계: 미납 채무 납부 + +!!! note inline end + 이 명령을 정기적인 간격으로 실행하도록 예약할 수 있습니다. + +미납 채무를 납부하려면 다음 명령을 사용할 수 있습니다. 이 명령은 자동으로 `$HOME/.config/solana/id.json`의 기본 키쌍을 사용합니다. + +명령 끝에 `-k path/to/keypair.json` 인수를 추가하여 채무 납부에 사용할 키쌍을 지정할 수 있습니다. + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +아래에 예제 출력이 제공됩니다. + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` 자금이 지원된 보증금 계정을 반환합니다 + +`Funded:` 즐겨찾는 Solana 탐색기에서 조회할 수 있는 트랜잭션 해시를 반환합니다 + +`Node ID:` 납부된 검증자 ID를 반환합니다 + +`Balance:` 전송 완료 후 보증금 계정의 SOL 금액을 반환합니다 + +
diff --git a/docs/paying-fees.pt.md b/docs/paying-fees.pt.md new file mode 100644 index 0000000..78718b1 --- /dev/null +++ b/docs/paying-fees.pt.md @@ -0,0 +1,89 @@ +# Preços e Taxas para Validadores +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**Preços simples e alinhados para validadores Solana** + +As taxas começarão na epoch 859, que começa no sábado, 4 de outubro, às 4h ET. Uma taxa plana de 5% é cobrada sobre as recompensas de assinatura de bloco e taxas de prioridade. + +As taxas financiam diretamente a infraestrutura que torna o DoubleZero possível, incluindo linhas de fibra física e equipamentos em data centers. + +Uma exploração aprofundada de por que as taxas existem e o modelo de preços para validadores pode ser encontrada [aqui](https://doublezero.xyz/fees). + +***Este guia foca em como as taxas são pagas de uma perspectiva técnica.*** + +## **Modelo de Liquidação** + +- As taxas são denominadas em SOL e liquidadas por epoch +- A dívida do validador é calculada on-chain pelo programa de Distribuição de Receita +- Cada validador tem uma conta de depósito (PDA) para pagamentos +- Janela de financiamento: As taxas são depositadas durante a epoch Solana seguinte ao seu acúmulo. Ou seja, as taxas acumuladas durante a epoch 860 precisam ser pagas na epoch 861. + +- O pré-financiamento é suportado. Os saldos são reduzidos ao longo das epochs + +--- + +# **Estimando Taxas** + +Estimativas históricas e dados por pubkey estão disponíveis no [Repositório de Estimativas de Taxas](http://github.com/doublezerofoundation/fees). O repositório não substitui os dados on-chain. Você é responsável pelo saldo on-chain, não pelo saldo neste repositório. + +Dúvidas? Entre em contato com Nihar Shah em nihar@doublezero.us + +# Detalhes para Desenvolvedores + +### Interface de Linha de Comando +O CLI do DoubleZero fornece comandos para gerenciar depósitos de validadores e monitorar saldos. +Você precisará de SOL na conta de onde executa esses comandos para pagar o gas. + +
+ +### Passo 1: Entendendo a Dívida Devida + +Para visualizar a dívida em um endereço específico você pode usar este formato: +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +Examinaremos um exemplo de saída abaixo: + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +Na saída de exemplo há duas saídas possíveis diferentes em `note`. `Not funded` significa que a conta não foi financiada. No exemplo, `0.632515639 SOL needed` é o valor pendente de SOL necessário para pagar todas as dívidas atualmente devidas associadas ao ID do Validador alvo. + +
+ +
+ +### Passo 2: Pagando a Dívida Devida + +!!! note inline end + Você pode agendar este comando para ser executado em intervalos regulares. + +Para pagar a dívida devida você pode usar o seguinte comando. Isso usará automaticamente o keypair padrão em `$HOME/.config/solana/id.json` + +Você pode especificar o keypair com o qual deseja pagar sua dívida adicionando o argumento `-k path/to/keypair.json` ao final do comando. + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +Um exemplo de saída é fornecido abaixo + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` retorna a conta de depósito que foi financiada + +`Funded:` retorna o hash da transação, que você pode consultar no seu explorador Solana favorito + +`Node ID:` retorna o ID do Validador pelo qual foi pago + +`Balance:` retorna a quantidade de SOL que está na conta de depósito, após a conclusão da transferência + +
diff --git a/docs/paying-fees.zh.md b/docs/paying-fees.zh.md new file mode 100644 index 0000000..7aae7d0 --- /dev/null +++ b/docs/paying-fees.zh.md @@ -0,0 +1,89 @@ +# 验证器定价与费用 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +**为Solana验证器提供简单、一致的定价** + +费用将从第859个epoch开始征收,该epoch从美国东部时间10月4日(周六)凌晨4点开始。对区块签名奖励和优先费用收取统一5%的费用。 + +这些费用直接资助使DoubleZero成为可能的基础设施,包括物理光纤线路和数据中心设备。 + +有关费用存在原因及验证器定价模型的深入探讨,请参阅[此处](https://doublezero.xyz/fees)。 + +***本指南从技术角度重点介绍如何支付费用。*** + +## **结算模式** + +- 费用以SOL计价,按epoch结算 +- 验证器债务由收入分配程序在链上计算 +- 每个验证器都有一个用于支付的存款账户(PDA) +- 资金窗口:费用在其累积后的下一个Solana epoch期间存入。即在第860个epoch累积的费用需要在第861个epoch支付。 + +- 支持预付资金。余额跨epoch递减 + +--- + +# **估算费用** + +历史估算和每个公钥的数据可在[费用估算仓库](http://github.com/doublezerofoundation/fees)中获取。该仓库不替代链上数据。您负责链上余额,而非此仓库中的余额。 + +问题?请联系Nihar Shah:nihar@doublezero.us + +# 开发者详情 + +### 命令行界面 +DoubleZero CLI提供命令来管理验证器存款和监控余额。 +您需要在运行这些命令的账户中拥有SOL来支付gas费用。 + +
+ +### 步骤1:了解欠款 + +要查看特定地址的债务,您可以使用以下格式: +``` +doublezero-solana revenue-distribution fetch validator-debts --node-id ValidatorIdentity111111111111111111111111111 +``` +我们将在下面检查示例输出: + +``` +| node_id | total_amount | deposit_balance | note | +|----------------------------------------------|-----------------|-----------------|------------------------| +| ValidatorIdentity111111111111111111111111111 | 0.632736605 SOL | 0.000220966 SOL | 0.632515639 SOL needed | +| ValidatorIdentity111111111111111111111111111 | 24.520162479 SOL| 0.000000000 SOL | Not funded | +``` +在示例输出中,`note`下有两种不同的可能输出。`Not funded`表示账户尚未资金化。在示例中,`0.632515639 SOL needed`是与目标验证器ID相关的所有当前欠款所需的未偿还SOL金额。 + +
+ +
+ +### 步骤2:支付欠款 + +!!! note inline end + 您可以安排此命令定期运行。 + +要偿还欠款,您可以使用以下命令。这将自动使用`$HOME/.config/solana/id.json`中的默认密钥对。 + +您可以通过在命令末尾添加参数`-k path/to/keypair.json`来指定您要用于支付债务的密钥对。 + +``` +doublezero-solana revenue-distribution validator-deposit --fund-outstanding-debt --node-id ValidatorIdentity111111111111111111111111111 +``` +以下提供示例输出 + +``` +Solana validator deposit: DZ_PDA_MvFTgPku3dUrw2W3dbeK5dhxmXYKKYETDUK1V +Funded: TransactionHashHVxSobvdY2r14CkEwsBDhwf2dBmFatyeftisrdfSocMM2tXPjFvXPRmVs1xagiqKSX4b92fgt +Node ID: ValidatorIdentity111111111111111111111111111 +Balance: 0.309294915 SOL +``` + +`Solana validator deposit:` 返回已资金化的存款账户 + +`Funded:` 返回交易哈希,您可以在您喜欢的Solana浏览器中查询 + +`Node ID:` 返回已支付的验证器ID + +`Balance:` 返回转账完成后存款账户中的SOL金额 + +
diff --git a/docs/paying-fees2z.es.md b/docs/paying-fees2z.es.md new file mode 100644 index 0000000..9e53292 --- /dev/null +++ b/docs/paying-fees2z.es.md @@ -0,0 +1,101 @@ +**Revise el Descargo de Responsabilidad antes de acceder o usar el código o cualquier material relacionado.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Descargo de Responsabilidad" + + Este documento y el código asociado se proporcionan únicamente con fines informativos y técnicos. La funcionalidad de conversión de tokens descrita aquí es sin custodia: los usuarios interactúan directamente con los contratos inteligentes subyacentes y retienen el control total de sus activos en todo momento. + + El sistema puede depender de o interactuar con código, fuentes de datos o mecanismos de precios y tarifas de terceros (por ejemplo, contratos inteligentes, APIs o exchanges descentralizados) que no son desarrollados, controlados ni revisados por los desarrolladores o publicadores. No se hace ninguna declaración o garantía sobre la precisión, funcionalidad o seguridad de ningún componente de terceros. + Los desarrolladores y publicadores de este código no garantizan su exactitud, integridad o disponibilidad continua. El código y los materiales relacionados se proporcionan "tal cual" y pueden contener errores, bugs o vulnerabilidades. El uso es completamente bajo su propio riesgo. + Los desarrolladores y publicadores no reciben ninguna tarifa en conexión con el uso de estos contratos. No tienen ninguna obligación de mantener, actualizar o apoyar el código o la documentación relacionada. + + Este documento no constituye una oferta de venta, una solicitud de compra ni una recomendación para participar en ninguna conversión de tokens, swap u otra transacción. No se proporciona asesoramiento legal, financiero ni de inversión. + Los usuarios son los únicos responsables de determinar la legalidad de sus actividades. Deben revisar las leyes y regulaciones aplicables en su jurisdicción y consultar asesores independientes antes de usar el código o participar en cualquier conversión. El uso está prohibido donde sea ilegal, incluso por personas o entidades sujetas a sanciones o en jurisdicciones restringidas. + + En la medida máxima permitida por la ley, los desarrolladores y publicadores rechazan toda responsabilidad por cualquier pérdida, daño o reclamación que surja de o en relación con el uso del código o la participación en la conversión. + + La revisión y el uso de este documento y el código asociado están sujetos a los [Términos y Condiciones del Sitio Web](https://doublezero.xyz/terms) y los [Términos y Condiciones del Protocolo](https://doublezero.xyz/terms-protocol). + +Los validadores pueden pagar sus tarifas en 2Z a través de un [programa de swap](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion) onchain. El swap se realiza intercambiando 2Z por SOL. El saldo de SOL en su cuenta de depósito se actualizará según el swap. + + +Este proceso **siempre** usará incrementos de 1 SOL. El resultado de este swap **siempre** se depositará directamente en su cuenta de depósito. Es una vía de un solo sentido: no puede recuperar el 2Z o SOL de esta transacción. Se enviará a un módulo de distribución onchain. + + +#### Paso 1 +Primero determine cuál es la tasa de conversión actual + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +salida: +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### Paso 2 +Coloque una orden con límite. Ejecutará este swap bajo su propio riesgo. No hacemos recomendaciones sobre el perfil de riesgo, y los ejemplos proporcionados aquí son con fines educativos. + + +##### Cómo estructurar una orden con límite +Basándonos en el ejemplo anterior, ahora colocaremos una orden con límite un 5% por encima del precio de cotización. +797.76 * 1.05 = 837.65 + + +En este ejemplo, asumiremos que la cuenta de depósito tiene 0 SOL. + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +Note en el comando anterior `--fund 1`, esto financia explícitamente 1 SOL en la cuenta de depósito. + + +Si elige cualquier número diferente a 1 recibirá un error indicando la cantidad incorrecta: +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +Se le pedirá confirmar la transacción: + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +salida: +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +Observe que en un swap exitoso el `Balance:` se ha actualizado a 1 SOL. + + +Si un precio está fuera de su rango especificado se encontrará con un error como: +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` diff --git a/docs/paying-fees2z.fr.md b/docs/paying-fees2z.fr.md new file mode 100644 index 0000000..3ae6642 --- /dev/null +++ b/docs/paying-fees2z.fr.md @@ -0,0 +1,102 @@ +**Lisez le Avertissement avant d'accéder ou d'utiliser le code ou tout matériel associé.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Avertissement" + + Ce document et le code associé sont fournis à des fins d'information et techniques uniquement. La fonctionnalité de conversion de tokens décrite ici est non-custodiale — les utilisateurs interagissent directement avec les contrats intelligents sous-jacents et conservent le plein contrôle de leurs actifs à tout moment. + + Le système peut s'appuyer sur ou interagir avec du code tiers, des sources de données, ou des mécanismes de tarification et de frais (par exemple, des contrats intelligents, des API, ou des échanges décentralisés) qui ne sont pas développés, contrôlés, ou examinés par le(s) développeur(s) ou éditeur(s). Aucune représentation ou garantie n'est faite quant à l'exactitude, la fonctionnalité, ou la sécurité de tout composant tiers. + Le(s) développeur(s) et éditeur(s) de ce code ne garantissent pas son exactitude, son exhaustivité, ou sa disponibilité continue. Le code et les matériaux associés sont fournis "tels quels", et peuvent contenir des bugs, des erreurs, ou des vulnérabilités. L'utilisation est entièrement à vos propres risques. + Le(s) développeur(s) et éditeur(s) ne reçoivent aucuns frais en rapport avec l'utilisation de ces contrats. Ils n'ont aucune obligation de maintenir, mettre à jour, ou soutenir le code ou la documentation associée. + + Ce document ne constitue pas une offre de vente, une sollicitation d'achat, ou une recommandation de participer à une conversion de tokens, un échange ou une autre transaction. Aucun conseil juridique, financier, ou d'investissement n'est fourni. + Les utilisateurs sont seuls responsables de déterminer la légalité de leurs activités. Ils doivent examiner les lois et réglementations applicables dans leur juridiction et consulter des conseillers indépendants avant d'utiliser le code ou de participer à une conversion. L'utilisation est interdite là où elle serait illégale, y compris par des personnes ou entités soumises à des sanctions ou dans des juridictions restreintes. + + Dans la mesure maximale permise par la loi, le(s) développeur(s) et éditeur(s) déclinent toute responsabilité pour toute perte, dommage, ou réclamation découlant de ou en rapport avec l'utilisation du code ou la participation à la conversion. + + L'examen et l'utilisation de ce document et du code associé sont soumis aux [Conditions Générales du Site Web](https://doublezero.xyz/terms) et aux [Conditions Générales du Protocole](https://doublezero.xyz/terms-protocol). + +Les validateurs peuvent payer leurs frais en 2Z via un [programme de swap](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion) onchain. Le swap est effectué en échangeant des 2Z contre des SOL. Le solde SOL de votre compte de dépôt sera mis à jour en fonction du swap. + + +Ce processus utilisera **toujours** des incréments de 1 SOL. Le résultat de ce swap sera **toujours** déposé directement dans votre compte de dépôt. C'est un sens unique, vous ne pouvez pas récupérer les 2Z ou SOL de cette transaction. Ils seront envoyés à un module de distribution onchain. + + +#### Étape 1 +Déterminez d'abord quel est le taux de conversion actuel + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +sortie : +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### Étape 2 +Placez un ordre limité. Vous exécuterez ce swap à vos propres risques. Nous ne faisons pas de recommandations sur le profil de risque, et les exemples fournis ici sont à des fins éducatives. + + +##### Comment structurer un ordre limité +Sur la base de l'exemple ci-dessus, nous allons maintenant placer un ordre limité 5% au-dessus du prix coté. +797.76 * 1.05 = 837.65 + + +Dans cet exemple, nous supposons que le compte de dépôt a 0 SOL. + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +Remarquez dans la commande ci-dessus `--fund 1`, cela finance explicitement 1 SOL dans le compte de dépôt. + + +Si vous choisissez un nombre autre que 1, vous déclencherez une erreur indiquant le montant incorrect : +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +Il vous sera demandé de confirmer la transaction : + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +sortie : +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +Remarquez que lors d'un swap réussi, le `Balance:` a été mis à jour à 1 SOL. + + +Si un prix est hors de la plage spécifiée, vous rencontrerez une erreur telle que : +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` + diff --git a/docs/paying-fees2z.it.md b/docs/paying-fees2z.it.md new file mode 100644 index 0000000..49584b9 --- /dev/null +++ b/docs/paying-fees2z.it.md @@ -0,0 +1,101 @@ +**Prima di accedere o utilizzare il codice o i materiali correlati, si prega di leggere il disclaimer.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Disclaimer" + + Il presente documento e il codice correlato vengono forniti esclusivamente a scopo informativo e tecnico. La funzionalità di conversione token descritta in questo documento è di tipo non-custodial. Gli utenti interagiscono direttamente con gli smart contract sottostanti, mantenendo sempre il controllo completo dei propri asset. + + Il sistema può dipendere da o interagire con codice di terze parti, fonti di dati o meccanismi di prezzo e commissioni (ad esempio smart contract, API o exchange decentralizzati) non sviluppati, gestiti o revisionati dagli sviluppatori e dagli emittenti. Non vengono fornite dichiarazioni o garanzie sull'accuratezza, la funzionalità o la sicurezza dei componenti di terze parti. + Gli sviluppatori e gli emittenti di questo codice non garantiscono la sua accuratezza, completezza o disponibilità continua. Il codice e i materiali correlati vengono forniti "COSÌ COME SONO" e possono contenere errori, difetti o vulnerabilità. L'utilizzo è a proprio rischio. + Gli sviluppatori e gli emittenti non riceveranno alcuna commissione per l'utilizzo di questi contratti. Non vi è alcun obbligo di mantenimento, aggiornamento o supporto del codice o della documentazione correlata. + + Il presente documento non costituisce un'offerta, una sollecitazione o una raccomandazione a partecipare alla conversione di token, allo scambio o ad altre transazioni. Non vengono forniti consulenze legali, finanziarie o di investimento. + Gli utenti sono i soli responsabili della determinazione della legalità delle proprie attività. Prima di utilizzare il codice o partecipare alle conversioni, è necessario consultare le leggi e i regolamenti applicabili nella propria giurisdizione e consultare consulenti indipendenti. L'uso è vietato dove illegale, incluso da parte di persone o organizzazioni sanzionate o da regioni soggette a restrizioni. + + Nella misura massima consentita dalla legge, gli sviluppatori e gli emittenti declinano qualsiasi responsabilità per perdite, danni o reclami derivanti da o correlati all'uso del codice o alla partecipazione alle conversioni. + + La revisione e l'utilizzo del presente documento e del codice correlato sono soggetti ai [Termini di Utilizzo del Sito Web](https://doublezero.xyz/terms) e ai [Termini di Utilizzo del Protocollo](https://doublezero.xyz/terms-protocol). + +I validatori possono pagare le commissioni in 2Z tramite il [programma di conversione](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion) on-chain. La conversione viene eseguita scambiando 2Z per SOL. Il saldo SOL dell'account di deposito viene aggiornato in base alla conversione. + + +Questo processo utilizza **sempre** incrementi di 1 SOL. Il risultato di questa conversione va **sempre** direttamente all'account di deposito. È unidirezionale: non è possibile recuperare 2Z o SOL da questa transazione. Viene inviata al modulo di distribuzione on-chain. + + +#### Passo 1 +Prima controlla il tasso di conversione corrente + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +Output: +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### Passo 2 +Invia un ordine a prezzo limite. Questa conversione viene eseguita a tuo rischio. Non raccomandiamo alcuna propensione al rischio; l'esempio fornito qui è solo a scopo educativo. + + +##### Come costruire un ordine a prezzo limite +Sulla base dell'esempio sopra, invieremo un ordine a prezzo limite superiore del 5% al prezzo stimato. +797.76 * 1.05 = 837.65 + + +In questo esempio, supponiamo che ci siano 0 SOL nell'account di deposito. + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +Il `--fund 1` nel comando sopra aggiunge esplicitamente 1 SOL all'account di deposito. + + +La scelta di un numero diverso da 1 risulterà in un errore che ti notifica dell'importo errato: +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +Ti verrà chiesto di confermare la transazione: + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +Output: +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +Nota che dopo una conversione riuscita, il `Balance:` verrà aggiornato a 1 SOL. + + +Se il prezzo supera l'intervallo specificato, si verificherà il seguente tipo di errore: +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` diff --git a/docs/paying-fees2z.ja.md b/docs/paying-fees2z.ja.md new file mode 100644 index 0000000..423f36d --- /dev/null +++ b/docs/paying-fees2z.ja.md @@ -0,0 +1,101 @@ +**コードまたは関連資料にアクセスまたは使用する前に免責事項を確認してください。** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "免責事項" + + このドキュメントおよび関連コードは、情報提供および技術的目的のみのために提供されています。ここで説明されているトークン変換機能はノンカストディアル(非保管型)です。ユーザーは基礎となるスマートコントラクトと直接対話し、常に自分の資産を完全に制御します。 + + このシステムは、開発者や発行者によって開発、管理、またはレビューされていないサードパーティのコード、データソース、または価格および手数料メカニズム(例:スマートコントラクト、API、または分散型取引所)に依存または対話する場合があります。サードパーティコンポーネントの精度、機能、またはセキュリティについて表明や保証はなされません。 + このコードの開発者と発行者は、その精度、完全性、または継続的な可用性を保証しません。コードと関連資料は「現状のまま」(AS IS)で提供され、バグ、エラー、または脆弱性が含まれる場合があります。使用はすべてご自身のリスクでお行いください。 + 開発者と発行者はこれらのコントラクトの使用に関連していかなる手数料も受け取りません。コードまたは関連ドキュメントのメンテナンス、更新、またはサポートの義務はありません。 + + このドキュメントはトークン変換、スワップまたはその他のトランザクションへの参加を売り込む、買い求める、または推奨するものではありません。法的、財務的、または投資上のアドバイスは提供されません。 + ユーザーは自分の活動の合法性を判断する責任を単独で負います。コードを使用したり変換に参加したりする前に、管轄区域に適用される法律と規制を確認し、独立した顧問に相談する必要があります。制裁対象の個人や組織、または制限区域での使用を含む、違法となる場所での使用は禁止されています。 + + 法律で許可される最大限の範囲で、開発者と発行者は、コードの使用または変換への参加に起因するまたは関連するすべての損失、損害、または請求に対する一切の責任を否認します。 + + このドキュメントおよび関連コードのレビューと使用は、[ウェブサイト利用規約](https://doublezero.xyz/terms)および[プロトコル利用規約](https://doublezero.xyz/terms-protocol)に従います。 + +バリデーターはオンチェーンの[スワッププログラム](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion)を通じて2Zで手数料を支払うことができます。スワップは2ZをSOLとスワップすることで実行されます。デポジットアカウントのSOL残高はスワップに応じて更新されます。 + + +このプロセスは**常に**1 SOLの増分を使用します。このスワップの結果は**常に**デポジットアカウントに直接預け入れられます。これは一方通行であり、このトランザクションから2ZまたはSOLを取り戻すことはできません。オンチェーンの配分モジュールに送られます。 + + +#### ステップ1 +まず現在の変換レートを確認します + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +出力: +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### ステップ2 +指値注文を出します。このスワップはご自身のリスクで実行します。リスクプロファイルについて推奨はせず、ここで提供される例は教育目的のものです。 + + +##### 指値注文の組み立て方法 +上記の例に基づいて、見積もり価格より5%高い指値注文を出します。 +797.76 * 1.05 = 837.65 + + +この例では、デポジットアカウントに0 SOLあると仮定します。 + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +上記コマンドの`--fund 1`はデポジットアカウントに明示的に1 SOLを資金調達します。 + + +1以外の数値を選択するとエラーが発生し、誤った金額が通知されます: +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +トランザクションの確認を求められます: + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +出力: +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +スワップが成功すると、`Balance:`が1 SOLに更新されていることに注意してください。 + + +指定した範囲外の価格の場合は、次のようなエラーが発生します: +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` diff --git a/docs/paying-fees2z.ko.md b/docs/paying-fees2z.ko.md new file mode 100644 index 0000000..bac0595 --- /dev/null +++ b/docs/paying-fees2z.ko.md @@ -0,0 +1,100 @@ +**코드 또는 관련 자료에 액세스하거나 사용하기 전에 면책 조항을 검토하세요.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "면책 조항" + + 이 문서와 관련 코드는 정보 및 기술적 목적으로만 제공됩니다. 여기에 설명된 토큰 변환 기능은 비수탁형입니다. 사용자는 기본 스마트 계약과 직접 상호 작용하며 항상 자산에 대한 완전한 통제권을 유지합니다. + + 이 시스템은 개발자 또는 게시자가 개발, 제어 또는 검토하지 않은 제3자 코드, 데이터 소스 또는 가격 및 수수료 메커니즘(예: 스마트 계약, API 또는 탈중앙화 거래소)에 의존하거나 상호 작용할 수 있습니다. 제3자 구성 요소의 정확성, 기능 또는 보안에 대한 어떠한 보증이나 보장도 없습니다. + 이 코드의 개발자 및 게시자는 정확성, 완전성 또는 지속적인 가용성을 보장하지 않습니다. 코드 및 관련 자료는 "있는 그대로" 제공되며 버그, 오류 또는 취약점이 포함될 수 있습니다. 사용은 전적으로 귀하의 책임입니다. + 코드의 개발자 및 게시자는 이 계약의 사용과 관련하여 어떠한 수수료도 받지 않습니다. 코드 또는 관련 문서를 유지, 업데이트 또는 지원할 의무가 없습니다. + + 이 문서는 토큰 변환, 스왑 또는 기타 거래에 매도 제안, 매수 권유 또는 참여 권장으로 구성되지 않습니다. 법적, 재정적 또는 투자 조언은 제공되지 않습니다. + 사용자는 활동의 합법성을 결정할 전적인 책임이 있습니다. 해당 관할 지역에서 적용 가능한 법률과 규정을 검토하고 코드를 사용하거나 변환에 참여하기 전에 독립적인 어드바이저와 상담해야 합니다. 제재 대상 또는 제한된 관할 지역의 사람 또는 주체를 포함하여 불법이 될 경우 사용이 금지됩니다. + + 법률이 허용하는 최대한도 내에서 개발자 및 게시자는 코드 사용 또는 변환 참여와 관련하여 발생하는 손실, 손해 또는 청구에 대한 모든 책임을 면책합니다. + + 이 문서 및 관련 코드의 검토 및 사용은 [웹사이트 이용약관](https://doublezero.xyz/terms) 및 [프로토콜 이용약관](https://doublezero.xyz/terms-protocol)에 따릅니다. + +검증자는 온체인 [스왑 프로그램](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion)을 통해 2Z로 수수료를 납부할 수 있습니다. 스왑은 2Z를 SOL로 교환하여 수행됩니다. 예치 계정의 SOL 잔액이 스왑에 따라 업데이트됩니다. + +이 프로세스는 **항상** 1 SOL 단위를 사용합니다. 이 스왑의 결과는 **항상** 예치 계정으로 직접 입금됩니다. 이는 일방통행입니다. 이 트랜잭션에서 2Z 또는 SOL을 회수할 수 없습니다. 온체인 배분 모듈로 전송됩니다. + + +#### 1단계 +먼저 현재 환율을 확인합니다. + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +출력: +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### 2단계 +지정가 주문을 합니다. 이 스왑은 귀하의 책임 하에 실행됩니다. 위험 프로필에 대한 권장 사항을 제공하지 않으며, 여기에 제공된 예시는 교육 목적으로만 사용됩니다. + + +##### 지정가 주문 구성 방법 +위의 예를 바탕으로 이제 호가 가격보다 5% 높은 지정가 주문을 합니다. +797.76 * 1.05 = 837.65 + + +이 예시에서 예치 계정에 0 SOL이 있다고 가정합니다. + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +위 명령에서 `--fund 1`에 주목하세요. 이는 예치 계정에 1 SOL을 명시적으로 펀딩합니다. + + +1 이외의 숫자를 선택하면 잘못된 금액을 알리는 오류가 발생합니다: +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +트랜잭션을 확인하라는 메시지가 표시됩니다: + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +출력: +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +성공적인 스왑 시 `Balance:`가 1 SOL로 업데이트된 것을 주목하세요. + + +가격이 지정된 범위를 벗어나면 다음과 같은 오류가 발생합니다: +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` diff --git a/docs/paying-fees2z.pt.md b/docs/paying-fees2z.pt.md new file mode 100644 index 0000000..06330dd --- /dev/null +++ b/docs/paying-fees2z.pt.md @@ -0,0 +1,101 @@ +**Revise o Aviso Legal antes de acessar ou usar o código ou quaisquer materiais relacionados.** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "Aviso Legal" + + Este documento e o código associado são fornecidos apenas para fins informativos e técnicos. A funcionalidade de conversão de tokens descrita aqui é não custodial — os usuários interagem diretamente com os contratos inteligentes subjacentes e mantêm controle total de seus ativos em todos os momentos. + + O sistema pode depender de ou interagir com código de terceiros, fontes de dados ou mecanismos de precificação e taxas (por exemplo, contratos inteligentes, APIs ou exchanges descentralizadas) que não são desenvolvidos, controlados ou revisados pelo(s) desenvolvedor(es) ou publicador(es). Nenhuma representação ou garantia é feita quanto à precisão, funcionalidade ou segurança de qualquer componente de terceiros. + O(s) desenvolvedor(es) e publicador(es) deste código não garantem sua precisão, integridade ou disponibilidade contínua. O código e os materiais relacionados são fornecidos "no estado em que se encontram" e podem conter bugs, erros ou vulnerabilidades. O uso é inteiramente por sua própria conta e risco. + O(s) desenvolvedor(es) e publicador(es) não recebem quaisquer taxas em conexão com o uso desses contratos. Eles não têm obrigação de manter, atualizar ou suportar o código ou a documentação relacionada. + + Este documento não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação para participar de qualquer conversão de token, swap ou outra transação. Nenhum conselho jurídico, financeiro ou de investimento é fornecido. + Os usuários são os únicos responsáveis por determinar a legalidade de suas atividades. Eles devem revisar as leis e regulamentos aplicáveis em sua jurisdição e consultar assessores independentes antes de usar o código ou participar de qualquer conversão. O uso é proibido onde for ilegal, incluindo por pessoas ou entidades sujeitas a sanções ou em jurisdições restritas. + + Na extensão máxima permitida por lei, o(s) desenvolvedor(es) e publicador(es) se isentam de toda responsabilidade por qualquer perda, dano ou reclamação decorrente ou em conexão com o uso do código ou participação na conversão. + + A revisão e o uso deste documento e do código associado estão sujeitos aos [Termos e Condições do Website](https://doublezero.xyz/terms) e [Termos e Condições do Protocolo](https://doublezero.xyz/terms-protocol). + +Os validadores podem pagar suas taxas em 2Z via um [programa de swap](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion) onchain. O swap é realizado trocando 2Z por SOL. O saldo de SOL em sua conta de depósito será atualizado de acordo com o swap. + + +Este processo **sempre** usará incrementos de 1 SOL. O resultado deste swap **sempre** será depositado diretamente em sua conta de depósito. Esta é uma via de mão única — você não pode recuperar o 2Z ou SOL desta transação. Ele será enviado para um módulo de distribuição onchain. + + +#### Passo 1 +Primeiro determine qual é a taxa de conversão atual + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +saída: +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### Passo 2 +Faça uma ordem limitada. Você executará este swap por sua própria conta e risco. Não fazemos recomendações sobre perfil de risco, e os exemplos fornecidos aqui são apenas para fins educacionais. + + +##### Como estruturar uma ordem limitada +Com base no exemplo acima, vamos agora fazer uma ordem limitada 5% acima do preço cotado. +797.76 * 1.05 = 837.65 + + +Neste exemplo, vamos assumir que a conta de depósito tem 0 SOL nela. + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +Observe no comando acima `--fund 1` — isso está explicitamente financiando 1 SOL na conta de depósito. + + +Se você escolher qualquer número diferente de 1, acionará um erro informando o valor incorreto: +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +Você será solicitado a confirmar a transação: + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +saída: +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +Observe que, em um swap bem-sucedido, o `Balance:` foi atualizado para 1 SOL. + + +Se um preço estiver fora do seu intervalo especificado, você encontrará um erro como: +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` diff --git a/docs/paying-fees2z.zh.md b/docs/paying-fees2z.zh.md new file mode 100644 index 0000000..72d3a76 --- /dev/null +++ b/docs/paying-fees2z.zh.md @@ -0,0 +1,101 @@ +**在访问或使用代码或相关材料之前,请查看免责声明。** +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + + + +??? warning "免责声明" + + 本文档及相关代码仅供信息和技术目的提供。本文中描述的代币转换功能是非托管型的。用户直接与底层智能合约交互,始终完全控制自己的资产。 + + 该系统可能依赖于或与开发人员和发行人未开发、管理或审查的第三方代码、数据源或价格和费用机制(例如智能合约、API或去中心化交易所)交互。对第三方组件的准确性、功能或安全性不作任何声明或保证。 + 本代码的开发人员和发行人不保证其准确性、完整性或持续可用性。代码和相关材料按"原样"(AS IS)提供,可能包含错误、缺陷或漏洞。使用风险自负。 + 开发人员和发行人不会因使用这些合约而收取任何费用。对代码或相关文档没有维护、更新或支持的义务。 + + 本文件不是对参与代币转换、兑换或其他交易的推介、招揽或建议。不提供法律、财务或投资建议。 + 用户单独负责确定其活动的合法性。在使用代码或参与转换之前,必须查阅适用于其司法管辖区的法律法规,并咨询独立顾问。在违法的地方使用是被禁止的,包括受制裁的个人或组织或受限地区的使用。 + + 在法律允许的最大范围内,开发人员和发行人否认因使用代码或参与转换而引起的或与之相关的所有损失、损害或索赔的任何责任。 + + 本文档及相关代码的审查和使用须遵守[网站使用条款](https://doublezero.xyz/terms)和[协议使用条款](https://doublezero.xyz/terms-protocol)。 + +验证器可以通过链上[兑换程序](https://github.com/doublezerofoundation/doublezero-offchain/tree/main/crates/solana-interface/sol-conversion)以2Z支付费用。通过将2Z兑换为SOL来执行兑换。存款账户的SOL余额会根据兑换情况更新。 + + +此过程**始终**使用1 SOL的增量。此兑换的结果**始终**直接存入存款账户。这是单向的,您无法从此交易中取回2Z或SOL。它被发送到链上分配模块。 + + +#### 步骤1 +首先检查当前转换汇率 + + +``` +doublezero-solana revenue-distribution fetch sol-conversion +``` + + +输出: +``` +| field | description | value | note | +|-----------------|------------------------------|---------------|-------------------------------| +| Swap Rate | 2Z amount for 1 SOL | 800.86265341 | | +| Swap Rate | 2Z amount for 1 SOL | 797.75530631 | Includes 0.38800000% discount | +| Journal Balance | SOL available for conversion | 438.670881289 | | +``` + + +#### 步骤2 +提交限价订单。此兑换由您自行承担风险。我们不建议任何风险偏好,此处提供的示例仅供教育目的。 + + +##### 如何构建限价订单 +基于上面的示例,我们将提交比估计价格高5%的限价订单。 +797.76 * 1.05 = 837.65 + + +在此示例中,假设存款账户中有0 SOL。 + + +``` +doublezero-solana revenue-distribution --convert-2z-limit-price 837.65 --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 1 +``` +上面命令中的`--fund 1`明确向存款账户注入1 SOL。 + + +选择1以外的数字将导致错误,并通知您错误的金额: +``` +Error: SOL amount must be 1.000000000 for 2Z -> SOL conversion. Got 1.500000000 +``` + + +系统将要求您确认交易: + + +``` +⚠️ By specifying --convert-2z-limit-price, you are funding 1.000000000 SOL to your deposit account. Proceed? [y/N] +``` + + +输出: +``` +2Z token balance: 987241.76579348 +Converted 2Z to SOL: 2iaBzd4vgEeDnpfSCD9aYFMWZ3UoVzrJfUjSMhsDhfSQ6isPZKkKe3ZWQ6b5aWvV3h8Vsk8Mmde6wmCiidD4Qc6s +Converted 837.65 2Z tokens to 1.000000000 SOL +``` +请注意,兑换成功后,`Balance:`将更新为1 SOL。 + + +如果价格超出指定范围,将发生以下类型的错误: +``` +Error: RPC response error -32002: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x177f; 10 log messages: + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs invoke [1] + Program log: Instruction: BuySol + Program log: Signature verified successfully + Program log: Timestamp verified successfully + Program log: Bid price 79500000000 + Program log: Ask price 79862251144 + Program data: 1fxoRNOEulcAypo7AAAAAAC7kYISAAAAiD4pmBIAAAAsk/ZoAAAAAA4PxjWjgr+ERO7jDdvoOmT/WpgDFLfY+FGKKDdOw4PMAAAAAAAAAAA= + Program log: AnchorError thrown in on-chain/programs/converter-program/src/buy_sol.rs:142. Error Code: BidTooLow. Error Number: 6015. Error Message: Provided bid is too low. + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs consumed 50754 of 90000 compute units + Program 9DRcqsJUCo8CL2xDCXpogwzLEVKRDzSyNtVgXqsXHfDs failed: custom program error: 0x177f +``` diff --git a/docs/quick-connect.es.md b/docs/quick-connect.es.md new file mode 100644 index 0000000..5290dc3 --- /dev/null +++ b/docs/quick-connect.es.md @@ -0,0 +1,122 @@ +# Conexión Rápida +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Responda algunas preguntas y generaremos una guía de conexión personalizada con los pasos y comandos exactos para su configuración. + +!!! note "Guía Simplificada" + Este asistente proporciona fragmentos clave de la documentación completa para conectarle lo más rápidamente posible. Para más detalles, consulte las guías de [Configuración](setup.md) e [Inquilinos](tenant.md). + +
+ +
+

¿A qué red se está conectando?

+
+ + +
+
+ +
+

¿Qué sistema operativo usa su servidor?

+
+ + +
+
+ +
+

¿Qué ecosistema?

+
+ + + +
+
+ +
+

¿Qué herramienta de firewall utiliza?

+
+ + +
+
+ +
+

¿Qué tipo de nodo está ejecutando?

+
+ + +
+
+ +
+

¿Qué modo de conexión necesita?

+
+ + + +
+
+ +
+

¿Cuál es su rol en multicast?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/quick-connect.fr.md b/docs/quick-connect.fr.md new file mode 100644 index 0000000..92182b4 --- /dev/null +++ b/docs/quick-connect.fr.md @@ -0,0 +1,122 @@ +# Connexion Rapide +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Répondez à quelques questions et nous générerons un guide de connexion personnalisé avec les étapes et commandes exactes pour votre configuration. + +!!! note "Guide Simplifié" + Cet assistant fournit des extraits clés de la documentation complète pour vous connecter aussi rapidement que possible. Pour des détails complets, consultez les guides [Configuration](setup.md) et [Tenant](tenant.md). + +
+ +
+

À quel réseau vous connectez-vous ?

+
+ + +
+
+ +
+

Quel système d'exploitation votre serveur utilise-t-il ?

+
+ + +
+
+ +
+

Quel écosystème ?

+
+ + + +
+
+ +
+

Quel outil de pare-feu utilisez-vous ?

+
+ + +
+
+ +
+

Quel type de nœud exécutez-vous ?

+
+ + +
+
+ +
+

De quel mode de connexion avez-vous besoin ?

+
+ + + +
+
+ +
+

Quel est votre rôle multicast ?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/quick-connect.it.md b/docs/quick-connect.it.md new file mode 100644 index 0000000..dee4a53 --- /dev/null +++ b/docs/quick-connect.it.md @@ -0,0 +1,122 @@ +# Connessione Rapida +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Rispondi ad alcune domande e genereremo una guida di connessione personalizzata con i passaggi esatti e i comandi per la tua configurazione. + +!!! note "Guida Semplificata" + Questo wizard fornisce snippet chiave dalla documentazione completa per connetterti il più rapidamente possibile. Per dettagli completi, consulta le guide [Setup](setup.md) e [Tenant](tenant.md). + +
+ +
+

A quale rete ti stai connettendo?

+
+ + +
+
+ +
+

Quale sistema operativo utilizza il tuo server?

+
+ + +
+
+ +
+

Quale ecosistema?

+
+ + + +
+
+ +
+

Quale strumento firewall utilizzi?

+
+ + +
+
+ +
+

Che tipo di nodo stai eseguendo?

+
+ + +
+
+ +
+

Di quale modalità di connessione hai bisogno?

+
+ + + +
+
+ +
+

Qual è il tuo ruolo multicast?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/quick-connect.ja.md b/docs/quick-connect.ja.md new file mode 100644 index 0000000..17fc313 --- /dev/null +++ b/docs/quick-connect.ja.md @@ -0,0 +1,122 @@ +# クイックコネクト +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +いくつかの質問に回答すると、セットアップに合わせた正確な手順とコマンドを含むパーソナライズされた接続ガイドを生成します。 + +!!! note "簡略ガイド" + このウィザードは、できるだけ早く接続できるようにするために、完全なドキュメントから重要なスニペットを提供します。完全な詳細については、[セットアップ](setup.md)と[テナント](tenant.md)ガイドをご覧ください。 + +
+ +
+

どのネットワークに接続しますか?

+
+ + +
+
+ +
+

サーバーのOSは?

+
+ + +
+
+ +
+

どのエコシステムですか?

+
+ + + +
+
+ +
+

使用しているファイアウォールツールは?

+
+ + +
+
+ +
+

実行しているノードのタイプは?

+
+ + +
+
+ +
+

必要な接続モードは?

+
+ + + +
+
+ +
+

マルチキャストの役割は?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/quick-connect.ko.md b/docs/quick-connect.ko.md new file mode 100644 index 0000000..b80ee36 --- /dev/null +++ b/docs/quick-connect.ko.md @@ -0,0 +1,122 @@ +# 빠른 연결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +몇 가지 질문에 답하면 설정에 맞는 정확한 단계와 명령이 포함된 맞춤형 연결 가이드를 생성해 드립니다. + +!!! note "간소화된 가이드" + 이 마법사는 최대한 빠르게 연결할 수 있도록 전체 문서의 핵심 내용을 제공합니다. 전체 세부 정보는 [설정](setup.md) 및 [테넌트](tenant.md) 가이드를 참조하세요. + +
+ +
+

어떤 네트워크에 연결하고 있나요?

+
+ + +
+
+ +
+

서버에서 실행 중인 운영 체제는 무엇인가요?

+
+ + +
+
+ +
+

어떤 에코시스템인가요?

+
+ + + +
+
+ +
+

어떤 방화벽 도구를 사용하나요?

+
+ + +
+
+ +
+

어떤 유형의 노드를 실행하고 있나요?

+
+ + +
+
+ +
+

어떤 연결 모드가 필요한가요?

+
+ + + +
+
+ +
+

멀티캐스트 역할은 무엇인가요?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/quick-connect.pt.md b/docs/quick-connect.pt.md new file mode 100644 index 0000000..93d05cb --- /dev/null +++ b/docs/quick-connect.pt.md @@ -0,0 +1,122 @@ +# Conexão Rápida +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Responda algumas perguntas e geraremos um guia de conexão personalizado com as etapas e comandos exatos para sua configuração. + +!!! note "Guia Simplificado" + Este assistente fornece trechos principais da documentação completa para conectá-lo o mais rápido possível. Para detalhes completos, consulte os guias de [Configuração](setup.md) e [Tenant](tenant.md). + +
+ +
+

A qual rede você está se conectando?

+
+ + +
+
+ +
+

Qual sistema operacional seu servidor está executando?

+
+ + +
+
+ +
+

Qual ecossistema?

+
+ + + +
+
+ +
+

Qual ferramenta de firewall você usa?

+
+ + +
+
+ +
+

Que tipo de nó você está executando?

+
+ + +
+
+ +
+

Qual modo de conexão você precisa?

+
+ + + +
+
+ +
+

Qual é o seu papel no multicast?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/quick-connect.zh.md b/docs/quick-connect.zh.md new file mode 100644 index 0000000..34b10b6 --- /dev/null +++ b/docs/quick-connect.zh.md @@ -0,0 +1,122 @@ +# 快速连接 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +回答几个问题,我们将为您的设置生成包含确切步骤和命令的个性化连接指南。 + +!!! note "简化指南" + 本向导提供完整文档中的关键片段,帮助您尽快完成连接。完整详情请参阅[设置](setup.md)和[租户](tenant.md)指南。 + +
+ +
+

您要连接哪个网络?

+
+ + +
+
+ +
+

您的服务器运行什么操作系统?

+
+ + +
+
+ +
+

哪个生态系统?

+
+ + + +
+
+ +
+

您使用哪种防火墙工具?

+
+ + +
+
+ +
+

您运行什么类型的节点?

+
+ + +
+
+ +
+

您需要什么连接模式?

+
+ + + +
+
+ +
+

您的多播角色是什么?

+
+ + +
+
+ +
+ +
+ +
diff --git a/docs/setup.es.md b/docs/setup.es.md new file mode 100644 index 0000000..903dc01 --- /dev/null +++ b/docs/setup.es.md @@ -0,0 +1,326 @@ +# Cómo configurar DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminología" + ¿Nuevo en DoubleZero? Consulte el [Glosario](glossary.md) para ver definiciones de términos como [doublezerod](glossary.md#doublezerod), [IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency) y [DZD](glossary.md#dzd-doublezero-device). + +!!! warning "Al conectarme a DoubleZero acepto los [Términos de Servicio de DoubleZero](https://doublezero.xyz/terms-protocol)" + + +## Requisitos Previos +!!! warning inline end + Para validadores: DoubleZero debe instalarse directamente en el host del validador, no en un contenedor. +- Conectividad a internet con una dirección IP pública (sin NAT) +- Servidor x86_64 +- SO soportado: Ubuntu 22.04+ o Debian 11+, o Rocky Linux / RHEL 8+ +- Privilegios de root o sudo en el servidor donde se ejecutará DoubleZero +- Opcional pero útil: jq y curl para depuración + +## Conexión a DoubleZero + +DoubleZero Testnet y DoubleZero Mainnet-Beta son redes físicamente distintas. Seleccione la red apropiada durante la instalación. + +Al incorporarse a DoubleZero establecerá una **identidad DoubleZero**, representada por una clave pública llamada **DoubleZero ID**. Esta clave forma parte de cómo DoubleZero reconoce su máquina. + +## 1. Instalar los Paquetes de DoubleZero + +
+ +!!! info "Versiones Actuales" + | Paquete | Mainnet-Beta | Testnet | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +Siga estos pasos dependiendo de su sistema operativo: + +### Ubuntu / Debian + +
+ +El despliegue recomendado actualmente para Mainnet-Beta es: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +El despliegue recomendado actualmente para Testnet es: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +El despliegue recomendado actualmente para Mainnet-Beta es: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +El despliegue recomendado actualmente para Testnet es: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "Solo Usuarios Existentes: Cambiar un paquete de *Testnet a Mainnet-Beta*, o de *Mainnet-Beta a Testnet*" + Cuando instala desde uno de los repositorios de paquetes anteriores, este es específico para DoubleZero **Testnet** o **DoubleZero Mainnet Beta**. Si cambia de red en algún momento, deberá eliminar los repositorios de paquetes instalados previamente y actualizar al repositorio de destino. + + Este ejemplo le guiará a través de la migración de Testnet a Mainnet-Beta. + + Los mismos pasos pueden completarse para pasar de Mainnet-Beta a Testnet, reemplazando el paso 3 con el comando de instalación para Testnet arriba. + + + 1. Encontrar los Archivos de Repositorio Antiguos + + Primero, localice cualquier archivo de configuración de repositorio DoubleZero existente en su sistema: + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. Eliminar los Archivos de Repositorio Antiguos + + Elimine los archivos de repositorio antiguos encontrados en el paso anterior, por ejemplo: + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. Instalar desde el Nuevo Repositorio + + Agregue el nuevo repositorio Mainnet-Beta e instale el último paquete: + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### Verificar el estado de `doublezerod` + +Después de que el paquete esté instalado, se instala, activa e inicia una nueva unidad systemd. Para ver el estado puede ejecutar: +``` +sudo systemctl status doublezerod +``` + +
+ +### Configurar el Firewall para GRE y BGP + +DoubleZero utiliza tunelización GRE (protocolo IP 47) y enrutamiento BGP (tcp/179 en direcciones link-local). Asegúrese de que su firewall permita estos protocolos: + +Permitir GRE y BGP a través de iptables: + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +O permitir GRE y BGP a través de UFW: + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. Crear una Nueva Identidad DoubleZero + +Cree una Identidad DoubleZero en su servidor con el siguiente comando: + +```bash +doublezero keygen +``` + +!!! info + Si tiene un ID existente que desea usar, puede seguir estos pasos opcionales. + + Crear el directorio de configuración de doublezero + + ``` + mkdir -p ~/.config/doublezero + ``` + + Copie o enlace el `id.json` que desea usar con DoubleZero al directorio de configuración de doublezero. + + ``` + sudo cp ~/.config/doublezero/ + ``` +## 3. Recuperar 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:** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. Verificar que doublezerod ha descubierto los dispositivos DZ + +Antes de conectarse, asegúrese de que `doublezerod` haya descubierto y pingueado cada uno de los switches de testnet DZ disponibles: + +``` +doublezero latency +``` + +Ejemplo de salida: + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +Si no se devuelven dispositivos en la salida, espere 10-20 segundos y vuelva a intentarlo. + +## 5. Desconectarse de DoubleZero + +En las siguientes secciones configurará su Entorno DoubleZero. Para garantizar el éxito, desconecte la sesión actual. Esto evitará problemas relacionados con múltiples túneles abiertos en su máquina. + +Verifique + +```bash +doublezero status +``` + +si está `up` ejecute: + +```bash +doublezero disconnect +``` + +### Siguiente Paso: Inquilino + +La conexión a DoubleZero diferirá según su caso de uso. En DoubleZero, los Inquilinos son grupos que tienen perfiles de usuario similares. Algunos ejemplos incluyen Blockchains, Capas de Transferencia de Datos, etc. + +### [Proceda a elegir su inquilino aquí](tenant.md) + + +# Opcional: Habilitar Métricas de Prometheus + +Los operadores familiarizados con las métricas de Prometheus pueden querer habilitarlas para el monitoreo de DoubleZero. Esto proporciona visibilidad sobre el rendimiento del cliente DoubleZero, el estado de la conexión y la salud operacional. + +## Qué Métricas Están Disponibles + +DoubleZero expone varias métricas clave: +- **Información de Compilación**: Versión, hash de commit y fecha de compilación +- **Estado de Sesión**: Si la sesión de DoubleZero está activa +- **Métricas de Conexión**: Información de latencia y conectividad +- **Datos de Rendimiento**: Rendimiento y tasas de error + +## Habilitar Métricas de Prometheus + +Para habilitar las métricas de Prometheus en el cliente DoubleZero, siga estos pasos: + +### 1. Modificar el comando de inicio del servicio systemd de doublezerod + +Cree o edite la configuración de anulación de systemd: + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +Reemplace con esta configuración: + +Tenga en cuenta que el flag `-env` debe apuntar a `testnet` o `mainnet-beta` dependiendo de qué red desea recopilar datos. En el bloque de ejemplo se usa `testnet`. Puede reemplazarlo por `mainnet-beta` si es necesario. + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. Recargar y reiniciar el servicio + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. Verificar que las métricas estén disponibles + +Compruebe que el endpoint de métricas esté respondiendo: + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +Salida esperada: + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` +## Solución de Problemas + +Si las métricas no aparecen: + +1. **Verificar el estado del servicio**: `sudo systemctl status doublezerod` +2. **Verificar la configuración**: `sudo systemctl cat doublezerod` +3. **Revisar los logs**: `sudo journalctl -u doublezerod -f` +4. **Probar el endpoint**: `curl -v localhost:2113/metrics` +5. **Verificar el puerto**: `netstat -tlnp | grep 2113` + + +## Configurar el Servidor de Prometheus + +La configuración y seguridad están fuera del alcance de esta documentación. +Grafana es una excelente opción para la visualización, y tiene documentación disponible [aquí](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/) que detalla cómo recopilar métricas de Prometheus. + +## Panel de Grafana (Opcional) + +Para la visualización, puede crear un panel de Grafana usando las métricas de DoubleZero. Los paneles comunes incluyen: +- Estado de sesión a lo largo del tiempo +- Información de compilación +- Tendencias de latencia de conexión +- Monitoreo de tasa de errores diff --git a/docs/setup.fr.md b/docs/setup.fr.md new file mode 100644 index 0000000..f388fba --- /dev/null +++ b/docs/setup.fr.md @@ -0,0 +1,328 @@ +# Configuration de DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminologie" + Nouveau sur DoubleZero ? Consultez le [Glossaire](glossary.md) pour les définitions des termes comme [doublezerod](glossary.md#doublezerod), [IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency), [DZD](glossary.md#dzd-doublezero-device) et autres. + +!!! warning "En vous connectant à DoubleZero, vous acceptez les [Conditions d'Utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" + + +## Prérequis +!!! warning inline end + Pour les validateurs : DoubleZero doit être installé directement sur l'hôte du validateur, pas dans un conteneur. +- Connexion internet avec adresse IP publique (sans NAT) +- Serveur x86_64 +- Système d'exploitation pris en charge : Ubuntu 22.04+ ou Debian 11+, ou Rocky Linux / RHEL 8+ +- Privilèges root ou sudo sur le serveur exécutant DoubleZero +- Facultatif mais utile : jq et curl pour le débogage + +## Connexion à DoubleZero + +Le Testnet DoubleZero et le Mainnet Beta DoubleZero sont des réseaux physiquement distincts. Choisissez le réseau approprié lors de l'installation. + +En rejoignant DoubleZero, vous établissez une **identité DoubleZero** (une clé publique appelée **DoubleZero ID**). Cette clé est l'un des moyens par lesquels DoubleZero identifie votre machine. + +## 1. Installer le paquet DoubleZero + +
+ +!!! info "Version Actuelle" + | Paquet | Mainnet Beta | Testnet | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +Suivez les instructions ci-dessous selon votre système d'exploitation : + +### Ubuntu / Debian + +
+ +Déploiement actuel recommandé pour Mainnet Beta : +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +Déploiement actuel recommandé pour Testnet : +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +Déploiement actuel recommandé pour Mainnet Beta : +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +Déploiement actuel recommandé pour Testnet : +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "Utilisateurs existants uniquement : Passer du paquet *Testnet à Mainnet Beta*, ou de *Mainnet Beta à Testnet*" + En installant depuis les dépôts de paquets ci-dessus, le **Testnet** DoubleZero ou le **Mainnet Beta DoubleZero** disposent chacun de leur propre dépôt dédié. Si vous devez changer de réseau à un moment donné, vous devrez supprimer le dépôt de paquets précédemment installé et mettre à jour vers le dépôt cible. + + Cet exemple montre la migration de Testnet vers Mainnet Beta. + + En suivant les mêmes étapes mais en remplaçant l'étape 3 par la commande d'installation Testnet ci-dessus, il est possible de compléter la migration de Mainnet Beta vers Testnet. + + + 1. Trouver les anciens fichiers de dépôt + + Premièrement, identifiez les fichiers de configuration de dépôt DoubleZero existants sur le système : + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. Supprimer les anciens fichiers de dépôt + + Supprimez les anciens fichiers de dépôt trouvés à l'étape précédente. Par exemple : + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. Installer depuis le nouveau dépôt + + Ajoutez le nouveau dépôt Mainnet Beta et installez le dernier paquet : + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### Vérifier l'état de `doublezerod` + +Après l'installation du paquet, une nouvelle unité systemd sera installée, activée et démarrée. Pour vérifier l'état, exécutez la commande suivante : +``` +sudo systemctl status doublezerod +``` + +
+ +### Configuration du Pare-feu pour GRE et BGP + +DoubleZero utilise des tunnels GRE (protocole IP 47) et le routage BGP (tcp/179 pour les adresses link-local). Assurez-vous que votre pare-feu autorise ces protocoles : + +Autoriser GRE et BGP avec iptables : + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +Ou autoriser GRE et BGP avec UFW : + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. Créer une Nouvelle Identité DoubleZero + +Utilisez la commande suivante pour créer une identité DoubleZero sur le serveur : + +```bash +doublezero keygen +``` + +!!! info + Si vous avez un ID existant que vous souhaitez utiliser, vous pouvez suivre les étapes optionnelles ci-dessous. + + Créez le répertoire de configuration de doublezerod + + ``` + mkdir -p ~/.config/doublezero + ``` + + Copiez ou liez le fichier `id.json` que vous souhaitez utiliser dans DoubleZero dans le répertoire de configuration doublezero. + + ``` + sudo cp ~/.config/doublezero/ + ``` + +## 3. Obtenir l'Identité DoubleZero du Serveur + +Confirmez votre identité DoubleZero. Cette identité est utilisée pour créer la connexion entre votre machine et DoubleZero. + +```bash +doublezero address +``` + +**Sortie :** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. Confirmer que doublezerod a Détecté les Dispositifs DZ + +Avant de vous connecter, confirmez que `doublezerod` a détecté et pingé chaque commutateur DZ testnet disponible : + +``` +doublezero latency +``` + +Exemple de sortie : + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +Si les dispositifs n'apparaissent pas dans la sortie, attendez 10 à 20 secondes et réessayez. + +## 5. Se Déconnecter de DoubleZero + +La section suivante configurera l'environnement DoubleZero. Pour garantir le succès, déconnectez la session actuelle. Cela évite les problèmes liés à plusieurs tunnels ouverts sur la machine. + +Confirmez + +```bash +doublezero status +``` + +Si le statut est `up`, exécutez : + +```bash +doublezero disconnect +``` + +### Prochaine Étape : Tenant + +La connexion à DoubleZero varie selon le cas d'utilisation. Dans DoubleZero, les tenants sont des groupes avec des profils utilisateurs similaires. Par exemple : blockchain, couches de transfert de données, etc. + +### [Sélectionnez le Tenant et Continuez ici](tenant.md) + + +# Optionnel : Activer les Métriques Prometheus + +Les opérateurs familiers avec les métriques Prometheus pourraient vouloir les activer pour la surveillance DoubleZero. Cela vous permettra d'obtenir des informations sur les performances du client DoubleZero, l'état de la connexion et la santé opérationnelle. + +## Métriques Disponibles + +DoubleZero expose plusieurs métriques clés : +- **Informations de build** : version, hash de commit, date de build +- **État de la session** : si la session DoubleZero est active +- **Métriques de connexion** : latence et informations de connexion +- **Données de performance** : débit et taux d'erreur + +## Activation des Métriques Prometheus + +Pour activer les métriques Prometheus sur le client DoubleZero, suivez ces étapes : + +### 1. Modifier la commande de démarrage du service systemd doublezerod + +Créez ou modifiez la configuration de remplacement systemd : + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +Remplacez par cette configuration : + +Le flag `-env` doit pointer vers `testnet` ou `mainnet-beta` selon le réseau depuis lequel vous souhaitez collecter des données. Dans l'exemple de bloc, `testnet` est utilisé. Si nécessaire, il peut être changé en `mainnet-beta`. + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. Recharger et redémarrer le service + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. Confirmer que les métriques sont disponibles + +Confirmez que l'endpoint des métriques répond : + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +Sortie attendue : + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` + +## Résolution des Problèmes + +Si les métriques ne s'affichent pas : + +1. **Vérifiez l'état du service** : `sudo systemctl status doublezerod` +2. **Vérifiez la configuration** : `sudo systemctl cat doublezerod` +3. **Vérifiez les logs** : `sudo journalctl -u doublezerod -f` +4. **Testez l'endpoint** : `curl -v localhost:2113/metrics` +5. **Vérifiez le port** : `netstat -tlnp | grep 2113` + + +## Configuration du Serveur Prometheus + +La configuration et la sécurité dépassent le cadre de ce document. +Grafana est une excellente option pour la visualisation, et la documentation Grafana [ici](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/) décrit comment collecter les métriques Prometheus. + +## Tableau de Bord Grafana (Optionnel) + +Pour la visualisation, vous pouvez créer un tableau de bord Grafana avec les métriques DoubleZero. Les panneaux courants incluent : +- État de la session dans le temps +- Informations de build +- Tendances de latence de connexion +- Surveillance du taux d'erreur diff --git a/docs/setup.it.md b/docs/setup.it.md new file mode 100644 index 0000000..44facda --- /dev/null +++ b/docs/setup.it.md @@ -0,0 +1,328 @@ +# Configurazione di DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminologia" + Nuovo a DoubleZero? Consulta il [Glossario](glossary.md) per le definizioni di termini come [doublezerod](glossary.md#doublezerod), [IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency), [DZD](glossary.md#dzd-doublezero-device) e altri. + +!!! warning "Connettendosi a DoubleZero, accetti i [Termini di Servizio DoubleZero](https://doublezero.xyz/terms-protocol)" + + +## Prerequisiti +!!! warning inline end + Per i validatori: DoubleZero deve essere installato direttamente sull'host del validatore, non in un container. +- Connessione internet con indirizzo IP pubblico (senza NAT) +- Server x86_64 +- Sistema operativo supportato: Ubuntu 22.04+ o Debian 11+, oppure Rocky Linux / RHEL 8+ +- Privilegi root o sudo sul server che esegue DoubleZero +- Facoltativo ma utile: jq e curl per il debug + +## Connessione a DoubleZero + +Il Testnet DoubleZero e il Mainnet Beta DoubleZero sono reti fisicamente distinte. Scegli la rete appropriata durante l'installazione. + +Unendoti a DoubleZero, stabilisci una **identità DoubleZero** (una chiave pubblica chiamata **DoubleZero ID**). Questa chiave è uno dei modi in cui DoubleZero identifica la tua macchina. + +## 1. Installa il pacchetto DoubleZero + +
+ +!!! info "Versione Corrente" + | Pacchetto | Mainnet Beta | Testnet | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +Segui le istruzioni seguenti in base al tuo sistema operativo: + +### Ubuntu / Debian + +
+ +Deployment corrente raccomandato per Mainnet Beta: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +Deployment corrente raccomandato per Testnet: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +Deployment corrente raccomandato per Mainnet Beta: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +Deployment corrente raccomandato per Testnet: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "Solo utenti esistenti: Passaggio del pacchetto da *Testnet a Mainnet Beta*, o da *Mainnet Beta a Testnet*" + Installando dai repository di pacchetti sopra, il **Testnet** DoubleZero o il **Mainnet Beta DoubleZero** hanno ciascuno il proprio repository dedicato. Se ad un certo punto devi cambiare rete, dovrai rimuovere il repository del pacchetto precedentemente installato e aggiornare al repository target. + + Questo esempio mostra la migrazione da Testnet a Mainnet Beta. + + Seguendo gli stessi passaggi ma sostituendo il passaggio 3 con il comando di installazione Testnet sopra, è possibile completare la migrazione da Mainnet Beta a Testnet. + + + 1. Trova i vecchi file del repository + + Prima, identifica i file di configurazione del repository DoubleZero esistenti sul sistema: + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. Rimuovi i vecchi file del repository + + Rimuovi i vecchi file del repository trovati nel passaggio precedente. Ad esempio: + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. Installa dal nuovo repository + + Aggiungi il nuovo repository Mainnet Beta e installa l'ultimo pacchetto: + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### Controlla lo stato di `doublezerod` + +Dopo l'installazione del pacchetto, verrà installata, abilitata e avviata una nuova unità systemd. Per controllare lo stato, esegui il seguente comando: +``` +sudo systemctl status doublezerod +``` + +
+ +### Configurazione Firewall per GRE e BGP + +DoubleZero utilizza tunnel GRE (protocollo IP 47) e routing BGP (tcp/179 per indirizzi link-local). Assicurati che il tuo firewall consenta questi protocolli: + +Consenti GRE e BGP con iptables: + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +O consenti GRE e BGP con UFW: + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. Crea una Nuova Identità DoubleZero + +Usa il seguente comando per creare un'identità DoubleZero sul server: + +```bash +doublezero keygen +``` + +!!! info + Se hai un ID esistente che vuoi utilizzare, puoi seguire i passaggi opzionali seguenti. + + Crea la directory di configurazione di doublezerod + + ``` + mkdir -p ~/.config/doublezero + ``` + + Copia o collega il file `id.json` che vuoi usare in DoubleZero nella directory di configurazione doublezero. + + ``` + sudo cp ~/.config/doublezero/ + ``` + +## 3. Ottieni l'Identità DoubleZero del Server + +Conferma la tua identità DoubleZero. Questa identità viene utilizzata per creare la connessione tra la tua macchina e DoubleZero. + +```bash +doublezero address +``` + +**Output:** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. Conferma che doublezerod ha Rilevato i Dispositivi DZ + +Prima di connetterti, conferma che `doublezerod` ha rilevato e pingato ogni switch DZ testnet disponibile: + +``` +doublezero latency +``` + +Esempio di output: + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +Se i dispositivi non appaiono nell'output, attendi 10-20 secondi e riprova. + +## 5. Disconnettiti da DoubleZero + +La sezione successiva configurerà l'ambiente DoubleZero. Per garantire il successo, disconnetti la sessione corrente. Questo evita problemi con più tunnel aperti sulla macchina. + +Conferma + +```bash +doublezero status +``` + +Se lo stato è `up`, esegui: + +```bash +doublezero disconnect +``` + +### Passo Successivo: Tenant + +La connessione a DoubleZero varia in base al caso d'uso. In DoubleZero, i tenant sono gruppi con profili utente simili. Ad esempio: blockchain, livelli di trasferimento dati, ecc. + +### [Seleziona il Tenant e Continua qui](tenant.md) + + +# Opzionale: Abilitare le Metriche Prometheus + +Gli operatori che conoscono le metriche Prometheus potrebbero voler abilitarle per il monitoraggio DoubleZero. Questo ti permetterà di ottenere informazioni sulle prestazioni del client DoubleZero, sullo stato della connessione e sulla salute operativa. + +## Metriche Disponibili + +DoubleZero espone diverse metriche chiave: +- **Informazioni di build**: versione, hash commit, data di build +- **Stato della sessione**: se la sessione DoubleZero è attiva +- **Metriche di connessione**: latenza e informazioni di connessione +- **Dati di prestazione**: throughput e tassi di errore + +## Abilitazione delle Metriche Prometheus + +Per abilitare le metriche Prometheus sul client DoubleZero, segui questi passaggi: + +### 1. Modifica il comando di avvio del servizio systemd doublezerod + +Crea o modifica la configurazione di override systemd: + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +Sostituisci con questa configurazione: + +Il flag `-env` deve puntare a `testnet` o `mainnet-beta` a seconda della rete da cui vuoi raccogliere dati. Nel blocco di esempio viene utilizzato `testnet`. Se necessario, può essere cambiato in `mainnet-beta`. + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. Ricarica e riavvia il servizio + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. Conferma che le metriche siano disponibili + +Conferma che l'endpoint delle metriche stia rispondendo: + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +Output atteso: + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` + +## Risoluzione dei Problemi + +Se le metriche non vengono visualizzate: + +1. **Controlla lo stato del servizio**: `sudo systemctl status doublezerod` +2. **Verifica la configurazione**: `sudo systemctl cat doublezerod` +3. **Controlla i log**: `sudo journalctl -u doublezerod -f` +4. **Testa l'endpoint**: `curl -v localhost:2113/metrics` +5. **Controlla la porta**: `netstat -tlnp | grep 2113` + + +## Configurazione del Server Prometheus + +La configurazione e la sicurezza esulano dall'ambito di questo documento. +Grafana è un'ottima opzione per la visualizzazione, e la documentazione Grafana [qui](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/) descrive come raccogliere metriche Prometheus. + +## Dashboard Grafana (Opzionale) + +Per la visualizzazione, puoi creare una dashboard Grafana con le metriche DoubleZero. I pannelli comuni includono: +- Stato della sessione nel tempo +- Informazioni di build +- Tendenze della latenza di connessione +- Monitoraggio del tasso di errore diff --git a/docs/setup.ja.md b/docs/setup.ja.md new file mode 100644 index 0000000..5b97f25 --- /dev/null +++ b/docs/setup.ja.md @@ -0,0 +1,328 @@ +# DoubleZeroのセットアップ方法 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "用語" + DoubleZeroを初めて利用しますか?[用語集](glossary.md)で[doublezerod](glossary.md#doublezerod)、[IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency)、[DZD](glossary.md#dzd-doublezero-device)などの用語の定義を確認してください。 + +!!! warning "DoubleZeroに接続することで、[DoubleZeroサービス利用規約](https://doublezero.xyz/terms-protocol)に同意します" + + +## 前提条件 +!!! warning inline end + バリデーターの場合:DoubleZeroはコンテナではなく、バリデーターホストに直接インストールする必要があります。 +- パブリックIPアドレス(NATなし)を持つインターネット接続 +- x86_64サーバー +- 対応OS:Ubuntu 22.04+またはDebian 11+、あるいはRocky Linux / RHEL 8+ +- DoubleZeroを実行するサーバーのrootまたはsudo権限 +- オプションですが有用:デバッグ用のjqとcurl + +## DoubleZeroへの接続 + +DoubleZeroテストネットとDoubleZeroメインネットベータは物理的に異なるネットワークです。インストール時に適切なネットワークを選択してください。 + +DoubleZeroへのオンボーディング時に、**DoubleZeroアイデンティティ**(**DoubleZero ID**と呼ばれる公開鍵で表される)を確立します。このキーはDoubleZeroがマシンを認識する方法の一部です。 + +## 1. DoubleZeroパッケージのインストール + +
+ +!!! info "現在のバージョン" + | パッケージ | メインネットベータ | テストネット | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +OSに応じて以下の手順に従ってください: + +### Ubuntu / Debian + +
+ +メインネットベータの現在の推奨デプロイメント: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +テストネットの現在の推奨デプロイメント: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +メインネットベータの現在の推奨デプロイメント: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +テストネットの現在の推奨デプロイメント: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "既存ユーザーのみ:パッケージを*テストネットからメインネットベータ*、または*メインネットベータからテストネット*に変更する" + 上記のパッケージリポジトリからインストールする際は、DoubleZero**テストネット**または**DoubleZeroメインネットベータ**に固有です。いずれかの時点でネットワークを切り替える場合は、以前にインストールされたパッケージリポジトリを削除し、ターゲットリポジトリに更新する必要があります。 + + この例では、テストネットからメインネットベータへの移行を説明します。 + + ステップ3を上記のテストネット用インストールコマンドに置き換えることで、メインネットベータからテストネットへの移行も同じ手順で完了できます。 + + + 1. 古いリポジトリファイルを見つける + + まず、システム上の既存のDoubleZeroリポジトリ設定ファイルを特定します: + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. 古いリポジトリファイルを削除する + + 前のステップで見つかった古いリポジトリファイルを削除します。例: + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. 新しいリポジトリからインストール + + 新しいメインネットベータリポジトリを追加し、最新のパッケージをインストールします: + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### `doublezerod`のステータスを確認する + +パッケージのインストール後、新しいsystemdユニットがインストール、アクティベート、起動されます。ステータスを確認するには次のコマンドを実行します: +``` +sudo systemctl status doublezerod +``` + +
+ +### GREとBGP用のファイアウォール設定 + +DoubleZeroはGREトンネリング(IPプロトコル47)とBGPルーティング(リンクローカルアドレスのtcp/179)を使用します。ファイアウォールがこれらのプロトコルを許可していることを確認してください: + +iptablesでGREとBGPを許可する: + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +またはUFWでGREとBGPを許可する: + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. 新しいDoubleZeroアイデンティティを作成する + +次のコマンドでサーバーにDoubleZeroアイデンティティを作成します: + +```bash +doublezero keygen +``` + +!!! info + 使用したい既存のIDがある場合は、以下のオプション手順に従うことができます。 + + doublezerod設定ディレクトリを作成する + + ``` + mkdir -p ~/.config/doublezero + ``` + + DoubleZeroで使用したい`id.json`をdoublezero設定ディレクトリにコピーまたはリンクする。 + + ``` + sudo cp ~/.config/doublezero/ + ``` + +## 3. サーバーのDoubleZeroアイデンティティを取得する + +DoubleZeroアイデンティティを確認します。このアイデンティティはマシンとDoubleZero間の接続を作成するために使用されます。 + +```bash +doublezero address +``` + +**出力:** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. doublezerodがDZデバイスを検出したことを確認する + +接続する前に、`doublezerod`が利用可能な各DZテストネットスイッチを検出してpingしていることを確認します: + +``` +doublezero latency +``` + +サンプル出力: + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +出力にデバイスが表示されない場合は、10〜20秒待ってから再試行してください。 + +## 5. DoubleZeroから切断する + +次のセクションではDoubleZero環境を設定します。成功を確実にするために、現在のセッションを切断してください。これにより、マシンで複数のトンネルが開いている問題を回避できます。 + +確認 + +```bash +doublezero status +``` + +`up`の場合は実行: + +```bash +doublezero disconnect +``` + +### 次のステップ:テナント + +DoubleZeroへの接続はユースケースによって異なります。DoubleZeroでは、テナントは類似したユーザープロファイルを持つグループです。例:ブロックチェーン、データ転送レイヤーなど。 + +### [こちらでテナントを選択して進む](tenant.md) + + +# オプション:Prometheusメトリクスを有効にする + +Prometheusメトリクスに慣れているオペレーターは、DoubleZeroの監視のために有効にしたい場合があります。これにより、DoubleZeroクライアントのパフォーマンス、接続ステータス、および運用の健全性を把握できます。 + +## 利用可能なメトリクス + +DoubleZeroはいくつかの主要なメトリクスを公開します: +- **ビルド情報**:バージョン、コミットハッシュ、ビルド日 +- **セッションステータス**:DoubleZeroセッションがアクティブかどうか +- **接続メトリクス**:レイテンシと接続情報 +- **パフォーマンスデータ**:スループットとエラー率 + +## Prometheusメトリクスを有効にする + +DoubleZeroクライアントでPrometheusメトリクスを有効にするには、以下の手順に従ってください: + +### 1. doublezerod systemdサービスの起動コマンドを変更する + +systemdオーバーライド設定を作成または編集します: + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +この設定に置き換えます: + +`-env`フラグはデータを収集したいネットワークに応じて`testnet`または`mainnet-beta`を指す必要があります。サンプルブロックでは`testnet`を使用しています。必要に応じて`mainnet-beta`に変更できます。 + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. サービスをリロードして再起動する + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. メトリクスが利用可能かを確認する + +メトリクスエンドポイントが応答していることを確認します: + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +期待される出力: + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` + +## トラブルシューティング + +メトリクスが表示されない場合: + +1. **サービスステータスを確認する**:`sudo systemctl status doublezerod` +2. **設定を確認する**:`sudo systemctl cat doublezerod` +3. **ログを確認する**:`sudo journalctl -u doublezerod -f` +4. **エンドポイントをテストする**:`curl -v localhost:2113/metrics` +5. **ポートを確認する**:`netstat -tlnp | grep 2113` + + +## Prometheusサーバーの設定 + +設定とセキュリティはこのドキュメントの範囲外です。 +Grafanaは視覚化に優れたオプションであり、Prometheusメトリクスの収集方法を詳述するドキュメントが[こちら](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/)で入手できます。 + +## Grafanaダッシュボード(オプション) + +視覚化のために、DoubleZeroメトリクスを使用してGrafanaダッシュボードを作成できます。一般的なパネルには以下が含まれます: +- 時間経過によるセッションステータス +- ビルド情報 +- 接続レイテンシのトレンド +- エラー率の監視 diff --git a/docs/setup.ko.md b/docs/setup.ko.md new file mode 100644 index 0000000..143e281 --- /dev/null +++ b/docs/setup.ko.md @@ -0,0 +1,326 @@ +# DoubleZero 설정 방법 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "용어" + DoubleZero가 처음이신가요? [doublezerod](glossary.md#doublezerod), [IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency), [DZD](glossary.md#dzd-doublezero-device)와 같은 용어의 정의는 [용어집](glossary.md)을 참조하세요. + +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 서비스 약관](https://doublezero.xyz/terms-protocol)에 동의합니다" + + +## 사전 요구사항 +!!! warning inline end + 검증자의 경우: DoubleZero는 컨테이너가 아닌 검증자 호스트에 직접 설치해야 합니다. +- 공개 IP 주소(NAT 없음)를 가진 인터넷 연결 +- x86_64 서버 +- 지원 OS: Ubuntu 22.04+ 또는 Debian 11+, 또는 Rocky Linux / RHEL 8+ +- DoubleZero가 실행될 서버의 루트 또는 sudo 권한 +- 선택 사항이지만 유용함: 디버깅을 위한 jq 및 curl + +## DoubleZero에 연결 + +DoubleZero 테스트넷과 DoubleZero 메인넷-베타는 물리적으로 별개의 네트워크입니다. 설치 시 적절한 네트워크를 선택하세요. + +DoubleZero에 온보딩할 때 공개 키인 **DoubleZero ID**로 표현되는 **DoubleZero 신원**을 설정합니다. 이 키는 DoubleZero가 기계를 인식하는 방법의 일부입니다. + +## 1. DoubleZero 패키지 설치 + +
+ +!!! info "현재 버전" + | 패키지 | 메인넷-베타 | 테스트넷 | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +운영 체제에 따라 다음 단계를 따르세요: + +### Ubuntu / Debian + +
+ +메인넷-베타에 권장되는 현재 배포: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +테스트넷에 권장되는 현재 배포: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +메인넷-베타에 권장되는 현재 배포: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +테스트넷에 권장되는 현재 배포: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "기존 사용자 전용: *테스트넷에서 메인넷-베타로* 또는 *메인넷-베타에서 테스트넷으로* 패키지 변경" + 위의 패키지 저장소 중 하나에서 설치하면 DoubleZero **테스트넷** 또는 **DoubleZero 메인넷-베타**에 특정됩니다. 어느 시점에서든 네트워크를 변경하는 경우 이전에 설치된 패키지 저장소를 제거하고 대상 저장소로 업데이트해야 합니다. + + 이 예시는 테스트넷에서 메인넷-베타 마이그레이션을 안내합니다. + + 동일한 단계를 완료하여 메인넷-베타에서 테스트넷으로 이동할 수 있습니다. 단, 3단계를 위의 테스트넷 설치 명령으로 교체하세요. + + + 1. 이전 저장소 파일 찾기 + + 먼저 시스템에서 기존 DoubleZero 저장소 구성 파일을 찾습니다: + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. 이전 저장소 파일 제거 + + 이전 단계에서 찾은 이전 저장소 파일을 제거합니다. 예를 들어: + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. 새 저장소에서 설치 + + 새 메인넷-베타 저장소를 추가하고 최신 패키지를 설치합니다: + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### `doublezerod` 상태 확인 + +패키지가 설치되면 새 systemd 유닛이 설치, 활성화 및 시작됩니다. 상태를 확인하려면 다음을 실행하세요: +``` +sudo systemctl status doublezerod +``` + +
+ +### GRE 및 BGP를 위한 방화벽 구성 + +DoubleZero는 GRE 터널링(IP 프로토콜 47) 및 BGP 라우팅(링크-로컬 주소의 tcp/179)을 사용합니다. 방화벽이 이 프로토콜을 허용하는지 확인하세요: + +iptables를 통해 GRE 및 BGP 허용: + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +또는 UFW를 통해 GRE 및 BGP 허용: + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. 새 DoubleZero 신원 생성 + +다음 명령으로 서버에 DoubleZero 신원을 생성합니다: + +```bash +doublezero keygen +``` + +!!! info + 사용하고 싶은 기존 ID가 있는 경우 다음 선택적 단계를 따를 수 있습니다. + + doublezero 구성 디렉토리 생성 + + ``` + mkdir -p ~/.config/doublezero + ``` + + DoubleZero와 함께 사용하려는 `id.json`을 doublezero 구성 디렉토리에 복사하거나 링크합니다. + + ``` + sudo cp ~/.config/doublezero/ + ``` +## 3. 서버의 DoubleZero 신원 확인 + +DoubleZero 신원을 확인합니다. 이 신원은 기계와 DoubleZero 간의 연결을 생성하는 데 사용됩니다. + +```bash +doublezero address +``` + +**출력:** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. doublezerod가 DZ 장치를 발견했는지 확인 + +연결하기 전에 `doublezerod`가 사용 가능한 DZ 테스트넷 스위치를 각각 발견하고 핑했는지 확인합니다: + +``` +doublezero latency +``` + +샘플 출력: + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +출력에 장치가 반환되지 않으면 10-20초 기다린 후 다시 시도하세요. + +## 5. DoubleZero에서 연결 해제 + +다음 섹션에서 DoubleZero 환경을 설정합니다. 성공적인 설정을 위해 현재 세션의 연결을 해제하세요. 이렇게 하면 기계에 열려 있는 여러 터널과 관련된 문제를 방지할 수 있습니다. + +확인 + +```bash +doublezero status +``` + +`up` 상태이면 다음을 실행합니다: + +```bash +doublezero disconnect +``` + +### 다음 단계: 테넌트 + +DoubleZero 연결은 사용 사례에 따라 다릅니다. DoubleZero에서 테넌트는 유사한 사용자 프로필을 가진 그룹입니다. 예를 들어 블록체인, 데이터 전송 레이어 등이 있습니다. + +### [여기서 테넌트를 선택하세요](tenant.md) + + +# 선택 사항: Prometheus 메트릭 활성화 + +Prometheus 메트릭에 익숙한 운영자는 DoubleZero 모니터링을 위해 활성화할 수 있습니다. 이를 통해 DoubleZero 클라이언트 성능, 연결 상태 및 운영 상태에 대한 가시성을 제공합니다. + +## 사용 가능한 메트릭 + +DoubleZero는 다음과 같은 주요 메트릭을 노출합니다: +- **빌드 정보**: 버전, 커밋 해시 및 빌드 날짜 +- **세션 상태**: DoubleZero 세션의 활성 여부 +- **연결 메트릭**: 대기 시간 및 연결 정보 +- **성능 데이터**: 처리량 및 오류율 + +## Prometheus 메트릭 활성화 + +DoubleZero 클라이언트에서 Prometheus 메트릭을 활성화하려면 다음 단계를 따르세요: + +### 1. doublezerod systemd 서비스 시작 명령 수정 + +systemd 재정의 구성을 생성하거나 편집합니다: + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +다음 구성으로 교체합니다: + +`-env` 플래그는 데이터를 수집하려는 네트워크에 따라 `testnet` 또는 `mainnet-beta`를 가리켜야 합니다. 샘플 블록에서는 `testnet`이 사용됩니다. 필요한 경우 `mainnet-beta`로 교체할 수 있습니다. + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. 서비스 다시 로드 및 재시작 + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. 메트릭 사용 가능 여부 확인 + +메트릭 엔드포인트가 응답하는지 테스트합니다: + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +예상 출력: + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` +## 문제 해결 + +메트릭이 표시되지 않는 경우: + +1. **서비스 상태 확인**: `sudo systemctl status doublezerod` +2. **구성 확인**: `sudo systemctl cat doublezerod` +3. **로그 확인**: `sudo journalctl -u doublezerod -f` +4. **엔드포인트 테스트**: `curl -v localhost:2113/metrics` +5. **포트 확인**: `netstat -tlnp | grep 2113` + + +## Prometheus 서버 구성 + +구성 및 보안은 이 문서의 범위를 벗어납니다. +Grafana는 시각화에 탁월한 옵션이며 Prometheus 메트릭을 수집하는 방법에 대한 문서가 [여기](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/)에 있습니다. + +## Grafana 대시보드 (선택 사항) + +시각화를 위해 DoubleZero 메트릭을 사용하는 Grafana 대시보드를 만들 수 있습니다. 일반적인 패널에는 다음이 포함됩니다: +- 시간 경과에 따른 세션 상태 +- 빌드 정보 +- 연결 대기 시간 추세 +- 오류율 모니터링 diff --git a/docs/setup.pt.md b/docs/setup.pt.md new file mode 100644 index 0000000..e7b12ff --- /dev/null +++ b/docs/setup.pt.md @@ -0,0 +1,326 @@ +# Como configurar o DoubleZero +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "Terminologia" + Novo no DoubleZero? Consulte o [Glossário](glossary.md) para definições de termos como [doublezerod](glossary.md#doublezerod), [IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency) e [DZD](glossary.md#dzd-doublezero-device). + +!!! warning "Ao conectar ao DoubleZero, concordo com os [Termos de Serviço do DoubleZero](https://doublezero.xyz/terms-protocol)" + + +## Pré-requisitos +!!! warning inline end + Para validadores: o DoubleZero precisa ser instalado diretamente no host do validador, não em um contêiner. +- Conectividade à internet com um endereço IP público (sem NAT) +- Servidor x86_64 +- SO suportado: Ubuntu 22.04+ ou Debian 11+, ou Rocky Linux / RHEL 8+ +- Privilégios de root ou sudo no servidor onde o DoubleZero será executado +- Opcional, mas útil: jq e curl para depuração + +## Conectando ao DoubleZero + +O Testnet do DoubleZero e o Mainnet-Beta do DoubleZero são redes fisicamente distintas. Por favor, escolha a rede apropriada durante a instalação. + +Ao integrar ao DoubleZero, você estabelecerá uma **identidade DoubleZero**, representada por uma chave pública chamada **DoubleZero ID**. Essa chave faz parte de como o DoubleZero reconhece sua máquina. + +## 1. Instalar os Pacotes do DoubleZero + +
+ +!!! info "Versões Atuais" + | Pacote | Mainnet-Beta | Testnet | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +Siga estas etapas dependendo do seu sistema operacional: + +### Ubuntu / Debian + +
+ +A implantação recomendada atual para Mainnet-Beta é: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +A implantação recomendada atual para Testnet é: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +A implantação recomendada atual para Mainnet-Beta é: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +A implantação recomendada atual para Testnet é: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "Apenas Usuários Existentes: Mudar um pacote de *Testnet para Mainnet-Beta*, ou de *Mainnet-Beta para Testnet*" + Quando você instala a partir de um dos repositórios de pacotes acima, ele é específico para o **Testnet** do DoubleZero ou o **DoubleZero Mainnet Beta**. Se você trocar de rede em algum momento, precisará remover os repositórios de pacotes instalados anteriormente e atualizar para o repositório de destino. + + Este exemplo mostrará a migração do Testnet para o Mainnet-Beta. + + As mesmas etapas podem ser concluídas para mover do Mainnet-Beta para o Testnet, substituindo o passo 3 pelo comando de instalação do Testnet acima. + + + 1. Encontrar Arquivos de Repositório Antigos + + Primeiro, localize quaisquer arquivos de configuração de repositório do DoubleZero existentes em seu sistema: + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. Remover Arquivos de Repositório Antigos + + Remova os arquivos de repositório antigos encontrados na etapa anterior, por exemplo: + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. Instalar a partir do Novo Repositório + + Adicione o novo repositório Mainnet-Beta e instale o pacote mais recente: + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### Verificar o status do `doublezerod` + +Após a instalação do pacote, uma nova unidade systemd é instalada, ativada e iniciada. Para ver o status, execute: +``` +sudo systemctl status doublezerod +``` + +
+ +### Configurar Firewall para GRE e BGP + +O DoubleZero usa tunelamento GRE (protocolo IP 47) e roteamento BGP (tcp/179 em endereços link-local). Certifique-se de que seu firewall permita esses protocolos: + +Permitir GRE e BGP via iptables: + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +Ou permitir GRE e BGP via UFW: + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. Criar Nova Identidade DoubleZero + +Crie uma Identidade DoubleZero em seu servidor com o seguinte comando: + +```bash +doublezero keygen +``` + +!!! info + Se você tiver um ID existente que gostaria de usar, pode seguir estas etapas opcionais. + + Criar o diretório de configuração do doublezero + + ``` + mkdir -p ~/.config/doublezero + ``` + + Copie ou vincule o `id.json` que deseja usar com o DoubleZero no diretório de configuração do doublezero. + + ``` + sudo cp ~/.config/doublezero/ + ``` +## 3. Recuperar a identidade DoubleZero do servidor + +Revise sua Identidade DoubleZero. Esta identidade será usada para criar a conexão entre sua máquina e o DoubleZero. + +```bash +doublezero address +``` + +**Saída:** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. Verificar se o doublezerod descobriu os dispositivos DZ + +Antes de conectar, certifique-se de que o `doublezerod` tenha descoberto e feito ping em cada um dos switches DZ testnet disponíveis: + +``` +doublezero latency +``` + +Exemplo de saída: + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +Se nenhum dispositivo for retornado na saída, aguarde 10-20 segundos e tente novamente. + +## 5. Desconectar do DoubleZero + +Nas próximas seções, você definirá seu Ambiente DoubleZero. Para garantir o sucesso, desconecte a sessão atual. Isso evitará problemas relacionados a múltiplos túneis abertos em sua máquina. + +Verifique + +```bash +doublezero status +``` + +se estiver `up`, execute: + +```bash +doublezero disconnect +``` + +### Próxima Etapa: Tenant + +A conexão ao DoubleZero será diferente com base no seu caso de uso. No DoubleZero, Tenants são grupos que têm perfis de usuário semelhantes. Exemplos incluem Blockchains, Camadas de Transferência de Dados, etc. + +### [Prossiga para escolher seu tenant aqui](tenant.md) + + +# Opcional: Habilitar Métricas Prometheus + +Operadores familiarizados com métricas Prometheus podem querer habilitá-las para monitoramento do DoubleZero. Isso fornece visibilidade sobre o desempenho do cliente DoubleZero, status de conexão e saúde operacional. + +## Quais Métricas Estão Disponíveis + +O DoubleZero expõe várias métricas principais: +- **Informações de Build**: Versão, hash de commit e data de build +- **Status da Sessão**: Se a sessão DoubleZero está ativa +- **Métricas de Conexão**: Informações de latência e conectividade +- **Dados de Desempenho**: Throughput e taxas de erro + +## Habilitar Métricas Prometheus + +Para habilitar métricas Prometheus no cliente DoubleZero, siga estas etapas: + +### 1. Modificar o comando de inicialização do serviço systemd doublezerod + +Crie ou edite a configuração de substituição do systemd: + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +Substitua por esta configuração: + +Note que o flag `-env` precisa apontar para `testnet` ou `mainnet-beta` dependendo de qual rede você gostaria de coletar dados. No bloco de exemplo, `testnet` é usado. Você pode substituí-lo por `mainnet-beta` se necessário. + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. Recarregar e reiniciar o serviço + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. Verificar se as métricas estão disponíveis + +Teste se o endpoint de métricas está respondendo: + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +Saída esperada: + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` +## Resolução de Problemas + +Se as métricas não aparecerem: + +1. **Verificar status do serviço**: `sudo systemctl status doublezerod` +2. **Verificar configuração**: `sudo systemctl cat doublezerod` +3. **Verificar logs**: `sudo journalctl -u doublezerod -f` +4. **Testar endpoint**: `curl -v localhost:2113/metrics` +5. **Verificar porta**: `netstat -tlnp | grep 2113` + + +## Configurar Servidor Prometheus + +Configuração e segurança estão além do escopo desta documentação. +O Grafana é uma excelente opção para visualização e possui documentação disponível [aqui](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/) detalhando como coletar métricas Prometheus. + +## Dashboard Grafana (Opcional) + +Para visualização, você pode criar um dashboard Grafana usando as métricas do DoubleZero. Painéis comuns incluem: +- Status da sessão ao longo do tempo +- Informações de build +- Tendências de latência de conexão +- Monitoramento de taxa de erros diff --git a/docs/setup.zh.md b/docs/setup.zh.md new file mode 100644 index 0000000..6746229 --- /dev/null +++ b/docs/setup.zh.md @@ -0,0 +1,328 @@ +# DoubleZero设置方法 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +!!! info "术语" + 初次使用DoubleZero?请在[词汇表](glossary.md)中查看[doublezerod](glossary.md#doublezerod)、[IBRL](glossary.md#ibrl-increase-bandwidth-reduce-latency)、[DZD](glossary.md#dzd-doublezero-device)等术语的定义。 + +!!! warning "通过连接到DoubleZero,您同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" + + +## 前提条件 +!!! warning inline end + 对于验证器:DoubleZero必须直接安装在验证器主机上,而不是容器中。 +- 具有公共IP地址(无NAT)的互联网连接 +- x86_64服务器 +- 支持的操作系统:Ubuntu 22.04+或Debian 11+,或Rocky Linux / RHEL 8+ +- 运行DoubleZero的服务器上的root或sudo权限 +- 可选但有用:用于调试的jq和curl + +## 连接到DoubleZero + +DoubleZero测试网和DoubleZero主网Beta是物理上不同的网络。安装时请选择适当的网络。 + +加入DoubleZero时,您将建立**DoubleZero身份**(称为**DoubleZero ID**的公钥)。此密钥是DoubleZero识别您机器的方式之一。 + +## 1. 安装DoubleZero软件包 + +
+ +!!! info "当前版本" + | 软件包 | 主网Beta | 测试网 | + |---------|-------------|---------| + | `doublezero` | `MAINNET_CLIENT_VERSION` | `TESTNET_CLIENT_VERSION` | + +
+ +根据您的操作系统按照以下说明操作: + +### Ubuntu / Debian + +
+ +主网Beta的当前推荐部署: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +
+ +测试网的当前推荐部署: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.deb.sh | sudo -E bash +sudo apt-get install doublezero +``` + +
+ +### Rocky Linux / RHEL + +
+ +主网Beta的当前推荐部署: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +测试网的当前推荐部署: +```bash +curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero-testnet/setup.rpm.sh | sudo -E bash +sudo yum install doublezero +``` + +
+ +
+ +??? info "仅限现有用户:将软件包从*测试网切换到主网Beta*,或从*主网Beta切换到测试网*" + 从上述软件包仓库安装时,DoubleZero**测试网**或**DoubleZero主网Beta**各有其专用仓库。如果您在某个时候需要切换网络,则需要删除之前安装的软件包仓库并更新到目标仓库。 + + 此示例展示了从测试网迁移到主网Beta的过程。 + + 通过将步骤3替换为上述测试网安装命令,也可以以相同步骤完成从主网Beta到测试网的迁移。 + + + 1. 找到旧的仓库文件 + + 首先,识别系统上现有的DoubleZero仓库配置文件: + + `find /etc/apt | grep doublezero` + + `find /usr/share/keyrings/ | grep doublezero` + + 2. 删除旧的仓库文件 + + 删除上一步中找到的旧仓库文件。例如: + + ``` + sudo rm /etc/apt/sources.list.d/malbeclabs-doublezero.list + sudo rm /usr/share/keyrings/malbeclabs-doublezero-archive-keyring.gpg + ``` + 3. 从新仓库安装 + + 添加新的主网Beta仓库并安装最新软件包: + + ``` + curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash + sudo apt-get install doublezero= + ``` + + +
+ +
+ +#### 检查`doublezerod`状态 + +软件包安装后,将安装、激活并启动新的systemd单元。要检查状态,请运行以下命令: +``` +sudo systemctl status doublezerod +``` + +
+ +### GRE和BGP的防火墙配置 + +DoubleZero使用GRE隧道(IP协议47)和BGP路由(链路本地地址的tcp/179)。请确保您的防火墙允许这些协议: + +用iptables允许GRE和BGP: + +
+ +```bash +sudo iptables -A INPUT -p gre -j ACCEPT +sudo iptables -A OUTPUT -p gre -j ACCEPT +sudo iptables -A INPUT -i doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +sudo iptables -A OUTPUT -o doublezero0 -s 169.254.0.0/16 -d 169.254.0.0/16 -p tcp --dport 179 -j ACCEPT +``` + +
+ +或用UFW允许GRE和BGP: + +
+ +```bash +sudo ufw allow proto gre from any to any +sudo ufw allow in on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +sudo ufw allow out on doublezero0 from 169.254.0.0/16 to 169.254.0.0/16 port 179 proto tcp +``` + +
+ +## 2. 创建新的DoubleZero身份 + +使用以下命令在服务器上创建DoubleZero身份: + +```bash +doublezero keygen +``` + +!!! info + 如果您有想要使用的现有ID,可以按照以下可选步骤操作。 + + 创建doublezerod配置目录 + + ``` + mkdir -p ~/.config/doublezero + ``` + + 将您想在DoubleZero中使用的`id.json`复制或链接到doublezero配置目录。 + + ``` + sudo cp ~/.config/doublezero/ + ``` + +## 3. 获取服务器的DoubleZero身份 + +确认您的DoubleZero身份。此身份用于在您的机器与DoubleZero之间创建连接。 + +```bash +doublezero address +``` + +**输出:** +```bash +YourDoubleZeroAddress11111111111111111111111111111 +``` + +## 4. 确认doublezerod已检测到DZ设备 + +在连接之前,确认`doublezerod`已检测并ping了每个可用的DZ测试网交换机: + +``` +doublezero latency +``` + +示例输出: + +``` +$ doublezero latency + pubkey | name | ip | min | max | avg | reachable + 96AfeBT6UqUmREmPeFZxw6PbLrbfET51NxBFCCsVAnek | la2-dz01 | 207.45.216.134 | 0.38ms | 0.45ms | 0.42ms | true + CCTSmqMkxJh3Zpa9gQ8rCzhY7GiTqK7KnSLBYrRriuan | ny5-dz01 | 64.86.249.22 | 68.81ms | 68.87ms | 68.85ms | true + BX6DYCzJt3XKRc1Z3N8AMSSqctV6aDdJryFMGThNSxDn | ty2-dz01 | 180.87.154.78 | 112.16ms | 112.25ms | 112.22ms | true + 55tfaZ1kRGxugv7MAuinXP4rHATcGTbNyEKrNsbuVLx2 | ld4-dz01 | 195.219.120.66 | 138.15ms | 138.21ms | 138.17ms | true + 3uGKPEjinn74vd9LHtC4VJvAMAZZgU9qX9rPxtc6pF2k | ams-dz001 | 195.219.138.50 | 141.84ms | 141.97ms | 141.91ms | true + 65DqsEiFucoFWPLHnwbVHY1mp3d7MNM2gNjDTgtYZtFQ | frk-dz01 | 195.219.220.58 | 143.52ms | 143.62ms | 143.58ms | true + 9uhh2D5c14WJjbwgM7BudztdoPZYCjbvqcTPgEKtTMZE | sg1-dz01 | 180.87.102.98 | 176.66ms | 176.76ms | 176.72ms | true +``` + +如果输出中未显示设备,请等待10至20秒后重试。 + +## 5. 从DoubleZero断开连接 + +下一节将配置DoubleZero环境。为确保成功,请断开当前会话的连接。这可以避免机器上打开多个隧道的问题。 + +确认 + +```bash +doublezero status +``` + +如果状态为`up`,请运行: + +```bash +doublezero disconnect +``` + +### 下一步:租户 + +连接到DoubleZero因使用场景而异。在DoubleZero中,租户是具有相似用户配置文件的群组。例如:区块链、数据传输层等。 + +### [在此处选择租户并继续](tenant.md) + + +# 可选:启用Prometheus指标 + +熟悉Prometheus指标的运营商可能希望为DoubleZero监控启用它。这将使您能够了解DoubleZero客户端的性能、连接状态和运营健康状况。 + +## 可用指标 + +DoubleZero公开几个关键指标: +- **构建信息**:版本、提交哈希、构建日期 +- **会话状态**:DoubleZero会话是否活跃 +- **连接指标**:延迟和连接信息 +- **性能数据**:吞吐量和错误率 + +## 启用Prometheus指标 + +要在DoubleZero客户端上启用Prometheus指标,请按照以下步骤操作: + +### 1. 修改doublezerod systemd服务启动命令 + +创建或编辑systemd覆盖配置: + +```bash +sudo mkdir -p /etc/systemd/system/doublezerod.service.d/ +sudo nano /etc/systemd/system/doublezerod.service.d/override.conf +``` + +替换为此配置: + +`-env`标志应根据您想收集数据的网络指向`testnet`或`mainnet-beta`。示例块中使用了`testnet`。如有需要,可以更改为`mainnet-beta`。 + +```ini +[Service] +ExecStart= +ExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env testnet -metrics-enable -metrics-addr localhost:2113 +``` + +### 2. 重新加载并重启服务 + +```bash +sudo systemctl daemon-reload +sudo systemctl restart doublezerod +sudo systemctl status doublezerod +``` + +### 3. 确认指标可用 + +确认指标端点正在响应: + +```bash +curl -s localhost:2113/metrics | grep doublezero +``` + +预期输出: + +``` +# HELP doublezero_build_info Build information of the client +# TYPE doublezero_build_info gauge +doublezero_build_info{commit="0d684e1b",date="2025-09-10T16:30:25Z",version="0.6.4"} 1 +# HELP doublezero_session_is_up Status of session to doublezero +# TYPE doublezero_session_is_up gauge +doublezero_session_is_up 0 +``` + +## 故障排除 + +如果指标未显示: + +1. **检查服务状态**:`sudo systemctl status doublezerod` +2. **验证配置**:`sudo systemctl cat doublezerod` +3. **检查日志**:`sudo journalctl -u doublezerod -f` +4. **测试端点**:`curl -v localhost:2113/metrics` +5. **检查端口**:`netstat -tlnp | grep 2113` + + +## 配置Prometheus服务器 + +配置和安全性超出本文档的范围。 +Grafana是可视化的优秀选项,Grafana文档[此处](https://grafana.com/docs/alloy/latest/collect/prometheus-metrics/)详细介绍了如何收集Prometheus指标。 + +## Grafana仪表板(可选) + +对于可视化,您可以使用DoubleZero指标创建Grafana仪表板。常见面板包括: +- 随时间变化的会话状态 +- 构建信息 +- 连接延迟趋势 +- 错误率监控 diff --git a/docs/tenant.es.md b/docs/tenant.es.md new file mode 100644 index 0000000..a954ae1 --- /dev/null +++ b/docs/tenant.es.md @@ -0,0 +1,27 @@ +# Inquilinos +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Los inquilinos en DoubleZero son grupos de usuarios con perfiles similares y requisitos de conexión, que típicamente representan diferentes ecosistemas blockchain, capas de transferencia de datos u otros sistemas distribuidos. + +Examine la tabla a continuación y elija el caso de uso que mejor describa cómo planea interactuar con la red DoubleZero. + +Solana + +| Caso de Uso | Siguiente Paso | +|-------------|---------| +| Validador Solana Mainnet, incluyendo respaldos | [Conexión DoubleZero Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| Validador Solana Testnet, incluyendo respaldos | [Conexión DoubleZero Testnet](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| No validadores - RPCs y otros. | [Conexión DoubleZero Mainnet-Beta y Testnet](Permissioned%20Connection.md) | + +Shelby + +| Caso de Uso | Siguiente Paso | +|-------------|---------| +| RPCs y Nodos de Almacenamiento Shelby Testnet | [Conexión DoubleZero Testnet](Shelby%20Permissioned%20Connection.md) | + +Nuevo Inquilino + +| Caso de Uso | Siguiente Paso | +-------------|---------| +| Tienes un nuevo protocolo, aplicación u otro caso de uso para aprovechar DoubleZero | [Agregar un Nuevo Inquilino](New%20Tenant.md) | diff --git a/docs/tenant.fr.md b/docs/tenant.fr.md new file mode 100644 index 0000000..13e5e7f --- /dev/null +++ b/docs/tenant.fr.md @@ -0,0 +1,27 @@ +# Tenants +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Les tenants sur DoubleZero sont des groupes d'utilisateurs aux profils et aux exigences de connexion similaires, représentant généralement différents écosystèmes blockchain, couches de transfert de données ou systèmes distribués. + +Examinez le tableau ci-dessous et choisissez le cas d'utilisation qui décrit le mieux la façon dont vous envisagez d'interagir avec le réseau DoubleZero. + +Solana + +| Cas d'Utilisation | Prochaine Étape | +|-------------|---------| +| Validateur Solana Mainnet, y compris les sauvegardes | [Connexion DoubleZero Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| Validateur Solana Testnet, y compris les sauvegardes | [Connexion DoubleZero Testnet](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| Non-Validateurs - RPC, et autres. | [Connexion DoubleZero Mainnet-Beta et Testnet](Permissioned%20Connection.md) | + +Shelby + +| Cas d'Utilisation | Prochaine Étape | +|-------------|---------| +| RPC Shelby Testnet et Nœuds de Stockage | [Connexion DoubleZero Testnet](Shelby%20Permissioned%20Connection.md) | + +Nouveau Tenant + +| Cas d'Utilisation | Prochaine Étape | +-------------|---------| +| Vous avez un nouveau protocole, une application ou un autre cas d'utilisation pour tirer parti de DoubleZero | [Ajouter un Nouveau Tenant](New%20Tenant.md) | diff --git a/docs/tenant.it.md b/docs/tenant.it.md new file mode 100644 index 0000000..ac26d5c --- /dev/null +++ b/docs/tenant.it.md @@ -0,0 +1,27 @@ +# Tenant +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +I tenant su DoubleZero sono gruppi di utenti con profili e requisiti di connessione simili, che tipicamente rappresentano diversi ecosistemi blockchain, livelli di trasferimento dati o sistemi distribuiti. + +Esamina la tabella seguente e scegli il caso d'uso che descrive meglio come intendi interagire con la rete DoubleZero. + +Solana + +| Caso d'Uso | Prossimo Passo | +|-------------|---------| +| Validatore Solana Mainnet, inclusi i backup | [Connessione DoubleZero Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| Validatore Solana Testnet, inclusi i backup | [Connessione DoubleZero Testnet](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| Non-Validatori - RPC e altri. | [Connessione DoubleZero Mainnet-Beta e Testnet](Permissioned%20Connection.md) | + +Shelby + +| Caso d'Uso | Prossimo Passo | +|-------------|---------| +| RPC Shelby Testnet e Nodi di Storage | [Connessione DoubleZero Testnet](Shelby%20Permissioned%20Connection.md) | + +Nuovo Tenant + +| Caso d'Uso | Prossimo Passo | +-------------|---------| +| Hai un nuovo protocollo, applicazione o altro caso d'uso per sfruttare DoubleZero | [Aggiungi un Nuovo Tenant](New%20Tenant.md) | diff --git a/docs/tenant.ja.md b/docs/tenant.ja.md new file mode 100644 index 0000000..b50f250 --- /dev/null +++ b/docs/tenant.ja.md @@ -0,0 +1,27 @@ +# テナント +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZeroのテナントは、類似したプロフィールと接続要件を持つユーザーグループで、通常は異なるブロックチェーンエコシステム、データ転送レイヤー、または分散システムを表しています。 + +以下の表を確認し、DoubleZeroネットワークとの連携方法を最もよく表すユースケースを選択してください。 + +Solana + +| ユースケース | 次のステップ | +|-------------|---------| +| Solanaメインネットバリデーター(バックアップ含む) | [DoubleZero Mainnet-Beta接続](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| Solanaテストネットバリデーター(バックアップ含む) | [DoubleZero Testnet接続](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| 非バリデーター - RPC等 | [DoubleZero Mainnet-BetaおよびTestnet接続](Permissioned%20Connection.md) | + +Shelby + +| ユースケース | 次のステップ | +|-------------|---------| +| Shelby Testnet RPCおよびストレージノード | [DoubleZero Testnet接続](Shelby%20Permissioned%20Connection.md) | + +新規テナント + +| ユースケース | 次のステップ | +-------------|---------| +| DoubleZeroを活用する新しいプロトコル、アプリケーション、またはその他のユースケース | [新規テナントの追加](New%20Tenant.md) | diff --git a/docs/tenant.ko.md b/docs/tenant.ko.md new file mode 100644 index 0000000..1fda27b --- /dev/null +++ b/docs/tenant.ko.md @@ -0,0 +1,27 @@ +# 테넌트 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero의 테넌트는 유사한 프로필과 연결 요구사항을 가진 사용자 그룹으로, 일반적으로 서로 다른 블록체인 에코시스템, 데이터 전송 레이어 또는 분산 시스템을 나타냅니다. + +아래 표를 살펴보고 DoubleZero 네트워크와 상호작용하려는 방식을 가장 잘 설명하는 사용 사례를 선택하세요. + +Solana + +| 사용 사례 | 다음 단계 | +|-------------|---------| +| 백업을 포함한 Solana 메인넷 검증자 | [DoubleZero Mainnet-Beta 연결](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| 백업을 포함한 Solana 테스트넷 검증자 | [DoubleZero Testnet 연결](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| 비검증자 - RPC 및 기타 | [DoubleZero Mainnet-Beta 및 Testnet 연결](Permissioned%20Connection.md) | + +Shelby + +| 사용 사례 | 다음 단계 | +|-------------|---------| +| Shelby 테스트넷 RPC 및 스토리지 노드 | [DoubleZero Testnet 연결](Shelby%20Permissioned%20Connection.md) | + +새 테넌트 + +| 사용 사례 | 다음 단계 | +-------------|---------| +| DoubleZero를 활용할 새 프로토콜, 애플리케이션 또는 기타 사용 사례가 있습니다 | [새 테넌트 추가](New%20Tenant.md) | diff --git a/docs/tenant.pt.md b/docs/tenant.pt.md new file mode 100644 index 0000000..19929ab --- /dev/null +++ b/docs/tenant.pt.md @@ -0,0 +1,27 @@ +# Tenants +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Os Tenants no DoubleZero são grupos de usuários com perfis e requisitos de conexão semelhantes, geralmente representando diferentes ecossistemas de blockchain, camadas de transferência de dados ou sistemas distribuídos. + +Examine a tabela abaixo e escolha o caso de uso que melhor descreve como você planeja interagir com a Rede DoubleZero. + +Solana + +| Caso de Uso | Próximo Passo | +|-------------|---------| +| Validador Mainnet Solana, incluindo backups | [Conexão DoubleZero Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| Validador Testnet Solana, incluindo backups | [Conexão DoubleZero Testnet](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| Não-Validadores - RPCs e outros. | [Conexão DoubleZero Mainnet-Beta e Testnet](Permissioned%20Connection.md) | + +Shelby + +| Caso de Uso | Próximo Passo | +|-------------|---------| +| RPCs e Nós de Armazenamento Shelby Testnet | [Conexão DoubleZero Testnet](Shelby%20Permissioned%20Connection.md) | + +Novo Tenant + +| Caso de Uso | Próximo Passo | +-------------|---------| +| Você tem um novo protocolo, aplicação ou outro caso de uso para aproveitar o DoubleZero | [Adicionar um Novo Tenant](New%20Tenant.md) | diff --git a/docs/tenant.zh.md b/docs/tenant.zh.md new file mode 100644 index 0000000..0f58ee6 --- /dev/null +++ b/docs/tenant.zh.md @@ -0,0 +1,27 @@ +# 租户 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +DoubleZero上的租户是具有相似配置和连接需求的用户群组,通常代表不同的区块链生态系统、数据传输层或分布式系统。 + +请查看下表,选择最能描述您计划如何与DoubleZero网络交互的用例。 + +Solana + +| 用例 | 下一步 | +|-------------|---------| +| Solana主网验证器,包括备份 | [DoubleZero主网Beta连接](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) | +| Solana测试网验证器,包括备份 | [DoubleZero测试网连接](https://docs.malbeclabs.com/DZ%20Testnet%20Connection/) | +| 非验证器 - RPC及其他 | [DoubleZero主网Beta和测试网连接](Permissioned%20Connection.md) | + +Shelby + +| 用例 | 下一步 | +|-------------|---------| +| Shelby测试网RPC和存储节点 | [DoubleZero测试网连接](Shelby%20Permissioned%20Connection.md) | + +新租户 + +| 用例 | 下一步 | +-------------|---------| +| 您有新协议、应用程序或其他用例希望利用DoubleZero | [添加新租户](New%20Tenant.md) | diff --git a/docs/troubleshooting.es.md b/docs/troubleshooting.es.md new file mode 100644 index 0000000..3703efb --- /dev/null +++ b/docs/troubleshooting.es.md @@ -0,0 +1,238 @@ +# Solución de Problemas +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Esta guía cubre una variedad de problemas y está en continuo desarrollo. Si completa la guía puede buscar soporte adicional en el Discord de [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701). + + +## Comandos Comunes y Salidas + +Para comenzar, examine la salida de los siguientes comandos y sus salidas esperadas. Estos le ayudarán en una solución de problemas más detallada. +Si abre un ticket, es posible que le pidan sus salidas. + +#### 1. Verificar Versión +Comando: + +`doublezero --version` + +Salida de Ejemplo: +``` +DoubleZero 0.6.3 +``` + +#### 2. Verificar Dirección DoubleZero +Comando: + +`doublezero address` + +Salida de Ejemplo: +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. Verificar su Pase de Acceso + +Pubkey de ejemplo: `MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` reemplácela con su pubkey al ejecutar el comando. + +Comando: + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +Salida: [nota: usamos `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` para mostrarle el encabezado en esta salida] +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. Verificar Créditos del Ledger DoubleZero +Comando: + +`doublezero balance` + +Salida de Ejemplo: +``` +0.78 Credits +``` + +#### 5. Verificar Estado de Conexión +Comando: + +`doublezero status` + +Salida de Ejemplo: + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + +#### 6. Verificar Latencia +Comando: + +`doublezero latency` + +Salida de Ejemplo: +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# Ejemplos de Solución de Problemas +Ahora que hemos examinado las salidas básicas y lo que se espera en un despliegue saludable, podemos examinar algunos ejemplos comunes de solución de problemas. + +### Problema: ❌ Error al crear usuario + +Este problema generalmente está relacionado con una discrepancia entre el par pubkey/IP esperado y el par pubkey/IP con el que el usuario intenta acceder a DoubleZero. + +**Síntomas:** +- Al conectarse con `doublezero connect ibrl` el usuario encuentra `❌ Error creating user` + + +**Soluciones:** +1. Verifique + + `doublezero address` + + Salida de Ejemplo: + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. Verifique que esta dirección esté en la lista de permitidos: + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + Salida de Ejemplo: + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + La pubkey de `doublezero address` debe coincidir con la pubkey user_payer y la dirección IP desde la que intenta conectarse debe coincidir con la IP en el Pase de Acceso. + `doublezero address` proviene del archivo id.json en `~/.config/doublezero/` por defecto. Consulte el [paso 6 aquí](https://docs.malbeclabs.com/setup/) + +3. Si lo anterior parece correcto y está obteniendo un error al conectarse, o si el mapeo anterior es incorrecto, contacte a soporte en [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) + +### Problema: ❌ Error al aprovisionar servicio: cosas malformadas: no se pueden aprovisionar múltiples túneles al mismo tiempo +Este error indica que un dispositivo ya está conectado a DoubleZero. + +**Síntomas:** +- El usuario intenta conectarse a DoubleZero +- Se encuentra `❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time`. + +**Soluciones:** +1. Verifique + `doublezero status` + + Salida: + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. `up` indica una conexión saludable. +3. El error aparece porque ya hay un túnel activo hacia DoubleZero con la IP DoubleZero específica en esta máquina. + + Este error se encuentra con frecuencia después de una actualización del cliente DoubleZero. Las actualizaciones de DoubleZero reinician automáticamente el servicio doublezerod y le reconectarán si estaba conectado antes del reinicio del servicio. + + +### Problema: El estado de DoubleZero es desconocido o caído +Este problema generalmente está relacionado con que el túnel GRE se activó correctamente entre el servidor y el Dispositivo DoubleZero, pero un firewall impide el establecimiento de la sesión BGP. Por ello no está recibiendo rutas de la red ni enviando tráfico a través de DoubleZero. + +**Síntomas:** +- `doublezero connect ibrl` fue exitoso. Sin embargo, `doublezero status` devuelve `down` o `unknown` + +**Soluciones:** +1. ¡Verifique las reglas de su firewall! + + DoubleZero utiliza el espacio de direcciones link-local: 169.254.0.0/16 para las interfaces del túnel GRE entre su máquina y el Dispositivo DoubleZero. 169.254.0.0/16 es típicamente espacio "no enrutable" y por lo tanto las buenas prácticas de seguridad recomendarán bloquear las comunicaciones hacia/desde este espacio. Necesitará permitir una regla en su firewall que permita que src 169.254.0.0/16 se comunique con dst 169.254.0.0/16 en el puerto tcp 179. Esa regla debe colocarse por encima de cualquier regla que deniegue tráfico a 169.254.0.0/16. + + En un firewall como ufw puede ejecutar `sudo ufw status` para ver las reglas del firewall. + + `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179` para insertar la regla en la posición . Por ejemplo, si N = 1 insertará esta regla como la primera regla. + `sudo ufw status numbered` le mostrará el orden numérico de las reglas. + +### Problema: El dispositivo DoubleZero más cercano ha cambiado + +Esto no es un error, pero puede ser una optimización. A continuación se muestra una buena práctica que se puede ejecutar de vez en cuando o automatizar. + +**Soluciones:** + +1. Verifique la latencia al dispositivo más cercano + - Ejecute `doublezero latency` + +2. Determine si ya está conectado al dispositivo objetivo + - Ejecute `doublezero user list --env testnet | grep 111.11.11.11` reemplazando `111.11.11.11` con la dirección IPv4 pública de su dispositivo conectado a DoubleZero. + +3. Opcional: examine la red para ver los dispositivos disponibles + - Ejecute `doublezero device list` para obtener una lista completa de dispositivos. + +4. Determine si el dispositivo objetivo tiene una conexión disponible + - Ejecute `doublezero device list | grep dz-ny7-sw01` reemplazando `dz-ny7-sw01` con su dispositivo objetivo. + +5. Conéctese al Dispositivo DoubleZero más cercano + + Primero ejecute + - `doublezero disconnect` + + Luego verifique el estado con + - `doublezero status` + + Por último reconéctese con + - `doublezero connect ibrl` + +### Problema: `doublezero status` devuelve algunos campos con N/A + +Este problema generalmente está relacionado con una discrepancia entre el daemon y cliente actuales versus el daemon y cliente con los que se estableció el túnel DZ conectado. + +**Síntomas:** +- Al ejecutar `doublezero status` el usuario encuentra `N/A` en algunos campos + +**Soluciones:** +1. Ejecute +`doublezero status` + + Note que el `Tunnel status` es `up` y `Network` es `mainnet-beta` pero `Current Device` y `Metro` son `N/A`. Esto indica un túnel abierto en su máquina que no está en su entorno actual. + +2. Cambie su entorno. + + Para configurar el CLI `doublezero` y el daemon `doublezerod` para conectarse a **DoubleZero testnet**: + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + + Para configurar el CLI `doublezero` y el daemon `doublezerod` para conectarse a **DoubleZero mainnet-beta**: + + ```bash + DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. Verifique su estado + + Después de cambiar el entorno ejecute: + + ``` + doublezero status + ``` + + Con todos los campos completados ahora está en el entorno correcto. diff --git a/docs/troubleshooting.fr.md b/docs/troubleshooting.fr.md new file mode 100644 index 0000000..99368ed --- /dev/null +++ b/docs/troubleshooting.fr.md @@ -0,0 +1,376 @@ +# Résolution des Problèmes +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Ce guide couvre une variété de problèmes et est en cours d'élaboration. Si vous avez complété le guide, vous pouvez chercher une aide supplémentaire sur le discord [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701). + + +## Commandes Courantes et Sorties + +Pour commencer, examinez la sortie des commandes suivantes et leur sortie attendue. Elles vous aideront à résoudre les problèmes de manière plus détaillée. +Si vous ouvrez un ticket, on pourrait vous demander leur sortie. + +#### 1. Vérifier la Version +Commande : + +`doublezero --version` + +Exemple de sortie : +``` +DoubleZero 0.6.3 +``` + +#### 2. Vérifier l'Adresse DoubleZero +Commande : + +`doublezero address` + +Exemple de sortie : +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. Vérifier votre Pass d'Accès + +Exemple de clé publique : `MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` remplacez cela par votre clé publique lors de l'exécution de la commande. + +Commande : + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +Sortie : [notez que nous utilisons `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` pour afficher l'en-tête dans cette sortie] +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. Vérifier les Crédits du Registre DoubleZero +Commande : + +`doublezero balance` + +Exemple de sortie : +``` +0.78 Credits +``` + +#### 5. Vérifier l'État de la Connexion +Commande : + +`doublezero status` + +Exemple de sortie : + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + + +#### 6. Vérifier la Latence +Commande : + +`doublezero latency` + +Exemple de sortie : +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# Exemples de Résolution des Problèmes +Maintenant que nous avons examiné les sorties de base et ce qui est attendu dans un déploiement sain, nous pouvons examiner quelques exemples courants de résolution de problèmes. + +### Problème : ❌ Erreur lors de la création d'un utilisateur + +Ce problème est généralement lié à une discordance entre la combinaison clé publique/IP attendue et la combinaison clé publique/IP avec laquelle l'utilisateur essaie d'accéder à DoubleZero. + +**Symptômes :** +- Lors de la connexion avec `doublezero connect ibrl`, l'utilisateur rencontre `❌ Error creating user` + + +**Solutions :** +1. Vérifiez + + `doublezero address` + + Exemple de sortie : + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. Vérifiez que cette adresse est dans la liste autorisée : + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + Exemple de sortie : + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + La clé publique de `doublezero address` doit correspondre à la clé publique user_payer et l'adresse IP depuis laquelle vous essayez de vous connecter doit correspondre à l'IP dans le Pass d'Accès. + `doublezero address` est sourcé depuis le fichier id.json dans ~/.config/doublezero/ par défaut. Voir l'[étape 6 ici](https://docs.malbeclabs.com/setup/) + +3. Si ce qui précède semble correct et que vous obtenez une erreur lors de la connexion, ou si le mappage ci-dessus est incorrect, veuillez contacter le support sur [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) + +### Problème : ❌ Erreur de provisionnement du service : malformed stuff: cannot provision multiple tunnels at the same time +Cette erreur indique qu'un dispositif est déjà connecté à DoubleZero. + +**Symptômes :** +- L'utilisateur essaie de se connecter à DoubleZero +- `❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time` est rencontré. + +**Solutions :** +1. Vérifiez + `doublezero status` + + Sortie : + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. -`up`- indique une connexion saine. +3. L'erreur apparaît parce qu'un tunnel vers DoubleZero avec l'IP DoubleZero spécifique est déjà actif sur cette machine. + + Cette erreur est souvent rencontrée après une mise à niveau du client DoubleZero. Les mises à niveau DoubleZero redémarrent automatiquement le service doublezerod et vous reconnecteront si vous étiez connecté avant le redémarrage du service. + + +### Problème : Le statut DoubleZero est inconnu ou down +Ce problème est souvent lié au tunnel GRE qui a été activé avec succès entre le serveur et le DoubleZero Device, mais un pare-feu empêche l'établissement de la session BGP. À cause de cela, vous ne recevez pas de routes depuis le réseau ou n'envoyez pas de trafic via DoubleZero. + +**Symptômes :** +- `doublezero connect ibrl` a réussi. Cependant, `doublezero status` retourne `down` ou `unknown` + ``` + doublezero connect ibrl + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok + ✅ User Provisioned + ``` + + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` + +**Solutions :** +1. Vérifiez vos règles de pare-feu ! + + DoubleZero utilise l'espace d'adresses link-local : 169.254.0.0/16 pour les interfaces de tunnel GRE entre votre machine et le DoubleZero Device. 169.254.0.0/16 est typiquement un espace « non routable » et donc les bonnes pratiques de sécurité recommandent de bloquer les communications vers/depuis cet espace. Vous devrez autoriser une règle dans votre pare-feu qui permet à src 169.254.0.0/16 de communiquer avec dst 169.254.0.0/16 sur le port tcp 179. Cette règle devra être placée au-dessus de toutes les règles qui refusent le trafic vers 169.254.0.0/16. + + Dans un pare-feu comme ufw, vous pouvez exécuter `sudo ufw status` pour afficher les règles du pare-feu et + + Exemple de sortie qui pourrait être similaire à ce qu'un validateur Solana aurait. + ``` + To Action From + -- ------ ---- + 22/tcp ALLOW Anywhere + 8899/tcp ALLOW Anywhere + 8000:10000/tcp ALLOW Anywhere + 8000:10000/udp ALLOW Anywhere + 11200:11300/udp ALLOW Anywhere + 11200:11300/tcp ALLOW Anywhere + + To Action From + -- ------ ---- + 10.0.0.0/8 DENY OUT Anywhere + 169.254.0.0/16 DENY OUT Anywhere + 172.16.0.0/12 DENY OUT Anywhere + 192.168.0.0/16 DENY OUT Anywhere + ``` + + Dans la sortie ci-dessus, vous voyez que tout le trafic vers 169.254.0.0/16, sauf pour les ports spécifiés, est refusé. + `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179` pour insérer la règle à la position . c'est-à-dire que si N = 1, vous insérerez cette règle comme première règle. + `sudo ufw status numbered` vous montrera l'ordre numérique des règles. + +### Problème : Le dispositif DoubleZero le plus proche a changé + +Ce n'est pas une erreur, mais cela peut être une optimisation. Voici une bonne pratique qui peut être exécutée de temps en temps ou automatisée. + +**Solutions :** + +1. Vérifiez la latence vers le dispositif le plus proche + - exécutez `doublezero latency` + + sortie + ``` + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.80ms | 1.90ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.83ms | 2.10ms | 1.92ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.87ms | 2.66ms | 2.15ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.33ms | 2.39ms | 2.37ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.29ms | 2.59ms | 2.40ms | true + ``` + notez ci-dessus que le dispositif le plus proche est `dz-ny7-sw01` + + Nous voulons nous connecter à ce dispositif. : + +2. Déterminez si vous êtes déjà connecté au dispositif cible + - exécutez `doublezero user list --env testnet | grep 111.11.11.11` remplacez `111.11.11.11` par l'adresse IPv4 publique de votre dispositif connecté à DoubleZero. Vous pouvez également utiliser votre ID de validateur ou l'ID doublezero. + + sortie + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | dz-ny7-sw01 | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + Dans cet exemple, nous sommes déjà connectés au dispositif le plus proche. Plus d'étapes ne sont nécessaires, nous pouvons nous arrêter ici. + + + Considérons plutôt si la sortie était + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | fra-dz-001-x | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + Ce serait une connexion sous-optimale. Considérons si une reconnexion est nécessaire. + + Avant la connexion, nous vérifierons si le dispositif a des tunnels utilisateur disponibles. + +3. Optionnel : examiner le réseau pour les dispositifs disponibles + + À des fins éducatives, nous allons d'abord : + - exécuter `doublezero device list` pour une liste complète des dispositifs. Nous avons extrait 2 dispositifs comme exemple pour expliquer la sortie. + + sortie : + ``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | mgmt_vrf | owner + GphgLkA7JDVtkDQZCiDrwrDvaUs8r8XczEae1KkV6CGQ | ams001-dz002 | jump_ | EQX-AM4 | ams | switch | 149.11.64.57 | 38.246.201.64/27 | 69 | 128 | activated | | H647kAwTcWsGXZUK3BTr1JyTBZmbNcYyCmRFFCEnXUVp + 7FfrX8YbvbzM8A1ojNynP9BjiKpK9rrmhdEdchB2myhG | dz-fr5-sw01 | glxy | EQX-FR5 | fra | switch | 89.222.118.225 | 89.222.118.228/30 | 0 | 0 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + Notez ci-dessus que `ams001-dz002` a 69 utilisateurs et 128 utilisateurs maximum. Ce dispositif peut accueillir 59 utilisateurs supplémentaires. + + Cependant, `dz-fr5-sw01` a 0 utilisateurs et 0 utilisateurs maximum. Vous ne pourrez pas vous connecter à ce dispositif. Avec un max_users de 0, le dispositif n'accepte aucune connexion. + + Revenons maintenant à la connexion à notre dispositif le plus proche. + +4. Déterminez si le dispositif cible a une connexion disponible + - exécutez `doublezero device list | grep dz-ny7-sw01` remplacez `dz-ny7-sw01` par votre dispositif cible + + sortie + ``` + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | glxy | EQX-NY7 | nyc | switch | 137.239.213.162 | 137.239.216.164/31 | 29 | 128 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + ici nous pouvons voir que `dz-ny7-sw01` dispose d'espace disponible pour la connexion. + +5. Se connecter au dispositif DoubleZero le plus proche + + Nous allons nous déconnecter, puis nous reconnecter à doublezero. + + Exécutez d'abord + - `doublezero disconnect` + + sortie + + ``` + DoubleZero Service Provisioning + 🔍 Decommissioning User + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + \ [00:00:00] [##########>-----------------------------] 1/4 deleting user account... 🔍 Deleting User Account for: 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW + 🔍 User Account deleted + ✅ Deprovisioning Complete + ``` + maintenant nous vérifions le statut pour confirmer notre déconnexion avec + - `doublezero status` + + sortie + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type + disconnected | no session data | | | | | + ``` + Enfin nous nous reconnecterons avec + - `doublezero connect ibrl` + + sortie + ``` + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: dz-ny7-sw01 + Service provisioned with status: ok + ✅ User Provisioned + ``` + notez dans la sortie ci-dessus que nous avons `Connected to device: dz-ny7-sw01` c'est le résultat souhaité de notre enquête initiale à l'étape 1, où nous avons découvert que `dz-ny7-sw01` était le dispositif avec la latence la plus faible. + +### Problème : `doublezero status` retourne certains champs avec N/A + +Ce problème est généralement lié à une discordance entre le daemon et le client actuels, par rapport au daemon et au client avec lesquels le tunnel DZ connecté a été établi. + +**Symptômes :** +- Lors de l'exécution de `doublezero status`, l'utilisateur rencontre `N/A` dans certains champs + + + + +**Solutions :** +1. Exécutez +`doublezero status` + + Exemple : + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 20:06:18 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | N/A | ✅ dz-ny7-sw01 | N/A | mainnet-beta + ``` + + Notez dans notre exemple de sortie ci-dessus que le `Tunnel status` est `up`. Notre `Network` est `mainnet-beta`. Cependant, `Current Device` et `Metro` sont `N/A` + + Cela indique un tunnel ouvert sur votre machine qui n'est pas dans votre environnement actuel. + Dans ce cas, le statut `up`, sans `Current Device` trouvé sur `mainnet-beta` nous révèle que notre tunnel est sur testnet ! + +2. Changez votre environnement. + + Pour rectifier la discordance, vous changerez votre environnement vers l'opposé de l'environnement retournant `N/A` + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + + Pour configurer la CLI Client DoubleZero (`doublezero`) et le daemon (`doublezerod`) afin de se connecter au **mainnet-beta DoubleZero** : + + ```bash + DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. Vérifiez votre statut + + Après avoir changé d'environnement, exécutez : + + ``` + doublezero status + ``` + + La sortie attendue devrait être similaire à : + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-21 12:32:12 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | nyc-dz001 | ✅ nyc-dz001 | New York | testnet + ``` +Avec tous les champs remplis, vous êtes maintenant dans le bon environnement. diff --git a/docs/troubleshooting.it.md b/docs/troubleshooting.it.md new file mode 100644 index 0000000..05fe677 --- /dev/null +++ b/docs/troubleshooting.it.md @@ -0,0 +1,341 @@ +# Risoluzione dei Problemi +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Questa guida copre una varietà di problemi ed è in continuo aggiornamento. Se completi la guida puoi cercare ulteriore supporto nel Discord [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701). + + +## Comandi Comuni e Output + +Per iniziare, esamina l'output dei seguenti comandi e il loro output atteso. Questi ti aiuteranno nella risoluzione dei problemi più dettagliata. +Se apri un ticket, potrebbe essere richiesto l'output di questi comandi. + +#### 1. Controlla la Versione +Comando: + +`doublezero --version` + +Output di esempio: +``` +DoubleZero 0.6.3 +``` + +#### 2. Controlla l'Indirizzo DoubleZero +Comando: + +`doublezero address` + +Output di esempio: +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. Verifica il tuo Pass di Accesso + +Chiave pubblica di esempio: `MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` - sostituiscila con la tua chiave pubblica quando esegui il comando. + +Comando: + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +Output: [nota che usiamo `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` per mostrare l'intestazione in questo output] +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. Controlla i Crediti del Registro DoubleZero +Comando: + +`doublezero balance` + +Output di esempio: +``` +0.78 Credits +``` + +#### 5. Controlla lo Stato della Connessione +Comando: + +`doublezero status` + +Output di esempio: + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + + +#### 6. Controlla la Latenza +Comando: + +`doublezero latency` + +Output di esempio: +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# Esempi di Risoluzione dei Problemi +Ora che abbiamo esaminato gli output di base e ciò che è atteso in un deployment sano, possiamo esaminare alcuni esempi comuni di risoluzione dei problemi. + +### Problema: ❌ Error creating user + +Questo problema è generalmente correlato a una mancata corrispondenza tra la coppia chiave pubblica/IP attesa e quella che l'utente sta cercando di usare per accedere a DoubleZero. + +**Sintomi:** +- Quando si connette con `doublezero connect ibrl` l'utente incontra `❌ Error creating user` + + +**Soluzioni:** +1. Controlla + + `doublezero address` + + Output di esempio: + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. Verifica che questo indirizzo sia nella lista consentita: + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + Output di esempio: + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + La chiave pubblica da `doublezero address` deve corrispondere alla chiave pubblica user_payer e l'indirizzo IP da cui stai cercando di connetterti deve corrispondere all'IP nell'Access-Pass. + `doublezero address` è originato dal file id.json in ~/.config/doublezero/ per impostazione predefinita. Vedi il [passaggio 6 qui](https://docs.malbeclabs.com/setup/) + +3. Se quanto sopra sembra corretto e stai ricevendo un errore durante la connessione, o se la mappatura sopra è errata, contatta il supporto in [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) + +### Problema: ❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time +Questo errore indica che un dispositivo è già connesso a DoubleZero. + +**Sintomi:** +- L'utente cerca di connettersi a DoubleZero +- Viene incontrato `❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time`. + +**Soluzioni:** +1. Controlla + `doublezero status` + + Output: + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. `-up-` indica una connessione sana. +3. L'errore appare perché un tunnel a DoubleZero con il DoubleZero IP specifico è già attivo su questa macchina. + + Questo errore si verifica spesso dopo un aggiornamento del client DoubleZero. Gli aggiornamenti DoubleZero riavviano automaticamente il servizio doublezerod e ti riconnetteranno se eri connesso prima del riavvio del servizio. + + +### Problema: Lo Stato DoubleZero è unknown o down +Questo problema è spesso correlato al tunnel GRE attivato con successo tra il server e il DoubleZero Device, ma un firewall che impedisce l'instaurazione della sessione BGP. Per questo motivo non stai ricevendo route dalla rete né inviando traffico su DoubleZero. + +**Sintomi:** +- `doublezero connect ibrl` è riuscito. Tuttavia, `doublezero status` restituisce `down` o `unknown` + ``` + doublezero connect ibrl + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok + ✅ User Provisioned + ``` + + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` + +**Soluzioni:** +1. Controlla le tue regole firewall! + + DoubleZero utilizza lo spazio degli indirizzi link-local: 169.254.0.0/16 per le interfacce tunnel GRE tra la tua macchina e il DoubleZero Device. 169.254.0.0/16 è tipicamente spazio "non instradabile" e pertanto le buone pratiche di sicurezza raccomandano di bloccare le comunicazioni verso/da questo spazio. Dovrai autorizzare una regola nel tuo firewall che consenta a src 169.254.0.0/16 di comunicare con dst 169.254.0.0/16 sulla porta tcp 179. Quella regola dovrà essere posizionata sopra qualsiasi regola che nega il traffico verso 169.254.0.0/16. + + In un firewall come ufw puoi eseguire `sudo ufw status` per visualizzare le regole del firewall. + + Output di esempio che potrebbe essere simile a quello di un validatore Solana. + ``` + To Action From + -- ------ ---- + 22/tcp ALLOW Anywhere + 8899/tcp ALLOW Anywhere + 8000:10000/tcp ALLOW Anywhere + 8000:10000/udp ALLOW Anywhere + 11200:11300/udp ALLOW Anywhere + 11200:11300/tcp ALLOW Anywhere + + To Action From + -- ------ ---- + 10.0.0.0/8 DENY OUT Anywhere + 169.254.0.0/16 DENY OUT Anywhere + 172.16.0.0/12 DENY OUT Anywhere + 192.168.0.0/16 DENY OUT Anywhere + ``` + + Nell'output sopra vedi che tutto il traffico verso 169.254.0.0/16, eccetto le porte specificate, viene negato. + `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179` per inserire la regola nella posizione . Cioè, se N = 1 inserirai questa regola come prima regola. + `sudo ufw status numbered` ti mostrerà l'ordinamento numerico delle regole. + +### Problema: Il dispositivo DoubleZero più vicino è cambiato + +Non si tratta di un errore, ma può essere un'ottimizzazione. Di seguito è riportata una best practice che può essere eseguita di tanto in tanto, o automatizzata. + +**Soluzioni:** + +1. Controlla la latenza verso il dispositivo più vicino + - esegui `doublezero latency` + + output + ``` + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.80ms | 1.90ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.83ms | 2.10ms | 1.92ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.87ms | 2.66ms | 2.15ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.33ms | 2.39ms | 2.37ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.29ms | 2.59ms | 2.40ms | true + ``` + nota sopra che il dispositivo più vicino è `dz-ny7-sw01` + + Vogliamo connetterci a questo dispositivo. + +2. Determina se sei già connesso al dispositivo target + - esegui `doublezero user list --env testnet | grep 111.11.11.11` sostituendo `111.11.11.11` con l'indirizzo IPv4 pubblico del tuo dispositivo connesso a DoubleZero. + + output + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | dz-ny7-sw01 | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + In questo esempio, siamo già connessi al dispositivo più vicino. Non sono necessari altri passaggi, possiamo fermarci qui. + +3. Opzionale: esamina la rete per i dispositivi disponibili + + - esegui `doublezero device list` per un elenco completo dei dispositivi. + + output: + ``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | mgmt_vrf | owner + GphgLkA7JDVtkDQZCiDrwrDvaUs8r8XczEae1KkV6CGQ | ams001-dz002 | jump_ | EQX-AM4 | ams | switch | 149.11.64.57 | 38.246.201.64/27 | 69 | 128 | activated | | H647kAwTcWsGXZUK3BTr1JyTBZmbNcYyCmRFFCEnXUVp + 7FfrX8YbvbzM8A1ojNynP9BjiKpK9rrmhdEdchB2myhG | dz-fr5-sw01 | glxy | EQX-FR5 | fra | switch | 89.222.118.225 | 89.222.118.228/30 | 0 | 0 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + Nota che `ams001-dz002` ha 69 utenti e 128 max utenti. Questo dispositivo può aggiungere 59 utenti. + + Tuttavia, `dz-fr5-sw01` ha 0 utenti e 0 max utenti. Non potrai connetterti a questo dispositivo. + +4. Determina se il dispositivo target ha una connessione disponibile + - esegui `doublezero device list | grep dz-ny7-sw01` + + output + ``` + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | glxy | EQX-NY7 | nyc | switch | 137.239.213.162 | 137.239.216.164/31 | 29 | 128 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + +5. Connettiti al DoubleZero Device più vicino + + Prima esegui + - `doublezero disconnect` + + poi controlla lo stato con + - `doublezero status` + + poi riconnettiti con + - `doublezero connect ibrl` + + output + ``` + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: dz-ny7-sw01 + Service provisioned with status: ok + ✅ User Provisioned + ``` + +### Problema: `doublezero status` restituisce alcuni campi con N/A + +Questo problema è generalmente correlato a una mancata corrispondenza tra il daemon e il client correnti, rispetto al daemon e al client con cui è stato stabilito il tunnel DZ connesso. + +**Sintomi:** +- Quando si esegue `doublezero status` l'utente incontra `N/A` in alcuni campi + + +**Soluzioni:** +1. Esegui +`doublezero status` + + Esempio: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 20:06:18 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | N/A | ✅ dz-ny7-sw01 | N/A | mainnet-beta + ``` + + Nota nell'esempio sopra che il `Tunnel status` è `up`. La nostra `Network` è `mainnet-beta`. Tuttavia, `Current Device` e `Metro` sono `N/A`. + + Questo indica un tunnel aperto sulla tua macchina che non è nel tuo ambiente corrente. + In questo caso lo stato `up`, senza `Current Device` trovato su `mainnet-beta`, ci rivela che il nostro tunnel è su testnet! + +2. Cambia il tuo ambiente. + + Per correggere la mancata corrispondenza cambierai il tuo ambiente all'opposto dell'ambiente che restituisce il `N/A` + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + + Per configurare la CLI DoubleZero Client (`doublezero`) e il daemon (`doublezerod`) per connettersi al **mainnet-beta DoubleZero**: + + ```bash + DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. Controlla il tuo stato + + Dopo aver cambiato ambiente esegui: + + ``` + doublezero status + ``` + + L'output atteso dovrebbe essere simile a: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-21 12:32:12 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | nyc-dz001 | ✅ nyc-dz001 | New York | testnet + ``` +Con tutti i campi popolati sei ora nell'ambiente corretto. diff --git a/docs/troubleshooting.ja.md b/docs/troubleshooting.ja.md new file mode 100644 index 0000000..9b2091a --- /dev/null +++ b/docs/troubleshooting.ja.md @@ -0,0 +1,377 @@ +# トラブルシューティング +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +このガイドではさまざまな問題を取り上げており、継続的に更新されています。ガイドを完了した後にさらなるサポートが必要な場合は、[DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) Discordにてご支援を求めることができます。 + + +## 共通コマンドと出力 + +まず、以下のコマンドの出力と期待される出力を確認してください。これらは詳細なトラブルシューティングに役立ちます。 +サポートチケットを開いた場合、これらの出力を求められる場合があります。 + +#### 1. バージョンの確認 +コマンド: + +`doublezero --version` + +サンプル出力: +``` +DoubleZero 0.6.3 +``` + +#### 2. DoubleZeroアドレスの確認 +コマンド: + +`doublezero address` + +サンプル出力: +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. アクセスパスの確認 + +サンプル公開鍵:`MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` コマンド実行時はこれをあなたの公開鍵に置き換えてください。 + +コマンド: + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +出力:[この出力ではヘッダーを表示するために`doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'`を使用しています] +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. DoubleZeroレジャークレジットの確認 +コマンド: + +`doublezero balance` + +サンプル出力: +``` +0.78 Credits +``` + +#### 5. 接続ステータスの確認 +コマンド: + +`doublezero status` + +サンプル出力: + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + + +#### 6. レイテンシの確認 +コマンド: + +`doublezero latency` + +サンプル出力: +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# トラブルシューティングの例 +基本的な出力と正常なデプロイメントで期待される内容を確認したところで、一般的なトラブルシューティングの例を見ていきましょう。 + +### 問題:❌ Error creating user + +この問題は一般的に、期待される公開鍵/IPのペアリングとユーザーがDoubleZeroへのアクセスを試みている公開鍵/IPのペアリングの不一致に関連しています。 + +**症状:** +- `doublezero connect ibrl`で接続する際に`❌ Error creating user`が表示される + + +**解決策:** +1. 確認 + + `doublezero address` + + サンプル出力: + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. このアドレスが許可リストに登録されているか確認します: + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + サンプル出力: + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + `doublezero address`の公開鍵はuser_payerの公開鍵と一致し、接続しようとしているIPアドレスはアクセスパスのIPと一致する必要があります。 + `doublezero address`はデフォルトで`~/.config/doublezero/`のid.jsonファイルから取得されます。[ステップ6](https://docs.malbeclabs.com/setup/)を参照してください。 + +3. 上記が正しく、接続中にエラーが発生している場合、またはマッピングが間違っている場合は、[DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701)でサポートにお問い合わせください。 + +### 問題:❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time +このエラーは、デバイスがすでにDoubleZeroに接続されていることを示します。 + +**症状:** +- ユーザーがDoubleZeroへの接続を試みる +- `❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time`が表示される + +**解決策:** +1. 確認 + `doublezero status` + + 出力: + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. `up`は正常な接続を示します。 +3. このエラーは、特定のDoubleZero IPを持つDoubleZeroへのトンネルがこのマシンですでにアクティブであるために表示されます。 + + このエラーはDoubleZeroクライアントのアップグレード後によく発生します。DoubleZeroのアップグレードはdoublezerodサービスを自動的に再起動し、サービス再起動前に接続していた場合は再接続されます。 + + +### 問題:DoubleZeroのステータスがunknownまたはdown + +この問題は、サーバーとDoubleZeroデバイス間でGREトンネルが正常にアクティブ化されたが、ファイアウォールがBGPセッションの確立を妨げていることに関連することが多いです。そのため、ネットワークからルートを受信せず、DoubleZero上でトラフィックを送信していません。 + +**症状:** +- `doublezero connect ibrl`は成功しました。ただし、`doublezero status`が`down`または`unknown`を返す + ``` + doublezero connect ibrl + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok + ✅ User Provisioned + ``` + + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` + +**解決策:** +1. ファイアウォールルールを確認してください! + + DoubleZeroはGREトンネルインターフェース用にリンクローカルアドレス空間169.254.0.0/16をマシンとDoubleZeroデバイス間で使用します。169.254.0.0/16は通常「非ルーティング可能」な空間であり、優れたセキュリティプラクティスではこの空間との通信をブロックすることが推奨されます。169.254.0.0/16を送信元とする通信がtcpポート179の169.254.0.0/16宛先と通信できるファイアウォールルールを許可する必要があります。そのルールは169.254.0.0/16へのトラフィックを拒否するルールより上に配置する必要があります。 + + UFWなどのファイアウォールでは`sudo ufw status`を実行してファイアウォールルールを確認できます。 + + Solanaバリデーターが持つような設定に類似したサンプル出力: + ``` + To Action From + -- ------ ---- + 22/tcp ALLOW Anywhere + 8899/tcp ALLOW Anywhere + 8000:10000/tcp ALLOW Anywhere + 8000:10000/udp ALLOW Anywhere + 11200:11300/udp ALLOW Anywhere + 11200:11300/tcp ALLOW Anywhere + + To Action From + -- ------ ---- + 10.0.0.0/8 DENY OUT Anywhere + 169.254.0.0/16 DENY OUT Anywhere + 172.16.0.0/12 DENY OUT Anywhere + 192.168.0.0/16 DENY OUT Anywhere + ``` + + 上記の出力では、指定されたポート以外の169.254.0.0/16へのすべてのトラフィックが拒否されています。 + `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179`でルールを番目の位置に挿入します。例:N=1の場合、このルールを最初のルールとして挿入します。 + `sudo ufw status numbered`でルールの番号順序を確認できます。 + +### 問題:最寄りのDoubleZeroデバイスが変わった + +これはエラーではありませんが、最適化できる場合があります。以下は時折実行、または自動化できるベストプラクティスです。 + +**解決策:** + +1. 最寄りのデバイスへのレイテンシを確認する + - `doublezero latency`を実行 + + 出力 + ``` + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.80ms | 1.90ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.83ms | 2.10ms | 1.92ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.87ms | 2.66ms | 2.15ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.33ms | 2.39ms | 2.37ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.29ms | 2.59ms | 2.40ms | true + ``` + 上記では最寄りのデバイスが`dz-ny7-sw01`です + + このデバイスに接続したいとします。 + +2. 対象デバイスに既に接続されているか確認する + - `doublezero user list --env testnet | grep 111.11.11.11`を実行。`111.11.11.11`をDoubleZeroに接続されているデバイスの公開IPv4アドレスに置き換えてください。バリデーターIDまたはDoubleZero IDも使用できます。 + + 出力 + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | dz-ny7-sw01 | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + この例では、既に最寄りのデバイスに接続されています。これ以上のステップは不要で、ここで止めることができます。 + + + 代わりに出力が次のようだった場合を考えてみましょう: + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | fra-dz-001-x | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + これは最適でない接続です。再接続が必要かどうか検討しましょう。 + + 接続の前に、デバイスに利用可能なユーザートンネルがあるか確認します。 + +3. オプション:利用可能なデバイスのネットワークを調べる + + 教育目的で、最初に: + - `doublezero device list`を実行して全デバイスリストを取得します。出力を説明するために2台のデバイスを例として示します。 + + 出力: + ``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | mgmt_vrf | owner + GphgLkA7JDVtkDQZCiDrwrDvaUs8r8XczEae1KkV6CGQ | ams001-dz002 | jump_ | EQX-AM4 | ams | switch | 149.11.64.57 | 38.246.201.64/27 | 69 | 128 | activated | | H647kAwTcWsGXZUK3BTr1JyTBZmbNcYyCmRFFCEnXUVp + 7FfrX8YbvbzM8A1ojNynP9BjiKpK9rrmhdEdchB2myhG | dz-fr5-sw01 | glxy | EQX-FR5 | fra | switch | 89.222.118.225 | 89.222.118.228/30 | 0 | 0 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + `ams001-dz002`は69ユーザーいて、最大128ユーザーまで対応できます。このデバイスは59人のユーザーを追加できます。 + + 一方、`dz-fr5-sw01`は0ユーザーで最大0ユーザーです。このデバイスには接続できません。最大ユーザーが0の場合、デバイスは接続を受け付けていません。 + + 最寄りのデバイスへの接続に戻りましょう。 + +4. 対象デバイスに利用可能な接続があるか確認する + - `doublezero device list | grep dz-ny7-sw01`を実行。`dz-ny7-sw01`を対象デバイスに置き換えてください + + 出力 + ``` + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | glxy | EQX-NY7 | nyc | switch | 137.239.213.162 | 137.239.216.164/31 | 29 | 128 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + `dz-ny7-sw01`に接続可能なスペースがあることがわかります。 + +5. 最寄りのDoubleZeroデバイスに接続する + + 切断してからDoubleZeroに再接続します。 + + まず実行: + - `doublezero disconnect` + + 出力 + + ``` + DoubleZero Service Provisioning + 🔍 Decommissioning User + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + \ [00:00:00] [##########>-----------------------------] 1/4 deleting user account... 🔍 Deleting User Account for: 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW + 🔍 User Account deleted + ✅ Deprovisioning Complete + ``` + 次に切断確認のためステータスを確認します: + - `doublezero status` + + 出力 + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type + disconnected | no session data | | | | | + ``` + 最後に再接続します: + - `doublezero connect ibrl` + + 出力 + ``` + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: dz-ny7-sw01 + Service provisioned with status: ok + ✅ User Provisioned + ``` + 上記の出力で`Connected to device: dz-ny7-sw01`が表示されています。これはステップ1の最初の調査で`dz-ny7-sw01`が最も低いレイテンシのデバイスであると判明したことから、望ましい結果です。 + +### 問題:`doublezero status`で一部のフィールドにN/Aが表示される + +この問題は一般的に、現在のデーモンとクライアントと、接続されたDZトンネルが確立されたデーモンとクライアントの不一致に関連しています。 + +**症状:** +- `doublezero status`を実行すると一部のフィールドに`N/A`が表示される + + + + +**解決策:** +1. 実行 +`doublezero status` + + 例: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 20:06:18 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | N/A | ✅ dz-ny7-sw01 | N/A | mainnet-beta + ``` + + 上記の出力例で、`Tunnel status`が`up`であることに注意してください。`Network`は`mainnet-beta`ですが、`Current Device`と`Metro`は`N/A`です。 + + これは、マシン上のオープントンネルが現在の環境にないことを示しています。 + この場合、`mainnet-beta`で`Current Device`が見つからない`up`ステータスは、トンネルがテストネット上にあることを示しています! + +2. 環境を変更する + + 不一致を解消するには、`N/A`を返す環境の反対の環境に変更します。 + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + + DoubleZeroクライアントCLI(`doublezero`)とデーモン(`doublezerod`)を**DoubleZeroメインネットベータ**に接続するように設定するには: + + ```bash + DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. ステータスを確認する + + 環境の切り替え後に実行: + + ``` + doublezero status + ``` + + 期待される出力は次のようになります: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-21 12:32:12 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | nyc-dz001 | ✅ nyc-dz001 | New York | testnet + ``` +すべてのフィールドが入力されており、正しい環境にいることを示しています。 diff --git a/docs/troubleshooting.ko.md b/docs/troubleshooting.ko.md new file mode 100644 index 0000000..49a052e --- /dev/null +++ b/docs/troubleshooting.ko.md @@ -0,0 +1,291 @@ +# 문제 해결 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +이 가이드는 다양한 문제를 다루며 계속 업데이트됩니다. 가이드를 완료한 후에도 추가 지원이 필요하다면 [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) Discord에서 도움을 받을 수 있습니다. + + +## 일반 명령 및 출력 + +다음 명령의 출력과 정상 배포 시 예상되는 출력을 살펴보겠습니다. 이는 더 자세한 문제 해결에 도움이 될 것입니다. +티켓을 제출하면 출력을 요청받을 수 있습니다. + +#### 1. 버전 확인 +명령: + +`doublezero --version` + +샘플 출력: +``` +DoubleZero 0.6.3 +``` + +#### 2. DoubleZero 주소 확인 +명령: + +`doublezero address` + +샘플 출력: +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. 액세스 패스 확인 + +샘플 공개 키: `MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` — 명령 실행 시 이것을 본인의 공개 키로 교체하세요. + +명령: + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +출력: +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. DoubleZero 레저 크레딧 확인 +명령: + +`doublezero balance` + +샘플 출력: +``` +0.78 Credits +``` + +#### 5. 연결 상태 확인 +명령: + +`doublezero status` + +샘플 출력: + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + +#### 6. 대기 시간 확인 +명령: + +`doublezero latency` + +샘플 출력: +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# 문제 해결 예제 +기본 출력과 정상 배포 시 예상되는 것을 살펴봤으니 이제 일반적인 문제 해결 예제를 살펴보겠습니다. + +### 문제: ❌ 사용자 생성 오류 + +이 문제는 일반적으로 예상되는 공개 키/IP 쌍과 사용자가 DoubleZero에 접근하려는 공개 키/IP 쌍 간의 불일치와 관련이 있습니다. + +**증상:** +- `doublezero connect ibrl`로 연결할 때 `❌ Error creating user`가 발생합니다 + + +**해결 방법:** +1. 확인 + + `doublezero address` + + 샘플 출력: + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. 이 주소가 허용 목록에 있는지 확인: + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + 샘플 출력: + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + `doublezero address`의 공개 키는 user_payer 공개 키와 일치해야 하며, 연결하려는 IP 주소는 액세스 패스의 IP와 일치해야 합니다. + `doublezero address`는 기본적으로 `~/.config/doublezero/`의 id.json 파일에서 가져옵니다. [여기 6단계](https://docs.malbeclabs.com/setup/)를 참조하세요. + +3. 위 내용이 올바르게 보이지만 연결 중 오류가 발생하거나 위 매핑이 올바르지 않은 경우 [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701)에서 지원에 연락하세요. + +### 문제: ❌ 서비스 프로비저닝 오류: 동시에 여러 터널을 프로비저닝할 수 없습니다 +이 오류는 장치가 이미 DoubleZero에 연결되어 있음을 나타냅니다. + +**증상:** +- 사용자가 DoubleZero에 연결하려고 합니다 +- `❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time`이 발생합니다 + +**해결 방법:** +1. 확인 + `doublezero status` + + 출력: + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. `up`은 정상적인 연결을 나타냅니다. +3. 오류는 특정 DoubleZero IP를 사용하는 DoubleZero 터널이 이미 이 기계에서 활성화되어 있기 때문에 나타납니다. + + 이 오류는 DoubleZero 클라이언트 업그레이드 후 자주 발생합니다. DoubleZero 업그레이드는 doublezerod 서비스를 자동으로 재시작하고 서비스 재시작 전에 연결되어 있었다면 다시 연결합니다. + + +### 문제: DoubleZero 상태가 unknown 또는 down +이 문제는 종종 서버와 DoubleZero 장치 간의 GRE 터널이 성공적으로 활성화되었지만 방화벽이 BGP 세션 설정을 방지하는 것과 관련이 있습니다. 이로 인해 네트워크로부터 경로를 받지 못하거나 DoubleZero를 통해 트래픽을 전송하지 못합니다. + +**증상:** +- `doublezero connect ibrl`이 성공했습니다. 그러나 `doublezero status`가 `down` 또는 `unknown`을 반환합니다 + +**해결 방법:** +1. 방화벽 규칙을 확인하세요! + + DoubleZero는 귀하의 기계와 DoubleZero 장치 간의 GRE 터널 인터페이스에 링크 로컬 주소 공간인 169.254.0.0/16을 사용합니다. 169.254.0.0/16은 일반적으로 "라우팅 불가능한" 공간으로 간주되므로 좋은 보안 관행은 이 공간에서 오가는 통신을 차단하는 것을 권장합니다. 방화벽에서 src 169.254.0.0/16이 tcp 포트 179의 dst 169.254.0.0/16과 통신할 수 있도록 하는 규칙을 허용해야 합니다. 해당 규칙은 169.254.0.0/16 트래픽을 거부하는 규칙 위에 배치되어야 합니다. + + ufw와 같은 방화벽에서 `sudo ufw status`를 실행하여 방화벽 규칙을 볼 수 있습니다. + + Solana 검증자와 유사할 수 있는 샘플 출력: + ``` + To Action From + -- ------ ---- + 22/tcp ALLOW Anywhere + 8899/tcp ALLOW Anywhere + 8000:10000/tcp ALLOW Anywhere + 8000:10000/udp ALLOW Anywhere + 11200:11300/udp ALLOW Anywhere + 11200:11300/tcp ALLOW Anywhere + + To Action From + -- ------ ---- + 10.0.0.0/8 DENY OUT Anywhere + 169.254.0.0/16 DENY OUT Anywhere + 172.16.0.0/12 DENY OUT Anywhere + 192.168.0.0/16 DENY OUT Anywhere + ``` + + 위 출력에서 지정된 포트를 제외한 169.254.0.0/16으로의 모든 트래픽이 거부됩니다. + `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179`를 사용하여 \ 위치에 규칙을 삽입하세요. 즉, N = 1이면 이 규칙을 첫 번째 규칙으로 삽입합니다. + `sudo ufw status numbered`는 규칙의 번호 순서를 표시합니다. + +### 문제: 가장 가까운 DoubleZero 장치가 변경됨 + +이것은 오류가 아니라 최적화일 수 있습니다. 아래는 때때로 실행하거나 자동화할 수 있는 모범 사례입니다. + +**해결 방법:** + +1. 가장 가까운 장치의 대기 시간 확인 + - `doublezero latency` 실행 + + 출력 + ``` + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.80ms | 1.90ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.83ms | 2.10ms | 1.92ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.87ms | 2.66ms | 2.15ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.33ms | 2.39ms | 2.37ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.29ms | 2.59ms | 2.40ms | true + ``` + 위에서 가장 가까운 장치는 `dz-ny7-sw01`입니다. + + 이 장치에 연결하고자 합니다. + +2. 이미 대상 장치에 연결되어 있는지 확인 + - `doublezero user list --env testnet | grep 111.11.11.11`을 실행하여 `111.11.11.11`을 DoubleZero에 연결된 장치의 공개 IPv4 주소로 교체하세요. + + 출력 + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | dz-ny7-sw01 | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + 이 예에서 우리는 이미 가장 가까운 장치에 연결되어 있습니다. 더 이상의 단계가 필요 없으며 여기서 멈출 수 있습니다. + +5. 가장 가까운 DoubleZero 장치에 연결 + + 연결을 끊고 DoubleZero에 다시 연결합니다. + + 먼저 실행: + - `doublezero disconnect` + + 이제 상태를 확인하여 연결 해제를 확인합니다: + - `doublezero status` + + 마지막으로 다시 연결: + - `doublezero connect ibrl` + + 출력 + ``` + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: dz-ny7-sw01 + Service provisioned with status: ok + ✅ User Provisioned + ``` + 위 출력에서 `Connected to device: dz-ny7-sw01`로 연결되었음을 확인하세요. + +### 문제: `doublezero status`가 일부 필드에서 N/A를 반환함 + +이 문제는 일반적으로 현재 데몬 및 클라이언트와 연결된 DZ 터널이 설정된 데몬 및 클라이언트 간의 불일치와 관련이 있습니다. + +**증상:** +- `doublezero status`를 실행할 때 일부 필드에서 `N/A`가 발생합니다 + +**해결 방법:** +1. 실행 +`doublezero status` + + 예: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 20:06:18 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | N/A | ✅ dz-ny7-sw01 | N/A | mainnet-beta + ``` + + 위 예제 출력에서 `Tunnel status`가 `up`임을 확인하세요. `Network`는 `mainnet-beta`입니다. 그러나 `Current Device`와 `Metro`가 `N/A`입니다. + + 이것은 현재 환경에 없는 열린 터널이 기계에 있음을 나타냅니다. + 이 경우 `mainnet-beta`에서 `Current Device`가 없는 `up` 상태는 터널이 testnet에 있음을 나타냅니다! + +2. 환경을 변경하세요. + + 불일치를 수정하려면 환경을 `N/A`를 반환하는 환경의 반대로 변경합니다. + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. 상태 확인 + + 환경 전환 후 실행: + + ``` + doublezero status + ``` + + 예상 출력은 다음과 유사해야 합니다: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-21 12:32:12 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | nyc-dz001 | ✅ nyc-dz001 | New York | testnet + ``` +모든 필드가 채워지면 올바른 환경에 있는 것입니다. diff --git a/docs/troubleshooting.pt.md b/docs/troubleshooting.pt.md new file mode 100644 index 0000000..608ef58 --- /dev/null +++ b/docs/troubleshooting.pt.md @@ -0,0 +1,218 @@ +# Solução de Problemas +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +Este guia cobrirá uma variedade de problemas, e está em andamento. Se você completar o guia, pode buscar suporte adicional no Discord [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701). + + +## Comandos Comuns e Saídas + +Para começar, examine a saída dos seguintes comandos e sua saída esperada. Eles irão auxiliá-lo em uma solução de problemas mais detalhada. +Se você abrir um ticket, pode ser solicitado que você forneça a saída deles. + +#### 1. Verificar Versão +Comando: + +`doublezero --version` + +Exemplo de Saída: +``` +DoubleZero 0.6.3 +``` + +#### 2. Verificar Endereço DoubleZero +Comando: + +`doublezero address` + +Exemplo de Saída: +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. Verificar seu Passe de Acesso + +Pubkey de exemplo: `MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` — substitua pela sua pubkey ao executar o comando. + +Comando: + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +Saída: +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. Verificar Créditos do Ledger DoubleZero +Comando: + +`doublezero balance` + +Exemplo de Saída: +``` +0.78 Credits +``` + +#### 5. Verificar Status da Conexão +Comando: + +`doublezero status` + +Exemplo de Saída: + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + + +#### 6. Verificar Latência +Comando: + +`doublezero latency` + +Exemplo de Saída: +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# Exemplos de Solução de Problemas +Agora que examinamos as saídas básicas e o que é esperado em uma implantação saudável, podemos examinar alguns exemplos comuns de solução de problemas. + +### Problema: ❌ Error creating user + +Este problema geralmente está relacionado a uma incompatibilidade entre o par pubkey/IP esperado e o par pubkey/IP que o usuário está tentando usar para acessar o DoubleZero. + +**Sintomas:** +- Ao conectar com `doublezero connect ibrl`, o usuário encontra `❌ Error creating user` + + +**Soluções:** +1. Verifique + + `doublezero address` + + Exemplo de Saída: + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. Verifique se este endereço está na lista de permitidos: + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + Exemplo de Saída: + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + A pubkey de `doublezero address` deve corresponder à pubkey do user_payer e o endereço IP do qual você está tentando se conectar deve corresponder ao IP no Passe de Acesso. + `doublezero address` é obtido do arquivo id.json em ~/.config/doublezero/ por padrão. Consulte o [passo 6 aqui](https://docs.malbeclabs.com/setup/) + +3. Se o acima parece correto e você está recebendo um erro ao conectar ou se o mapeamento acima estiver incorreto, entre em contato com o suporte em [DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) + +### Problema: ❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time +Este erro indica que um dispositivo já está conectado ao DoubleZero. + +**Sintomas:** +- O usuário tenta se conectar ao DoubleZero +- `❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time` é encontrado. + +**Soluções:** +1. Verifique + `doublezero status` + + Saída: + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. `up` indica uma conexão saudável. +3. O erro aparece porque um túnel para o DoubleZero com o IP DoubleZero específico já está ativo nesta máquina. + + Este erro é frequentemente encontrado após uma atualização do cliente DoubleZero. As atualizações do DoubleZero reiniciam automaticamente o serviço doublezerod e reconectarão você se você estivesse conectado antes da reinicialização do serviço. + + +### Problema: Status do DoubleZero está unknown ou down +Este problema está frequentemente relacionado ao túnel GRE sendo ativado com sucesso entre o servidor e o Dispositivo DoubleZero, mas um firewall impedindo o estabelecimento da sessão BGP. Por causa disso, você não está recebendo rotas da rede nem enviando tráfego pelo DoubleZero. + +**Sintomas:** +- `doublezero connect ibrl` foi bem-sucedido. No entanto, `doublezero status` retorna `down` ou `unknown` + +**Soluções:** +1. Verifique suas regras de firewall! + + O DoubleZero usa o espaço de endereços link local: 169.254.0.0/16 para as interfaces de túnel GRE entre sua máquina e o Dispositivo DoubleZero. 169.254.0.0/16 é tipicamente espaço "não roteável" e, portanto, as boas práticas de segurança recomendam bloquear as comunicações para/deste espaço. Você precisará permitir uma regra em seu firewall que habilite src 169.254.0.0/16 para se comunicar com dst 169.254.0.0/16 na porta tcp 179. Essa regra precisará ser colocada acima de quaisquer regras que Neguem tráfego para 169.254.0.0/16. + + Em um firewall como ufw você pode executar `sudo ufw status` para visualizar as regras do firewall. + + Execute `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179` para inserir a regra na posição . ou seja, se N = 1, então você inserirá esta regra como a primeira regra. + `sudo ufw status numbered` mostrará a ordenação numérica das regras. + +### Problema: O dispositivo DoubleZero mais próximo mudou + +Isso não é um erro, mas pode ser uma otimização. Abaixo está uma prática recomendada que pode ser executada de tempos em tempos, ou automatizada. + +**Soluções:** + +1. Verifique a latência para o dispositivo mais próximo + - Execute `doublezero latency` + +2. Determine se você já está conectado ao dispositivo alvo + - Execute `doublezero user list --env testnet | grep 111.11.11.11` substituindo `111.11.11.11` pelo endereço IPv4 público do seu dispositivo conectado ao DoubleZero. + +3. Opcional: examine a rede para dispositivos disponíveis + - Execute `doublezero device list` para uma lista completa de dispositivos. + +4. Determine se o dispositivo alvo tem uma conexão disponível + - Execute `doublezero device list | grep dz-ny7-sw01` substituindo `dz-ny7-sw01` pelo seu dispositivo alvo. + +5. Conecte-se ao Dispositivo DoubleZero mais próximo + + Desconecte e reconecte ao DoubleZero: + - `doublezero disconnect` + - `doublezero status` (confirme a desconexão) + - `doublezero connect ibrl` + +### Problema: `doublezero status` retorna alguns campos com N/A + +Este problema está geralmente relacionado a uma incompatibilidade entre o daemon e cliente atuais versus o daemon e cliente em que o túnel DZ conectado foi estabelecido. + +**Sintomas:** +- Ao executar `doublezero status`, o usuário encontra `N/A` em alguns campos + +**Soluções:** +1. Execute `doublezero status` e examine a saída. + + Se `Current Device` e `Metro` são `N/A`, mas o status do túnel está `up`, isso indica que seu túnel aberto está em um ambiente diferente do configurado atualmente. + +2. Mude seu ambiente para o oposto do ambiente que retorna `N/A`: + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. Verifique seu status após mudar os ambientes: + + ``` + doublezero status + ``` + + Com todos os campos preenchidos, você está agora no ambiente correto. diff --git a/docs/troubleshooting.zh.md b/docs/troubleshooting.zh.md new file mode 100644 index 0000000..263b843 --- /dev/null +++ b/docs/troubleshooting.zh.md @@ -0,0 +1,376 @@ +# 故障排除 +!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." + + +本指南将涵盖各种问题,并持续更新。如果您完成了本指南仍需进一步支持,可以在[DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701) Discord中寻求帮助。 + + +## 常用命令和输出 + +首先检查以下命令的输出及其预期输出。这将帮助您进行更详细的故障排除。 +如果您提交工单,可能会被要求提供这些输出。 + +#### 1. 检查版本 +命令: + +`doublezero --version` + +示例输出: +``` +DoubleZero 0.6.3 +``` + +#### 2. 检查DoubleZero地址 +命令: + +`doublezero address` + +示例输出: +``` +MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 +``` + +#### 3. 验证您的访问通行证 + +示例公钥:`MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` 运行命令时请替换为您的公钥。 + +命令: + +`doublezero access-pass list | grep MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2` + +输出:[注意我们使用`doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'`在此输出中显示标题] +``` +account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + +2XHCWm8Sef1GirhAhAJVA8WTXToPT6gFYP7fA9mWMShR | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn +``` + +#### 4. 检查DoubleZero账本余额 +命令: + +`doublezero balance` + +示例输出: +``` +0.78 Credits +``` + +#### 5. 检查连接状态 +命令: + +`doublezero status` + +示例输出: + +```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet +``` + + +#### 6. 检查延迟 +命令: + +`doublezero latency` + +示例输出: +``` + pubkey | code | ip | min | max | avg | reachable + 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001 | 64.86.249.22 | 2.49ms | 2.61ms | 2.56ms | true + Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001 | 195.219.120.66 | 71.94ms | 72.11ms | 72.02ms | true + CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001 | 207.45.216.134 | 72.42ms | 72.51ms | 72.45ms | true + 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001 | 195.219.138.50 | 76.50ms | 76.71ms | 76.60ms | true + 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001 | 195.219.220.58 | 83.00ms | 83.14ms | 83.08ms | true + hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y | fra-dz-001-x | 195.12.227.250 | 84.81ms | 84.89ms | 84.85ms | true + 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 104.81ms | 104.83ms | 104.82ms | true + 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001 | 180.87.154.78 | 178.04ms | 178.23ms | 178.13ms | true + D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001 | 180.87.102.98 | 227.67ms | 227.85ms | 227.75ms | true +``` + +# 故障排除示例 +现在我们已检查了基本输出及健康部署中的预期内容,可以检查一些常见的故障排除示例。 + +### 问题:❌ 创建用户时出错 + +此问题通常与预期的公钥/IP配对与用户尝试访问DoubleZero的公钥/IP配对不匹配有关。 + +**症状:** +- 使用`doublezero connect ibrl`连接时,用户遇到`❌ Error creating user` + + +**解决方案:** +1. 检查 + + `doublezero address` + + 示例输出: + ``` + MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 + ``` +2. 验证此地址已被列入白名单: + + `doublezero access-pass list | awk 'NR==1 || /MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2/'` + + 示例输出: + ``` + account | accesspass_type | ip | user_payer | last_access_epoch | remaining_epoch | connections | status | owner + + FHyoPs7U23MuSTtepEyXUtSAEffEpFpJGoYvug8X2sWY | prepaid | 141.14.14.14 | MTAwoHgKyTwwDGJo2dye6EWqyTn27JRwXxaDEaeMqe2 | MAX | MAX | 0 | requested | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + `doublezero address`的公钥必须与user_payer公钥匹配,且您尝试连接的IP地址必须与访问通行证中的ip匹配。 + `doublezero address`来源于默认情况下`~/.config/doublezero/`中的id.json文件。请参阅[此处的步骤6](https://docs.malbeclabs.com/setup/) + +3. 如果上述内容看起来正确但您在连接时遇到错误,或者如果上述映射不正确,请在[DoubleZero Tech](https://discord.com/channels/1341597747932958802/1344323790464880701)联系支持 + +### 问题:❌ 配置服务时出错:格式错误:无法同时配置多个隧道 +此错误表示设备已连接到DoubleZero。 + +**症状:** +- 用户尝试连接到DoubleZero +- 遇到`❌ Error provisioning service: malformed stuff: cannot provision multiple tunnels at the same time`。 + +**解决方案:** +1. 检查 + `doublezero status` + + 输出: + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` +2. `up`表示连接正常。 +3. 出现此错误是因为具有特定DoubleZero IP的到DoubleZero的隧道已在此机器上处于活跃状态。 + + 此错误通常在DoubleZero客户端升级后遇到。DoubleZero升级会自动重启doublezerod服务,如果您在服务重启之前已连接,将会重新连接您。 + + +### 问题:DoubleZero状态为unknown或down +此问题通常与服务器和DoubleZero设备之间的GRE隧道已成功激活,但防火墙阻止BGP会话建立有关。因此,您没有从网络接收路由或通过DoubleZero发送流量。 + +**症状:** +- `doublezero connect ibrl`成功。但是,`doublezero status`返回`down`或`unknown` + ``` + doublezero connect ibrl + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: nyc-dz001 + The user has been successfully activated + Service provisioned with status: ok + ✅ User Provisioned + ``` + + ```bash + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 12:12:55 UTC | doublezero0 | 11.11.11.111 | 12.34.56.789 | 11.11.11.111 | IBRL | ams-dz001 | ✅ ams-dz001 | Amsterdam | testnet + ``` + +**解决方案:** +1. 检查您的防火墙规则! + + DoubleZero使用链路本地地址空间:169.254.0.0/16用于您的机器和DoubleZero设备之间的GRE隧道接口。169.254.0.0/16通常是"不可路由"的地址空间,因此良好的安全实践会建议您阻止与此地址空间之间的通信。您需要在防火墙中允许一条规则,使src 169.254.0.0/16可以与dst 169.254.0.0/16在tcp端口179上通信。该规则需要放在任何拒绝169.254.0.0/16流量的规则之上。 + + 在ufw等防火墙中,您可以运行`sudo ufw status`查看防火墙规则,以及 + + 示例输出,可能类似于Solana验证器会有的内容: + ``` + To Action From + -- ------ ---- + 22/tcp ALLOW Anywhere + 8899/tcp ALLOW Anywhere + 8000:10000/tcp ALLOW Anywhere + 8000:10000/udp ALLOW Anywhere + 11200:11300/udp ALLOW Anywhere + 11200:11300/tcp ALLOW Anywhere + + To Action From + -- ------ ---- + 10.0.0.0/8 DENY OUT Anywhere + 169.254.0.0/16 DENY OUT Anywhere + 172.16.0.0/12 DENY OUT Anywhere + 192.168.0.0/16 DENY OUT Anywhere + ``` + + 在上面的输出中,您可以看到除了指定端口外,所有到169.254.0.0/16的流量都被拒绝。 + `sudo ufw insert allow proto tcp from 169.254.0.0/16 to 169.254.0.0/16 port 179`将规则插入到位置。即如果N=1,则将此规则插入为第一条规则。 + `sudo ufw status numbered`将显示规则的数字排序。 + +### 问题:最近的DoubleZero设备已更改 + +这不是一个错误,但可以是一种优化。以下是可以不时运行或自动化的最佳实践。 + +**解决方案:** + +1. 检查到最近设备的延迟 + - 运行`doublezero latency` + + 输出 + ``` + pubkey | code | ip | min | max | avg | reachable + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | 137.239.213.162 | 1.80ms | 1.90ms | 1.84ms | true + ETdwWpdQ7fXDHH5ea8feMmWxnZZvSKi4xDvuEGcpEvq3 | dz-ny5-sw01 | 137.239.213.170 | 1.83ms | 2.10ms | 1.92ms | true + 8gisbwJnNhMNEWz587cAJMtSSFuWeNFtiufPuBTVqF2Z | dz-ny7-sw02 | 142.215.184.122 | 1.87ms | 2.66ms | 2.15ms | true + 8J691gPwzy9FzUZQ4SmC6jJcY7By8kZXfbJwRfQ8ns31 | nyc002-dz002 | 38.122.35.137 | 2.33ms | 2.39ms | 2.37ms | true + FEML4XsDPN3WfmyFAXzE2xzyYqSB9kFCRrMik8JqN6kT | nyc001-dz001 | 38.104.167.29 | 2.29ms | 2.59ms | 2.40ms | true + ``` + 注意上面最近的设备是`dz-ny7-sw01` + + 我们想要连接到此设备。: + +2. 确定您是否已连接到目标设备 + - 运行`doublezero user list --env testnet | grep 111.11.11.11`,将`111.11.11.11`替换为您已连接到DoubleZero的设备的公共IPv4地址。您也可以使用您的验证器ID或DoubleZero ID。 + + 输出 + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | dz-ny7-sw01 | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + 在此示例中,我们已连接到最近的设备。无需更多步骤,我们可以在这里停止。 + + + 让我们考虑如果输出为 + ``` + account | user_type | groups | device | location | cyoa_type | client_ip | dz_ip | accesspass | tunnel_id | tunnel_net | status | owner + 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW | IBRL | | fra-dz-001-x | New York | GREOverDIA | 111.11.11.11 | 111.11.11.11 | Prepaid: (MAX) | 514 | 111.254.1.111/31 | activated | DZfHh2vjXFqt8zfNbT1afm8PGuCm3BrQKegC5THtKFdn + ``` + 这将是一个次优连接。让我们考虑是否需要重新连接。 + + 在连接之前,我们将检查设备是否有可用的用户隧道。 + +3. 可选:检查网络中的可用设备 + + 出于教育目的,我们将首先: + - 运行`doublezero device list`获取完整的设备列表。我们以2个设备为例来解释输出。 + + 输出: + ``` + account | code | contributor | location | exchange | device_type | public_ip | dz_prefixes | users | max_users | status | mgmt_vrf | owner + GphgLkA7JDVtkDQZCiDrwrDvaUs8r8XczEae1KkV6CGQ | ams001-dz002 | jump_ | EQX-AM4 | ams | switch | 149.11.64.57 | 38.246.201.64/27 | 69 | 128 | activated | | H647kAwTcWsGXZUK3BTr1JyTBZmbNcYyCmRFFCEnXUVp + 7FfrX8YbvbzM8A1ojNynP9BjiKpK9rrmhdEdchB2myhG | dz-fr5-sw01 | glxy | EQX-FR5 | fra | switch | 89.222.118.225 | 89.222.118.228/30 | 0 | 0 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + 注意上面`ams001-dz002`有69个用户,最多128个用户。此设备可以再增加59个用户。 + + 但是,`dz-fr5-sw01`有0个用户,0个最大用户。您将无法连接到此设备。最大用户为0,设备不接受任何连接。 + + 现在让我们回到连接到最近的设备。 + +4. 确定目标设备是否有可用连接 + - 运行`doublezero device list | grep dz-ny7-sw01`,将`dz-ny7-sw01`替换为您的目标设备 + + 输出 + ``` + 2hPMFJHh5BPX42ygBvuYYJfCv9q7g3rRR3ZRsUgtaqUi | dz-ny7-sw01 | glxy | EQX-NY7 | nyc | switch | 137.239.213.162 | 137.239.216.164/31 | 29 | 128 | activated | | 5YbNrJHJJoiRwVEvgAWRGdFRG9gRdZ47hLCKSym8bqbp + ``` + 这里我们可以看到`dz-ny7-sw01`有可用的连接空间。 + +5. 连接到最近的DoubleZero设备 + + 我们将断开连接,然后重新连接到doublezero。 + + 首先运行 + - `doublezero disconnect` + + 输出 + + ``` + DoubleZero Service Provisioning + 🔍 Decommissioning User + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + \ [00:00:00] [##########>-----------------------------] 1/4 deleting user account... 🔍 Deleting User Account for: 6QRU1ivJnKGHpom2BdzH9PiTRkJ5WhunPNLtfYcqVisW + 🔍 User Account deleted + ✅ Deprovisioning Complete + ``` + 现在我们用以下命令检查状态以确认断开连接 + - `doublezero status` + + 输出 + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type + disconnected | no session data | | | | | + ``` + 最后我们将重新连接 + - `doublezero connect ibrl` + + 输出 + ``` + DoubleZero Service Provisioning + 🔗 Start Provisioning User... + Public IP detected: 111.11.11.11 - If you want to use a different IP, you can specify it with `--client-ip x.x.x.x` + 🔍 Provisioning User for IP: 111.11.11.11 + User account created + Connected to device: dz-ny7-sw01 + Service provisioned with status: ok + ✅ User Provisioned + ``` + 注意上面的输出中我们`Connected to device: dz-ny7-sw01`,这是我们在步骤1初始调查中发现`dz-ny7-sw01`是延迟最低设备的期望结果。 + +### 问题:`doublezero status`返回某些字段为N/A + +此问题通常与当前守护程序和客户端与建立已连接DZ隧道时的守护程序和客户端不匹配有关。 + +**症状:** +- 运行`doublezero status`时,用户在某些字段中遇到`N/A` + + + + +**解决方案:** +1. 运行 +`doublezero status` + + 示例: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-20 20:06:18 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | N/A | ✅ dz-ny7-sw01 | N/A | mainnet-beta + ``` + + 注意在上面的示例输出中,`Tunnel status`为`up`。我们的`Network`是`mainnet-beta`。但是,`Current Device`和`Metro`是`N/A`。 + + 这表明您的机器上有一个开放隧道,它不在您当前的环境中。 + 在这种情况下,在`mainnet-beta`上找不到`Current Device`的`up`状态告诉我们我们的隧道在测试网上! + +2. 更改您的环境。 + + 为了纠正不匹配,您将把环境更改为返回`N/A`的相反环境。 + + ```bash + DESIRED_DOUBLEZERO_ENV=testnet \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + + 要配置DoubleZero客户端CLI(`doublezero`)和守护程序(`doublezerod`)连接到**DoubleZero主网Beta**: + + ```bash + DESIRED_DOUBLEZERO_ENV=mainnet-beta \ + && sudo mkdir -p /etc/systemd/system/doublezerod.service.d \ + && echo -e "[Service]\nExecStart=\nExecStart=/usr/bin/doublezerod -sock-file /run/doublezerod/doublezerod.sock -env $DESIRED_DOUBLEZERO_ENV" | sudo tee /etc/systemd/system/doublezerod.service.d/override.conf > /dev/null \ + && sudo systemctl daemon-reload \ + && sudo systemctl restart doublezerod \ + && doublezero config set --env $DESIRED_DOUBLEZERO_ENV > /dev/null \ + && echo "✅ doublezerod configured for environment $DESIRED_DOUBLEZERO_ENV" + ``` + +3. 检查您的状态 + + 切换环境后运行: + + ``` + doublezero status + ``` + + 预期输出应类似于: + + ``` + Tunnel status | Last Session Update | Tunnel Name | Tunnel src | Tunnel dst | Doublezero IP | User Type | Current Device | Lowest Latency Device | Metro | Network + up | 2025-10-21 12:32:12 UTC | doublezero0 | 149.28.38.64 | 64.86.249.22 | 149.28.38.64 | IBRL | nyc-dz001 | ✅ nyc-dz001 | New York | testnet + ``` +所有字段都已填充,您现在处于正确的环境中。 diff --git a/mkdocs.yml b/mkdocs.yml index 037f670..bdd0fc4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -13,6 +13,36 @@ theme: - navigation.indexes - toc.integrate - header.autohide +plugins: + - search + - i18n: + docs_structure: suffix + languages: + - locale: en + default: true + name: English + build: true + - locale: zh + name: 中文 + build: true + - locale: ja + name: 日本語 + build: true + - locale: ko + name: 한국어 + build: true + - locale: pt + name: Português + build: true + - locale: es + name: Español + build: true + - locale: fr + name: Français + build: true + - locale: it + name: Italiano + build: true nav: - Welcome: index.md - Quick Connect: quick-connect.md diff --git a/scripts/add-translation-disclaimer.py b/scripts/add-translation-disclaimer.py new file mode 100644 index 0000000..82070eb --- /dev/null +++ b/scripts/add-translation-disclaimer.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +"""Add AI translation disclaimer to every translated docs page. +Inserts the disclaimer after the first line (title) so it appears above any ToS warning. +""" +import re +from pathlib import Path + +DOCS_DIR = Path(__file__).resolve().parent.parent / "docs" +LOCALES = ("zh", "ja", "ko", "pt", "es", "fr", "it") +DISCLAIMER = '''!!! warning "This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon." +''' +EXISTING_MARKER = "This translation was generated using artificial intelligence" + + +def is_translated(path: Path) -> bool: + return path.suffix == ".md" and any(path.stem.endswith(f".{loc}") for loc in LOCALES) + + +def main(): + translated = sorted(DOCS_DIR.glob("*.*.md")) + translated = [p for p in translated if is_translated(p)] + for path in translated: + text = path.read_text(encoding="utf-8") + if EXISTING_MARKER in text: + continue + # Insert after first line (title or first line) + first_newline = text.find("\n") + if first_newline == -1: + insert_at = len(text) + before, after = text, "" + else: + insert_at = first_newline + 1 + before, after = text[:insert_at], text[insert_at:] + new_content = before + DISCLAIMER + "\n" + after + path.write_text(new_content, encoding="utf-8") + print(path.name) + + +if __name__ == "__main__": + main() diff --git a/scripts/translate.py b/scripts/translate.py new file mode 100644 index 0000000..406797b --- /dev/null +++ b/scripts/translate.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +"""Auto-translate MkDocs markdown files using Claude API.""" + +import os +import sys +import anthropic + +client = anthropic.Anthropic() + +LANGUAGES = { + "zh": "Chinese (Simplified)", + "ja": "Japanese", + "ko": "Korean", + "pt": "Portuguese", + "es": "Spanish", + "fr": "French", + "it": "Italian", +} + +SYSTEM_PROMPT = """\ +You are a technical documentation translator. + +Rules: +- Preserve ALL markdown formatting exactly: headings, bold, italic, lists, tables, admonitions, code fences +- Do NOT translate: code blocks, inline code, file paths, URLs, hostnames, IP addresses, CLI commands, + flags, env variable names, config keys, YAML/TOML keys, product names, brand names +- Translate all human-readable prose, headings, descriptions, and UI labels +- Keep the exact same document structure, blank lines, and whitespace patterns +- Output ONLY the translated document — no preamble, no explanation""" + + +def translate(content: str, lang_name: str) -> str: + message = client.messages.create( + model="claude-opus-4-6", + max_tokens=8192, + system=SYSTEM_PROMPT, + messages=[ + { + "role": "user", + "content": f"Translate the following documentation to {lang_name}:\n\n{content}", + } + ], + ) + return message.content[0].text + + +def main(): + changed_files = os.environ.get("CHANGED_FILES", "").strip().splitlines() + target_langs = [ + lang.strip() + for lang in os.environ.get("LANGUAGES", "zh,ja,ko,pt,es,fr,it").split(",") + if lang.strip() + ] + + source_files = [f.strip() for f in changed_files if f.strip() and f.endswith(".md")] + + if not source_files: + print("No changed source files.") + return + + for filepath in source_files: + print(f"\n{filepath}") + + try: + with open(filepath, "r", encoding="utf-8") as f: + content = f.read() + except FileNotFoundError: + print(" skipped (deleted)") + continue + + base = filepath[:-3] # strip .md + + for lang in target_langs: + if lang not in LANGUAGES: + print(f" {lang}: unknown locale, skipping") + continue + + output_path = f"{base}.{lang}.md" + print(f" → {output_path} ... ", end="", flush=True) + + try: + translated = translate(content, LANGUAGES[lang]) + with open(output_path, "w", encoding="utf-8") as f: + f.write(translated) + print("✓") + except Exception as e: + print(f"✗ {e}") + sys.exit(1) + + +if __name__ == "__main__": + main()