Matriz de integrações entre componentes, protocolos em uso e o diagrama de sequência do fluxo crítico de compra de ovo (gacha).
| De → Para | Protocolo | Dados | Sincronia | Criticidade | Fonte |
|---|---|---|---|---|---|
| dApp → Carteira (Reown) | EIP-1193 / WalletConnect v2 | conexão, assinatura, envio de tx | Síncrono | Crítica | RW.BC.DApp/integracoes.md |
| dApp → BSC RPC (leitura) | JSON-RPC HTTPS | getters dinâmicos on-chain | Síncrono | Alta | RW.BC.DApp/integracoes.md |
| dApp → Contratos (escrita) | JSON-RPC via signer | requestObtain, stake, list, obtain, swap |
On-chain (assíncrono na confirmação) | Crítica | RW.BC.DApp/integracoes.md |
| dApp → Firebase Auth | HTTPS (SDK Web v12) | login/cadastro, idToken | Síncrono | Alta | RW.BC.DApp/integracoes.md |
| dApp → API (REST) | HTTPS + Firebase JWT Bearer | contas, listings, NFTs, staking, referral, transparência | Síncrono | Alta | RW.BC.DApp/integracoes.md |
| dApp ↔ API (SignalR) | WebSocket | marketChanged, forgeFulfilled |
Assíncrono (push) | Média | RW.BC.DApp/integracoes.md |
| dApp → CoinGecko | HTTPS REST | cotação BNB/fiat | Síncrono | Baixa | RW.BC.DApp/integracoes.md |
| dApp → Pinata (admin) | HTTPS multipart | upload de arte de edição | Síncrono | Baixa | RW.BC.DApp/integracoes.md |
API → Postgres public |
TCP / Npgsql (EF) | accounts, wallet_link_nonces | Síncrono | Crítica | RW.BC.Api/integracoes.md |
API → Postgres indexer |
TCP / Npgsql (EF, read-only) | read-models via Gridify | Síncrono | Alta | RW.BC.Api/integracoes.md |
| API → Postgres LISTEN/NOTIFY | TCP / Npgsql (conexão dedicada) | sinal indexer_live_query |
Assíncrono | Média | RW.BC.Api/integracoes.md |
| API → Firebase (OIDC) | HTTPS / JWKS | chaves públicas para validar JWT | Síncrono | Crítica | RW.BC.Api/integracoes.md |
| Indexer → BSC RPC | JSON-RPC HTTP/WS | eventos + readContract (getEdition) |
Assíncrono (stream) | Crítica | RW.BC.Indexer/integracoes.md |
Indexer → Postgres indexer |
TCP (driver pg) |
upsert dos read-models | Síncrono | Crítica | RW.BC.Indexer/integracoes.md |
| Forge → Chainlink VRF | on-chain (BSC) | requestRandomWords / fulfillRandomWords |
On-chain (callback) | Crítica | RW.BC.Crypto/integracoes.md |
| Forge → NFT | chamada de contrato | pickEdition, forgeMint |
On-chain | Crítica | RW.BC.Crypto/integracoes.md |
| NFT → BCKN | chamada de contrato | burnFrom (rename) |
On-chain | Média | RW.BC.Crypto/integracoes.md |
| Staking → BCKN | chamada de contrato | mint (yield) |
On-chain | Alta | RW.BC.Crypto/integracoes.md |
| Marketplace → NFT | chamada de contrato | safeTransferFrom, royaltyInfo |
On-chain | Alta | RW.BC.Crypto/integracoes.md |
| Scripts Hardhat → BSC RPC | JSON-RPC HTTP | deploy / upgrade / interação | Síncrono | Média | RW.BC.Crypto/integracoes.md |
| Scripts Hardhat → BSCScan | REST (etherscan-compat) | verificação de contrato | Síncrono | Baixa | RW.BC.Crypto/integracoes.md |
| Protocolo | Uso | Onde |
|---|---|---|
| JSON-RPC (HTTP/WS) | Leitura/escrita on-chain e indexação | dApp, Indexer, Scripts → BSC/Anvil |
| EIP-1193 / WalletConnect v2 | Conexão e assinatura de carteira | dApp ↔ carteira |
| HTTPS REST + JWT Bearer | API de contas e read-models | dApp → API |
| WebSocket (SignalR) | Notificações em tempo real | dApp ↔ API |
TCP / Npgsql + driver pg |
Acesso ao Postgres compartilhado | API e Indexer → Postgres |
| Postgres LISTEN/NOTIFY | Sinal de mudança no read-model | API ↔ Postgres |
| OIDC / JWKS | Descoberta de chaves do Firebase | API → Firebase |
| Chainlink VRF v2.5 | Aleatoriedade verificável (gacha) | Forge ↔ VRF |
sequenceDiagram
actor U as Usuario
participant DAPP as dApp
participant GATE as WriteGate
participant W as Carteira
participant FORGE as Forge
participant VRF as Chainlink VRF
participant NFT as NFT
participant IDX as Indexer
participant API as App Backend
participant HUB as SignalR
U->>DAPP: seleciona tier, nome, confirma compra
DAPP->>GATE: verifica login + carteira vinculada
GATE-->>DAPP: allowed
DAPP->>W: requestObtain(tier, referrerCode, name) pagando tierPrice
W->>FORGE: tx assinada
FORGE->>VRF: requestRandomWords
FORGE-->>DAPP: receipt com requestId (evento ForgeRequested)
DAPP->>HUB: Subscribe(address) e aguarda forgeFulfilled
VRF-->>FORGE: fulfillRandomWords(randomWords)
FORGE->>NFT: pickEdition(tier, word) + forgeMint(buyer, edition, gender, name, referrerCode)
NFT-->>FORGE: retorna referrer e rateBps (1o ovo do indicado)
FORGE->>FORGE: acumula split do preco em pendingReferralBnb
Note over IDX: indexa ForgeFulfilled, Minted, ReferralLinked e ReferralBnbAccrued
IDX->>API: read-model atualizado no schema indexer
API->>HUB: publica forgeFulfilled ao grupo do comprador
HUB-->>DAPP: forgeFulfilled(requestId, tokenId, editionId)
DAPP-->>U: animacao de chocagem + reveal do NFT
Note over DAPP,API: fallback 1 GET forge-requests / fallback 2 polling on-chain (timeout 45s)
A recompensa de indicação (BNB, fatia do preço do ovo) fica reservada em
pendingReferralBnb no Forge; o referrer a saca depois via claimReferralBnb() (ver
dominios/indicacao.md).