XCHPool · Entre no pool · NanoFarmer · Explorador da blockchain Chia · My Farm · News · FAQ

Como o NanoFarmer funciona

Como funciona o NanoFarmer

XCHPool NanoFarmer · Detalhes técnicos

O que corre no seu computador, o que a XCHPool corre, que mensagens circulam entre eles e o que protege as suas chaves e as suas recompensas. Escrito para farmers que querem conhecer os detalhes.

Farmer e harvester da Chia 2.7.4

Protocolo do farmer 0.0.38

Protocolo de pooling v1, plot NFTs

Um único WebSocket de saída

O que faz um nó completo e o que o NanoFarmer muda

O farming de Chia exige três programas que trabalham em conjunto. A aplicação oficial da Chia corre os três no seu computador. O NanoFarmer mantém dois deles no seu computador e deixa a XCHPool correr o terceiro.

Harvester

Lê os seus plots. Em cada signage point aplica o filtro de plots, que só deixa passar uma pequena parte dos plots (na mainnet, atualmente 1 em 256), e procura provas de espaço nos plots que passam.

Farmer

Envia cada signage point ao harvester e recebe as provas dele. Uma prova que cumpre a sua dificuldade na pool torna-se um partial para a pool; uma prova suficientemente boa para ganhar um bloco vai para o nó completo. Juntamente com o harvester, assina partials e blocos.

Nó completo

Guarda uma cópia de toda a blockchain (bem mais de 100 GB) e mantém-se sincronizado com a rede. Entrega um novo signage point a cada 9,4 segundos, aproximadamente, e constrói e transmite o bloco quando a sua prova ganha.

O NanoFarmer corre no seu computador o farmer e o harvester da própria Chia, sem alterações, e substitui o nó completo por uma única ligação à XCHPool. Os nós completos da XCHPool entregam os signage points e constroem o bloco quando ganha. Nada para descarregar nem sincronizar, e as suas chaves ficam consigo.

O seu computador, com toda a blockchain

Os nós completos da XCHPool, através do gateway

Não incluída: importe as suas palavras para o Sage ou para a carteira Chia para ver as suas recompensas

Os componentes

O que faz cada parte, onde corre e com que tecnologia é feita.

Aplicação NanoFarmer

Pode arrancar quando inicia sessão: uma entrada por utilizador no Windows, um LaunchAgent no macOS, um serviço de utilizador systemd no Linux. Sem direitos de administrador. No Windows, um ícone na área de notificação volta a abrir a janela depois de a fechar e encerra o NanoFarmer.

Um único programa por sistema. Corre como agente em segundo plano que supervisiona o motor, corre o uplink, serve a interface local e instala as atualizações.

A janela é uma janela nativa no macOS e uma janela de aplicação do Edge ou do Chrome (ou do seu navegador predefinido) no Windows e no Linux. Fechá-la não interrompe o farming.

Uma linha de comandos com as mesmas funções, para que o NanoFarmer também corra sem ecrã por SSH, por exemplo num Raspberry Pi.

Uplink

Quando a ligação cai, volta a ligar-se sozinho, com uma pausa que cresce de 1 a 30 segundos.

Um nó completo substituto em 127.0.0.1. O farmer da Chia liga-se a ele exatamente como se ligaria a um nó completo real, por TLS 1.3 com o certificado do próprio motor.

Copia as mensagens da Chia byte a byte para um único WebSocket até ao gateway. Só se acrescentam algumas mensagens de texto do próprio gateway (uma saudação, avisos, estatísticas); nunca chegam ao farmer, e os avisos aparecem na aplicação.

A guarda de assinatura do uplink verifica as poucas mensagens que importam para as suas recompensas (ver Chaves e confiança).

Gateway

Só encaminha provas de plot NFTs que fazem farming para a XCHPool. Limita as ligações por endereço de internet e no total, e diz à aplicação porquê quando recusa uma.

Faz parte do servidor NanoFarmer e assenta no próprio código de rede da Chia 2.7.4. Para o seu farmer é um nó completo; para os nós completos da XCHPool é um farmer.

Envia cada novo signage point uma vez a cada NanoFarmer ligado, e o mais recente logo após se ligar.

Verifica rigorosamente cada prova declarada antes de um nó completo a ver: um signage point real, um plot de plot NFT, uma prova válida que ganha de facto, assinaturas que coincidem, nenhuma repetição.

Servidor NanoFarmer

Um serviço REST em https://pool.xchpool.org, feito para a aplicação. Um navegador só lê os ficheiros de versão e os manifestos de atualização públicos, como faz a página do NanoFarmer para as suas transferências.

Encontra os seus plot NFTs, prepara a criação e a adesão pagas pela pool e disponibiliza as versões e os manifestos de atualização assinados.

Paga os novos plot NFTs e as taxas de adesão a partir de uma carteira financiadora própria, separada das carteiras da própria pool.

Pool

A mesma XCHPool com que todos os membros fazem farming, através do protocolo de pooling v1 padrão.

O seu farmer regista-se sozinho e envia os seus partials diretamente para a pool, não através do gateway. Os pontos e os pagamentos funcionam como para qualquer outro membro.

Chain API

A API pública da blockchain da XCHPool, um serviço separado do servidor NanoFarmer.

A aplicação usa-a para encontrar a moeda de um plot NFT na blockchain antes de confiar nele e, antes de uma adesão a partir de self-pooling, para verificar se há recompensas ainda à espera no plot NFT.

Explorador e My Farm

«Abrir a My Farm» na aplicação inicia a sua sessão com o link de início de sessão da pool do seu plot NFT.

Cada instalação do NanoFarmer é um harvester à parte na My Farm. Pouco depois de a pool aceitar o primeiro partial da instalação, a aplicação dá-lhe o nome do dispositivo (marca, modelo e sistema; nunca o nome do seu computador nem o seu nome de utilizador). Pode mudar o nome na aplicação ou na My Farm.

O cartão de tempos de resposta dos partials mostra a rapidez com que cada harvester responde.

Do signage point ao partial ou ao bloco

O que acontece a cada 9,4 segundos, aproximadamente, com os nomes de mensagem que a Chia usa.

Um novo signage point

Os nós completos da XCHPool enviam cada signage point ao gateway, que o passa uma vez a cada NanoFarmer ligado.

Verificado e entregue

O uplink verifica se os hashes do signage point coincidem com os dados enviados com ele e depois entrega-o ao farmer.

Filtro de plots e procura

O harvester aplica o filtro de plots, procura provas nos plots que passam e devolve todas as provas que encontra.

Partial para a pool

Uma prova que cumpre a sua dificuldade na pool torna-se um partial. O harvester assina-o com a chave do plot, o farmer acrescenta a sua própria assinatura e envia-o diretamente para a pool por HTTPS. A pool verifica-o, atribui pontos e regista o tempo de resposta.

Declarada

Uma prova suficientemente boa para um bloco é declarada. O uplink exige que contenha o seu próprio endereço de recompensa e pede os dados por trás dos hashes que lhe vão pedir para assinar. O gateway verifica a prova e se ela ganha mesmo, e depois passa-a aos nós completos. Uma prova que não ganha faria um nó completo cortar a ligação do gateway, e é por isso que o gateway verifica com tanto rigor.

Assinado

O nó completo constrói o bloco e pede as respetivas assinaturas. O uplink só deixa passar esse pedido quando o bloco paga a recompensa do farmer ao seu endereço. O harvester assina, e as assinaturas voltam pelo mesmo caminho.

Transmitido

O nó completo conclui o bloco e transmite-o. A recompensa do farmer (0,125 XCH mais as taxas do bloco) vai para o seu endereço de recompensa; a parte da pool vai para o endereço de pool do seu plot NFT, onde a XCHPool a recolhe.

Chaves e confiança

As suas chaves ficam no seu computador. Eis o que isso significa na prática, o que o NanoFarmer assina e não assina, e o que o lado da XCHPool pode e não pode fazer.

Onde fica a sua chave

As Definições podem mostrar de novo as palavras para as escrever em papel: só depois de confirmar, com a frase-passe quando existe uma, sem botão de copiar, e voltam a ocultá-las ao fim de um minuto.

