Código-fonte
Um repositório, sob licença MIT: o nó, a carteira, a linha de comando, os conjuntos de parâmetros e os vetores de referência que definem o protocolo. Tudo aquilo sobre o que a rede roda está nele.
Nada neste site vale mais do que aquilo que você pode conferir sem pedir a ninguém, e é aqui que a conferência começa. Um autor anônimo não tem reputação a oferecer; o que se oferece no lugar é uma árvore que você pode ler, compilar e comparar com os binários que lhe entregaram.
Clone#
git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
Ou leia primeiro no navegador: gitlab.com/zycord-group/zycord-node.
As localizações canônicas deste projeto — esta inclusive — estão fixadas na atestação assinada da thread do anúncio, sob a chave do projeto E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29. Uma árvore hospedada em qualquer outro lugar é uma cópia: pode ser honesta, pode estar desatualizada, pode ser hostil, e nada nesta página consegue dizer qual. Confira a lista assinada antes de confiar num espelho, e compile a partir de uma tag cujo hash você mesmo verificou.
O que tem dentro#
| Diretório | O que contém |
|---|---|
spec/ | O protocolo. Os conjuntos de parâmetros, os vetores de referência e as imagens de biblioteca pré-implantadas. Uma implementação que passa pelos vetores é um par, não um fork. |
core/ | Código crítico para o consenso, só biblioteca padrão: o modelo de células, a validade sem estado, o fold, a EVM adaptada a certificados e o RandomX atrás de uma build tag. |
node/ | O nó em volta desse núcleo — armazenamento, mempool, minerador, camada de pares, sincronização, RPC somente leitura, Stratum. |
wallet/ | Gerenciamento de chaves e construtores de certificados. Uma referência, não consenso. |
cmd/ | zycordd, o nó; zcd, a linha de comando e a carteira. |
sim/ | O simulador e os arcabouços de fuzzing, um segundo fold deliberadamente ingênuo submetido a fuzzing contra o verdadeiro, e o soak caótico que roda nós reais sobre sockets reais. |
contracts/ | Os contratos de referência, em Solidity. |
packaging/ | O script de instalação e os pacotes de cada plataforma, revisáveis antes de você rodá-los. |
docs/ | A arquitetura, a referência do protocolo, o guia de operação e o whitepaper. |
O protocolo são os vetores#
O código Go desta árvore é uma implementação de referência, e deliberadamente não a
definição. O que define a rede são
os conjuntos de parâmetros e os
vetores de referência: cada regra de fold, de bloco e de validade como um caso
(estado anterior, bloco) → (estado posterior, taxas), positivo e negativo. Escreva o seu
próprio nó na linguagem que quiser — se ele passar pelo corpus, é um par, e esta implementação não tem precedência sobre ele.
As alturas de ativação moram no mesmo lugar. h1_bond e h1_vm são
parâmetros congelados na gênese, e não um lançamento: a máquina está compilada em cada binário e é
recusada abaixo da sua altura, então uma era chega porque a cadeia alcançou um número e nunca porque
pediram aos operadores que atualizassem.
Compile#
make build # no cgo, reproducible, development engine only
make build-randomx # the network binary: mainnet and the public testnet
Só a build com RandomX consegue entrar numa rede. A build padrão é
reproduzível byte a byte e roda uma devnet local; as duas escrevem arquivos diferentes de propósito, de modo que um binário que
não consegue falar com a mainnet nunca é confundido com um que consegue. O toolchain do Go está fixado em
go1.26.2 e a build se recusa a rodar sob qualquer outro, porque o mesmo código-fonte
compilado por dois releases do Go são dois binários diferentes.
Reconstruir uma tag publicada e comparar hashes é a verificação que substitui confiar no publicador — Verificando um download tem o procedimento completo, e Instalação cobre compilá-lo para uso comum.
Issues e segurança#
Bugs, perguntas e patches vão para o rastreador de issues, e CONTRIBUTING.md diz o que uma mudança precisa ter antes de poder ser mesclada.
Uma vulnerabilidade vai para o processo de divulgação em SECURITY.md, e não para o rastreador. O projeto prefere ter o relato a ter o benefício da dúvida, e um defeito encontrado antes da mainnet não custa nada a ninguém.
Licença#
MIT, para a árvore inteira. Faça fork, distribua, venda, renomeie — a licença pede um
aviso de copyright e nada mais. A única coisa que ela não pode lhe entregar é a rede: isso é
decidido pelos nós que aceitam os seus blocos, e eles os aceitam segundo as regras em
spec/.