Ir para o conteúdo

Conexão de Validador à Testnet no Modo IBRL

Ao conectar-me à testnet DoubleZero, concordo com os termos do Acordo de Avaliação estabelecidos aqui (clique para expandir)

DoubleZero Testnet Acordo de Avaliação

Ao acessar ou usar a Solução (definida abaixo), você concorda, a partir da primeira data de tal acesso (a "Data de Vigência"), que este Acordo de Avaliação (o "Acordo") estabelece os termos e condições sob os quais a DoubleZero Foundation ("DZF") fornecerá a você ("Usuário" ou "você") acesso à Solução em caráter de avaliação. Em consideração às promessas mútuas aqui contidas, você concorda com o seguinte:

1. DEFINIÇÕES.

1.1 "Informação Confidencial" significa toda e qualquer informação divulgada por qualquer das partes à outra que seja designada como confidencial, ou que de outra forma deva ser entendida como confidencial, incluindo, mas não se limitando a, a Solução, planos de produto, planos de negócios, segredos comerciais, tecnologia ou qualquer outra informação proprietária.

1.2 "Solução" significa a versão testnet da infraestrutura de rede de alto desempenho DoubleZero para projetos web3 ("Testnet") e o serviço de filtragem de borda relacionado com largura de banda integrada ("Serviço de Informação"), o Software DZ (definido abaixo), quaisquer e todos os materiais fornecidos pela DZF relativos ao Software DZ ("Documentação"), e outros materiais que a DZF forneça ao Usuário nos termos deste instrumento.

2. ACESSO.

2.1 Acesso à Solução. Sujeito aos termos e condições deste Acordo, a DZF fornecerá ao Usuário acesso à Solução através da Internet. O acesso do Usuário é um uso não exclusivo, intransferível e limitado da Solução para permitir que o Usuário avalie apenas o Serviço de Informação. Com relação a qualquer software que componha a Solução ("Software DZ"), a DZF concede ao Usuário uma licença limitada e revogável, durante o Período de Avaliação, para copiar, baixar, fazer um número razoável de cópias, executar e implantar (conforme aplicável) tal Software DZ exclusivamente conforme contemplado pela Documentação.

2.2 Restrições. O Usuário pode usar a Solução de acordo com este Acordo a partir da Data de Vigência até a rescisão pela DZF (o "Período de Avaliação"). O Usuário entende que quaisquer direitos de uso da Solução além do Período de Avaliação estarão sujeitos a um acordo comercial separado entre as partes a esse respeito, incluindo o pagamento de taxas. O Usuário não deverá, e não permitirá que terceiros: (i) modifiquem ou criem quaisquer trabalhos derivados baseados na Solução ou qualquer parte dela; (ii) reproduzam a Solução exceto conforme expressamente permitido por este Acordo; (iii) sublicenciem, distribuam, vendam, emprestem, aluguem, arrendem, transfiram ou concedam quaisquer direitos sobre toda ou qualquer parte da Solução ou forneçam acesso à Solução a terceiros, em regime de bureau de serviços ou de outra forma, exceto como oferta dos Serviços de Informação através de ou em conexão com a plataforma ou produto do Usuário e não de forma independente; ou (iv) usem a Solução de forma diferente da prevista neste instrumento.

2.3 Propriedade. A DZF retém todos os direitos, títulos e interesses, incluindo direitos de propriedade intelectual, sobre a Solução.

3 FEEDBACK. A DZF pode periodicamente solicitar que o Usuário forneça, e o Usuário concorda em fornecer à DZF, feedback sobre o uso, operação e funcionalidade da Solução ("Feedback"). O Usuário concede à DZF um direito e licença não exclusivos, mundiais, perpétuos, irrevogáveis, livres de royalties, totalmente pagos, totalmente sublicenciáveis e transferíveis para usar e incorporar o Feedback em quaisquer produtos e serviços, para fabricar, usar, vender, oferecer para venda, importar e de outra forma explorar tais produtos e serviços, e para de outra forma usar, copiar, distribuir e explorar o Feedback sem restrições.

4. PRAZO E RESCISÃO.

