Pular para o conteúdo principal

O que uma leitura pública retorna

getSettlement, getSettlements, getReservation, getReservations, getDispute e getDisputes são leituras abertas, não autenticadas, e já não retornam a identidade das partes. Uma parte lê seus próprios registros por completo através dos métodos com prova de carteira.

Por que redação em vez de autenticação

Um explorador que mostra volume, estados e tempos de liquidação é uma visão pública legítima de uma rede pública. Colocar uma assinatura na frente disso o quebraria, ao mesmo tempo que empurraria qualquer determinado de volta ao gossip bruto, o que não alcança nada. O que o explorador nunca precisou é quem — então a leitura pública mantém tudo exceto a identidade.

O que a identidade monta é o grafo de negociações, e o argumento contra entregá-lo é feito por completo na página de leituras com prova de carteira: num mercado fiat entre pares, saber a qual comerciante uma carteira sempre volta e quem são os habituais de um comerciante movimentado é uma questão de segurança física, não uma preferência. Uma chamada não autenticada costumava reconstruí-lo.

Quanto isto vale honestamente

Estes registros são difundidos por gossip a cada nó. Qualquer um que execute um os lê todos, e a redação não muda isso. O que é protegido é a facilidade da consulta — a diferença entre dar curl no nó de acesso público de outra pessoa e levantar um nó para indexar a rede. Essa diferença é a maior parte do que a coleta casual é feita.

Enunciar isso com clareza importa mais do que pode parecer: um integrador que acredita que estes registros são confidenciais construirá algo que se apoia numa garantia que o protocolo não faz.

As formas

Settlement

MantidoRemovido
id, reservation_id, amount, statebuyer, buyer_public_key
escrow_release_signatureseller, seller_public_key
payment_submitted_at, merchant_responded_atpayment_reference
payment_discrepancy, created_at, updated_at

escrow_release_signature permanece porque nomeia uma transação on-chain que qualquer um já pode ler na Solana, e é o que torna uma liquidação verificável de forma independente.

payment_reference é indiscutivelmente a pior das duas remoções: é texto livre onde um comprador coloca sua própria referência bancária, então rotineiramente carrega um nome real ou um número de conta.

Reservation

MantidoRemovido
id, advertisement_id, amount, staterequester
requested_at, updated_at, expires_atrequester_public_key

advertisement_id é mantido deliberadamente. Um anúncio é uma oferta pública e já carrega o peer id de seu comerciante em cada linha do livro de ordens, então revela uma ponta de uma aresta que nunca foi privada. O que ele não revela é a outra ponta — que é o que a torna uma aresta.

Dispute

MantidoRemovido
id, settlement_id, status, resolutionbuyer, seller, opener e suas chaves
required_arbitrators, arbitrators_seatedreason
commitments, reveals (contagens)arbitrators, arbitrator_keys
onchain_execution_signatureos compromissos e revelações individuais
opened_at, updated_atos indicadores de acordo mútuo

Note que aqui commitments e reveals são contagens, não listas — o suficiente para um explorador mostrar um caso avançando, sem o voto de ninguém ligado ao seu nome.

Três razões distintas para o que é descartado. As partes, porque uma disputa é o caso em que saber quem se desentendeu com quem é o mais obviamente digno de mau uso. reason, porque é texto livre sobre um desacordo real por dinheiro real e nomeia pessoas, bancos e referências por padrão. As listas de árbitros, porque um árbitro é um provedor registrado cuja identidade não é em si um segredo — mas qual árbitro pegou qual caso, e como votou é exatamente o emparelhamento que torna pressionar um deles algo que vale a pena. Os indicadores de acordo mútuo vão com eles: «o vendedor concordou e o comprador não» é uma posição de negociação, e publicá-la a espectadores muda uma negociação entre duas pessoas.

Se você está adicionando um campo

Um campo pertence a uma visão pública apenas se diz algo sobre a negociação e não sobre as pessoas. Na dúvida, fica de fora: adicionar um depois é uma nota de versão, e remover um é uma divulgação que já aconteceu.