rfc-2 · addressing

content addressing

versão 0.1 · atualizado 2026-04-15 · status: publicado


§1

escopo

Este documento define como conteúdo é endereçado no protocolo Aevia. Toda referência canônica a bytes no protocolo MUST usar um Content Identifier (CID) conforme especificado aqui. URLs opacas NÃO são referência canônica.

MUST, SHOULD, MAY seguem RFC 2119.

§2

encoding de CID

Aevia adota CIDv1 conforme Multiformats. Para qualquer objeto O, seu CID é:

CID(O) = "b" || base32(codec || 0x12 || 0x20 || SHA-256(O))

onde:

  • o prefixo "b" identifica multibase base32 sem padding conforme Multibase spec;
  • codec é o multicodec varint identificando o tipo de bytes (ver §3);
  • 0x12 é o multihash identifier para SHA-256;
  • 0x20 é o comprimento do digest em bytes (32);
  • SHA-256(O) é o digest SHA-256 dos bytes do objeto.

Implementações MUST rejeitar CIDs que não começam com "b" ou que usam multihash diferente de SHA-256 neste RFC.

§3

codecs atribuídos

codecvaloruso
raw0x55bytes opacos — segmentos HLS, imagens, arquivos
json0x0200manifestos e documentos JSON estruturados

Outros codecs podem ser adicionados via revisão deste RFC. Implementações SHOULD preservar CIDs com codecs desconhecidos ao proxy-roteamento, rejeitando-os apenas na camada de aplicação.

§4

verificação

Dado um CID x e uma sequência de bytes O, um verificador MUST:

  1. decodificar x extraindo (codec, digest_algo, digest_len, digest);
  2. verificar que digest_algo == 0x12 (SHA-256);
  3. verificar que digest_len == 0x20;
  4. computar SHA-256(O);
  5. comparar os 32 bytes do digest; aceitar apenas se idênticos.

Um mismatch em qualquer passo MUST resultar em rejeição dos bytes. O cliente SHOULD tentar outro peer, não re-tentar o mesmo peer com os mesmos bytes.

§5

semântica de retrieval

Retrieval por CID é location-independent. Qualquer nó pode satisfazer o pedido; o protocolo não privilegia nenhuma origem. Clientes SHOULD:

  • consultar FindProviders(cid) na DHT para obter o conjunto de peers candidatos;
  • requisitar os bytes em paralelo a múltiplos candidatos, aceitando a primeira resposta que passa §4;
  • descartar respostas inválidas sem retry ao mesmo peer;
  • cachear localmente o mapeamento (cid → bytes) pelo menos pela duração da sessão.

Clientes MAY usar gateways HTTP como fallback quando libp2p não estiver disponível. Gateways MUST retornar os bytes exatos; clientes MUST verificar por CID mesmo quando buscam via gateway.

§6

considerações de segurança

  • SHA-256 é considerado seguro para content addressing pelo horizonte deste RFC. Transições para SHA-3 ou BLAKE3 MUST ser precedidas de nova revisão.
  • timing attack via retrieval: retorno de “não tenho esse CID” pode vazar padrões de cache. Provider nodes SHOULD responder em tempo constante a pedidos de CID desconhecido.
  • gateways HTTP maliciosos podem retornar bytes errados; §4 garante que clientes não são enganados, mas gateways MAY ser usados para análise de tráfego. Clientes SHOULD rotacionar gateways.
§7

referências

  1. IETF RFC 2119 — Key words for RFCs
  2. Multiformats CID v1 Spec
  3. Multihash Specification
  4. Multicodec Table
  5. Multibase Specification
  6. RFC-1 — Manifest Schema