diff --git a/docs/Validator Multicast Connection.es.md b/docs/Validator Multicast Connection.es.md index 2ecd37a..f7b3a0c 100644 --- a/docs/Validator Multicast Connection.es.md +++ b/docs/Validator Multicast Connection.es.md @@ -3,17 +3,22 @@ !!! 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). +!!! note inline end "Empresas de trading y negocios" + Si opera una empresa de trading o un negocio que desea suscribirse al feed, se compartirán más detalles próximamente. Registre su interés para obtener más información [aquí](https://doublezero.xyz/edge-form). -Si ya es un validador conectado a DoubleZero puede continuar con esta guía. +Si aún no está conectado a DoubleZero, complete la documentación de [Configuración](https://docs.malbeclabs.com/setup/) y de conexión de validador [Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/). -#### Jito-Agave (versión 3.1.9 o superior) +Si es un validador ya conectado a DoubleZero, puede continuar con esta guía. -1. En el script de inicio de su validador, añada: `--shred-receiver-address 233.84.178.1:7733` +## 1. Configuración del Cliente - Puede enviar a Jito y al grupo `bebop` al mismo tiempo. +### Jito-Agave (v3.1.9+) y Harmonic (3.1.11+) - ejemplo: +1. En su script de inicio del validador, agregue: `--shred-receiver-address 233.84.178.1:7733` + + Puede enviar a Jito y al grupo `edge-solana-shreds` al mismo tiempo. + + Ejemplo: ```json #!/bin/bash @@ -21,57 +26,66 @@ Si ya es un validador conectado a DoubleZero puede continuar con esta guía. 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...> + <...The rest of your config...> --shred-receiver-address 233.84.178.1:7733 ``` 2. Reinicie su validador. +3. Conéctese al grupo de multicast de DoubleZero `edge-solana-shreds` como publicador: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` -3. Conéctese al grupo multicast `bebop` de DoubleZero como publicador: - `doublezero connect multicast --publish bebop` - +### Frankendancer +1. En `config.toml`, agregue: -#### Frankendancer + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` -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 de multicast de DoubleZero `edge-solana-shreds` como publicador: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. Confirmar que está publicando shreds de líder + +Una vez conectado, puede verificar [este panel](https://data.malbeclabs.com/dz/publisher-check) para confirmar que está publicando shreds. No verá la confirmación hasta que haya publicado shreds de líder para al menos un slot. + +## 3. Recompensas para Validadores + +Por cada época en que los validadores publiquen shreds de líder, serán recompensados proporcionalmente por su contribución según las suscripciones. Los detalles de este sistema serán anunciados y detallados en una fecha posterior. + +## Solución de Problemas + +### No se publican shreds de líder: + +La causa más común de no transmitir shreds es la versión del cliente: + +Debe estar ejecutando Jito-Agave 3.1.9+, JitoBam 3.1.9+, Frankendancer o Harmonic 3.1.11+. Otras versiones de cliente no funcionarán. + +### Retransmisión: + +1. Una causa común de retransmisión de shreds es una configuración simple. Es posible que tenga habilitado el flag para enviar shreds de retransmisión en su script de inicio; deberá deshabilitarlo. + + El flag que debe eliminar en Jito-Agave es: `--shred-retransmit-receiver-address`. + +1. Revise el [panel de publicadores](https://data.malbeclabs.com/dz/publisher-check) y compruebe si tiene shreds retransmitidos. En la tabla, observe la columna **No Retransmit Shreds**—una X roja significa que está retransmitiendo. + + !!! note "Vista de época" + Tenga en cuenta que hay diferentes ventanas de tiempo para ver el panel de publicadores. Si ve retransmisión en la **vista de 2 épocas**, pero realizó un cambio reciente, intente cambiar a la vista de **slot reciente**. -3. Conéctese al grupo multicast `bebop` de DoubleZero como publicador: - `doublezero connect multicast --publish bebop` + ![Panel de verificación de publicadores](images/publisher-check-dashboard.png) +2. Encuentre la IP de su cliente y busque su usuario en [DoubleZero Data](https://data.malbeclabs.com/dz/users). + ![Usuarios de DoubleZero Data](images/doublezero-data-users.png) -!!! 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. +3. Haga clic en **Multicast** para abrir su vista de multicast. -#### Confirme que está publicando + La captura de pantalla a continuación muestra: **Retransmitiendo** (indeseable) tráfico saliente constante sin patrón de slot de líder. -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. + ![Vista multicast del usuario — ejemplo de retransmisión](images/user-multicast-view-retransmit.png) -Ejecute: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + La captura de pantalla a continuación muestra: **Saludable** (publicando solo shreds de líder) tráfico saliente en picos, conocido como patrón de diente de sierra, que se alinea con sus slots de líder. -Ejemplo de salida cuando se está publicando: + ![Vista multicast del usuario — ejemplo de publicador saludable](images/user-multicast-view-healthy.png) -``` -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 -``` +El gráfico muestra si está enviando solo shreds de líder. Los picos de tráfico deben alinearse con cuando tiene un slot de líder. Cuando no tiene un slot de líder, no debe haber tráfico. Si está retransmitiendo, verá un flujo constante de tráfico en lugar de picos alineados con slots. diff --git a/docs/Validator Multicast Connection.fr.md b/docs/Validator Multicast Connection.fr.md index 1ebb751..4c2e07a 100644 --- a/docs/Validator Multicast Connection.fr.md +++ b/docs/Validator Multicast Connection.fr.md @@ -3,17 +3,22 @@ !!! 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). +!!! note inline end "Sociétés de trading et entreprises" + Si vous exploitez une société de trading ou une entreprise souhaitant s'abonner au flux, plus de détails seront partagés prochainement. Enregistrez votre intérêt pour obtenir plus d'informations [ici](https://doublezero.xyz/edge-form). + +Si vous n'êtes pas encore connecté à DoubleZero, veuillez d'abord compléter la documentation de [Configuration](https://docs.malbeclabs.com/setup/) et de connexion validateur [Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/). Si vous êtes un validateur déjà connecté à DoubleZero, vous pouvez continuer ce guide. -#### Jito-Agave (version 3.1.9 ou supérieure) +## 1. Configuration du Client + +### Jito-Agave (v3.1.9+) et Harmonic (3.1.11+) 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. + Vous pouvez envoyer à Jito et au groupe `edge-solana-shreds` en même temps. - exemple : + Exemple : ```json #!/bin/bash @@ -26,52 +31,61 @@ Si vous êtes un validateur déjà connecté à DoubleZero, vous pouvez continue ``` 2. Redémarrez votre validateur. +3. Connectez-vous au groupe multicast DoubleZero `edge-solana-shreds` en tant que publicateur : `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` -3. Connectez-vous au groupe multicast DoubleZero `bebop` en tant qu'éditeur : - `doublezero connect multicast --publish bebop` - +### Frankendancer +1. Dans `config.toml`, ajoutez : -#### Frankendancer + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` -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 `edge-solana-shreds` en tant que publicateur : `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. Confirmer que vous publiez des shreds de leader + +Une fois connecté, vous pouvez vérifier [ce tableau de bord](https://data.malbeclabs.com/dz/publisher-check) pour confirmer que vous publiez des shreds. Vous ne verrez pas de confirmation tant que vous n'aurez pas publié des shreds de leader pour au moins un slot. + +## 3. Récompenses des Validateurs + +Pour chaque époque où les validateurs publient des shreds de leader, ils seront récompensés proportionnellement pour leur contribution en fonction des abonnements. Les détails de ce système seront annoncés et détaillés ultérieurement. + +## Dépannage + +### Pas de publication de shreds de leader : + +La cause la plus fréquente de non-transmission des shreds est la version du client : + +Vous devez utiliser Jito-Agave 3.1.9+, JitoBam 3.1.9+, Frankendancer ou Harmonic 3.1.11+. Les autres versions de client ne fonctionneront pas. + +### Retransmission : + +1. Une cause courante de retransmission de shreds est une configuration simple. Vous avez peut-être activé le flag d'envoi de shreds de retransmission dans votre script de démarrage ; vous devrez le désactiver. + + Le flag à supprimer dans Jito-Agave est : `--shred-retransmit-receiver-address`. + +1. Vérifiez le [tableau de bord des publicateurs](https://data.malbeclabs.com/dz/publisher-check) et voyez si vous avez des shreds retransmis. Dans le tableau, regardez la colonne **No Retransmit Shreds**—une croix rouge signifie que vous retransmettez. + + !!! note "Vue par époque" + Notez qu'il existe différentes fenêtres temporelles pour afficher le tableau de bord des publicateurs. Si vous voyez une retransmission dans la **vue 2 époques**, mais que vous avez effectué un changement récent, essayez de passer à la vue **slot récent**. -3. Connectez-vous au groupe multicast DoubleZero `bebop` en tant qu'éditeur : - `doublezero connect multicast --publish bebop` + ![Tableau de bord de vérification des publicateurs](images/publisher-check-dashboard.png) +2. Trouvez l'IP de votre client et cherchez votre utilisateur dans [DoubleZero Data](https://data.malbeclabs.com/dz/users). + ![Utilisateurs DoubleZero Data](images/doublezero-data-users.png) -!!! 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. +3. Cliquez sur **Multicast** pour ouvrir votre vue multicast. -#### Confirmer que vous publiez + La capture d'écran ci-dessous montre : **Retransmission** (indésirable) un trafic sortant constant sans motif de slot de leader. -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. + ![Vue multicast utilisateur — exemple de retransmission](images/user-multicast-view-retransmit.png) -Exécutez : `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + La capture d'écran ci-dessous montre : **Sain** (publication uniquement de shreds de leader) un trafic sortant en pics, connu sous le nom de motif en dents de scie, qui s'aligne sur vos slots de leader. -Exemple de sortie lors de la publication : + ![Vue multicast utilisateur — exemple de publicateur sain](images/user-multicast-view-healthy.png) -``` -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 -``` +Le graphique indique si vous envoyez uniquement des shreds de leader. Les pics de trafic doivent s'aligner avec vos slots de leader. Lorsque vous n'avez pas de slot de leader, il ne doit y avoir aucun trafic. Si vous retransmettez, vous verrez un flux de trafic constant au lieu de pics alignés sur les slots. diff --git a/docs/Validator Multicast Connection.it.md b/docs/Validator Multicast Connection.it.md index 8ea95de..2ad0516 100644 --- a/docs/Validator Multicast Connection.it.md +++ b/docs/Validator Multicast Connection.it.md @@ -1,19 +1,24 @@ # 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)" +!!! warning "Connettendomi a DoubleZero accetto i [Termini di Servizio di 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. +!!! note inline end "Società di trading e aziende" + Se gestisci una società di trading o un'azienda che desidera iscriversi al feed, ulteriori dettagli saranno condivisi a breve. Registra il tuo interesse per ricevere più informazioni [qui](https://doublezero.xyz/edge-form). -Se sei un validatore già connesso a DoubleZero, puoi continuare con questa guida. +Se non sei ancora connesso a DoubleZero, completa prima la documentazione di [Configurazione](https://docs.malbeclabs.com/setup/) e di connessione validatore [Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/). -#### Jito-Agave (versione 3.1.9 o superiore) +Se sei un validatore già connesso a DoubleZero, puoi continuare questa guida. + +## 1. Configurazione del Client + +### Jito-Agave (v3.1.9+) e Harmonic (3.1.11+) 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. + Puoi inviare a Jito e al gruppo `edge-solana-shreds` contemporaneamente. - esempio: + Esempio: ```json #!/bin/bash @@ -21,57 +26,66 @@ Se sei un validatore già connesso a DoubleZero, puoi continuare con questa guid 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...> + <...The rest of your config...> --shred-receiver-address 233.84.178.1:7733 ``` 2. Riavvia il tuo validatore. +3. Connettiti al gruppo multicast DoubleZero `edge-solana-shreds` come publisher: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` -3. Connettiti al gruppo multicast DoubleZero `bebop` come publisher: - `doublezero connect multicast --publish bebop` - +### Frankendancer +1. In `config.toml`, aggiungi: -#### Frankendancer + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` -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 `edge-solana-shreds` come publisher: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. Confermare la pubblicazione degli shred leader + +Una volta connesso, puoi verificare [questa dashboard](https://data.malbeclabs.com/dz/publisher-check) per confermare che stai pubblicando shred. Non vedrai la conferma finché non avrai pubblicato shred leader per almeno uno slot. + +## 3. Ricompense per i Validatori + +Per ogni epoca in cui i validatori pubblicano shred leader, verranno ricompensati proporzionalmente per il loro contributo in base alle sottoscrizioni. I dettagli di questo sistema saranno annunciati e approfonditi in una data successiva. + +## Risoluzione dei Problemi + +### Mancata pubblicazione degli shred leader: + +La causa più comune della mancata trasmissione degli shred è la versione del client: + +Devi eseguire Jito-Agave 3.1.9+, JitoBam 3.1.9+, Frankendancer o Harmonic 3.1.11+. Le altre versioni del client non funzioneranno. + +### Ritrasmissione: + +1. Una causa comune di ritrasmissione degli shred è una semplice configurazione. Potresti avere il flag abilitato per inviare shred di ritrasmissione nel tuo script di avvio; dovrai disabilitarlo. + + Il flag da rimuovere in Jito-Agave è: `--shred-retransmit-receiver-address`. + +1. Controlla la [dashboard dei publisher](https://data.malbeclabs.com/dz/publisher-check) e verifica se hai shred ritrasmessi. Nella tabella, guarda la colonna **No Retransmit Shreds**—una X rossa significa che stai ritrasmettendo. + + !!! note "Vista per epoca" + Tieni presente che ci sono diverse finestre temporali per visualizzare la dashboard dei publisher. Se vedi la ritrasmissione nella **vista 2 epoche**, ma hai apportato una modifica recente, prova a passare alla vista **slot recente**. -3. Connettiti al gruppo multicast DoubleZero `bebop` come publisher: - `doublezero connect multicast --publish bebop` + ![Dashboard di verifica publisher](images/publisher-check-dashboard.png) +2. Trova l'IP del tuo client e cerca il tuo utente in [DoubleZero Data](https://data.malbeclabs.com/dz/users). + ![Utenti DoubleZero Data](images/doublezero-data-users.png) -!!! 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. +3. Clicca su **Multicast** per aprire la tua vista multicast. -#### Conferma che stai pubblicando + Lo screenshot seguente mostra: **Ritrasmissione** (indesiderata) traffico in uscita costante senza pattern di slot leader. -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. + ![Vista multicast utente — esempio di ritrasmissione](images/user-multicast-view-retransmit.png) -Esegui: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + Lo screenshot seguente mostra: **Sano** (pubblicazione solo di shred leader) traffico in uscita a picchi, noto come pattern a dente di sega, che si allinea con i tuoi slot leader. -Esempio di output quando si pubblica: + ![Vista multicast utente — esempio di publisher sano](images/user-multicast-view-healthy.png) -``` -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 -``` +Il grafico mostra se stai inviando solo shred leader. I picchi di traffico dovrebbero allinearsi con quando hai uno slot leader. Quando non hai uno slot leader non ci dovrebbe essere traffico. Se stai ritrasmettendo, vedrai un flusso costante di traffico invece di picchi allineati agli slot. diff --git a/docs/Validator Multicast Connection.ja.md b/docs/Validator Multicast Connection.ja.md index f5dc9bd..a347a3b 100644 --- a/docs/Validator Multicast Connection.ja.md +++ b/docs/Validator Multicast Connection.ja.md @@ -1,17 +1,22 @@ # バリデーターマルチキャスト接続 !!! 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)に同意します" +!!! warning "DoubleZeroに接続することで、[DoubleZero利用規約](https://doublezero.xyz/terms-protocol)に同意します" -まだDoubleZeroに接続していない場合は、[セットアップ](setup.md)と[メインネットベータ](DZ%20Mainnet-beta%20Connection.md)バリデーター接続ドキュメントを完了してください。 +!!! note inline end "トレーディングファームおよびビジネス" + トレーディングファームやフィードへの購読を検討している企業の方は、詳細は近日中に共有される予定です。詳細については[こちら](https://doublezero.xyz/edge-form)からご登録ください。 -既にDoubleZeroに接続しているバリデーターは、このガイドを続けることができます。 +DoubleZeroにまだ接続していない場合は、[セットアップ](https://docs.malbeclabs.com/setup/)と[Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/)バリデーター接続ドキュメントを完了してください。 -#### Jito-Agave(バージョン3.1.9以上) +DoubleZeroにすでに接続しているバリデーターの方は、このガイドを続けてください。 + +## 1. クライアント設定 + +### Jito-Agave(v3.1.9+)および Harmonic(3.1.11+) 1. バリデーターの起動スクリプトに以下を追加します:`--shred-receiver-address 233.84.178.1:7733` - JitoとBebopグループに同時に送信できます。 + JitoとDoubleZeroの`edge-solana-shreds`グループに同時に送信できます。 例: @@ -21,57 +26,66 @@ 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マルチキャストグループ`edge-solana-shreds`に接続します:`doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` -3. パブリッシャーとしてDoubleZeroマルチキャストグループ`bebop`に接続します: - `doublezero connect multicast --publish bebop` - +### Frankendancer +1. `config.toml`に以下を追加します: -#### Frankendancer + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` -1. `config.toml`に以下を追加します: - ```toml - [tiles.shred] - additional_shred_destinations_leader = [ "233.84.178.1:7733", ] - ``` 2. バリデーターを再起動します。 +3. パブリッシャーとしてDoubleZeroマルチキャストグループ`edge-solana-shreds`に接続します:`doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. リーダーシュレッドの発行確認 + +接続後、[このダッシュボード](https://data.malbeclabs.com/dz/publisher-check)でシュレッドを発行していることを確認できます。少なくとも1スロット分のリーダーシュレッドを発行した後でないと確認は表示されません。 + +## 3. バリデーター報酬 + +バリデーターがリーダーシュレッドを発行した各エポックにおいて、サブスクリプションに基づいた貢献度に応じて比例的に報酬が付与されます。このシステムの詳細は後日発表・詳述される予定です。 + +## トラブルシューティング + +### リーダーシュレッドが発行されない場合: + +シュレッドが送信されない最も一般的な原因はクライアントのバージョンです: + +Jito-Agave 3.1.9+、JitoBam 3.1.9+、Frankendancer、またはHarmonic 3.1.11+を実行している必要があります。他のクライアントバージョンは動作しません。 + +### 再送信している場合: + +1. シュレッドの再送信の一般的な原因は設定の問題です。起動スクリプトで再送信シュレッドを送信するフラグが有効になっている場合は、無効にする必要があります。 + + Jito-Agaveで削除するフラグは:`--shred-retransmit-receiver-address`です。 + +1. [パブリッシャーダッシュボード](https://data.malbeclabs.com/dz/publisher-check)を確認し、再送信シュレッドがあるかどうかを確認します。表の**No Retransmit Shreds**列を確認してください——赤いXは再送信していることを意味します。 + + !!! note "エポックビュー" + パブリッシャーダッシュボードには異なる時間ウィンドウがあります。**2エポックビュー**で再送信が見られるが最近変更を加えた場合は、**最近のスロット**ビューに切り替えてみてください。 -3. パブリッシャーとしてDoubleZeroマルチキャストグループ`bebop`に接続します: - `doublezero connect multicast --publish bebop` + ![パブリッシャーチェックダッシュボード](images/publisher-check-dashboard.png) +2. クライアントIPを見つけ、[DoubleZeroデータ](https://data.malbeclabs.com/dz/users)でユーザーを検索します。 + ![DoubleZeroデータユーザー](images/doublezero-data-users.png) -!!! note inline end - XDPドライバーモードのFrankendancerユーザーはtcpdumpを使用できません。現在、公開中を確認する方法はありませんが、近いうちにソリューションが提供される予定です。 +3. **マルチキャスト**をクリックしてマルチキャストビューを開きます。 -#### 公開中の確認 + 以下のスクリーンショットは:**再送信**(望ましくない)リーダースロットパターンのない安定した送信トラフィックを示しています。 -次のリーダースロット中に`tcpdump`を使用してマルチキャストグループに公開していることを確認します。シュレッドを公開していることを確認するために10秒ごとにハートビートが表示されるはずです。 + ![ユーザーマルチキャストビュー — 再送信の例](images/user-multicast-view-retransmit.png) -実行:`sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + 以下のスクリーンショットは:**正常**(リーダーシュレッドのみを発行)スパイク状の送信トラフィック(鋸歯状波パターン)を示しており、リーダースロットと一致しています。 -公開中の出力例: + ![ユーザーマルチキャストビュー — 正常なパブリッシャーの例](images/user-multicast-view-healthy.png) -``` -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 index f0e6657..40801e2 100644 --- a/docs/Validator Multicast Connection.ko.md +++ b/docs/Validator Multicast Connection.ko.md @@ -1,19 +1,24 @@ # 검증자 멀티캐스트 연결 !!! 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)에 동의합니다" +!!! warning "DoubleZero에 연결함으로써 [DoubleZero 이용약관](https://doublezero.xyz/terms-protocol)에 동의합니다" -아직 DoubleZero에 연결되지 않았다면 [설정](setup.md) 및 [Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) 검증자 연결 문서를 완료하세요. +!!! note inline end "거래 회사 및 기업" + 피드를 구독하려는 거래 회사나 기업을 운영하시는 경우, 자세한 내용은 곧 공유될 예정입니다. 더 많은 정보를 얻으려면 [여기](https://doublezero.xyz/edge-form)에서 관심을 등록하세요. + +DoubleZero에 아직 연결되지 않은 경우 [설정](https://docs.malbeclabs.com/setup/) 및 [Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/) 검증자 연결 문서를 먼저 완료하세요. 이미 DoubleZero에 연결된 검증자라면 이 가이드를 계속 진행할 수 있습니다. -#### Jito-Agave (버전 3.1.9 이상) +## 1. 클라이언트 구성 + +### Jito-Agave (v3.1.9+) 및 Harmonic (3.1.11+) -1. 검증자 시작 스크립트에 다음을 추가하세요: `--shred-receiver-address 233.84.178.1:7733` +1. 검증자 시작 스크립트에 다음을 추가합니다:`--shred-receiver-address 233.84.178.1:7733` - Jito와 `bebop` 그룹에 동시에 보낼 수 있습니다. + Jito와 `edge-solana-shreds` 그룹에 동시에 전송할 수 있습니다. - 예시: + 예시: ```json #!/bin/bash @@ -21,57 +26,66 @@ 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. 검증자를 재시작하세요. +2. 검증자를 재시작합니다. +3. 게시자로서 DoubleZero 멀티캐스트 그룹 `edge-solana-shreds`에 연결합니다:`doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +### Frankendancer + +1. `config.toml`에 다음을 추가합니다: + + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` + +2. 검증자를 재시작합니다. +3. 게시자로서 DoubleZero 멀티캐스트 그룹 `edge-solana-shreds`에 연결합니다:`doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. 리더 슈레드 게시 확인 + +연결 후 [이 대시보드](https://data.malbeclabs.com/dz/publisher-check)에서 슈레드를 게시하고 있는지 확인할 수 있습니다. 최소 한 슬롯의 리더 슈레드를 게시한 후에야 확인이 표시됩니다. + +## 3. 검증자 보상 + +검증자가 리더 슈레드를 게시하는 각 에포크에 대해, 구독에 따라 기여도에 비례하여 보상이 지급됩니다. 이 시스템의 세부 사항은 추후 발표 및 상세히 설명될 예정입니다. + +## 문제 해결 + +### 리더 슈레드가 게시되지 않는 경우: + +슈레드가 전송되지 않는 가장 일반적인 원인은 클라이언트 버전입니다: + +Jito-Agave 3.1.9+, JitoBam 3.1.9+, Frankendancer 또는 Harmonic 3.1.11+를 실행해야 합니다. 다른 클라이언트 버전은 작동하지 않습니다. -3. DoubleZero 멀티캐스트 그룹 `bebop`에 발행자로 연결하세요: - `doublezero connect multicast --publish bebop` +### 재전송 중인 경우: +1. 슈레드 재전송의 일반적인 원인은 간단한 구성 문제입니다. 시작 스크립트에서 재전송 슈레드를 보내는 플래그가 활성화되어 있을 수 있습니다. 비활성화해야 합니다. + Jito-Agave에서 제거해야 할 플래그는:`--shred-retransmit-receiver-address`입니다. -#### Frankendancer +1. [게시자 대시보드](https://data.malbeclabs.com/dz/publisher-check)를 확인하여 재전송된 슈레드가 있는지 확인하세요. 테이블에서 **No Retransmit Shreds** 열을 확인하세요——빨간 X는 재전송 중임을 의미합니다. -1. `config.toml`에 다음을 추가하세요: - ```toml - [tiles.shred] - additional_shred_destinations_leader = [ "233.84.178.1:7733", ] - ``` -2. 검증자를 재시작하세요. + !!! note "에포크 뷰" + 게시자 대시보드에는 다른 시간 창이 있습니다. **2 에포크 뷰**에서 재전송이 보이지만 최근에 변경했다면 **최근 슬롯** 뷰로 전환해 보세요. -3. DoubleZero 멀티캐스트 그룹 `bebop`에 발행자로 연결하세요: - `doublezero connect multicast --publish bebop` + ![게시자 확인 대시보드](images/publisher-check-dashboard.png) +2. 클라이언트 IP를 찾아 [DoubleZero 데이터](https://data.malbeclabs.com/dz/users)에서 사용자를 조회합니다. + ![DoubleZero 데이터 사용자](images/doublezero-data-users.png) -!!! note inline end - XDP 드라이버 모드의 Frankendancer 사용자는 tcpdump를 사용할 수 없습니다. 현재 발행 중인지 확인할 방법이 없지만 곧 해결책이 제공될 예정입니다. +3. **멀티캐스트**를 클릭하여 멀티캐스트 뷰를 엽니다. -#### 발행 중인지 확인 + 아래 스크린샷은:**재전송** (바람직하지 않음) 리더 슬롯 패턴 없는 안정적인 아웃바운드 트래픽을 보여줍니다. -다음 리더 슬롯에서 `tcpdump`를 사용하여 멀티캐스트 그룹에 발행 중인지 확인하세요. 발행 중인지 확인하기 위해 10초마다 하트비트가 표시되어야 합니다. + ![사용자 멀티캐스트 뷰 — 재전송 예시](images/user-multicast-view-retransmit.png) -실행: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + 아래 스크린샷은:**정상** (리더 슈레드만 게시) 스파이크 형태의 아웃바운드 트래픽(톱니파 패턴)을 보여주며, 리더 슬롯과 일치합니다. -발행 중일 때의 예시 출력: + ![사용자 멀티캐스트 뷰 — 정상 게시자 예시](images/user-multicast-view-healthy.png) -``` -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.md b/docs/Validator Multicast Connection.md index 2e59aa9..e9c4b6d 100644 --- a/docs/Validator Multicast Connection.md +++ b/docs/Validator Multicast Connection.md @@ -14,7 +14,7 @@ If you are a validator who is already connected to DoubleZero you may continue t 1. In your validator start script, add: `--shred-receiver-address 233.84.178.1:7733` - You are able to send to Jito and the `bebop` group at the same time. + You are able to send to Jito and the `edge-solana-shreds` group at the same time. example: @@ -29,7 +29,7 @@ If you are a validator who is already connected to DoubleZero you may continue t ``` 2. Restart your validator. -3. Connect to the DoubleZero multicast group `bebop` as a publisher: `doublezero connect ibrl && doublezero connect multicast --publish bebop` +3. Connect to the DoubleZero multicast group `edge-solana-shreds` as a publisher: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` ### Frankendancer @@ -41,7 +41,7 @@ If you are a validator who is already connected to DoubleZero you may continue t ``` 2. Restart your validator. -3. Connect to the DoubleZero multicast group `bebop` as a publisher: `doublezero connect ibrl && doublezero connect multicast --publish bebop` +3. Connect to the DoubleZero multicast group `edge-solana-shreds` as a publisher: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` ## 2. Confirm you're publishing leader shreds diff --git a/docs/Validator Multicast Connection.pt.md b/docs/Validator Multicast Connection.pt.md index adc451a..e00293f 100644 --- a/docs/Validator Multicast Connection.pt.md +++ b/docs/Validator Multicast Connection.pt.md @@ -1,19 +1,24 @@ # 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)" +!!! warning "Ao me 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). +!!! note inline end "Empresas de trading e negócios" + Se você opera uma empresa de trading ou negócio que deseja se inscrever no feed, mais detalhes serão compartilhados em breve. Registre seu interesse para obter mais informações [aqui](https://doublezero.xyz/edge-form). -Se você é um validador já conectado ao DoubleZero, pode continuar com este guia. +Se você ainda não está conectado ao DoubleZero, complete a documentação de [Configuração](https://docs.malbeclabs.com/setup/) e de conexão de validador [Mainnet-Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/). -#### Jito-Agave (versão 3.1.9 ou superior) +Se você é um validador já conectado ao DoubleZero, pode continuar este guia. -1. No script de inicialização do seu validador, adicione: `--shred-receiver-address 233.84.178.1:7733` +## 1. Configuração do Cliente - Você pode enviar para o Jito e para o grupo `bebop` ao mesmo tempo. +### Jito-Agave (v3.1.9+) e Harmonic (3.1.11+) - exemplo: +1. No seu script de inicialização do validador, adicione: `--shred-receiver-address 233.84.178.1:7733` + + Você pode enviar para o Jito e para o grupo `edge-solana-shreds` ao mesmo tempo. + + Exemplo: ```json #!/bin/bash @@ -21,57 +26,66 @@ Se você é um validador já conectado ao DoubleZero, pode continuar com este gu 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...> + <...The rest of your config...> --shred-receiver-address 233.84.178.1:7733 ``` 2. Reinicie seu validador. +3. Conecte-se ao grupo multicast do DoubleZero `edge-solana-shreds` como publicador: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` -3. Conecte-se ao grupo multicast DoubleZero `bebop` como publicador: - `doublezero connect multicast --publish bebop` - +### Frankendancer +1. Em `config.toml`, adicione: -#### Frankendancer + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` -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 do DoubleZero `edge-solana-shreds` como publicador: `doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. Confirmar que está publicando shreds de líder + +Após a conexão, você pode verificar [este painel](https://data.malbeclabs.com/dz/publisher-check) para confirmar que está publicando shreds. Você não verá a confirmação até ter publicado shreds de líder para pelo menos um slot. + +## 3. Recompensas para Validadores + +Para cada época em que os validadores publicam shreds de líder, eles serão recompensados proporcionalmente pela sua contribuição com base nas assinaturas. Os detalhes deste sistema serão anunciados e detalhados em uma data posterior. + +## Solução de Problemas + +### Não está publicando shreds de líder: + +A causa mais comum de não transmitir shreds é a versão do cliente: + +Você deve estar executando Jito-Agave 3.1.9+, JitoBam 3.1.9+, Frankendancer ou Harmonic 3.1.11+. Outras versões de cliente não funcionarão. + +### Retransmissão: + +1. Uma causa comum de retransmissão de shreds é uma configuração simples. Você pode ter o flag habilitado para enviar shreds de retransmissão no seu script de inicialização; você precisará desabilitá-lo. + + O flag a remover no Jito-Agave é: `--shred-retransmit-receiver-address`. + +1. Verifique o [painel de publicadores](https://data.malbeclabs.com/dz/publisher-check) e veja se há shreds retransmitidos. Na tabela, observe a coluna **No Retransmit Shreds**—um X vermelho significa que você está retransmitindo. + + !!! note "Visão por época" + Observe que há diferentes janelas de tempo para visualizar o painel de publicadores. Se você vê retransmissão na **visão de 2 épocas**, mas fez uma alteração recente, tente mudar para a visão de **slot recente**. -3. Conecte-se ao grupo multicast DoubleZero `bebop` como publicador: - `doublezero connect multicast --publish bebop` + ![Painel de verificação de publicadores](images/publisher-check-dashboard.png) +2. Encontre o IP do seu cliente e procure seu usuário em [DoubleZero Data](https://data.malbeclabs.com/dz/users). + ![Usuários do DoubleZero Data](images/doublezero-data-users.png) -!!! 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. +3. Clique em **Multicast** para abrir sua visão multicast. -#### Confirme que você está publicando + A captura de tela abaixo mostra: **Retransmitindo** (indesejável) tráfego de saída constante sem padrão de slot de líder. -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. + ![Visão multicast do usuário — exemplo de retransmissão](images/user-multicast-view-retransmit.png) -Execute: `sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + A captura de tela abaixo mostra: **Saudável** (publicando apenas shreds de líder) tráfego de saída em picos, conhecido como padrão de dente de serra, que se alinha com seus slots de líder. -Exemplo de saída ao publicar: + ![Visão multicast do usuário — exemplo de publicador saudável](images/user-multicast-view-healthy.png) -``` -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 -``` +O gráfico mostra se você está enviando apenas shreds de líder. Os picos de tráfego devem se alinhar com quando você tem um slot de líder. Quando não há slot de líder, não deve haver tráfego. Se você estiver retransmitindo, verá um fluxo constante de tráfego em vez de picos alinhados com slots. diff --git a/docs/Validator Multicast Connection.zh.md b/docs/Validator Multicast Connection.zh.md index bb34add..ea2ee94 100644 --- a/docs/Validator Multicast Connection.zh.md +++ b/docs/Validator Multicast Connection.zh.md @@ -3,15 +3,20 @@ !!! warning "通过连接到DoubleZero,我同意[DoubleZero服务条款](https://doublezero.xyz/terms-protocol)" -如果您尚未连接到DoubleZero,请先完成[设置](setup.md)和[主网Beta](DZ%20Mainnet-beta%20Connection.md)验证器连接文档。 +!!! note inline end "交易公司和企业" + 如果您经营交易公司或企业,希望订阅数据流,更多详情即将分享。请在[此处](https://doublezero.xyz/edge-form)注册以获取更多信息。 + +如果您尚未连接到DoubleZero,请先完成[设置](https://docs.malbeclabs.com/setup/)和[主网Beta](https://docs.malbeclabs.com/DZ%20Mainnet-beta%20Connection/)验证器连接文档。 如果您是已连接到DoubleZero的验证器,可以继续阅读本指南。 -#### Jito-Agave(3.1.9或更高版本) +## 1. 客户端配置 + +### Jito-Agave(v3.1.9+)和 Harmonic(3.1.11+) 1. 在您的验证器启动脚本中,添加:`--shred-receiver-address 233.84.178.1:7733` - 您可以同时向Jito和`bebop`组发送数据。 + 您可以同时向Jito和`edge-solana-shreds`组发送数据。 示例: @@ -26,52 +31,61 @@ ``` 2. 重启您的验证器。 +3. 以发布者身份连接到DoubleZero多播组`edge-solana-shreds`:`doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` -3. 以发布者身份连接到DoubleZero多播组`bebop`: - `doublezero connect multicast --publish bebop` - +### Frankendancer +1. 在`config.toml`中,添加: -#### Frankendancer + ```toml + [tiles.shred] + additional_shred_destinations_leader = [ "233.84.178.1:7733", ] + ``` -1. 在`config.toml`中,添加: - ```toml - [tiles.shred] - additional_shred_destinations_leader = [ "233.84.178.1:7733", ] - ``` 2. 重启您的验证器。 +3. 以发布者身份连接到DoubleZero多播组`edge-solana-shreds`:`doublezero connect ibrl && doublezero connect multicast --publish edge-solana-shreds` + +## 2. 确认您正在发布领导者碎片 + +连接后,您可以查看[此仪表板](https://data.malbeclabs.com/dz/publisher-check)以确认您正在发布碎片。在您至少发布了一个槽位的领导者碎片之后,才能看到确认信息。 + +## 3. 验证器奖励 + +对于验证器发布领导者碎片的每个纪元,将根据订阅情况按比例奖励其贡献。该系统的具体细节将于稍后公布并详细说明。 + +## 故障排除 + +### 未发布领导者碎片: + +未传输碎片最常见的原因是客户端版本问题: + +您必须运行 Jito-Agave 3.1.9+、JitoBam 3.1.9+、Frankendancer 或 Harmonic 3.1.11+。其他客户端版本将无法工作。 + +### 重传: + +1. 碎片重传的常见原因是简单的配置问题。您的启动脚本中可能启用了发送重传碎片的标志;您需要禁用它。 + + 在Jito-Agave中需要删除的标志是:`--shred-retransmit-receiver-address`。 + +1. 查看[发布者仪表板](https://data.malbeclabs.com/dz/publisher-check),检查是否有重传碎片。在表格中,查看**No Retransmit Shreds**列——红色X表示您正在重传。 + + !!! note "纪元视图" + 注意发布者仪表板有不同的时间窗口可供查看。如果您在**2纪元视图**中看到重传,但最近做了更改,请尝试切换到**近期槽位**视图。 -3. 以发布者身份连接到DoubleZero多播组`bebop`: - `doublezero connect multicast --publish bebop` + ![发布者检查仪表板](images/publisher-check-dashboard.png) +2. 找到您的客户端IP,并在[DoubleZero数据](https://data.malbeclabs.com/dz/users)中查找您的用户。 + ![DoubleZero数据用户](images/doublezero-data-users.png) -!!! note inline end - 在XDP驱动模式下的Frankendancer用户无法使用tcpdump。目前没有方法确认您正在发布,但解决方案即将推出。 +3. 点击**多播**以打开您的多播视图。 -#### 确认您正在发布 + 下图显示:**重传**(不理想)稳定的出站流量,没有领导者槽位模式。 -在您的下一个领导者槽位期间,使用`tcpdump`确认您正在向多播组发布。您应该每10秒看到一次心跳以验证您正在发布碎片。 + ![用户多播视图 — 重传示例](images/user-multicast-view-retransmit.png) -运行:`sudo tcpdump -vv -c5 -ni doublezero1 port 7733 or port 5765` + 下图显示:**健康**(仅发布领导者碎片)出站流量呈尖峰状,称为锯齿波模式,与您的领导者槽位对齐。 -发布时的示例输出: + ![用户多播视图 — 健康发布者示例](images/user-multicast-view-healthy.png) -``` -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/contribute-provisioning.es.md b/docs/contribute-provisioning.es.md index aa71b09..547d4ef 100644 --- a/docs/contribute-provisioning.es.md +++ b/docs/contribute-provisioning.es.md @@ -362,45 +362,195 @@ 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. +Los DZDs híbridos y de borde necesitan **dos direcciones IP públicas** en las que los usuarios terminan sus túneles GRE. Los usuarios pueden conectarse por unicast, multicast, o ambos, y qué IP sirve para qué propósito rota por usuario. -**Tipos CYOA Explicados:** +Ambas IPs deben registrarse con `--user-tunnel-endpoint true`, ya sea en una interfaz física o en un loopback. Esto incluye la IP que proporcionó en el momento de la creación del dispositivo; esa IP aún necesita registrarse explícitamente aquí. -| 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 | +Si tiene restricciones de IP, puede usar el primer `/32` de su prefijo DZ como una de las dos IPs. -**Ejemplo — Usuarios estándar de internet:** +#### CYOA y DIA +| Tipo | Flag | Propósito | +|------|------|-----------| +| DIA | `--interface-dia dia` | Marca el puerto como acceso directo a internet | +| CYOA | `--interface-cyoa ` | Declara cómo los usuarios conectan túneles GRE a su dispositivo | + +El flag CYOA siempre se establece en una **interfaz física** (puerto Ethernet o port channel). Nunca en un loopback. + +| Subtipo CYOA | Cuándo usar | +|-------------|-------------| +| `gre-over-dia` | Los usuarios se conectan a través de internet público. El más común. | +| `gre-over-private-peering` | Los usuarios se conectan mediante un cross-connect directo o circuito privado | +| `gre-over-public-peering` | Los usuarios hacen peering con usted en un Internet Exchange (IX) | +| `gre-over-fabric` | Los usuarios están co-ubicados y se conectan a través de un fabric local | +| `gre-over-cable` | Conexión de cable directo a un único usuario dedicado | + +#### Escenario A: Interfaz física única + +Un uplink físico al ISP. Ethernet1/1 es la interfaz CYOA y DIA y lleva una de las dos IPs públicas. Loopback100 lleva la segunda IP pública. + +```mermaid +flowchart LR + USERS(["Usuarios Finales"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["Router ISP + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "Túneles GRE" .-> E1 + USERS -. "Túneles GRE" .-> LO +``` + +| Interfaz | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/subred asignada por el contribuidor | velocidad del puerto | tasa comprometida | `bgp` o `static` | `true` | +| Loopback100 | — | — | su /32 público | `0bps` | — | — | `true` | + +Ejemplo de comandos basado en el Escenario A: ```bash -doublezero device interface create Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Salida esperada:** +#### Escenario B: Port channel (LAG) + +El DZD se conecta al dispositivo upstream mediante un port channel con una IP. El port channel lleva una IP pública y es el endpoint CYOA. Loopback100 lleva la segunda IP pública. + +```mermaid +flowchart LR + USERS(["Usuarios Finales"]) + subgraph SW["Router/Switch Upstream"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "Túneles GRE" .-> PC + USERS -. "Túneles GRE" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| Interfaz | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | IP/subred asignada por el contribuidor | velocidad combinada del LAG | tasa comprometida | `bgp` o `static` | `true` | +| Loopback100 | — | — | su /32 público | `0bps` | — | — | `true` | + +Ejemplo de comandos basado en el Escenario B: +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Parámetros explicados:** +#### Escenario C: Doble uplink físico a routers separados -| 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 | +Cada interfaz física se conecta a un router upstream diferente. Las dos IPs públicas se alojan en Loopback100 y Loopback101, ambas registradas como endpoints de túnel de usuario. + +```mermaid +flowchart LR + USERS(["Usuarios Finales"]) + + RA["Router A + 203.0.113.2/30"] + RB["Router B + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "Túneles GRE" .-> LO0 + USERS -. "Túneles GRE" .-> LO1 +``` + +| Interfaz | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/subred asignada por el contribuidor | velocidad del puerto | tasa comprometida | `bgp` o `static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | IP/subred asignada por el contribuidor | velocidad del puerto | tasa comprometida | `bgp` o `static` | — | +| Loopback100 | — | — | su /32 público | `0bps` | — | — | `true` | +| Loopback101 | — | — | su /32 público | `0bps` | — | — | `true` | + +Ejemplo de comandos basado en el Escenario C: +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### Paso 3.6: Verificar Su Dispositivo diff --git a/docs/contribute-provisioning.fr.md b/docs/contribute-provisioning.fr.md index 803b966..b459c25 100644 --- a/docs/contribute-provisioning.fr.md +++ b/docs/contribute-provisioning.fr.md @@ -362,45 +362,195 @@ 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. +Les DZDs hybrides et périphériques ont besoin de **deux adresses IP publiques** sur lesquelles les utilisateurs terminent leurs tunnels GRE. Les utilisateurs peuvent se connecter via unicast, multicast, ou les deux, et quelle IP sert quel objectif est tournée par utilisateur. -**Types CYOA Expliqués :** +Les deux IPs doivent être enregistrées avec `--user-tunnel-endpoint true`, soit sur une interface physique, soit sur un loopback. Cela inclut l'IP que vous avez fournie lors de la création du dispositif ; cette IP doit encore être explicitement enregistrée ici. -| 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 | +Si vous êtes limité en IPs, vous pouvez utiliser le premier `/32` de votre préfixe DZ comme l'une des deux IPs. -**Exemple - Utilisateurs internet standard :** +#### CYOA et DIA +| Type | Flag | Objectif | +|------|------|----------| +| DIA | `--interface-dia dia` | Marque le port comme accès internet direct | +| CYOA | `--interface-cyoa ` | Déclare comment les utilisateurs connectent des tunnels GRE à votre dispositif | + +Le flag CYOA est toujours défini sur une **interface physique** (port Ethernet ou port channel). Jamais sur un loopback. + +| Sous-type CYOA | Quand utiliser | +|---------------|---------------| +| `gre-over-dia` | Les utilisateurs se connectent via internet public. Le plus courant. | +| `gre-over-private-peering` | Les utilisateurs se connectent via un cross-connect direct ou un circuit privé | +| `gre-over-public-peering` | Les utilisateurs peerent avec vous à un Internet Exchange (IX) | +| `gre-over-fabric` | Les utilisateurs sont co-localisés et se connectent via un fabric local | +| `gre-over-cable` | Connexion câble directe à un seul utilisateur dédié | + +#### Scénario A : Interface physique unique + +Un uplink physique vers l'ISP. Ethernet1/1 est l'interface CYOA et DIA et porte l'une des deux IPs publiques. Loopback100 porte la deuxième IP publique. + +```mermaid +flowchart LR + USERS(["Utilisateurs Finaux"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["Routeur ISP + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "Tunnels GRE" .-> E1 + USERS -. "Tunnels GRE" .-> LO +``` + +| Interface | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/sous-réseau assigné par le contributeur | vitesse du port | taux engagé | `bgp` ou `static` | `true` | +| Loopback100 | — | — | votre /32 public | `0bps` | — | — | `true` | + +Exemple de commandes pour le Scénario A : ```bash -doublezero device interface create Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Sortie attendue :** +#### Scénario B : Port channel (LAG) + +Le DZD se connecte au dispositif upstream via un port channel avec une IP. Le port channel porte une IP publique et est le point de terminaison CYOA. Loopback100 porte la deuxième IP publique. + +```mermaid +flowchart LR + USERS(["Utilisateurs Finaux"]) + subgraph SW["Routeur/Switch Upstream"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "Tunnels GRE" .-> PC + USERS -. "Tunnels GRE" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| Interface | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | IP/sous-réseau assigné par le contributeur | vitesse LAG combinée | taux engagé | `bgp` ou `static` | `true` | +| Loopback100 | — | — | votre /32 public | `0bps` | — | — | `true` | + +Exemple de commandes pour le Scénario B : +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Paramètres expliqués :** +#### Scénario C : Double uplinks physiques vers des routeurs séparé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 | +Chaque interface physique se connecte à un routeur upstream différent. Les deux IPs publiques se trouvent sur Loopback100 et Loopback101, toutes deux enregistrées comme points de terminaison de tunnel utilisateur. + +```mermaid +flowchart LR + USERS(["Utilisateurs Finaux"]) + + RA["Routeur A + 203.0.113.2/30"] + RB["Routeur B + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "Tunnels GRE" .-> LO0 + USERS -. "Tunnels GRE" .-> LO1 +``` + +| Interface | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/sous-réseau assigné par le contributeur | vitesse du port | taux engagé | `bgp` ou `static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | IP/sous-réseau assigné par le contributeur | vitesse du port | taux engagé | `bgp` ou `static` | — | +| Loopback100 | — | — | votre /32 public | `0bps` | — | — | `true` | +| Loopback101 | — | — | votre /32 public | `0bps` | — | — | `true` | + +Exemple de commandes pour le Scénario C : +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### Étape 3.6 : Vérifier Votre Dispositif diff --git a/docs/contribute-provisioning.it.md b/docs/contribute-provisioning.it.md index 80bf6d5..f19005f 100644 --- a/docs/contribute-provisioning.it.md +++ b/docs/contribute-provisioning.it.md @@ -362,45 +362,195 @@ 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. +I DZD ibridi e edge necessitano di **due indirizzi IP pubblici** su cui gli utenti terminano i loro tunnel GRE. Gli utenti possono connettersi tramite unicast, multicast, o entrambi, e quale IP serve quale scopo viene ruotato per utente. -**Tipi CYOA Spiegati:** +Entrambi gli IP devono essere registrati con `--user-tunnel-endpoint true`, su un'interfaccia fisica o su un loopback. Questo include l'IP fornito al momento della creazione del dispositivo; quell'IP deve ancora essere registrato esplicitamente qui. -| 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 | +Se sei vincolato da IP, puoi usare il primo `/32` del tuo prefisso DZ come uno dei due IP. -**Esempio - Utenti internet standard:** +#### CYOA e DIA +| Tipo | Flag | Scopo | +|------|------|-------| +| DIA | `--interface-dia dia` | Marca la porta come accesso internet diretto | +| CYOA | `--interface-cyoa ` | Dichiara come gli utenti connettono tunnel GRE al tuo dispositivo | + +Il flag CYOA è sempre impostato su un'**interfaccia fisica** (porta Ethernet o port channel). Mai su un loopback. + +| Sottotipo CYOA | Quando usare | +|---------------|-------------| +| `gre-over-dia` | Gli utenti si connettono tramite internet pubblico. Il più comune. | +| `gre-over-private-peering` | Gli utenti si connettono tramite cross-connect diretto o circuito privato | +| `gre-over-public-peering` | Gli utenti fanno peering con te a un Internet Exchange (IX) | +| `gre-over-fabric` | Gli utenti sono co-locati e si connettono tramite un fabric locale | +| `gre-over-cable` | Connessione cavo diretta a un singolo utente dedicato | + +#### Scenario A: Interfaccia fisica singola + +Un uplink fisico all'ISP. Ethernet1/1 è l'interfaccia CYOA e DIA e porta uno dei due IP pubblici. Loopback100 porta il secondo IP pubblico. + +```mermaid +flowchart LR + USERS(["Utenti Finali"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["Router ISP + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "Tunnel GRE" .-> E1 + USERS -. "Tunnel GRE" .-> LO +``` + +| Interfaccia | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-------------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/sottorete assegnata dal contributore | velocità porta | tariffa impegnata | `bgp` o `static` | `true` | +| Loopback100 | — | — | tuo /32 pubblico | `0bps` | — | — | `true` | + +Esempio di comandi per lo Scenario A: ```bash -doublezero device interface create Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Output atteso:** +#### Scenario B: Port channel (LAG) + +Il DZD si connette al dispositivo upstream tramite un port channel con un IP. Il port channel porta un IP pubblico ed è l'endpoint CYOA. Loopback100 porta il secondo IP pubblico. + +```mermaid +flowchart LR + USERS(["Utenti Finali"]) + subgraph SW["Router/Switch Upstream"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "Tunnel GRE" .-> PC + USERS -. "Tunnel GRE" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| Interfaccia | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-------------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | IP/sottorete assegnata dal contributore | velocità LAG combinata | tariffa impegnata | `bgp` o `static` | `true` | +| Loopback100 | — | — | tuo /32 pubblico | `0bps` | — | — | `true` | + +Esempio di comandi per lo Scenario B: +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Parametri spiegati:** +#### Scenario C: Doppi uplink fisici verso router separati -| 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 | +Ogni interfaccia fisica si connette a un router upstream diverso. I due IP pubblici si trovano su Loopback100 e Loopback101, entrambi registrati come endpoint di tunnel utente. + +```mermaid +flowchart LR + USERS(["Utenti Finali"]) + + RA["Router A + 203.0.113.2/30"] + RB["Router B + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "Tunnel GRE" .-> LO0 + USERS -. "Tunnel GRE" .-> LO1 +``` + +| Interfaccia | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-------------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/sottorete assegnata dal contributore | velocità porta | tariffa impegnata | `bgp` o `static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | IP/sottorete assegnata dal contributore | velocità porta | tariffa impegnata | `bgp` o `static` | — | +| Loopback100 | — | — | tuo /32 pubblico | `0bps` | — | — | `true` | +| Loopback101 | — | — | tuo /32 pubblico | `0bps` | — | — | `true` | + +Esempio di comandi per lo Scenario C: +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### Passo 3.6: Verifica il Tuo Dispositivo diff --git a/docs/contribute-provisioning.ja.md b/docs/contribute-provisioning.ja.md index f4c4494..7649583 100644 --- a/docs/contribute-provisioning.ja.md +++ b/docs/contribute-provisioning.ja.md @@ -362,45 +362,195 @@ Signature: 7pQw2R...truncated...4xKm9 ### ステップ3.5:CYOAインターフェースを作成する(エッジ/ハイブリッドデバイスの場合) -デバイスがユーザー接続を受け入れる場合、CYOA(Choose Your Own Adventure)インターフェースが必要です。これにより、ユーザーがどのように接続するかをシステムに伝えます。 +ハイブリッドおよびエッジDZDには、ユーザーがGREトンネルを終端する**2つのパブリックIPアドレス**が必要です。ユーザーはユニキャスト、マルチキャスト、またはその両方で接続でき、どのIPがどの目的に使用されるかはユーザーごとにローテーションされます。 -**CYOAタイプの説明:** +両方のIPは、物理インターフェースまたはループバックのいずれかで`--user-tunnel-endpoint true`で登録する必要があります。これには、デバイス作成時に指定したIPも含まれます。そのIPもここで明示的に登録する必要があります。 -| タイプ | わかりやすい説明 | 使用する場合 | -|------|--------------|----------| -| `gre-over-dia` | ユーザーが通常のインターネット経由で接続 | 最も一般的 - ユーザーがDIAを通じてDZDに接続 | -| `gre-over-private-peering` | ユーザーがプライベートリンク経由で接続 | ユーザーがネットワークに直接接続 | -| `gre-over-public-peering` | ユーザーがIX経由で接続 | ユーザーがインターネットエクスチェンジでピアリング | -| `gre-over-fabric` | ユーザーが同じローカルネットワーク上 | ユーザーが同じデータセンターに存在 | -| `gre-over-cable` | ユーザーへの直接ケーブル | 単一専用ユーザー | +IP制約がある場合は、DZプレフィックスの最初の`/32`を2つのIPの1つとして使用できます。 -**例 - 標準インターネットユーザー:** +#### CYOAとDIA +| タイプ | フラグ | 目的 | +|--------|--------|------| +| DIA | `--interface-dia dia` | ポートをダイレクトインターネットアクセスとしてマーク | +| CYOA | `--interface-cyoa <サブタイプ>` | ユーザーがデバイスにGREトンネルを接続する方法を宣言 | + +CYOAフラグは常に**物理インターフェース**(イーサネットポートまたはポートチャネル)に設定されます。ループバックには設定しません。 + +| CYOAサブタイプ | 使用場面 | +|--------------|---------| +| `gre-over-dia` | ユーザーがパブリックインターネット経由で接続。最も一般的。 | +| `gre-over-private-peering` | ユーザーが直接クロスコネクトまたはプライベート回線で接続 | +| `gre-over-public-peering` | ユーザーがインターネットエクスチェンジ(IX)でピアリング | +| `gre-over-fabric` | ユーザーが同一施設内にありローカルファブリックで接続 | +| `gre-over-cable` | 単一の専用ユーザーへの直接ケーブル接続 | + +#### シナリオA:単一物理インターフェース + +ISPへの1つの物理アップリンク。Ethernet1/1はCYOAおよびDIAインターフェースで、2つのパブリックIPのうちの1つを持ちます。Loopback100が2番目のパブリックIPを持ちます。 + +```mermaid +flowchart LR + USERS(["エンドユーザー"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["ISPルーター + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "GREトンネル" .-> E1 + USERS -. "GREトンネル" .-> LO +``` + +| インターフェース | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|----------------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | コントリビューター割当IP/サブネット | ポート速度 | コミットレート | `bgp`または`static` | `true` | +| Loopback100 | — | — | パブリック/32 | `0bps` | — | — | `true` | + +シナリオAに基づくコマンド例: ```bash -doublezero device interface create <デバイスコード> Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**期待される出力:** +#### シナリオB:ポートチャネル(LAG) + +DZDがIPを持つポートチャネルでアップストリームデバイスに接続します。ポートチャネルが1つのパブリックIPを持ち、CYOAエンドポイントになります。Loopback100が2番目のパブリックIPを持ちます。 + +```mermaid +flowchart LR + USERS(["エンドユーザー"]) + subgraph SW["アップストリームルーター/スイッチ"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "GREトンネル" .-> PC + USERS -. "GREトンネル" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| インターフェース | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|----------------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | コントリビューター割当IP/サブネット | 組み合わせLAG速度 | コミットレート | `bgp`または`static` | `true` | +| Loopback100 | — | — | パブリック/32 | `0bps` | — | — | `true` | + +シナリオBに基づくコマンド例: +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**パラメーターの説明:** +#### シナリオC:別々のルーターへのデュアル物理アップリンク -| パラメーター | 意味 | -|-----------|---------------| -| `--interface-cyoa` | ユーザーの接続方法(上記テーブル参照) | -| `--interface-dia` | これがインターネット向きポートの場合は`dia` | -| `--bandwidth` | Mbpsのポート速度(10000 = 10Gbps) | -| `--cir` | Mbpsのコミット済みレート(保証帯域幅) | -| `--user-tunnel-endpoint` | このポートはユーザートンネルを受け入れる | +各物理インターフェースが異なるアップストリームルーターに接続します。2つのパブリックIPはLoopback100とLoopback101に存在し、両方ともユーザートンネルエンドポイントとして登録されます。 + +```mermaid +flowchart LR + USERS(["エンドユーザー"]) + + RA["ルーターA + 203.0.113.2/30"] + RB["ルーターB + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "GREトンネル" .-> LO0 + USERS -. "GREトンネル" .-> LO1 +``` + +| インターフェース | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|----------------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | コントリビューター割当IP/サブネット | ポート速度 | コミットレート | `bgp`または`static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | コントリビューター割当IP/サブネット | ポート速度 | コミットレート | `bgp`または`static` | — | +| Loopback100 | — | — | パブリック/32 | `0bps` | — | — | `true` | +| Loopback101 | — | — | パブリック/32 | `0bps` | — | — | `true` | + +シナリオCに基づくコマンド例: +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### ステップ3.6:デバイスを確認する diff --git a/docs/contribute-provisioning.ko.md b/docs/contribute-provisioning.ko.md index 9419ebd..1731377 100644 --- a/docs/contribute-provisioning.ko.md +++ b/docs/contribute-provisioning.ko.md @@ -362,45 +362,195 @@ Signature: 7pQw2R...truncated...4xKm9 ### 3.5단계: CYOA 인터페이스 생성 (엣지/하이브리드 장치의 경우) -장치가 사용자 연결을 허용하는 경우 CYOA(Choose Your Own Adventure) 인터페이스가 필요합니다. 이는 사용자가 귀하에게 연결하는 방법을 시스템에 알립니다. +하이브리드 및 엣지 DZD에는 사용자가 GRE 터널을 종료하는 **두 개의 공개 IP 주소**가 필요합니다. 사용자는 유니캐스트, 멀티캐스트 또는 둘 다를 통해 연결할 수 있으며, 어떤 IP가 어떤 목적으로 사용되는지는 사용자별로 순환됩니다. -**CYOA 유형 설명:** +두 IP 모두 물리적 인터페이스 또는 루프백에서 `--user-tunnel-endpoint true`로 등록해야 합니다. 이는 장치 생성 시 제공한 IP도 포함되며, 해당 IP도 여기서 명시적으로 등록해야 합니다. -| 유형 | 쉬운 설명 | 사용 시기 | -|------|--------------|----------| -| `gre-over-dia` | 사용자가 일반 인터넷을 통해 연결 | 가장 일반적 - 사용자가 DIA를 통해 DZD에 연결 | -| `gre-over-private-peering` | 사용자가 전용 링크를 통해 연결 | 사용자가 귀하의 네트워크에 직접 연결 | -| `gre-over-public-peering` | 사용자가 IX를 통해 연결 | 사용자가 인터넷 exchange에서 귀하와 피어링 | -| `gre-over-fabric` | 사용자가 동일한 로컬 네트워크에 있음 | 사용자가 동일한 데이터 센터에 있음 | -| `gre-over-cable` | 사용자에 대한 직접 케이블 | 단일 전용 사용자 | +IP가 부족한 경우 DZ 프리픽스의 첫 번째 `/32`를 두 IP 중 하나로 사용할 수 있습니다. -**예시 - 표준 인터넷 사용자:** +#### CYOA 및 DIA +| 유형 | 플래그 | 목적 | +|------|--------|------| +| DIA | `--interface-dia dia` | 포트를 직접 인터넷 접근으로 표시 | +| CYOA | `--interface-cyoa <서브타입>` | 사용자가 장치에 GRE 터널을 연결하는 방법 선언 | + +CYOA 플래그는 항상 **물리적 인터페이스**(이더넷 포트 또는 포트 채널)에 설정됩니다. 루프백에는 절대 설정하지 않습니다. + +| CYOA 서브타입 | 사용 시기 | +|-------------|----------| +| `gre-over-dia` | 사용자가 공개 인터넷을 통해 연결. 가장 일반적. | +| `gre-over-private-peering` | 사용자가 직접 크로스 커넥트 또는 전용 회선으로 연결 | +| `gre-over-public-peering` | 사용자가 인터넷 익스체인지(IX)에서 피어링 | +| `gre-over-fabric` | 사용자가 공동 배치되어 로컬 패브릭을 통해 연결 | +| `gre-over-cable` | 단일 전용 사용자에 대한 직접 케이블 연결 | + +#### 시나리오 A: 단일 물리적 인터페이스 + +ISP로의 물리적 업링크 하나. Ethernet1/1이 CYOA 및 DIA 인터페이스이며 두 공개 IP 중 하나를 가집니다. Loopback100이 두 번째 공개 IP를 가집니다. + +```mermaid +flowchart LR + USERS(["최종 사용자"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["ISP 라우터 + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "GRE 터널" .-> E1 + USERS -. "GRE 터널" .-> LO +``` + +| 인터페이스 | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | 기여자 할당 IP/서브넷 | 포트 속도 | 약정 속도 | `bgp` 또는 `static` | `true` | +| Loopback100 | — | — | 공개 /32 | `0bps` | — | — | `true` | + +시나리오 A 기반 명령 예시: ```bash -doublezero device interface create Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**예상 출력:** +#### 시나리오 B: 포트 채널 (LAG) + +DZD가 IP가 있는 포트 채널을 통해 업스트림 장치에 연결됩니다. 포트 채널이 공개 IP 하나를 가지며 CYOA 엔드포인트입니다. Loopback100이 두 번째 공개 IP를 가집니다. + +```mermaid +flowchart LR + USERS(["최종 사용자"]) + subgraph SW["업스트림 라우터/스위치"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "GRE 터널" .-> PC + USERS -. "GRE 터널" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| 인터페이스 | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | 기여자 할당 IP/서브넷 | 결합 LAG 속도 | 약정 속도 | `bgp` 또는 `static` | `true` | +| Loopback100 | — | — | 공개 /32 | `0bps` | — | — | `true` | + +시나리오 B 기반 명령 예시: +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**파라미터 설명:** +#### 시나리오 C: 별도 라우터로의 이중 물리적 업링크 -| 파라미터 | 의미 | -|-----------|---------------| -| `--interface-cyoa` | 사용자 연결 방법 (위 표 참조) | -| `--interface-dia` | 이것이 인터넷 대면 포트인 경우 `dia` | -| `--bandwidth` | Mbps 단위 포트 속도 (10000 = 10Gbps) | -| `--cir` | Mbps 단위 확약 요금 (보장된 대역폭) | -| `--user-tunnel-endpoint` | 이 포트가 사용자 터널을 허용함 | +각 물리적 인터페이스가 다른 업스트림 라우터에 연결됩니다. 두 공개 IP는 Loopback100과 Loopback101에 있으며, 모두 사용자 터널 엔드포인트로 등록됩니다. + +```mermaid +flowchart LR + USERS(["최종 사용자"]) + + RA["라우터 A + 203.0.113.2/30"] + RB["라우터 B + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "GRE 터널" .-> LO0 + USERS -. "GRE 터널" .-> LO1 +``` + +| 인터페이스 | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | 기여자 할당 IP/서브넷 | 포트 속도 | 약정 속도 | `bgp` 또는 `static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | 기여자 할당 IP/서브넷 | 포트 속도 | 약정 속도 | `bgp` 또는 `static` | — | +| Loopback100 | — | — | 공개 /32 | `0bps` | — | — | `true` | +| Loopback101 | — | — | 공개 /32 | `0bps` | — | — | `true` | + +시나리오 C 기반 명령 예시: +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### 3.6단계: 장치 확인 diff --git a/docs/contribute-provisioning.pt.md b/docs/contribute-provisioning.pt.md index 9e69395..72081d9 100644 --- a/docs/contribute-provisioning.pt.md +++ b/docs/contribute-provisioning.pt.md @@ -362,45 +362,195 @@ 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ê. +DZDs híbridos e edge precisam de **dois endereços IP públicos** nos quais os usuários terminam seus túneis GRE. Os usuários podem se conectar via unicast, multicast, ou ambos, e qual IP serve qual propósito é rotacionado por usuário. -**Tipos CYOA Explicados:** +Ambos os IPs devem ser registrados com `--user-tunnel-endpoint true`, em uma interface física ou em um loopback. Isso inclui o IP fornecido no momento da criação do dispositivo; esse IP ainda precisa ser registrado explicitamente aqui. -| 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 | +Se você estiver com restrição de IP, pode usar o primeiro `/32` do seu prefixo DZ como um dos dois IPs. -**Exemplo — Usuários padrão de internet:** +#### CYOA e DIA +| Tipo | Flag | Propósito | +|------|------|-----------| +| DIA | `--interface-dia dia` | Marca a porta como acesso direto à internet | +| CYOA | `--interface-cyoa ` | Declara como os usuários conectam túneis GRE ao seu dispositivo | + +O flag CYOA é sempre definido em uma **interface física** (porta Ethernet ou port channel). Nunca em um loopback. + +| Subtipo CYOA | Quando usar | +|-------------|------------| +| `gre-over-dia` | Usuários se conectam pela internet pública. O mais comum. | +| `gre-over-private-peering` | Usuários se conectam via cross-connect direto ou circuito privado | +| `gre-over-public-peering` | Usuários fazem peering com você em um Internet Exchange (IX) | +| `gre-over-fabric` | Usuários são co-localizados e se conectam por um fabric local | +| `gre-over-cable` | Conexão de cabo direto a um único usuário dedicado | + +#### Cenário A: Interface física única + +Um uplink físico para o ISP. Ethernet1/1 é a interface CYOA e DIA e carrega um dos dois IPs públicos. Loopback100 carrega o segundo IP público. + +```mermaid +flowchart LR + USERS(["Usuários Finais"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["Roteador ISP + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "Túneis GRE" .-> E1 + USERS -. "Túneis GRE" .-> LO +``` + +| Interface | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/sub-rede atribuída pelo contribuidor | velocidade da porta | taxa comprometida | `bgp` ou `static` | `true` | +| Loopback100 | — | — | seu /32 público | `0bps` | — | — | `true` | + +Exemplo de comandos para o Cenário A: ```bash -doublezero device interface create Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Saída esperada:** +#### Cenário B: Port channel (LAG) + +O DZD se conecta ao dispositivo upstream via port channel com um IP. O port channel carrega um IP público e é o endpoint CYOA. Loopback100 carrega o segundo IP público. + +```mermaid +flowchart LR + USERS(["Usuários Finais"]) + subgraph SW["Roteador/Switch Upstream"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "Túneis GRE" .-> PC + USERS -. "Túneis GRE" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| Interface | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | IP/sub-rede atribuída pelo contribuidor | velocidade LAG combinada | taxa comprometida | `bgp` ou `static` | `true` | +| Loopback100 | — | — | seu /32 público | `0bps` | — | — | `true` | + +Exemplo de comandos para o Cenário B: +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**Parâmetros explicados:** +#### Cenário C: Duplos uplinks físicos para roteadores separados -| 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 | +Cada interface física se conecta a um roteador upstream diferente. Os dois IPs públicos ficam em Loopback100 e Loopback101, ambos registrados como endpoints de túnel de usuário. + +```mermaid +flowchart LR + USERS(["Usuários Finais"]) + + RA["Roteador A + 203.0.113.2/30"] + RB["Roteador B + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "Túneis GRE" .-> LO0 + USERS -. "Túneis GRE" .-> LO1 +``` + +| Interface | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|-----------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | IP/sub-rede atribuída pelo contribuidor | velocidade da porta | taxa comprometida | `bgp` ou `static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | IP/sub-rede atribuída pelo contribuidor | velocidade da porta | taxa comprometida | `bgp` ou `static` | — | +| Loopback100 | — | — | seu /32 público | `0bps` | — | — | `true` | +| Loopback101 | — | — | seu /32 público | `0bps` | — | — | `true` | + +Exemplo de comandos para o Cenário C: +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### Passo 3.6: Verificar Seu Dispositivo diff --git a/docs/contribute-provisioning.zh.md b/docs/contribute-provisioning.zh.md index d0a9926..a911204 100644 --- a/docs/contribute-provisioning.zh.md +++ b/docs/contribute-provisioning.zh.md @@ -362,45 +362,195 @@ Signature: 7pQw2R...truncated...4xKm9 ### 步骤3.5:创建CYOA接口(用于边缘/混合设备) -如果您的设备接受用户连接,您需要一个CYOA(Choose Your Own Adventure)接口。这告诉系统用户如何连接到您。 +混合型和边缘型DZD需要**两个公共IP地址**,用户在这些地址上终止其GRE隧道。用户可以通过单播、多播或两者连接,哪个IP用于哪个目的会按用户轮换。 -**CYOA类型说明:** +两个IP都必须使用`--user-tunnel-endpoint true`注册,可以在物理接口或环回接口上。这包括您在设备创建时提供的IP;该IP仍需在此处明确注册。 -| 类型 | 通俗解释 | 使用时机 | -|------|---------|---------| -| `gre-over-dia` | 用户通过普通互联网连接 | 最常见——用户通过DIA连接到您的DZD | -| `gre-over-private-peering` | 用户通过私有链路连接 | 用户与您的网络有直接连接 | -| `gre-over-public-peering` | 用户通过IX连接 | 用户在互联网交换中心与您对等 | -| `gre-over-fabric` | 用户在同一本地网络 | 用户在同一数据中心 | -| `gre-over-cable` | 直接电缆连接到用户 | 单个专用用户 | +如果您受IP约束,可以使用DZ前缀的第一个`/32`作为两个IP之一。 -**示例——标准互联网用户:** +#### CYOA和DIA +| 类型 | 标志 | 用途 | +|------|------|------| +| DIA | `--interface-dia dia` | 将端口标记为直接互联网访问 | +| CYOA | `--interface-cyoa <子类型>` | 声明用户如何将GRE隧道连接到您的设备 | + +CYOA标志始终设置在**物理接口**(以太网端口或端口聚合)上,从不设置在环回接口上。 + +| CYOA子类型 | 使用场景 | +|-----------|---------| +| `gre-over-dia` | 用户通过公共互联网连接。最常见。 | +| `gre-over-private-peering` | 用户通过直接交叉连接或私有电路连接 | +| `gre-over-public-peering` | 用户在互联网交换点(IX)与您对等 | +| `gre-over-fabric` | 用户共同托管并通过本地网络结构连接 | +| `gre-over-cable` | 直接电缆连接到单个专用用户 | + +#### 场景A:单物理接口 + +到ISP的一个物理上行链路。Ethernet1/1是CYOA和DIA接口,承载两个公共IP之一。Loopback100承载第二个公共IP。 + +```mermaid +flowchart LR + USERS(["终端用户"]) + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA · user tunnel endpoint"] + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + E1 --- LO + end + + ISP["ISP路由器 + 203.0.113.2/30"] + + ISP -- "10GbE" --- E1 + USERS -. "GRE隧道" .-> E1 + USERS -. "GRE隧道" .-> LO +``` + +| 接口 | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | 贡献者分配的IP/子网 | 端口速度 | 承诺速率 | `bgp`或`static` | `true` | +| Loopback100 | — | — | 您的公共/32 | `0bps` | — | — | `true` | + +场景A的示例命令: ```bash -doublezero device interface create Ethernet1/2 \ +doublezero device interface create mydzd-nyc01 Ethernet1/1 \ --interface-cyoa gre-over-dia \ --interface-dia dia \ - --bandwidth 10000 \ - --cir 1000 \ - --user-tunnel-endpoint \ - --wait + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-nyc01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**预期输出:** +#### 场景B:端口聚合(LAG) + +DZD通过带有IP的端口聚合连接到上游设备。端口聚合承载一个公共IP并是CYOA端点。Loopback100承载第二个公共IP。 + +```mermaid +flowchart LR + USERS(["终端用户"]) + subgraph SW["上游路由器/交换机"] + SWPC(["bond0 + 203.0.113.2/30"]) + end + + subgraph DZD["DZD"] + subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"] + E1["Eth1/1"] + E2["Eth2/1"] + end + LO["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + PC --- LO + end + + SWPC -- "2x 10GbE" --- PC + USERS -. "GRE隧道" .-> PC + USERS -. "GRE隧道" .-> LO ``` -Signature: 2wLp8N...truncated...5vHt3 + +| 接口 | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Port-Channel1 | `gre-over-dia` | `dia` | 贡献者分配的IP/子网 | 组合LAG速度 | 承诺速率 | `bgp`或`static` | `true` | +| Loopback100 | — | — | 您的公共/32 | `0bps` | — | — | `true` | + +场景B的示例命令: +```bash +doublezero device interface create mydzd-fra01 Port-Channel1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 20Gbps \ + --cir 2Gbps \ + --routing-mode bgp \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-fra01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true ``` -**参数说明:** +#### 场景C:到独立路由器的双物理上行链路 -| 参数 | 含义 | -|------|------| -| `--interface-cyoa` | 用户如何连接(参见上表) | -| `--interface-dia` | 如果这是面向互联网的端口,则为`dia` | -| `--bandwidth` | 端口速度(Mbps),10000 = 10Gbps | -| `--cir` | 承诺速率(Mbps),保证带宽 | -| `--user-tunnel-endpoint` | 此端口接受用户隧道 | +每个物理接口连接到不同的上游路由器。两个公共IP位于Loopback100和Loopback101上,均注册为用户隧道端点。 + +```mermaid +flowchart LR + USERS(["终端用户"]) + + RA["路由器A + 203.0.113.2/30"] + RB["路由器B + 203.0.113.6/30"] + + subgraph DZD["DZD"] + E1["Eth1/1 + 203.0.113.1/30 + CYOA · DIA"] + E2["Eth2/1 + 203.0.113.5/30 + CYOA · DIA"] + LO0["Loopback100 + 198.51.100.1/32\n user tunnel endpoint"] + LO1["Loopback101 + 198.51.100.2/32\n user tunnel endpoint"] + E1 --> LO0 + E2 --> LO1 + end + + RA -- "10GbE" --- E1 + RB -- "10GbE" --- E2 + USERS -. "GRE隧道" .-> LO0 + USERS -. "GRE隧道" .-> LO1 +``` + +| 接口 | `--interface-cyoa` | `--interface-dia` | `--ip-net` | `--bandwidth` | `--cir` | `--routing-mode` | `--user-tunnel-endpoint` | +|------|-------------------|------------------|------------|---------------|---------|-----------------|--------------------------| +| Ethernet1/1 | `gre-over-dia` | `dia` | 贡献者分配的IP/子网 | 端口速度 | 承诺速率 | `bgp`或`static` | — | +| Ethernet2/1 | `gre-over-dia` | `dia` | 贡献者分配的IP/子网 | 端口速度 | 承诺速率 | `bgp`或`static` | — | +| Loopback100 | — | — | 您的公共/32 | `0bps` | — | — | `true` | +| Loopback101 | — | — | 您的公共/32 | `0bps` | — | — | `true` | + +场景C的示例命令: +```bash +doublezero device interface create mydzd-ams01 Ethernet1/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.1/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Ethernet2/1 \ + --interface-cyoa gre-over-dia \ + --interface-dia dia \ + --ip-net 203.0.113.5/30 \ + --bandwidth 10Gbps \ + --cir 1Gbps \ + --routing-mode bgp + +doublezero device interface create mydzd-ams01 Loopback100 \ + --ip-net 198.51.100.1/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true + +doublezero device interface create mydzd-ams01 Loopback101 \ + --ip-net 198.51.100.2/32 \ + --bandwidth 0bps \ + --user-tunnel-endpoint true +``` ### 步骤3.6:验证您的设备 diff --git a/docs/glossary.es.md b/docs/glossary.es.md index b433479..44915a5 100644 --- a/docs/glossary.es.md +++ b/docs/glossary.es.md @@ -92,7 +92,7 @@ Un estado de mantenimiento donde el enlace se retira completamente del servicio. 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). +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. [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. diff --git a/docs/glossary.fr.md b/docs/glossary.fr.md index dcf019c..f38aee2 100644 --- a/docs/glossary.fr.md +++ b/docs/glossary.fr.md @@ -92,7 +92,7 @@ Un état de maintenance où le lien est complètement retiré du service. Aucun 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). +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. [É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. diff --git a/docs/glossary.it.md b/docs/glossary.it.md index cb11ae1..e00193c 100644 --- a/docs/glossary.it.md +++ b/docs/glossary.it.md @@ -92,7 +92,7 @@ Uno stato di manutenzione in cui il link è completamente rimosso dal servizio. 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). +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. [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. diff --git a/docs/glossary.ja.md b/docs/glossary.ja.md index 77f1820..e6f1a1c 100644 --- a/docs/glossary.ja.md +++ b/docs/glossary.ja.md @@ -92,7 +92,7 @@ DoubleZeroネットワークと対話するためのコマンドラインイン DoubleZero Foundationは、DoubleZeroネットワークの開発、分散化、セキュリティ、および普及を支援するために設立されたケイマン諸島のメンバーなし非営利財団会社です。 ### 2Zトークン -DoubleZeroネットワークのネイティブトークンです。バリデーター手数料の支払いに使用され、[コントリビューター](#contributor)への報酬として配布されます。バリデーターはオンチェーンスワッププログラムを通じて2Zで手数料を支払うことができます。[2Zでの手数料支払い](paying-fees2z.md)と[SOLから2Zへのスワップ](Swapping-sol-to-2z.md)を参照してください。 +DoubleZeroネットワークのネイティブトークンです。バリデーター手数料の支払いに使用され、[コントリビューター](#contributor)への報酬として配布されます。バリデーターはオンチェーンスワッププログラムを通じて2Zで手数料を支払うことができます。[SOLから2Zへのスワップ](Swapping-sol-to-2z.md)を参照してください。 ### コントリビューター DoubleZeroネットワークに帯域幅とハードウェアを提供するネットワークインフラプロバイダーです。コントリビューターは[DZD](#dzd-doublezero-device)を運用し、[WAN](#wan-link)および[DZX](#dzx-link)リンクを提供し、その貢献に対して[2Z](#2z-token)トークンインセンティブを受け取ります。開始するには[コントリビューターのドキュメント](contribute-overview.md)を参照してください。 diff --git a/docs/glossary.ko.md b/docs/glossary.ko.md index 4b04e1e..780b1e0 100644 --- a/docs/glossary.ko.md +++ b/docs/glossary.ko.md @@ -92,7 +92,7 @@ DoubleZero 네트워크와 상호작용하기 위한 명령줄 인터페이스 DoubleZero Foundation은 DoubleZero 네트워크의 개발, 탈중앙화, 보안 및 채택을 지원하기 위해 설립된 비회원 비영리 케이맨 제도 파운데이션 컴퍼니입니다. ### 2Z 토큰 -DoubleZero 네트워크의 네이티브 토큰입니다. 검증자 수수료 납부 및 [기여자](#contributor)에게 보상 배포에 사용됩니다. 검증자는 온체인 스왑 프로그램을 통해 2Z로 수수료를 납부할 수 있습니다. [2Z로 수수료 납부](paying-fees2z.md) 및 [SOL을 2Z로 스왑](Swapping-sol-to-2z.md)을 참조하세요. +DoubleZero 네트워크의 네이티브 토큰입니다. 검증자 수수료 납부 및 [기여자](#contributor)에게 보상 배포에 사용됩니다. 검증자는 온체인 스왑 프로그램을 통해 2Z로 수수료를 납부할 수 있습니다. [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)를 참조하세요. diff --git a/docs/glossary.pt.md b/docs/glossary.pt.md index 3d1391e..439d99a 100644 --- a/docs/glossary.pt.md +++ b/docs/glossary.pt.md @@ -92,7 +92,7 @@ Um estado de manutenção onde o link é completamente removido do serviço. Nen 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). +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. [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. diff --git a/docs/glossary.zh.md b/docs/glossary.zh.md index 65af66d..8e4239e 100644 --- a/docs/glossary.zh.md +++ b/docs/glossary.zh.md @@ -92,7 +92,7 @@ DoubleZero支持的一对多数据包传送方法。多播模式有两种角色 DoubleZero基金会是一个无成员的非营利开曼群岛基金会公司,成立目的是支持DoubleZero网络的开发、去中心化、安全性和采用。 ### 2Z代币 -DoubleZero网络的原生代币。用于支付验证器费用并作为奖励分配给[贡献者](#contributor)。验证器可以通过链上兑换程序以2Z支付费用。请参阅[使用2Z支付费用](paying-fees2z.md)和[将SOL兑换为2Z](Swapping-sol-to-2z.md)。 +DoubleZero网络的原生代币。用于支付验证器费用并作为奖励分配给[贡献者](#contributor)。验证器可以通过链上兑换程序以2Z支付费用。请参阅[将SOL兑换为2Z](Swapping-sol-to-2z.md)。 ### 贡献者 向DoubleZero网络贡献带宽和硬件的网络基础设施提供商。贡献者运营[DZD](#dzd-doublezero-device),提供[WAN](#wan-link)和[DZX](#dzx-link)链路,并因其贡献而获得[2Z](#2z-token)代币激励。请参阅[贡献者文档](contribute-overview.md)以开始。 diff --git a/docs/paying-fees.es.md b/docs/paying-fees.es.md deleted file mode 100644 index 4ec838e..0000000 --- a/docs/paying-fees.es.md +++ /dev/null @@ -1,88 +0,0 @@ -# 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 deleted file mode 100644 index 5365fdf..0000000 --- a/docs/paying-fees.fr.md +++ /dev/null @@ -1,89 +0,0 @@ -# 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 deleted file mode 100644 index 1e367ea..0000000 --- a/docs/paying-fees.it.md +++ /dev/null @@ -1,89 +0,0 @@ -# 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 deleted file mode 100644 index 9b0576d..0000000 --- a/docs/paying-fees.ja.md +++ /dev/null @@ -1,89 +0,0 @@ -# バリデーターの料金体系 -!!! 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 deleted file mode 100644 index 892679d..0000000 --- a/docs/paying-fees.ko.md +++ /dev/null @@ -1,89 +0,0 @@ -# 검증자 가격 및 수수료 -!!! 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 deleted file mode 100644 index 78718b1..0000000 --- a/docs/paying-fees.pt.md +++ /dev/null @@ -1,89 +0,0 @@ -# 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 deleted file mode 100644 index 7aae7d0..0000000 --- a/docs/paying-fees.zh.md +++ /dev/null @@ -1,89 +0,0 @@ -# 验证器定价与费用 -!!! 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 deleted file mode 100644 index 9e53292..0000000 --- a/docs/paying-fees2z.es.md +++ /dev/null @@ -1,101 +0,0 @@ -**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 deleted file mode 100644 index 3ae6642..0000000 --- a/docs/paying-fees2z.fr.md +++ /dev/null @@ -1,102 +0,0 @@ -**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 deleted file mode 100644 index 49584b9..0000000 --- a/docs/paying-fees2z.it.md +++ /dev/null @@ -1,101 +0,0 @@ -**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 deleted file mode 100644 index 423f36d..0000000 --- a/docs/paying-fees2z.ja.md +++ /dev/null @@ -1,101 +0,0 @@ -**コードまたは関連資料にアクセスまたは使用する前に免責事項を確認してください。** -!!! 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 deleted file mode 100644 index bac0595..0000000 --- a/docs/paying-fees2z.ko.md +++ /dev/null @@ -1,100 +0,0 @@ -**코드 또는 관련 자료에 액세스하거나 사용하기 전에 면책 조항을 검토하세요.** -!!! 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 deleted file mode 100644 index 06330dd..0000000 --- a/docs/paying-fees2z.pt.md +++ /dev/null @@ -1,101 +0,0 @@ -**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 deleted file mode 100644 index 72d3a76..0000000 --- a/docs/paying-fees2z.zh.md +++ /dev/null @@ -1,101 +0,0 @@ -**在访问或使用代码或相关材料之前,请查看免责声明。** -!!! 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 -```