Por supermeia da TupiNymQuim
Considere nos dar suporte por meio de stake em algum dos seguintes mixnodes:
Se estiver aqui apenas para saber o passo a passo de como atualizar sem perder o routing score, pode passar diretamente para o tutorial.
A atualização do mixnode é um processo muito simples, mas tem um efeito secundário indesejável de baixar o routing score do seu node durante um período de tempo. O objetivo deste guia é te dar o passo a passo de como começar a atualizar o seu mixnode com um método que lhe permite não perder o seu precioso routing score
O motivo por trás da queda do routing score não está confirmado (pelo menos que eu saiba), mas depois de alguma experiência na execução de mixnodes e na observação de seu comportamento. Ficou claro para mim que a queda do routing score está diretamente relacionada à reinicialização do processo que executa o mixnode. Isso significa que, se o processo do seu mixnode em execução for reiniciado por qualquer motivo (desligamento do servidor, reinicialização do servidor, interrupção manual etc.), o routing do seu mixnode começará a cair automaticamente depois disso.
P: Então, como é possível atualizar o mixnode sem perder o routing score?
R: Simplesmente não interrompendo o processo do mixnode!
Em resumo, o que faremos para evitar a interrupção do processo do mixnode é:
Este guia pressupõe que você tenha um mixnode já instalado com a configuração de automação do systemd. Se esse não for o seu caso, consulte a documentação oficial da Nym para obter um guia sobre o processo de instalação e automação.
Se esta for a primeira vez que usa esse método, você deverá seguir as etapas da seção Setup pela primeira vez.
Esse tutorial foi montado com VPSes rodando Ubuntu 20.04.
Ao longo deste guia, o mixnode original será chamado de <DEFAULT>
e
presume-se que esteja sendo executado nas portas padrão. O mixnode clonado em
execução com portas alternativas será chamado de <ALTERNATE>
. Sempre que essas
strings aparecerem nos comandos, você precisará substituí-las de acordo com sua
configuração.
Neste guia, as portas alternativas usadas são 1337, 1338 e 1339. Essa escolha não tem nenhum motivo específico e você pode escolher outras portas sem nenhuma implicação na eficácia do método.
Antes de começar a atualizar sem que seu routing score caia, você precisará fazer algumas configurações iniciais.
Para podermos executar dois processos mixnodes ao mesmo tempo, precisaremos clonar nosso mixnode.
Podemos fazer isso executando o seguinte comando:
cp -rf $HOME/.nym/mixnodes/<DEFAULT> $HOME/.nym/mixnodes/<ALTERNATE>
Para que o mixnode <ALTERNATE>
possa ser executado, precisaremos executá-lo
com portas diferentes das do mixnode <DEFAULT>
. E, por isso, precisamos
permitir essas portas alternativas em nosso firewall.
Podemos permitir as portas com o seguinte comando:
sudo ufw allow 1337,1338,1339/tcp
Você pode verificar as portas permitidas com o seguinte comando:
sudo ufw status
Como nossos mixnodes serão executados com binários diferentes, é uma boa ideia criar uma estrutura de diretórios para armazenar os binários de forma organizada.
Podemos criar os diretórios para nossos binários com os seguintes comandos:
mkdir -p $HOME/binaries/<DEFAULT>
mkdir -p $HOME/binaries/<ALTERNATE>
Com isso, teremos uma estrutura de diretórios de tal forma:
└──── $HOME
└── binaries
├── <DEFAULT>
└── <ALTERNATE>
Agora que temos uma estrutura para armazenar os diferentes binários, podemos
criar o arquivo de serviço para o nosso mixnode <ALTERNATE>
. Esse arquivo de
serviço será muito semelhante ao que temos para o nosso mixnode <DEFAULT>
,
apenas mudaremos o caminho no Execstart.
Crie o seguinte arquivo de serviço /etc/systemd/system/<ALTERNATE>.service
e
coloque isso dentro dele:
Substitua <USER> pelo seu username e <VERSION> pela versão do binário.
[Unit]
Description=Nym Mixnode <VERSION>
StartLimitInterval=350
StartLimitBurst=10
[Service]
User=<USER>
LimitNOFILE=65536
ExecStart=/home/<USER>/binaries/<ALTERNATE>/nym-mixnode run --id <ALTERNATE>
KillSignal=SIGINT
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Você também deve alterar o arquivo de serviço do mixnode <DEFAULT>
para
apontar também para o novo diretório, mas não recarregue o daemon ainda.
Modifique o arquivo de serviço /etc/systemd/system/<DEFAULT>.service
para
ficar dessa forma:
Substitua <USER> pelo seu username e <VERSION> pela versão do binário.
[Unit]
Description=Nym Mixnode <VERSION>
StartLimitInterval=350
StartLimitBurst=10
[Service]
User=<USER>
LimitNOFILE=65536
ExecStart=/home/<USER>/binaries/<DEFAULT>/nym-mixnode run --id <DEFAULT>
KillSignal=SIGINT
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Com isso, todas as etapas de configuração foram concluídas e podemos prosseguir com a atualização do node sem perder o routing score.
Nesta seção, presume-se que você tenha feito a configuração apresentada na seção anterior.
Nesta seção, serão mostradas 2 opções de comandos:
<DEFAULT>
desatualizado: se o seu mixnode desatualizado é aquele com as
portas padrões<ALTERNATE>
desatualizado: se o seu mixnode desatualizado é aquele com as
portas alternativasSe essa for sua primeira vez seguindo o tutorial você irá seguir os passos marcados como
<DEFAULT>
desatualizado
Se você não souber como obter os binários, poderá encontrar instruções na documentação oficial da Nym.
Depois de baixar ou compilar o binário nym-mixnode atualizado, será necessário movê-lo para o diretório correspondente:
Substitua <PATH_TO_UPDATED_BINARY> pelo path aonde você baixou ou compilou o binário atualizado
Para <DEFAULT>
desatualizado.
mv <PATH_TO_UPDATED_BINARY>/nym-mixnode $HOME/binaries/<ALTERNATE>/
Para <ALTERNATE>
desatualizado.
mv <PATH_TO_UPDATED_BINARY>/nym-mixnode $HOME/binaries/<DEFAULT>/
Agora você precisa iniciar o node com o novo binário:
Para <DEFAULT>
desatualizado.
$HOME/binaries/<ALTERNATE>/nym-mixnode init --id <ALTERNATE> --host $(curl -4 https://ifconfig.me) --mix-port 1337 --verloc-port 1338 --http-api-port 1339
Para <ALTERNATE>
desatualizado.
$HOME/binaries/<DEFAULT>/nym-mixnode init --id <DEFAULT> --host $(curl -4 https://ifconfig.me)
Agora que seu mixnode está atualizado e precisamos colocá-lo em funcionamento, podemos fazer isso habilitando e iniciando seu serviço:
Para <DEFAULT>
desatualizado.
sudo systemctl enable <ALTERNATE>.service
sudo systemctl start <ALTERNATE>.service
Para <ALTERNATE>
desatualizado.
sudo systemctl enable <DEFAULT>.service
sudo systemctl start <DEFAULT>.service
Você pode verificar se o mixnode está sendo executado corretamente com o seguinte comando:
Para <DEFAULT>
desatualizado.
systemctl status <ALTERNATE>.service
Para <ALTERNATE>
desatualizado.
systemctl status <DEFAULT>.service
Agora você precisa atualizar as portas e a versão do mixnode na wallet, para que o mixnode atualizado comece a receber pacotes.
Para fazer isso, você precisa abrir a wallet, clicar em Bonding e ir para
Node Settings: Bonding -> Node Settings
Na página de configurações do node, você precisará atualizar os campos de acordo:
Para <DEFAULT>
desatualizado.
Mix port = 1337
Verloc port = 1338
HTTP port = 1339
Version = nova versão do mixnode
Para <ALTERNATE>
desatualizado.
Mix port = 1789
Verloc port = 1790
HTTP port = 8000
Version = nova versão do mixnode
Depois disso o mixnode atualizado estará recebendo os pacotes
Depois de esperar 1 hora a partir do momento em que você atualizou as portas na wallet, você pode desligar o serviço que está executando o mixnode desatualizado:
O intervalo de tempo ainda não foi totalmente testado, mas 1 hora deve ser um intervalo seguro para que o seu routing score não caia. O intervalo está sendo testado e deve diminuir para em torno de 10 minutos.
Para <DEFAULT>
desatualizado.
sudo systemctl disable <DEFAULT>.service
sudo systemctl stop <DEFAULT>.service
Para <ALTERNATE>
desatualizado.
sudo systemctl disable <ALTERNATE>.service
sudo systemctl stop <ALTERNATE>.service
Se esta foi a primeira vez que você atualizou com esse método, deverá
recarregar o daemon para registrar as alterações que fizemos no arquivo de
serviço <DEFAULT>
. Você pode fazer isso executando o seguinte comando:
sudo systemctl daemon-reload
Com isso, seu mixnode agora está sendo executado com o binário mais recente e seu routing score permaneceu intacto.
Se você tiver alguma contribuição que gostaria de fazer, sinta-se à vontade para abrir um pull request ou uma issue no repositório do github.
E se isso foi útil para você, considere nos apoiar dando stake em um dos seguintes mixnodes: