PixZClaw v0.5.1

plugin ZeroClaw · T0/T1 · sem private key

Cobra em BRL.
Recebe em PIX ou USDC.

Uma fatura, dois trilhos de pagamento. Seu cliente escolhe PIX (BRL) ou USDC via Solana Pay — você opera tudo pelo Telegram, num Raspberry Pi ou numa VPS de 1 GB.

runtime
wasm32-wasip2
ferramentas
3 · T0 T1
host de produção
Raspberry Pi 3
chaves privadas
0
PixZClaw Bot online · Telegram

Cobra R$ 150 do João, pedido 412

PixZClaw — Fatura #412
R$ 150,00 ₮ 27,27 USDC
🇧🇷 PIX (BRL) QR + Copia e Cola
00020126…5204000053039865802BR…6304AB12
◎ Solana Pay (USDC) QR · reference única

👉 Encaminhe esta mensagem ao cliente. Ele paga por PIX ou por USDC — os dois valem a fatura #412.

teto R$ 1000 · destino travado

🔔 avisa quando a 412 pagar

18 minutos depois — nenhuma mensagem no meio

valor conferido on-chain PAID ✅ — 27,27 de 27,27 USDC

lembrete ativo avisa quando a 412 pagar

Provas verificáveis

  • 101 testes host cargo test sem rede
  • #123 PR no repo oficial aberto em zeroclaw-labs/zeroclaw-plugins
  • 24/7 em produção num Raspberry Pi, operado por Telegram
  • 0 linhas de solana-sdk core puro + shim fino

Construído para o bounty ZeroClaw × Superteam Brasil.

01O caminho do dinheiro

Uma fatura sai.
Dois trilhos voltam.

Não é on-ramp, não é câmbio. São dois trilhos independentes carregando o mesmo invoice_id: o PIX vai pro banco do lojista, o USDC vai pra carteira dele via Solana Pay com uma reference única. Só um dos dois pode ser verificado por software — e a página inteira é honesta sobre qual.

Diagrama: da fatura aos dois trilhos de pagamento até o recibo A fatura emitida no Telegram se divide em dois trilhos. O trilho PIX gera um código Copia e Cola, o dinheiro cai no banco do lojista e só o operador pode confirmar. O trilho Solana gera uma URL Solana Pay com reference, o USDC cai na carteira do lojista e o valor recebido é conferido on-chain. Os dois convergem num recibo. TRILHO PIX · BRL · banco TRILHO SOLANA · USDC · on-chain Telegram · lojista FATURA #412 R$ 150,00 teto · destino travado PIX Copia e Cola EMV + CRC16 banco do lojista fora do alcance do agente operador confirma humano, nunca o bot URL Solana Pay reference = invoice_id carteira do lojista USDC · pubkey travada valor conferido pre/postTokenBalances RECIBO 🧾 com link Solscan

← arraste para o lado para ver o diagrama inteiro →

linha cheia — automático, valor conferido linha tracejada — depende de confirmação humana
  1. Cobre no chat.

    Você diz o valor em BRL no Telegram e o PixZClaw emite a fatura dual na hora — PIX Copia e Cola real e URL Solana Pay, mesmo invoice_id.

  2. Cliente escolhe o trilho.

    Encaminhe a mensagem: ele paga por PIX (BRL) ou por USDC (Solana Pay) — mesma fatura, mesmo valor, dois QRs.

  3. Confira e comprove.

    O PixZClaw lê a blockchain, compara o que o lojista realmente recebeu, emite o recibo e fecha o caixa do dia.

02As três ferramentas

Uma escreve. Duas só leem.

Três plugins WebAssembly compilados para wasm32-wasip2. Só um deles produz algo — e mesmo esse não move dinheiro, só monta a cobrança.

T1 brl_usdc_invoice

emite a fatura dual

Emite uma fatura com dois trilhos: PIX Copia e Cola (EMV+CRC16 de verdade) e URL Solana Pay em USDC, com o mesmo invoice_id nos dois. QR codes por link, teto de valor e destino travado — pronto para encaminhar ao cliente.

  • payload EMV montado e assinado com CRC16 — não é imagem, é código válido
  • a reference do Solana Pay é o próprio invoice_id
  • acima do teto, falha fechado: recusa em vez de emitir

saída real da ferramenta

🦞 PixZClaw — Fatura #412
💰 R$ 150.00 · ₮ 27.272727 USDC

🇧🇷 PIX (BRL)
📷 QR (toque): …
Ou copie o código (toque para copiar):
00020126…5204000053039865802BR…6304AB12

◎ Solana Pay (USDC)
📷 QR (toque): …
Escaneie com Phantom/Solflare.

👉 Encaminhe esta mensagem ao cliente
🧾 Fatura 412 · cotação R$/USDC usada: 5.5
🔒 teto R$ 1000 · destino travado=sim
T0read-only invoice_status

o juiz on-chain