O NanoFarmer cria uma chave nova de 24 palavras ou importa a sua e guarda-a num porta-chaves Chia próprio, numa pasta de dados própria, nunca na pasta de chaves da aplicação oficial da Chia.

O farmer lê desse porta-chaves as chaves de farmer, de início de sessão na pool e de proprietário do plot NFT. As palavras nunca saem do seu computador e nunca são escritas em nenhum registo.

Uma frase-passe opcional (pelo menos 8 caracteres) cifra o porta-chaves. O NanoFarmer guarda-a no gestor de credenciais do seu sistema para que o farming arranque sozinho; onde não existe, pede a frase-passe após cada arranque.

O que o NanoFarmer assina e o que recusa

Valores da pool: o URL da pool, o endereço de destino da pool, a altura de bloqueio e o tempo de atraso estão incorporados na aplicação. A aplicação recusa criar, juntar ou assinar tudo o que for diferente, diga um servidor o que disser.

Gastos do plot NFT: o auxiliar reconstrói cada gasto que o servidor propõe a partir do próprio código de puzzles da Chia, compara-o com os valores da pool incorporados na aplicação e só então assina. Nunca assina um hash que não consiga reconstruir.

Blocos: o farmer da Chia assina hashes de blocos sem ver o que representam, e o nó completo tira o endereço de recompensa do farmer de um campo não assinado. Por isso, a guarda de assinatura do uplink só deixa passar um pedido de assinatura quando vem acompanhado dos dados do bloco por trás dele, que coincidem com os hashes e pagam a recompensa do farmer ao endereço configurado pelo NanoFarmer.

Signage points: a chave do plot que assina signage points também assina blocos. A guarda só deixa passar signage points cujos hashes são os hashes dos seus próprios dados de origem, que nunca podem ser dados de um bloco, e nunca mais do que algumas vezes o ritmo da própria cadeia.

O que o lado da XCHPool pode e não pode fazer

As regras de consenso da Chia enviam a parte da pool de cada bloco para o endereço de pool do seu plot NFT, como em qualquer pool.

O gateway e os nós completos da XCHPool poderiam reter ou estragar um bloco que ganhe, como poderia qualquer nó completo em que confie. Não podem fazer o NanoFarmer assinar um bloco que pague a sua recompensa de farmer a outra pessoa.

Signage points inventados (o protocolo do farmer da Chia não transporta prova de tempo) só custariam ao seu harvester algumas procuras, que a guarda limita, e nunca produziriam uma assinatura que sirva para um bloco.

O que a aplicação envia

Ao explorador: o nome do seu harvester, formado pela marca, modelo e sistema do dispositivo.

Ao gateway: as mensagens do farmer da Chia (as suas provas e assinaturas), mais a versão da aplicação e do motor, o seu tipo de sistema e um ID de instalação aleatório.

À pool: os seus partials e o registo da sua farm, como qualquer farmer Chia.

Ao servidor NanoFarmer: chaves públicas para encontrar e criar o seu plot NFT, e o plot NFT que junta à pool. Nunca uma chave privada e nunca as suas palavras.

A interface local

A janela e a linha de comandos comunicam com a aplicação apenas em 127.0.0.1, com um token aleatório novo a cada arranque, verificações rigorosas de host e de origem e uma política de segurança de conteúdo rigorosa, para que as páginas web não a possam usar.

Plot NFT: criar e juntar

O NanoFarmer faz farming de plots de plot NFT com o protocolo de pooling v1. No passo 2 da aplicação, procura plot NFTs nas primeiras 20 chaves de proprietário da sua chave e depois usa um, junta-o à pool ou cria um novo.

O que o NanoFarmer encontra

Um plot NFT que faz farming para a XCHPool

É usado tal como está, depois de a aplicação verificar na blockchain que pertence à sua chave.

Um plot NFT em self-pooling

Um único gasto de adesão. As recompensas ainda à espera no plot NFT são primeiro reclamadas para si.

Dois gastos: sair agora e juntar-se quando a altura de bloqueio da outra pool tiver passado. Assina os dois de uma vez; o servidor envia o segundo quando chegar a altura.

A pool acrescenta as taxas

É criado um plot NFT novo para si. Fica pronto após 3 confirmações, normalmente em poucos minutos.

A pool paga o 1 mojo e a taxa

