Transferências onchain
A viagem completa de um pagamento, do toque na sua tela até uma transferência confirmada na Base.
Enviar dólares digitais no MozaikPay leva alguns toques e uma espera curta. Por baixo, seu telefone e nossos servidores montam uma transação onchain de verdade, conferem o trabalho um do outro e a entregam a uma rede pública. Esta página acompanha um pagamento por esse caminho inteiro. Os passos de envio em si vivem em Envie para um nome de usuário; esta página é sobre o que acontece depois do toque.
O rascunho
Quando você confirma um pagamento, nossos servidores o preparam. Eles procuram o nome de usuário do destinatário para achar o endereço da carteira dele, conferem seu saldo e rascunham a instrução exata que a rede vai executar. Em redes com contas inteligentes, essa instrução se chama UserOperation, e a nossa diz, na prática, que esta conta transfira esta quantidade de dólares digitais para aquele endereço. O rascunho também carrega estimativas de gas e um espaço para a aprovação do patrocínio de gas.
A conferência
Seu telefone não aceita o rascunho de olhos fechados. Ele remonta a instrução por conta própria, a partir do valor e do destinatário que você digitou e de endereços de contrato embutidos no app, e calcula de forma independente a impressão digital criptográfica da instrução. Se o rascunho do servidor for diferente em qualquer coisa, um byte errado no destinatário, no valor ou em qualquer outro lugar, o telefone se recusa a assinar e a transferência para. Um servidor comprometido poderia interromper seu pagamento. Não conseguiria enfiar um pagamento diferente debaixo do seu dedo.
A assinatura
Seu PIN ou sua biometria desbloqueiam a chave de gastos para exatamente uma assinatura. A chave assina a impressão digital e volta para o armazenamento seguro do telefone sem nunca sair do aparelho. Como a impressão digital cobre cada campo da instrução, nada no pagamento pode mudar depois sem tornar a assinatura inválida.
A rede
A instrução assinada volta para os nossos servidores, que anexam a aprovação de gas e a enviam para a Base. Ali a rede assume. O contrato da sua conta recebe a instrução, recupera o assinante a partir da assinatura e confere se ele bate com a sua chave de gastos atual. Só então ele move o USDC, direto da sua carteira para a do destinatário. Se qualquer conferência falhar em qualquer ponto, a operação inteira é revertida e nada se move.
A confirmação
A Base produz um bloco novo a cada dois segundos, mais ou menos, então a espera é curta. Nossos sistemas observam o registro de eventos da rede, e no momento em que seu pagamento entra em um bloco, a transferência vira confirmada no seu app e o telefone do destinatário recebe a notificação. Toda transferência tem um hash de transação público, e o app leva cada um para o Basescan, o explorador público da rede, onde qualquer um pode vê-la pelo que ela é, uma transferência comum de USDC entre duas carteiras.
Confirmada também significa final. Uma rede pública não tem camada de estorno, e ninguém, nem a gente, pode puxar de volta uma transferência confirmada. É por isso que o destinatário e o valor estão na tela que você confirma.
O que nunca acontece
Faltam dois passos nessa história de propósito. Não existe passo em que o dinheiro fica com a gente, porque ele vai direto entre carteiras, e não existe passo em que a gente assina, porque nenhuma chave do nosso lado consegue. Nossos servidores simplesmente preparam, patrocinam, enviam e observam.