Pular para o conteúdo

Design clássico · Staff

Carteira digital (com paralelo com o Pix)

Projeto de entrevista clássico. Pontos centrais: ledger e conciliação.

17 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: ledger e conciliação. No relato do Square, disparar uma liquidação bancária exigia calcular o saldo do comerciante, o que significava uma agregação group-by cara por comerciante. Além disso, por ser apenas um banco SQL, nada impedia que os pagamentos ficassem inconsistentes.

01 · CONTEXTO

Do saldo agregado ao razão

No relato do Square, disparar uma liquidação bancária exigia calcular o saldo do comerciante, o que significava uma agregação group-by cara por comerciante. Além disso, por ser apenas um banco SQL, nada impedia que os pagamentos ficassem inconsistentes.

O Stripe, por sua vez, construiu o Ledger, um log imutável e auditável, como sistema de registro de seus dados financeiros.

02 · PARTIDAS DOBRADAS

Lançamentos que fecham em zero

A contabilidade de partidas dobradas obriga a declarar não só qual mudança de estado financeiro ocorreu, mas também por quê. Pela equação contábil usada pelo Square, cada transação, chamada de lançamento (journal entry), precisa fechar em zero: cada centavo perdido é compensado por um centavo ganho.

O requisito declarado é de consistência: não deve ser possível transacionar com o banco de um modo que resulte numa transação financeira ilógica.

Tabela do Square BooksPapel
booksUma linha por livro; guarda um saldo e pode ter tipo, dono e identificador único.
journal_entriesUma linha é adicionada cada vez que os livros mudam de valor numa transação contábil.
book_entriesCada linha tem chaves estrangeiras para um lançamento e para um livro e guarda um débito (+) ou um crédito (-).

Cada livro guarda um saldo que resume as mudanças daquele livro. No exemplo do Square, o cálculo de quanto pagar a um comerciante é uma única linha no banco e dispensa agrupamento ou agregação complexos.

  1. O diagrama começa no aplicativo da carteira, ligado ao serviço de carteira.

    Diagrama da arquitetura: Carteira: razão de partidas dobradas
    CLAplicativo da carteira
    CPServiço de carteira
    DBLançamentos e entradas
    DBLivros com saldo
  2. O diagrama destaca o serviço e o armazenamento de lançamentos: cada lançamento declara o que mudou e por quê, e uma linha é adicionada cada vez que os livros mudam de valor.

    Diagrama da arquitetura: Carteira: razão de partidas dobradas
    CLAplicativo da carteira
    CPServiço de carteira
    DBLançamentos e entradasnovo lançamento
    DBLivros com saldo
  3. Os lançamentos e as entradas de débito e crédito só recebem inserções.

    Diagrama da arquitetura: Carteira: razão de partidas dobradas
    CLAplicativo da carteira
    CPServiço de carteira
    DBLançamentos e entradassó inserções
    DBLivros com saldo
  4. O livro guarda um saldo que resume as mudanças dele, e esse saldo atual é atualizado a cada operação.

    Diagrama da arquitetura: Carteira: razão de partidas dobradas
    CLAplicativo da carteira
    CPServiço de carteira
    DBLançamentos e entradas
    DBLivros com saldosaldo do livro

03 · IMUTABILIDADE

Corrigir sem apagar

No Square, os conjuntos de lançamentos e de entradas de livro são efetivamente append-only e imutáveis depois de gravados.

No Stripe, o Ledger é, no núcleo, um log imutável de eventos. Transações já publicadas não podem ser apagadas nem modificadas, e o estado passado pode ser reconstruído processando os eventos até aquele ponto.

Diante de um erro, o Square não atualiza o dado: grava um novo lançamento que corrige o anterior. O saldo do livro é ajustado, mas sempre resta um rastro do que aconteceu no sistema.

