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.