Verifica o pagamento em USDC direto na blockchain: confere o valor que o lojista REALMENTE recebeu, pelo delta de pre/postTokenBalances. Aritmética inteira exata, sem faixa de tolerância. Varre todas as assinaturas da reference, soma pagamentos parciais e nunca diz PAID sem valor conferido. Gera recibo compartilhável com link do Solscan.

  • PAID ✅o valor bate
  • UNDERPAID ⚠️diz exatamente quanto falta
  • OVERPAIDrecebeu a mais, e avisa

saída real da ferramenta

INVOICE: inv-412
USDC: PAID ✅ (recebido 27.27 de 27.27 USDC)
EXPLORER: https://solscan.io/tx/…
OVERALL: USDC PAID (valor conferido); PIX não confirmado
──────────────────────
🧾 RECIBO — INVOICE #inv-412
✅ Pago em USDC (Solana)
Valor: 27.27 USDC (R$ equivalente na fatura)
Data: 2026-07-21 22:13 UTC
🔗 https://solscan.io/tx/…
──────────────────────
T0read-only pixzclaw_brief

o caixa

O caixa do comerciante num card: saldo em USDC e SOL, e o fechamento das últimas 24h com as faturas pagas e seus ids. Ainda traz um sparkline de 7 dias e as últimas movimentações on-chain.

saída real da ferramenta

╭─ PixZClaw · Caixa ─────────────────╮
│ Wallet     8xkR3pQ9mNvT2wLzAb7cD… │
│ USDC       142.5                  │
│ SOL (gas)  0.41 SOL               │
╰───────────────────────────────────╯

Hoje (últimas 24h)
• txs ok:      2
• faturas PIX: 2
• pagas: demo-1, inv-412

7 dias
• 7d ▁▃▅▂▇▁▂  (velho→novo)

T0 read-only · sem chave · PixZClaw

03O lembrete que se apaga

novo na v0.5.0 · lembrete automático

Você não precisa perguntar
se o cliente pagou.

Toda fatura vem com uma oferta. Aceite e o agente cria um job no cron nativo do ZeroClaw — sem serviço externo, sem webhook, sem fila.

🔔 avisa quando a 412 pagar

E o mais importante: enquanto está PENDING, silêncio. O bot nunca te manda “ainda não pagou”. Ele só fala quando tem um valor conferido pra mostrar.

  1. t+0

    O agente registra um job no cron do ZeroClaw, amarrado ao invoice_id.

  2. a cada 5 min

    O job chama invoice_status e confere o valor recebido on-chain.

  3. PENDING

    Nada acontece. Nenhuma mensagem. Nenhum ruído no seu Telegram.

  4. PAID ✅

    Aviso no Telegram com o valor conferido, o recibo e o link do Solscan.

  5. fim

    O job se apaga sozinho. Nada fica rodando à toa no seu Pi.

04O que ele não faz

A lista de “não” é
a parte mais importante.

Um agente que cobra dinheiro por você tem que ser explícito sobre o que se recusa a fazer. Nada aqui é limitação pendente de roadmap — é escopo, e é de propósito.

Não converte moeda.

Não é on-ramp, não é câmbio, não é exchange. O brl_per_usdc é uma cotação offline usada só pra montar o valor do Solana Pay — e ela aparece impressa na fatura.

Não vê o PIX do seu banco.

PIX bancário não existe on-chain. A ferramenta nunca marca o trilho PIX como pago por conta própria: quem confirma o recebimento é o operador.

Não guarda private key.

Nenhuma chave privada é pedida, lida ou salva. A única coisa que o plugin conhece é a pubkey do lojista — que é pública por definição.

Não assina transação.

Quem assina é o cliente, na carteira dele. O plugin monta a cobrança e, depois disso, só lê a blockchain.

Cada “não” dessa lista é uma superfície de ataque que simplesmente não existe.

05Por que dá pra confiar

Garantias, não promessas.

  • Sem chaves privadas

    O plugin nunca guarda nem assina com private key. Só ferramentas T0/T1 — ele monta a cobrança, quem paga é o cliente na carteira dele.

  • Valor conferido on-chain

    Nunca diz PAID sem checar quanto o lojista recebeu de verdade. Se o cliente pagar menos, marca UNDERPAID ⚠️ e mostra exatamente quanto falta. E se a varredura ficar incompleta — RPC limitou, rede caiu — ele se recusa a afirmar que faltou: dizer que falta sem ter olhado tudo é a mesma mentira do PAID sem conferir, virada do avesso.

  • Teto de valor + destino travado

    Cada fatura respeita um teto (max_amount_brl) e um destino travado (recipient_locked) — o agente não redireciona o dinheiro nem estoura o limite.

  • Prompt injection falha fechado

    Instrução maliciosa não fura o teto: um pedido de “999999999,99” bate no limite e é recusado, em vez de gerar a fatura.

  • Honestidade no PIX

    O PIX bancário não aparece on-chain, então o PixZClaw nunca inventa “pago”. Só marca o PIX como pago quando o operador confirma.

Duas pinças.
Uma fatura no meio.