AspectoSquare BooksStripe Ledger
Dado já gravadoEfetivamente append-only e imutável depois de gravado.Transações publicadas não podem ser apagadas nem modificadas.
Correção de erroGrava um novo lançamento que corrige o anterior.Reverte e reprocessa operações anteriores.

04 · CONCILIAÇÃO

Verificar que os saldos fecham

O Stripe representa os sistemas produtores como máquinas de estado e descreve o comportamento deles como um fluxo lógico de fundos, o movimento de saldos (eventos) entre contas (estados). O Ledger se baseia em partidas dobradas, método padrão para garantir que todo o dinheiro de um sistema está contabilizado ao equilibrar créditos e débitos.

  1. O diagrama mostra um serviço produtor com seu banco e o ledger de eventos.

    Diagrama da arquitetura: Carteira: conciliação do razão
    CPServiço produtor
    DBBanco do produtor
    DBLedger de eventos
    CPVerificações de qualidade
    NWAlertas
  2. Os sistemas produtores são modelados como máquinas de estado, e o Ledger descreve o comportamento deles como fluxo de fundos.

    Diagrama da arquitetura: Carteira: conciliação do razão
    CPServiço produtor
    DBBanco do produtor
    DBLedger de eventosfluxo de fundos
    CPVerificações de qualidade
    NWAlertas
  3. A métrica de clearing mede a fração do ledger que está zerada como deveria em regime estável.

    Diagrama da arquitetura: Carteira: conciliação do razão
    CPServiço produtor
    DBBanco do produtor
    DBLedger de eventos
    CPVerificações de qualidadeclearing
    NWAlertas
  4. A verificação de completude garante que todo ID no banco do produtor tem um evento correspondente no ledger.

    Diagrama da arquitetura: Carteira: conciliação do razão
    CPServiço produtor
    DBBanco do produtor
    DBLedger de eventos
    CPVerificações de qualidadecompletude
    NWAlertas
  5. Na pontualidade, mede-se a diferença entre a entrada do dado na plataforma e a chegada ao ledger.

    Diagrama da arquitetura: Carteira: conciliação do razão
    CPServiço produtor
    DBBanco do produtor
    DBLedger de eventos
    CPVerificações de qualidadepontualidade
    NWAlertas
  6. O Ledger depende de alertas proativos para trazer à tona problemas e soluções propostas.

    Diagrama da arquitetura: Carteira: conciliação do razão
    CPServiço produtor
    DBBanco do produtor
    DBLedger de eventos
    CPVerificações de qualidade
    NWAlertasalertas
Métrica do StripePergunta que responde
ClearingO fluxo de fundos completou corretamente?
TimelinessOs dados chegaram a tempo?
CompletenessTemos uma representação completa do sistema de dados subjacente?

Se o evento de liberação nunca é publicado ou tem id errado, o Ledger não compensa o saldo da conta associada. Mesmo com bilhões de transações, uma única transação ausente, atrasada ou incorreta cria de imediato um problema de exatidão detectável por uma consulta simples.

05 · ESCALA E ENTREVISTA

Armazenamento e escala do razão

O Square relata esforço considerável num esquema de sharding do banco SQL e conta que precisou lidar com transações entre shards, em que dois comerciantes podiam trocar valor.

Para o Books, o Square escolheu o Google Cloud Spanner, um banco SQL totalmente gerenciado e distribuído globalmente, que o dispensou de se preocupar com sharding e com o ônus de manter um banco.

Perguntas frequentes

O que é Carteira digital (com paralelo com o Pix)?

Projeto de entrevista clássico. Pontos centrais: ledger e conciliação.

O que o design de Carteira digital (com paralelo com o Pix) cobre?

Ele está organizado nestas seções: Do saldo agregado ao razão, Lançamentos que fecham em zero, Corrigir sem apagar, Verificar que os saldos fecham e Armazenamento e escala do razão.

Quanto tempo leva Carteira digital (com paralelo com o Pix) e qual é o nível?

Leva cerca de 17 minutos para ler e tem nível Staff.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.