Teu progresso
0 / 83 módulos0%
Estágio 04 · 04-11
BloqueadoEngenheiros full-stack frequentemente caem em dois extremos com web3: ignoram completamente ("hype, scam, fim") ou viram crypto-bro acrítico ("descentralizar tudo"). Nenhum dos dois é técnico. A realidade: blockchains são distributed systems com restrições específicas (Byzantine fault tolerance, total ordering, immutability) e custos próprios (gas, finality, UX wallets). Há use cases legítimos (settlement, supply chain auditável, cross-border payments, identity, NFT como bilhete digital) e ilegítimos (cargo cult em domínio que não precisa).
Este módulo é web3 com olho de engenheiro: como blockchains funcionam (em particular EVM), wallets, smart contracts, dev workflow, oracle pattern, layer 2s, custódia, segurança, e quando vale incluir blockchain num sistema. Sem hype, sem desdém.
Distributed ledger replicado em nodes, com:
Categorias:
Em 2026, Ethereum dominante em smart contracts. Solana, Avalanche, Cosmos, etc. competem.
Finality: tempo até bloco "irrevogável". Bitcoin ~6 confirmations (~1h). Ethereum L1 ~13 min finality. L2s segundos.
EVM (Ethereum Virtual Machine) executa bytecode determinístico em todos nodes. Cada operação custa gas: input importa, output importa, storage caro.
Smart contract deploy: bytecode + constructor args.
Gas model:
gasPrice (Gwei).gasLimit.Em 2026, ETH transactions L1 custam $0.50-5 dependendo. L2 custam fracções.
Languages:
Tools:
Padrões:
State on-chain é caro. Padrões:
Em sistema híbrido: blockchain pra eventos críticos (settlement, ownership transfer), DBs comuns pra resto.
Addresses derivam de chaves privadas. Wallet = secret key + UI.
Tipos:
Em 2026, passkeys + smart wallets está ganhando UX (sem seed phrase pra usuário comum).
Front conecta wallet → user assina transactions → broadcast.
Node próprio caro. Use providers:
WebSocket subscriptions pra events.
Smart contracts são determinísticos; não chamam HTTP. Pra ler "preço de ETH", "resultado de jogo", "shipment chegou": oracles trazem off-chain → on-chain.
Pattern: oracle pushes data; smart contract reads.
Reduce custo + latency mantendo Ethereum security:
Em 2026, L2s dominam custo. L1 settlement layer.
Move tokens cross-chain:
Bridges são frequentemente exploitados (bilhões em hacks). Use bem auditadas (Wormhole, LayerZero, Across).
Bugs em contratos podem queimar fundos. Categorias:
Practice:
Sem entrar em finance: como engenheiro, entender pra ler integrações.
ERC-721, ERC-1155.
Crescente em SSO sem provider central.
Default: ignore blockchain a menos que forte motivação domain-driven.
Casos plausíveis:
Mas: complexity adds non-trivial. Comece simples, agregue blockchain só com demand clara.
Status reality check 2026. TVL DeFi: ~$80-120B (recovered do trough $20B em 2022; ainda longe do peak $180B em 2021). Daily active wallets: 5-10M (vs 100M+ daily logins web2). Institutional adoption travou em maioria de use cases não-financeiros. Real adoption: stablecoins (USDC/USDT $150B+ supply), tokenized treasuries, FX corridors. Failure pattern: NFT projects, DAOs governance, "blockchain everything" — viraram footnote. Honesty principle: Senior+ deve saber argumentar contra blockchain quando 99% dos casos um Postgres + assinatura RSA resolve.
Smart contract auditing — production process. Tooling 2026 standard: Foundry (forge test --gas-report), Hardhat (legacy mas vivo), Slither (static analysis), Mythril (symbolic execution), Echidna (property-based fuzzing). Audit firms tier list: Trail of Bits, OpenZeppelin, ConsenSys Diligence (top); Spearbit, Sherlock, Code4rena (competitive contests). Costs reais 2026: solo audit $30-200k pra contract não-trivial; competitive (Code4rena/Sherlock) $50-500k pool — better coverage. Audit checklist mínimo: reentrancy, integer over/underflow (Solidity 0.8+ checked default), access control, oracle manipulation, front-running (MEV), upgrade pattern correctness, integer division precision loss, storage collision em proxies.
// Foundry test patterns — copy-paste ready
function testReentrancy() public {
Attacker a = new Attacker(address(target));
vm.expectRevert();
a.attack{value: 1 ether}();
}
function testFuzz_Withdraw(uint256 amount) public {
vm.assume(amount > 0 && amount <= 100 ether);
target.deposit{value: amount}();
target.withdraw(amount);
assertEq(target.balanceOf(address(this)), 0);
}
Common attack vectors 2024-2026. Reentrancy (clássico): use Checks-Effects-Interactions OR nonReentrant modifier OpenZeppelin. NEVER call{value:x} antes de update state. Oracle price manipulation: single-block flash loan distorts spot; mitigation TWAP (Uniswap V3 oracle), Chainlink (decentralized). Signature replay: EIP-712 typed data + nonce + chainId; sign hash não bare message. Cross-chain bridge exploits: Wormhole 2022 ($325M), Ronin 2022 ($625M), Multichain 2023 ($210M); bridges são single largest attack surface, treat as untrusted. Governance attacks: Compound flash-loan governance (2022); mitigation timelocks (Compound 48h), voting power snapshots em block antigo.
Gas optimization patterns. Storage cost dominates: SSTORE (write) = 22,100 gas zero→non-zero, 5,000 gas non-zero→non-zero; SLOAD 2,100 gas warm/cold. Pack struct fields em ≤256 bits per slot — uint128 a; uint128 b; = 1 slot vs uint256 a; uint256 b; = 2 slots. Use external over public quando function não chamada internally (saves gas em ABI decode). unchecked { } blocks em loops sem overflow risk (~30 gas per op). Custom errors over string messages (saves 50-100 bytes per revert path). Bitmaps pra storing flags (1 slot = 256 flags vs 256 slots de bool). Numbers reais: contract bem otimizado vs naive: ~30-50% gas savings em mainnet ($100s/op em peak).
// Custom errors + packed struct + bitmap pattern
error InsufficientBalance(uint256 available, uint256 required);
struct Order {
uint128 amount; // pack 2 fields em 1 slot
uint64 deadline;
uint64 status;
}
contract Vault {
mapping(address => uint256) private _flags; // 256 bool flags por slot
function withdraw(uint256 amount) external {
uint256 bal = balances[msg.sender];
if (bal < amount) revert InsufficientBalance(bal, amount);
unchecked { balances[msg.sender] = bal - amount; }
(bool ok,) = msg.sender.call{value: amount}("");
require(ok);
}
}
L2 scaling reality 2026. Optimistic rollups (Optimism, Arbitrum): 7-day challenge period pra fraud proofs; bridges out custosos; throughput ~1k-10k TPS. ZK rollups (Polygon zkEVM, zkSync, StarkNet, Linea): instant finality cryptographic proofs; prover costs significant; ~1k-10k TPS. Base (Coinbase L2 on Optimism): tração com onboarding fiat, ~$2B TVL 2026. L2 transaction cost: $0.05-1 vs $5-50 mainnet. Decision tree: DeFi high-value → mainnet ou ZK rollup; gaming/social → Base/Arbitrum; ultra-low-value microtransactions → não usar blockchain.
Account Abstraction (ERC-4337). Substitui EOA com smart contract wallets nativamente, sem hard fork. Components: UserOperation (intent), Bundler (relays UserOps to mempool), EntryPoint (singleton contract per chain), Smart Account (user's contract wallet), Paymaster (sponsors gas — opcional). Use cases reais: gas sponsorship (app paga gas user-side via Paymaster, UX web2); session keys (temp key autoriza app por 24h sem signature per tx — gaming, agents); social recovery (lost key → guardians 3-of-5 recover wallet); batch operations (1 UserOp = N actions, approve+swap+stake atomic). Bundler infra: Stackup, Pimlico, Alchemy, Biconomy (managed); self-host via Skandha Node. Smart Account libs: Safe (formerly Gnosis Safe), Kernel ZeroDev, Biconomy SDK, Privy (consumer wallet UX). Pattern Logística: courier paga delivery em USDC → Paymaster sponsors gas → user nunca toca ETH; UX igual web2 PSP.
// UserOperation skeleton (ERC-4337)
struct UserOperation {
address sender;
uint256 nonce;
bytes initCode; // deploy account if not exists
bytes callData; // action(s) to execute
uint256 callGasLimit;
uint256 verificationGasLimit;
uint256 preVerificationGas;
uint256 maxFeePerGas;
uint256 maxPriorityFeePerGas;
bytes paymasterAndData; // paymaster sponsors gas
bytes signature;
}
Honest comparison: Web3 vs Web2 alternatives. "Decentralized identity" → DID + verifiable credentials (W3C) NÃO PRECISAM blockchain (use ION on Bitcoin opcional). "Audit trail imutável" → append-only log + Merkle tree em DB tradicional + cryptographic timestamping (Sigsum, RFC 3161); 1000x cheaper. "Cross-border payments" → stablecoins têm uso real, mas Wise/Revolut/Brex resolvem 95% dos casos com regulatory clarity. "Tokenized assets" → real estate fracionalization etc. blocked por regulatory, NÃO por tecnologia.
Logística + blockchain — verdict (cruza com §2.19). Aprofundamento: courier identity verifiable via DID OK (mas overkill); proof-of-delivery hash on-chain como audit trail OK mas Postgres + RFC 3161 timestamping resolve igual; settlement em stablecoin entre tenants cross-border via L2 (Base) — único caso onde Web3 ganha real. Recommendation: NÃO adicionar blockchain ao Logística MVP. Considere apenas em V3+ se cross-border settlement virar core business.
Anti-patterns observados:
call{value:x} antes de state update (clássico, ainda comum em código novo).Cruza com: 02-13 (auth, signature schemes EIP-712), 04-01 (distributed systems theory, consensus), 03-08 (security, auditing common ground), 04-10 (LLM, AI auditing tools), 02-18 (payments, stablecoin pra cross-border).
Você precisa, sem consultar:
Settlement contract simples integrado com Logística, proof-of-concept.
LogisticaEscrow.sol:
Ownable, ReentrancyGuard).BLOCKCHAIN-DECISION.md: vale incluir blockchain em produção real do Logística? Em que cenário sim, em que cenário não. Cost estimate (gas) por transação realista.Threshold de Maestria
Acerte todas as 5 pra marcar o módulo como concluído. Sem pressa, sem timer. Tudo fica salvo no teu navegador.
Q1Qual é a diferença essencial entre Optimistic Rollups e ZK Rollups como L2s?
Q2Por que o ataque de reentrancy ainda aparece em código novo apesar de ser clássico?
Q3Em ERC-4337 (Account Abstraction), qual componente sponsora o gas para que o usuário não precise possuir ETH?
Q4Para um sistema interno de audit trail imutável, qual recomendação é mais alinhada à 'honest comparison Web3 vs Web2'?
Q5Qual gas optimization tem maior impacto em storage cost em Solidity?
Destrava
04-11 é prereq dos seguintes módulos: