Uma revisão completa desde a seleção de componentes até a configuração de software para um sistema de cultivo (mineração) de criptomoeda Chia.
Chia é uma nova criptomoeda que visa alcançar um consenso descentralizado com menor consumo de energia por transação do que seus pares. Isto é conseguido através de um algoritmo de prova de espaço em vez de prova de trabalho.
Embora a prova de trabalho dependa da computação contínua de um problema matemático (geralmente hashes como SHA256) na tentativa de encontrar resultados que correspondam a um padrão desejado, Chia depende da verificação da existência de certas propriedades em arquivos exclusivos pré-gerados chamados gráficos.
Isso é feito em um processo de duas etapas chamado agricultura consiste de:
- Plotagem onde grandes arquivos exclusivos (geralmente 101.6 GB) são criados.
- E colheita onde os arquivos criados anteriormente são verificados em busca de uma chance de ganhar a recompensa daquele bloco (atualmente 2 Chia).
Quanto mais parcelas (maior armazenamento utilizado) um nó tiver, maior será a chance de ganhar a recompensa daquele bloco. Existem 4608 chances de ganhar diariamente e a probabilidade de ganhar a recompensa desse bloco é baseada principalmente no número de lotes que alguém possui em proporção ao tamanho total da rede. Uma calculadora de ganhos é fornecida SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
Portanto, para maximizar as recompensas, queremos ter a maior quantidade de armazenamento possível e recursos computacionais suficientes para preencher esse armazenamento com parcelas.
Tal como acontece com a maioria dos problemas de design, há uma infinidade de soluções válidas para a combinação de dispositivos que podem ser usados para cultivar Chia. Para ajudar a restringir as opções, comecei decidindo algumas restrições e prioridades:
- O custo em $/TB deve ser minimizado apesar da complexidade adicional (dentro do razoável).
- Devido ao meu tempo limitado disponível para me dedicar a este projeto, o sistema deve ser composto principalmente de peças prontas para uso (sem PCBs customizados, chassis customizados, etc).
Plotagem - Processamento
Dependendo da configuração do hardware, um único gráfico pode levar de 4 a 20 horas para ser criado. Portanto, escolher o hardware de plotagem certo pode ser a diferença entre preencher toda a sua fazenda em dias ou meses.
É importante considerar não apenas a velocidade com que cada plotagem é feita, mas também o número de plotagens simultâneas que podem ser criadas. Por exemplo, uma configuração que cria 10 gráficos simultâneos de 12 horas cada produzirá 20 gráficos (~2 TB/dia), enquanto uma configuração que cria 1 gráfico simultâneo a cada 4 horas produzirá apenas 6 gráficos por dia (0.6 TB/dia).
Para minimizar custos, decidi procurar servidores desativados. Esses servidores têm algumas propriedades interessantes que podem torná-los plotadores poderosos, incluindo:
- Um grande número de núcleos pode permitir vários gráficos em paralelo. A fase 1 (cerca de metade do tempo de plotagem) é multithread (geralmente configurada para ter entre 2 e 4 threads), mas as fases restantes são de thread único.
- A RAM disponível geralmente excede a necessária para plotar (~4GB/plotagem simultânea).
- Projetado para operar com alta carga por longos períodos de tempo.
Depois de examinar dezenas de opções e configurações possíveis, optei por um HP ProLiant DL380p Gen8 com 2x Intel E5–2670 e 192 GB de RAM DDR3. Com o hyper-threading habilitado, este servidor poderia hipoteticamente suportar a plotagem simultânea de até 16 plotagens na fase 1 por menos de US$ 400.
Plotagem — Armazenamento Temporário
Devido à alta carga de gravação durante a criação da plotagem (cerca de 1.6 TB gravados para uma plotagem k=32), a escolha do meio de armazenamento temporário pode ter um impacto significativo no tempo e no custo da plotagem. Alguns pontos a considerar:
- Quanto mais rápido for o armazenamento, mais rapidamente as parcelas poderão ser criadas. Este tópico discute tempos de plotagem de 4 horas usando RAMDISK (montar uma pasta na RAM).
- Dado o grande volume de gravação, é importante considerar a resistência do meio. Um SSD NVMe de 1 TB para consumidor geralmente tem cerca de 600 TBW (terabytes gravados) de resistência antes de falhar, o que significaria que ele poderia produzir cerca de 375 parcelas.
Acabei optando por comprar um HP StorageWorks D12 de 2600 compartimentos com unidades SAS de 15K e 450GB. Com esta configuração, posso plotar simultaneamente para cada unidade sem arriscar a contenção de E/S no nível da unidade. As unidades JBOD + eram significativamente mais baratas do que uma configuração equivalente com unidades NVMe (sem sequer levar em consideração o custo de substituição após o TBW ser atingido).
Fazenda – Armazenamento de Longo Prazo
Ao contrário do armazenamento de plotagem, o armazenamento de colheita não requer alto rendimento ou IOPs. Por esse motivo, minimizar custos era a maior prioridade.
Existem várias configurações possíveis, algumas das quais são discutidas SUA PARTICIPAÇÃO FAZ A DIFERENÇA. No entanto, depois de pesquisar no eBay por opções de segunda mão, algumas coisas ficaram claras:
- Os discos rígidos maiores de 3.5″ tendem a ter o custo mais baixo. Isso faz sentido, já que a maioria dos dispositivos hoje em dia mudou para tamanhos menores de 2.5″ ou 1.8″.
- Os discos rígidos SAS (não SSDs) pareciam ter o custo mais baixo por TB, com alguns lotes tão baixos quanto US$ 10/TB (em maio de 2021). Essas unidades SAS não são compatíveis com placas SATA (de consumo) e geralmente são vendidas no eBay após serem desativadas do data center de uma empresa.
Depois que comecei a usar discos rígidos SAS de 3.5″, precisei encontrar uma maneira de realmente conectá-los à minha colheitadeira/plotter. Mantendo a restrição de não construir o gabinete/backplane, comecei a procurar gabinetes usados que pudessem abrigar essas unidades, mantendo o menor custo por baia.
Encontrei várias opções no eBay e acabei comprando alguns modelos diferentes, incluindo um HP 24PAR de 3 baias e dois IBM DS12 de 3512 baias.
Lista completa
A lista final de componentes é mostrada abaixo. Inclui os componentes principais discutidos acima, mas também peças auxiliares necessárias para montar o sistema.
Uma menção digna é a placa HBA. É a placa PCIe que expõe os conectores externos SAS aos quais os cabos dos JBODs serão conectados. Ao comprá-lo, certifique-se de obter uma placa de modo de destino inicial (IT) para que as unidades apareçam diretamente no sistema operacional, em vez de uma placa de modo IR. É bom ter um cartão atualizado com um sistema operacional mais recente (versão 20).
A configuração é principalmente intuitiva. Os cabos se conectam aos orifícios nos quais se encaixam. No entanto, o cabeamento SAS que conecta os JBODs e a máquina de plotagem/colheita pode ser conectado em série.
No meu caso, tenho dois cabos saindo do servidor (um em cada porta do HBA). Um dos cabos se conecta à entrada do array de armazenamento temporário (HP D2600) e a saída desse array se conecta ao array HP 3PAR. O outro cabo se conecta ao primeiro array IBM e a saída dele se conecta ao segundo array IBM. Os JBODs geralmente possuem uma porta de entrada (primária) e uma porta de saída (geralmente identificada com uma seta para fora).
Eu instalei Ubuntu LTS 20.04 no servidor, pois é uma distribuição Linux amplamente usada, o que significa que seria mais fácil encontrar fóruns de solução de problemas se surgisse algum problema. As etapas abaixo descrevem a configuração restante.
Etapa 1: certifique-se de que todas as unidades estejam disponíveis
A primeira etapa é verificar quais unidades estão sendo detectadas pelo sistema operacional. Isso pode ser feito executando o lsscsi
comando. A saída é mostrada abaixo.
Observe que o comando acima não fornece informações sobre o sistema de arquivos ou tamanho das unidades. Para isso, execute o lsblk
comando.
Importante: Observe que nem todas as unidades aparecem em ambos os comandos! As unidades que aparecem em lsscsi
mas não lsblk
pode ter alguma incompatibilidade que esteja fazendo com que o SO não os disponibilize para montagem, etc. /dev/sdaw
.
No meu caso, esse problema foi causado devido ao tamanho do setor ser 520, o que não é suportado pelo meu kernel Linux instalado (a discussão sobre este tópico pode ser encontrada SUA PARTICIPAÇÃO FAZ A DIFERENÇA e SUA PARTICIPAÇÃO FAZ A DIFERENÇA). Você pode determinar se este é o seu caso examinando o dmesg
log do comando para uma mensagem de erro como [sdaw] Unsupported sector size 520
.
Para resolver isso reformatei as unidades usando um tamanho de bloco de 512 com o comando sg_format -v --format --size=512 /dev/sdX
. Este comando pode levar um tempo significativo para ser executado (várias horas) e a saída é mostrada abaixo.
Após a conclusão, a unidade deve aparecer no lsblk
saída.
Etapa 2: criar sistema de arquivos em unidades
Para formatar as unidades com o ext4 sistema de arquivos, executei o seguinte comando: sudo mkfs -t ext4 — verbose /dev/sda
.
Etapa 3: montar unidades
Agora que podemos acessar as unidades e elas foram formatadas com o sistema de arquivos desejado, podemos montar essas unidades.
- Crie as pastas onde montaremos os drives. Por exemplo:
/mnt/farm/00
para/mnt/farm/23
para as unidades que armazenarão os gráficos finais, e/mnt/plot-tmp/00
para/mnt/plot-tmp/11
para os locais de plotagem temporários. - Execute
sudo blkid
para obter os IDs exclusivos de suas unidades (ou partições). Ele produzirá várias linhas, como/dev/sdae: UUID=”29494f44–2f75–4c01-a766–18755eb583d7" TYPE=”ext4"
. - Edite o arquivo fstab com
sudo vim /etc/fstab
e associe cada uma das unidades com seus correspondentes/mnt/...
pasta. Ser cuidadoso não editar as primeiras linhas do arquivo, pois elas são necessárias para montar a unidade raiz do sistema operacional. Meu arquivo final é mostrado abaixo. - Execute
sudo mount -a
para montar todas as unidades especificadas no arquivo fstab. Ele montará apenas unidades ainda não montadas, portanto, é seguro executá-lo várias vezes. - Garanta que os usuários tenham acesso às unidades e seus arquivos executando sudo
chmod -R 777 /mnt/farm/00
.
Etapa 4: execute o software Chia Blockchain
- Siga as instruções oficiais especificadas SUA PARTICIPAÇÃO FAZ A DIFERENÇA para instalar o blockchain Chia (não instalei a GUI).
- Execute
chia start farmer
para iniciar os daemons para a carteira, colheitadeira, etc.
Etapa 5: configurar o Plotman (opcional)
Conspirador é um gerenciador de plotagem que assumirá a criação de novos trabalhos de plotagem. É uma ferramenta conveniente (não obrigatória).
- Instale o Plotman seguindo as instruções SUA PARTICIPAÇÃO FAZ A DIFERENÇA.
- Editar
plotman.yaml
de acordo com as especificações da sua plotter. Meu arquivo final é mostrado abaixo.
interface de usuário:
use_stty_size: Verdadeiro
diretórios:
log: /home/plotter/plotman-logs
tmp:
- /mnt/plot-tmp/f00
- /mnt/plot-tmp/f01
- /mnt/plot-tmp/f02
- /mnt/plot-tmp/f03
- /mnt/plot-tmp/f04
- /mnt/plot-tmp/f05
- /mnt/plot-tmp/f06
- /mnt/plot-tmp/f07
- /mnt/plot-tmp/f08
- /mnt/plot-tmp/f09
- /mnt/plot-tmp/f10
- /mnt/plot-tmp/f11
DST:
#- /mnt/farm/00 COMPLETO
#- /mnt/farm/01 COMPLETO
#- /mnt/farm/02 COMPLETO
#- /mnt/farm/03 COMPLETO
#- /mnt/farm/04 COMPLETO
#- /mnt/farm/05 COMPLETO
#- /mnt/farm/06 COMPLETO
#- /mnt/farm/07 COMPLETO
#- /mnt/farm/08 COMPLETO
#- /mnt/farm/09 COMPLETO
#- /mnt/farm/10 COMPLETO
#- /mnt/farm/11 COMPLETO
- /mnt/fazenda/12
- /mnt/fazenda/13
- /mnt/fazenda/14
- /mnt/fazenda/15
- /mnt/fazenda/16
- /mnt/fazenda/17
- /mnt/fazenda/18
- /mnt/fazenda/19
- /mnt/fazenda/20
- /mnt/fazenda/21
- /mnt/fazenda/22
- /mnt/fazenda/23
agendamento:
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
tmpdir_stagger_phase_limit: 1
tmpdir_max_jobs: 1
global_max_jobs: 20
global_stagger_m: 40
polling_time_s: 30
plotagem:
k: 32
e: False # Use a opção de plotagem -e
n_threads: 2 # Threads por trabalho
n_buckets: 128 # Número de buckets para dividir os dados
job_buffer: 8096 # Por memória de trabalho
Alguns pontos que merecem destaque:
- Plotman não para de programar unidades de farm (no momento em que este livro foi escrito) quando a unidade está cheia. Portanto, você precisa removê-los (ou comentá-los como acima).
- Plotman adicionará automaticamente unidades agrícolas à colheitadeira de chia.
- eu uso
tmpdir_max_jobs
igual a 1, pois estou plotando para discos rígidos que não possuem um bom desempenho de busca em comparação com SSDs.
Etapa 6: execute a plotadora
Neste ponto, tudo o que é necessário para iniciar a plotagem é executar plotman interactive
.
Nota: O trabalho de longa duração plotado para /dev/farm/usb2
é uma execução de depuração que não deve ser executada até a conclusão.
Espero que isso tenha sido útil para lhe dar uma ideia do que é necessário para cultivar Chia!
A partir de agora, minha fazenda está 1/3 cheia e pretendo postar atualizações à medida que ela for cheia e quando eu começar a plotar novamente para pools.
Agradecimentos especiais a Katie Gandomi para ajudar no desenvolvimento.
Agricultura feliz!
- Acesso
- Adicional
- Todos os Produtos
- por aí
- Bay
- blockchain
- Prédio
- comprar
- Comprar
- causado
- chances
- a verificação
- componente
- computação
- Consenso
- consumidor
- consumo
- criptomoedas
- dados,
- dia
- Descentralizada
- Design
- Desenvolvimento
- Dispositivos/Instrumentos
- DID
- Ganhos
- eBay
- energia
- EU
- EV
- fazenda
- agricultura
- Primeiro nome
- caber
- formato
- cheio
- Dando
- Bom estado, com sinais de uso
- Hardware
- Alta
- House
- hr
- HTTPS
- ia
- IBM
- idéia
- Impacto
- Incluindo
- INFORMAÇÕES
- Intel
- IP
- IT
- Trabalho
- Empregos
- grande
- Nível
- Limitado
- linux
- Lista
- carregar
- longo
- LP
- Match
- matemática
- média
- Mineração
- mês
- rede
- oficial
- Opções
- Outros
- padrão
- atuação
- Piscinas
- projeto
- prova
- RAM
- Recursos
- Resultados
- rever
- Recompensas
- equipamento
- Execute
- corrida
- seguro
- Pesquisar
- sentido
- Tamanho
- So
- Software
- vendido
- Soluções
- RESOLVER
- Espaço
- velocidade
- divisão
- começo
- começado
- armazenamento
- loja
- ajuda
- Suportado
- .
- Target
- temporário
- tempo
- transação
- Atualizações
- usuários
- Contra
- volume
- Wallet
- O que é a
- Wikipedia
- ganhar
- dentro
- Atividades:
- Equivalente há
- escrita