A moeda da pool paga 1 mojo ao seu próprio endereço, e a sua chave transforma esse mojo no launcher do plot NFT na mesma transação. Assim, o plot NFT é seu desde o início: a carteira Chia encontra-o, e pode sair da XCHPool com as ferramentas normais.

A criação gratuita está limitada a uma vez por endereço de internet a cada 24 horas e a uma vez por chave.

A aplicação escreve o plot NFT nas definições de pool do motor; depois o farmer regista-se sozinho na pool.

O servidor prepara os gastos; o auxiliar reconstrói cada um com o próprio código da Chia e só assina quando o gasto termina na XCHPool com a sua própria chave de proprietário.

A aplicação só dá uma adesão por concluída quando a blockchain a mostra, diga o servidor o que disser.

Uma adesão que só pudesse concretizar-se daqui a mais de cerca de um dia (uma altura de bloqueio longa na pool antiga) é recusada antes de se assinar o que quer que seja. A taxa de adesão paga pela pool tem limites próprios; acima deles, a adesão faz-se na mesma, sem a taxa da pool.

Valores da pool incorporados na aplicação

100 blocos, cerca de meia hora: a espera quando um plot NFT sai da XCHPool

7 dias (604 800 segundos): as recompensas que a pool não recolher nesse tempo podem ser reclamadas de volta para o seu endereço

Atualizações e segurança das versões

A aplicação e o motor atualizam-se separadamente. Um motor novo é descarregado enquanto faz farming e entra em funcionamento quando não há nenhuma tarefa de plot NFT a decorrer; se não arrancar, volta o motor anterior. Uma nova versão da aplicação é usada a partir do próximo arranque da aplicação, ou de imediato quando atualiza a partir da aplicação.

A aplicação procura atualizações no arranque e a cada 6 horas, com base num manifesto assinado com uma chave Ed25519. Há duas chaves públicas incorporadas, para que a chave de assinatura possa ser substituída.

O manifesto indica cada ficheiro com o seu tamanho e SHA-256, expira ao fim de algum tempo, pode definir uma versão mínima e nunca faz a aplicação ou o motor voltar a uma versão anterior.

Dois canais, estável e beta. Uma nova versão pode chegar primeiro a uma parte das instalações, escolhidas por um hash do ID de instalação aleatório.

A versão anterior de cada um fica no disco para permitir reverter.

A chave de assinatura é guardada offline numa única máquina, nunca num servidor nem no pipeline de compilação.

O ficheiro de checksums de cada versão também é assinado, para os primeiros downloads, e a página do NanoFarmer mostra o SHA-256 de cada ficheiro.

Os programas ainda não têm assinatura de código com certificados da Apple ou da Microsoft, por isso o seu sistema pede-lhe que confirme o primeiro arranque.

O motor guarda o seu porta-chaves e atualiza-se sem um clique, por isso uma única máquina de compilação não pode bastar para publicar um motor. Cada versão do motor é compilada duas vezes a partir de um commit com tag, em dois ambientes de compilação limpos e separados. A compilação é reprodutível, e a ferramenta de assinatura recusa assinar a menos que ambas as compilações tenham produzido pacotes idênticos byte a byte.

Plataformas e requisitos

Instalador (por utilizador) ou zip portátil

macOS 15 ou mais recente, Apple silicon

macOS 15 ou mais recente, Intel

Linux x86-64, glibc 2.28 ou mais recente

Linux ARM64, glibc 2.28 ou mais recente (Raspberry Pi 4 e 5 com um sistema de 64 bits)

tar.gz com script de instalação e serviço de utilizador systemd

Disco

Cerca de 1 GB livre para a aplicação, o motor, a versão anterior de cada um e os registos. Sem blockchain.

Rede

Portas locais

O motor usa portas próprias ao lado das predefinidas da Chia: daemon 55410, farmer 8457, uplink 8454, RPC do farmer 8569, RPC do harvester 8570. Quando uma está ocupada, o conjunto inteiro sobe 100.

Temporização e tempos de resposta

O farming de Chia funciona ao ritmo de um relógio. Estes são os números que importam.

Os partials não passam pelo gateway. Só o signage point vem dos nós completos da XCHPool até si através do gateway; o farmer envia o partial diretamente para a pool.

64 signage points em cada sub-slot de 10 minutos

o harvester da Chia avisa quando a procura num plot demora mais

do signage point à infusão do bloco: a prova, o bloco e as suas assinaturas têm de estar prontos antes disso

o tempo que o gateway dá ao seu farmer para devolver as assinaturas de um bloco

A pool mede o tempo de resposta de cada partial: desde o momento em que o signage point chegou à pool até ao momento em que o seu partial chegou. Um partial que chegue depois do limite de tempo da pool é recusado por chegar tarde demais e não rende nada.

A My Farm mostra os seus tempos de resposta por harvester: a mediana, o percentil 95 e a sua margem até ao limite, com o limite desenhado como uma linha vermelha tracejada. Numa farm NanoFarmer, o tempo inclui a retransmissão pelo gateway; as causas habituais de respostas lentas são discos lentos ou em repouso, plots em armazenamento de rede e um computador sobrecarregado.

O que o NanoFarmer não faz

Sem nó completo: não descarrega, não guarda nem sincroniza a blockchain.

Sem carteira: para ver ou enviar as suas recompensas, importe as suas palavras para o Sage ou para a carteira Chia.

Sem plots OG: os plots feitos com uma chave pública da pool (-p) são ignorados, e a aplicação lista-os para saber quais são.

Sem criação de plots: a aplicação explica os plotters e preenche o comando, mas não cria plots.

Sem outras pools, por agora: só faz farming de plot NFTs na XCHPool.

Sem plots acima de C7, nem plots comprimidos do Gigahorse, plots do NoSSD ou plots do DrPlotter: a Chia 2.7.4 não consegue fazer farming deles.

Ainda sem plots de Proof of Space 2: precisam da Chia 3.0, para a qual o motor pode passar através de uma atualização própria.

Sem reencaminhamento de portas: todas as ligações saem do seu computador.

Escolhas de design

Um WebSocket em vez da porta de peers da Chia

Nenhum protocolo de farming novo

O WebSocket transporta as próprias mensagens do protocolo do farmer da Chia byte a byte. O farmer é o da Chia, sem alterações, e não consegue perceber que não está a falar com um nó completo real.

Matemática das chaves só no código da Chia

A Chia deriva as suas chaves à sua maneira, e outra biblioteca poderia errar sem que ninguém reparasse. Por isso, todas as derivações de chaves e assinaturas da Chia são feitas pelo próprio código da Chia no motor; a aplicação em Go não faz nenhuma.

Aplicação e motor separados

A aplicação em Go continua pequena, e o motor pode passar para uma nova versão da Chia ao seu próprio ritmo, como a Chia 3.0 antes do fork do Proof of Space 2.

Perguntas e respostas

A XCHPool pode desviar a minha recompensa de bloco?

A recompensa do farmer, não: o NanoFarmer só assina um bloco que a pague ao seu endereço. A parte da pool vai para o endereço de pool do seu plot NFT pelas regras da Chia, como em qualquer pool. O que o lado da XCHPool poderia fazer é reter um bloco que ganhe, como poderia qualquer nó completo em que confie.

O que acontece quando a minha ligação à internet cai?

O uplink volta a ligar-se sozinho, com uma pausa que cresce de 1 a 30 segundos, e o farmer da Chia volta a ligar-se ao uplink. Se a ligação cair entre uma prova vencedora e o pedido de assinatura, o gateway envia o pedido para a sua nova ligação.

Posso correr o NanoFarmer em vários computadores com uma só chave?

Sim. Cada instalação cria os seus próprios certificados de harvester, por isso cada computador aparece na My Farm como um harvester à parte, com o seu próprio nome.

Posso sair da XCHPool?

Sim. O plot NFT é seu, e a carteira Chia pode movê-lo para outra pool ou para self-pooling. A altura de bloqueio da XCHPool é de 100 blocos, cerca de meia hora.

Porque é que a aplicação não envia os partials através do gateway?

Não precisa. Os partials usam o protocolo de pooling padrão por HTTPS, exatamente como para um farmer com um nó completo. Só a parte do nó completo passa para a XCHPool.