4.1 Prazo. Este Acordo terá início na Data de Vigência e permanecerá em pleno vigor e efeito durante o Período de Avaliação. Qualquer das partes pode rescindir este Acordo imediatamente por conveniência, por qualquer motivo ou sem motivo, mediante notificação escrita à outra parte (e-mail é suficiente).

4.1 Efeitos da Rescisão. Após a rescisão deste Acordo por qualquer motivo: (i) os direitos concedidos ao Usuário neste instrumento serão imediatamente encerrados; (ii) o Usuário deverá imediatamente descontinuar qualquer uso da Solução e deverá devolver ou destruir toda a Documentação e qualquer Software DZ sob seu controle; (iii) cada parte deverá prontamente devolver ou destruir todas as Informações Confidenciais e propriedade da outra parte; e (iv) as Seções 2.2, 2.3, 3, 4.2 e 5 a 8 sobreviverão.

5. CONFIDENCIALIDADE. Cada parte concorda que usará as Informações Confidenciais da outra parte exclusivamente para cumprir suas obrigações e exercer seus direitos sob este Acordo e não divulgará, ou permitirá que sejam divulgadas, as mesmas, exceto conforme permitido neste instrumento. No entanto, qualquer das partes pode divulgar Informações Confidenciais a seu pessoal, advogados e outros representantes que tenham necessidade de conhecimento e estejam vinculados por obrigações de confidencialidade não menos protetoras do que as estabelecidas neste Acordo; e conforme exigido por lei (caso em que a parte receptora fornecerá à parte divulgadora aviso prévio e oportunidade de contestar tal divulgação, e minimizará tal divulgação na extensão permitida pela lei aplicável). As obrigações de confidencialidade nesta Seção 5 não se aplicarão a informações que: (a) sejam ou se tornem geralmente conhecidas ou publicamente disponíveis sem culpa da parte receptora; (b) eram devidamente conhecidas pela parte receptora, sem restrição, antes da divulgação pela parte divulgadora; (c) foram devidamente divulgadas à parte receptora, sem restrição, por outra pessoa com autoridade legal para fazê-lo; ou (d) são desenvolvidas independentemente pela parte receptora sem uso ou referência às Informações Confidenciais da parte divulgadora. Cada parte concorda em exercer o devido cuidado na proteção das Informações Confidenciais da outra parte contra uso e divulgação não autorizados. Em caso de violação real ou ameaçada das disposições desta Seção ou das licenças aqui contidas, a parte não violadora terá direito a buscar medida cautelar imediata e outras medidas equitativas, sem renunciar a quaisquer outros direitos ou recursos disponíveis. O Usuário é responsável por manter a Solução e o sigilo de quaisquer senhas, frases-semente ou códigos que forneçam acesso à Solução como Informação Confidencial da DZF. Nada neste instrumento limita ou restringe o direito ou capacidade da DZF de usar dados relativos ao desempenho, disponibilidade, uso, integridade e segurança da Solução. Se qualquer das partes violar ou ameaçar violar as disposições desta Seção 5, cada parte concorda que a parte não violadora não terá recurso adequado em lei e, portanto, tem direito a medida cautelar imediata e outras medidas equitativas, sem fiança e sem a necessidade de demonstrar danos monetários reais.

6. ISENÇÃO DE GARANTIA; LIMITAÇÃO DE RESPONSABILIDADE.

6.1 ISENÇÃO DE GARANTIA. A SOLUÇÃO É FORNECIDA "COMO ESTÁ" SEM GARANTIA DE QUALQUER TIPO. A DZF NÃO FAZ GARANTIAS, EXPRESSAS, IMPLÍCITAS, ESTATUTÁRIAS OU DE OUTRA FORMA COM RELAÇÃO À SOLUÇÃO E DOCUMENTAÇÃO, INCLUINDO SUA CONDIÇÃO, CONFORMIDADE COM QUALQUER REPRESENTAÇÃO OU DESCRIÇÃO, E A DZF ESPECIFICAMENTE RENUNCIA A TODAS AS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO, TÍTULO E NÃO VIOLAÇÃO.

6.2 LIMITAÇÃO DE RESPONSABILIDADE. EXCETO POR VIOLAÇÃO DAS SEÇÕES 2.1, 2.2 E 5, EM NENHUM CASO QUALQUER DAS PARTES SERÁ RESPONSÁVEL PERANTE A OUTRA POR DANOS INDIRETOS, INCIDENTAIS, ESPECIAIS OU OUTROS DANOS CONSEQUENCIAIS, INCLUINDO, SEM LIMITAÇÃO, DANOS POR PERDA DE LUCROS OU USO OU PERDA DE DADOS, INCORRIDOS POR VOCÊ OU QUALQUER TERCEIRO, DECORRENTES DE OU RELACIONADOS A ESTE ACORDO, SEJA EM AÇÃO CONTRATUAL, EXTRACONTRATUAL OU DE OUTRA FORMA, MESMO QUE A OUTRA PARTE TENHA SIDO AVISADA DA POSSIBILIDADE DE TAIS DANOS. EM NENHUM CASO A RESPONSABILIDADE AGREGADA DA DZF DECORRENTE DE OU RELACIONADA A ESTE ACORDO EXCEDERÁ CEM DÓLARES ($100), SEJA EM AÇÃO CONTRATUAL, EXTRACONTRATUAL OU DE OUTRA FORMA. AS LIMITAÇÕES ANTERIORES SERÃO APLICÁVEIS NÃO OBSTANTE A FALHA DO PROPÓSITO ESSENCIAL DE QUALQUER RECURSO LIMITADO NESTE INSTRUMENTO. AS PARTES CONCORDAM QUE AS LIMITAÇÕES ANTERIORES REPRESENTAM UMA ALOCAÇÃO RAZOÁVEL DE RISCO SOB ESTE ACORDO.

7. LEI APLICÁVEL. Este Acordo e todas as questões decorrentes ou relacionadas a este Acordo serão regidos, interpretados e construídos de acordo com as leis das Ilhas Cayman. Caso surja uma controvérsia, disputa ou reclamação decorrente de ou em relação a este Acordo ("Disputa"), a parte relevante, conforme apropriado, deve dar aviso de 30 dias de tal Disputa à outra parte (a "Notificação de Disputa"). Caso a Disputa não seja resolvida ao término de 30 dias após o envio da Notificação de Disputa, a parte relevante pode iniciar procedimentos de arbitragem conforme previsto neste instrumento. Caso a Disputa permaneça ao término de 30 dias após o envio da Notificação de Disputa, a Disputa será resolvida por arbitragem administrada pelo Cayman International Mediation & Arbitration Centre (CI-MAC) de acordo com as Regras de Arbitragem do CI-MAC (as "Regras de Arbitragem") em vigor na data deste Acordo, cujas Regras de Arbitragem são consideradas incorporadas por referência a esta cláusula, e regidas pela Lei de Arbitragem (conforme alterada). A arbitragem terá sede em George Town, Grand Cayman, Ilhas Cayman e será regida pela lei das Ilhas Cayman. O idioma da arbitragem será o inglês. A arbitragem será determinada por um único árbitro a ser nomeado de acordo com as Regras de Arbitragem. Qualquer sentença ou decisão proferida pelo árbitro deverá ser por escrito e será final e vinculante para as partes sem qualquer direito de recurso, e o julgamento sobre qualquer sentença assim obtida poderá ser registrado ou executado por qualquer tribunal com jurisdição competente. Nenhuma ação judicial ou em equidade baseada em qualquer reivindicação decorrente de ou relacionada a este Acordo será instaurada em qualquer tribunal de qualquer jurisdição. Se qualquer litígio ou arbitragem for necessário para fazer cumprir os termos deste Acordo, a parte vencedora terá direito ao pagamento de seus honorários advocatícios pela outra parte. Cada parte renuncia a qualquer direito que possa ter de invocar a doutrina de forum non conveniens, de alegar que não está sujeita à jurisdição de tal arbitragem ou tribunais, ou de objetar ao foro na medida em que qualquer procedimento seja instaurado de acordo com este instrumento.

