Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

⚙️ Setup inicial

Do zero ao cargo run -p paebiru-node em 15 minutos se você está em Linux x86_64 com Nix. Outras plataformas exigem instalação manual das deps de sistema.


Caminho 1 — Nix (recomendado)

Obtém todo o toolchain: Rust nightly, TPM2-TSS, libbpf, CUDA opcional, cross-compile para RISC-V e Cortex-M, Python, Node, Zig, PHP, R, Ruby, .NET 8, JDK 17, Dart, Go. Reproduzível bit-a-bit entre máquinas.

Pré-requisitos

  • Nix com flakes habilitados.
  • ~3 GB de espaço em disco para o shell.

Comando único

git clone https://github.com/paebiru/paebiru.git
cd paebiru
nix develop               # entra no shell
make build                # build do workspace default
make test                 # roda a suíte

Ao entrar no shell você verá:

🌿 Bem-vindo ao ambiente de desenvolvimento PAEBIRU (Nix)
Rust: rustc 1.86.0-nightly (...)
TPM2-TSS e Vulkan configurados.

Dica (CI): use nix develop --command bash -c 'make pre-commit' em scripts de CI.


Caminho 2 — Manual (Debian / Ubuntu 24.04)

Use este caminho se você não pode instalar Nix. Leva ~30 min.

1. Dependências de sistema

sudo apt-get update
sudo apt-get install -y \
    build-essential git curl pkg-config \
    libbpf-dev clang llvm libtss2-dev libssl-dev \
    cmake

2. Rust (nightly)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
rustup toolchain install nightly --profile minimal
rustup component add rust-src rust-analyzer llvm-tools-preview clippy rustfmt
rustup target add riscv32imc-unknown-none-elf \
                thumbv7em-none-eabihf \
                wasm32-unknown-unknown

O rust-toolchain.toml na raiz fixa a versão exata do nightly. Não instale stable — o projeto usa Edition 2024 + features instáveis (no_std em MCUs).

3. Ferramentas Cargo

cargo install cargo-llvm-cov cargo-audit cargo-fuzz

4. Pre-commit

pip install pre-commit mdbook mdbook-mermaid
pre-commit install

5. Verificação

make check       # cargo check rápido
make test        # roda a suíte
make pre-commit  # hooks locais

Caminho 3 — macOS

brew install git pkg-config openssl@3 bpfcc libbpf llvm tpm2-tss
# ...em seguida o mesmo rustup/cargo install do caminho 2

macOS não suporta eBPF/XDP nativo. O Portão 1 (Load Shedder) é automaticamente desabilitado na detecção do Darwin; em produção, use um nó Linux como edge.


Caminho 4 — Windows (WSL2 recomendado)

A matriz de release é Linux-first. Windows é suportado via WSL2 (Ubuntu 24.04). O caminho nativo é experimental.

wsl --install -d Ubuntu-24.04
wsl
# dentro do WSL2, siga o Caminho 1 (Nix) ou 2 (manual)

Variáveis de ambiente

VariávelDefaultSignificado
PAEBIRU_STORAGE_PATH~/.paebiruPersistência (identidade, ledger, backlog)
PAEBIRU_API_PORT1975Porta da API HTTP/observabilidade
PAEBIRU_SKIP_PFfalseNUNCA true em produção (desabilita portão XDP)
PAEBIRU_SKIP_TRACERfalseNUNCA true em produção (desabilita OTel)
PAEBIRU_SKIP_GEO_DISCOVERYfalsePula descoberta de geolocalização (use em CI)
PAEBIRU_SKIP_GPU_TESTSfalsePula testes com CUDA (use em CI)
RUST_LOGinfoVerbosity: trace · debug · info · warn · error

Subir um nó local

cargo run -p paebiru-node

Saída esperada (em ~5 s):

NODE  Iniciando PAEBIRU Node (Trilha de Aço)...
NODE  Ponta-a-ponta rodando. Aguardando descoberta de peers...

Em outro terminal:

make test-local     # ciclo de vida ponta-a-ponta
# ou
curl http://localhost:1975/healthz

Para parar: Ctrl-C. O nó faz shutdown gracioso, fechando receipts em aberto e liberando peers.


Próximos passos


Solução de problemas

SintomaCausa provávelSolução
error: linking with 'cc' failed em macOSXcode CLT ausentexcode-select --install
couldn't find libbpflibbpf não instaladoapt install libbpf-dev ou brew install libbpf
toolchain 'nightly-...' is not installedrustup não tem nightlyrustup toolchain install nightly
permission denied em /var/run/tpm0TPM não presenteesperado em dev; em produção use nó com TPM 2.0
Porta 1975 ocupadaOutra instância rodandolsof -i :1975 ou mude PAEBIRU_API_PORT
mdBook não renderiza Mermaidmdbook-mermaid ausentecargo install mdbook-mermaid

Se persistir, abra issue no GitHub com a saída completa de nix develop --command bash -c 'make pre-commit 2>&1'.