A marca é a tese. A pinça de cima é o trilho PIX; a de baixo é o trilho Solana. Elas se fecham sobre o mesmo losango — o invoice_id que os dois carregam. Nenhuma das duas passa por dentro da outra: são vias independentes, e só uma delas a máquina consegue conferir sozinha.

Roda no ZeroClaw, mas o símbolo é nosso. Nome e logo do ZeroClaw são marcas da ZeroClaw Labs.

06Onde roda

O agente inteiro cabe
em 1 GB de RAM.

O custo de infraestrutura aqui é ruído, não barreira. Três caminhos reais, com preço de tabela pesquisado — não com número redondo de marketing.

Opção Custo Observação
Raspberry Pi 3 / 3B+ 1 GB RAM ~R$ 350 uma vez É onde roda hoje, em produção, com o bot do Telegram no ar.
VPS 1 vCPU / 1 GB ~R$ 25–30 /mês Vultr US$ 5 · DigitalOcean US$ 6 · Hetzner € 4–5. Preço de tabela em julho/2026.
Oracle Cloud Always Free ARM Ampere A1 R$ 0 Tier gratuito. Atenção: os limites do Always Free foram reduzidos pela metade em junho/2026.

← arraste para o lado para ver as observações →

Cotação usada: US$ 1 = R$ 5,07 · 21/07/2026. Preço de hardware e de VPS muda; a data fica aqui à vista para esta página envelhecer com honestidade.

07Instalação

Três comandos
e um restart.

Roda em qualquer host ZeroClaw — inclusive num Raspberry Pi 3. Instalar, configurar, reiniciar.

Instale os 3 plugins da release v0.5.1 com um comando:

curl -fsSL https://raw.githubusercontent.com/capitv/pixzclaw-pi/main/scripts/force-reinstall-plugins.sh | bash -s -- v0.5.1-plugins

Ajuste a chave PIX, o destino Solana e os limites. Use seus próprios valores:

zeroclaw config set plugins.entries.brl-usdc-invoice.config.pix_key "SUA_CHAVE_PIX"
zeroclaw config set plugins.entries.brl-usdc-invoice.config.pix_name "SEU_NOME"
zeroclaw config set plugins.entries.brl-usdc-invoice.config.pix_city "SUA_CIDADE"
zeroclaw config set plugins.entries.brl-usdc-invoice.config.merchant_solana "PUBKEY_PUBLICA"
zeroclaw config set plugins.entries.brl-usdc-invoice.config.max_amount_brl "1000"
zeroclaw config set plugins.entries.brl-usdc-invoice.config.brl_per_usdc "5.5"
zeroclaw config set plugins.entries.brl-usdc-invoice.config.recipient_locked "true"

zeroclaw config set plugins.entries.invoice-status.config.merchant_solana "PUBKEY_PUBLICA"
zeroclaw config set plugins.entries.invoice-status.config.rpc_url "https://api.mainnet-beta.solana.com"

zeroclaw config set plugins.entries.pixzclaw-brief.config.merchant_solana "PUBKEY_PUBLICA"
zeroclaw config set plugins.entries.pixzclaw-brief.config.rpc_url "https://api.mainnet-beta.solana.com"

merchant_solana é a sua chave PÚBLICA (pubkey), nunca a private key. O PixZClaw não pede — e não guarda — chave privada.

Reinicie o serviço para aplicar a config:

zeroclaw service restart

08Perguntas frequentes

O que perguntam antes de instalar.

Preciso de exchange ou conversão de moeda?

Não. PIX e USDC são dois trilhos de pagamento independentes na mesma fatura — não é on-ramp nem câmbio. O brl_per_usdc é só uma cotação offline pra montar o valor do Solana Pay.

E se o cliente pagar menos que o combinado?

O invoice_status confere o valor recebido on-chain e responde UNDERPAID ⚠️, mostrando exatamente quanto ainda falta. Soma pagamentos parciais, compara em aritmética inteira exata (sem tolerância) e só marca PAID quando o valor bate.

O PIX confirma sozinho?

Não. O PIX do banco não é visível on-chain, então a ferramenta nunca diz “pago” por conta própria — o operador confirma o recebimento. É honestidade por design.

Quanto custa o host?

Depende de onde você põe. Hoje ele roda num Raspberry Pi 3B+ (~R$ 350 uma vez, preço de julho/2026), mas uma VPS de 1 vCPU e 1 GB sai por ~R$ 25–30/mês, e o tier Always Free da Oracle Cloud custa R$ 0. Os três números estão na seção Onde roda.

É seguro deixar um agente cobrar por mim?

Sim. São ferramentas T0/T1 (sem private key), com teto de valor, destino travado e proteção contra prompt injection. O agente monta a cobrança; quem paga é sempre o cliente na carteira dele.

Como o lembrete automático funciona sem serviço externo?

Ele usa o cron nativo do ZeroClaw. O agente registra um job amarrado ao invoice_id, que chama invoice_status a cada 5 minutos, te avisa no Telegram quando o valor cair — e então remove a si mesmo. Está disponível desde a v0.5.0.