8. DISPOSIÇÕES GERAIS. Este Acordo não pode ser transferido ou cedido pelo Usuário sem o consentimento prévio por escrito da DZF. A DZF pode ceder livremente este Acordo. Todas as notificações que devam ser enviadas nos termos deste instrumento serão enviadas por e-mail (para a DZF: legal@doublezero.xyz) e consideradas recebidas no dia seguinte ao envio (com confirmação de transmissão). Se qualquer disposição deste Acordo for considerada inválida ou inexequível, as demais disposições deste Acordo permanecerão em pleno vigor e efeito. A renúncia por qualquer das partes a qualquer inadimplência ou violação deste Acordo não constituirá renúncia a qualquer outra inadimplência ou violação subsequente. Nenhuma das partes será responsável por qualquer atraso ou falha no cumprimento devido a caso fortuito, terremotos, escassez de suprimentos, dificuldades de transporte, conflitos trabalhistas, tumultos, guerra, incêndio, epidemias e ocorrências similares além de seu controle, sejam ou não previsíveis. Este Acordo, juntamente com quaisquer anexos, constitui o acordo completo entre as partes e substitui todos os acordos ou representações anteriores ou contemporâneos, escritos ou orais, relativos ao objeto aqui tratado. Este Acordo não pode ser modificado ou alterado exceto por escrito assinado por um representante devidamente autorizado de cada parte.

Conectando à Testnet no Modo IBRL

Note

O modo IBRL não requer reiniciar os clientes validadores, pois utiliza seu endereço IP público existente.

Validadores Solana Testnet completarão a conexão à Testnet DoubleZero, conforme detalhado nesta página.

Cada validador Solana possui seu próprio par de chaves de identidade; a partir dele, extraia a chave pública conhecida como ID do nó. Esta é a impressão digital única do validador na rede Solana.

Com o DoubleZeroID e o ID do nó identificados, você comprovará a propriedade da sua máquina. Isso é feito criando uma mensagem que inclui o DoubleZeroID assinada com a chave de identidade do validador. A assinatura criptográfica resultante serve como prova verificável de que você controla o validador.

Por fim, você enviará uma solicitação de conexão ao DoubleZero. Esta solicitação comunica: "Aqui está minha identidade, aqui está a prova de propriedade, e aqui está como pretendo me conectar." O DoubleZero valida essas informações, aceita a prova e provisiona o acesso à rede para o validador no DoubleZero.

Este guia permite que 1 Validador Primário se registre, e até 3 máquinas de backup/failover ao mesmo tempo.

Pré-requisitos

  • Solana CLI instalado e no $PATH
  • Para validadores: Permissão para acessar o arquivo do par de chaves de identidade do validador (ex.: validator-keypair.json) sob o usuário sol
  • Para validadores: Verifique se a chave de Identidade do validador Solana sendo conectado possui pelo menos 1 SOL
  • As regras de firewall permitem conexões de saída para o DoubleZero e Solana RPC conforme necessário, incluindo GRE (ip proto 47) e BGP (169.254.0.0/16 em tcp/179)

Info

O ID do Validador será verificado no gossip da Solana para determinar o IP de destino. O IP de destino e o ID DoubleZero serão então usados ao abrir um túnel GRE entre sua máquina e o Dispositivo DoubleZero de destino.

Considere: No caso em que você tenha um ID descartável e um ID Primário no mesmo IP, apenas o ID Primário será usado no registro da máquina. Isso ocorre porque o ID descartável não aparecerá no gossip e, portanto, não pode ser usado para verificar o IP da máquina de destino.

1. Confirmar a rede do cliente

Por favor, siga as instruções de configuração antes de prosseguir. Instale os pacotes Testnet — Testnet e Mainnet-Beta usam repositórios de pacotes diferentes.

O último passo na configuração foi desconectar-se da rede. Isso é para garantir que apenas um túnel esteja aberto na sua máquina para o DoubleZero, e que esse túnel esteja na rede correta.

Confirme que o cliente está na testnet:

doublezero status

A coluna Network deve mostrar testnet. Se estiver mainnet-beta, ou se você instalou o pacote errado, use a opção de troca por copiar e colar em solução de problemas.

Após cerca de 30 segundos, você verá os dispositivos DoubleZero disponíveis:

doublezero latency
Saída de exemplo (testnet)
doublezero latency
 pubkey                                       | code         | ip             | min      | max      | avg      | reachable
 6E1fuqbDBG5ejhYEGKHNkWG5mSTczjy4R77XCKEdUtpb | nyc-dz001    | 64.86.249.22   | 2.44ms   | 2.63ms   | 2.50ms   | true
 CT8mP6RUoRcAB67HjKV9am7SBTCpxaJEwfQrSjVLdZfD | lax-dz001    | 207.45.216.134 | 71.97ms  | 72.01ms  | 71.99ms  | true
 Cpt3doj17dCF6bEhvc7VeAuZbXLD88a1EboTyE8uj6ZL | lon-dz001    | 195.219.120.66 | 71.94ms  | 72.08ms  | 72.00ms  | true
 4Wr7PQr5kyqCNJo3RKa8675K7ZtQ6fBUeorcexgp49Zp | ams-dz001    | 195.219.138.50 | 76.55ms  | 76.65ms  | 76.61ms  | true
 29ghthsKeH2ZCUmN2sUvhJtpEXn2ZxqAuq4sZFBFZmEs | fra-dz001    | 195.219.220.58 | 83.01ms  | 83.10ms  | 83.05ms  | true
 hWffRFpLrsZoF5r9qJS6AL2D9TEmSvPUBEbDrLc111Y  | fra-dz-001-x | 195.12.227.250 | 84.87ms  | 84.91ms  | 84.89ms  | true
 8jyamHfu3rumSEJt9YhtYw3J4a7aKeiztdqux17irGSj | prg-dz-001-x | 195.12.228.250 | 95.27ms  | 95.30ms  | 95.29ms  | true
 5tqXoiQtZmuL6CjhgAC6vA49JRUsgB9Gsqh4fNjEhftU | tyo-dz001    | 180.87.154.78  | 180.96ms | 181.08ms | 181.02ms | true
 D3ZjDiLzvrGi5NJGzmM7b3YZg6e2DrUcBCQznJr3KfC8 | sin-dz001    | 180.87.102.98  | 220.87ms | 221.14ms | 220.97ms | true
A saída da Mainnet será idêntica em estrutura, mas com muito mais dispositivos disponíveis.

2. Abrir a porta 44880

Os usuários precisam abrir a porta 44880 para utilizar alguns recursos de roteamento.

Para abrir a porta 44880, você pode atualizar as tabelas IP da seguinte forma:

sudo iptables -A INPUT -i doublezero0 -p udp --dport 44880 -j ACCEPT
sudo iptables -A OUTPUT -o doublezero0 -p udp --dport 44880 -j ACCEPT

observe os flags -i doublezero0, -o doublezero0 que restringem esta regra apenas à interface DoubleZero

Ou UFW como:

sudo ufw allow in on doublezero0 to any port 44880 proto udp
sudo ufw allow out on doublezero0 to any port 44880 proto udp

observe os flags in on doublezero0, out on doublezero0 que restringem esta regra apenas à interface DoubleZero

3. Atestar a Propriedade do Validador

Com seu Ambiente DoubleZero configurado, agora é hora de atestar a Propriedade do seu Validador.

O ID DoubleZero que você criou na configuração do seu validador primário deve ser usado em todas as máquinas de backup.

O ID na sua máquina primária pode ser encontrado com doublezero address. O mesmo ID deve estar em ~/.config/doublezero/id.json em todas as máquinas do cluster.

Para realizar isso, você primeiro verificará se a máquina de onde está executando os comandos é seu Validador Primário com:

doublezero-solana passport find-validator -ut

Isso verifica se o validador está registrado no gossip e aparece no cronograma de líderes.

Saída esperada:

Connected to Solana: testnet

DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111
Detected public IP: 11.11.11.111
Validator ID: ValidatorIdentity111111111111111111111111111
Gossip IP: 11.11.11.111
In Leader scheduler
✅ This validator can connect as a primary in DoubleZero 🖥️  💎. It is a leader scheduled validator.

Info

O mesmo fluxo de trabalho é usado para uma ou várias máquinas. Para registrar uma máquina, exclua os argumentos "--backup-validator-ids" ou "backup_ids=" de quaisquer comandos nesta página.

Agora, em todas as máquinas de backup nas quais você pretende executar seu Validador Primário, execute o seguinte:

doublezero-solana passport find-validator -ut

Saída esperada:

Connected to Solana: testnet

DoubleZero ID: YourDoubleZeroAddress11111111111111111111111111111
Detected public IP: 22.22.22.222
Validator ID: ValidatorIdentity222222222222222222222222222
Gossip IP: 22.22.22.222
In Not in Leader scheduler
 ✅ This validator can only connect as a backup in DoubleZero 🖥️  🛟. It is not leader scheduled and cannot act as a primary validator.
Esta saída é esperada. O nó de backup não pode estar no cronograma de líderes no momento da criação do passe.

Agora você executará este comando em todas as máquinas de backup nas quais planeja usar a conta de voto e a identidade do seu Validador Primário.

Preparar a Conexão

Execute o seguinte comando na máquina do Validador Primário. Esta é a máquina na qual você tem stake ativo, que está no cronograma de líderes com o ID do seu validador primário no gossip da Solana, na máquina de onde você está executando o comando:

doublezero-solana passport prepare-validator-access -ut \
  --doublezero-address YourDoubleZeroAddress11111111111111111111111111111 \
  --primary-validator-id ValidatorIdentity111111111111111111111111111 \
  --backup-validator-ids ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444>

Saída de exemplo:

DoubleZero Passport - Prepare Validator Access Request
Connected to Solana: testnet

Primary validator 🖥️  💎:
  ID: ValidatorIdentity111111111111111111111111111
  Gossip: ✅ OK 11.11.11.111)
  Leader scheduler: ✅ OK (Stake: 1,050,000.00 SOL)

Backup validator 🖥️ 🛡️:
  ID: ValidatorIdentity222222222222222222222222222
  Gossip: ✅ OK (22.22.22.222)
  Leader scheduler:  ✅ OK (not a leader scheduled validator)


Backup validator 🖥️ 🛡️:
  ID: ValidatorIdentity333333333333333333333333333
  Gossip: ✅ OK (33.33.33.333)
  Leader scheduler:  ✅ OK (not a leader scheduled validator)


  Backup validator 🖥️ 🛡️:
  ID: ValidatorIdentity444444444444444444444444444
  Gossip: ✅ OK (33.33.33.333)
  Leader scheduler:  ✅ OK (not a leader scheduled validator)

  To request access, sign the following message with your validator's identity key:

  solana sign-offchain-message \
     service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \
     -k <identity-keypair-file.json>
Observe a saída no final deste comando. É a estrutura para o próximo passo.

4. Gerar Assinatura

No final do último passo, recebemos uma saída pré-formatada para solana sign-offchain-message

A partir da saída acima, executaremos este comando na máquina do Validador Primário.

  solana sign-offchain-message \
     service_key=YourDoubleZeroAddress11111111111111111111111111111,backup_ids=ValidatorIdentity222222222222222222222222222,ValidatorIdentity33333333333333333333333333,ValidatorIdentity444444444444444444444444444 \
     -k <identity-keypair-file.json>

Saída:

  Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7

5. Iniciar uma Solicitação de Conexão no DoubleZero

Use o comando request-validator-access para criar uma conta na Solana para a solicitação de conexão. O agente DoubleZero Sentinel detecta a nova conta, valida sua identidade e assinatura, e cria o passe de acesso no DoubleZero para que o servidor possa estabelecer uma conexão.

Use o ID do nó, o DoubleZeroID e a assinatura.

Note

Neste exemplo usamos -k /home/user/.config/solana/id.json para encontrar a Identidade do validador. Use o local apropriado para sua implantação local.

``` doublezero-solana passport request-validator-access -k -ut \ --primary-validator-id ValidatorIdentity111111111111111111111111111 \ --backup-validator-ids ValidatorIdentity222222222222222222222222222