Em breve, precisamos perceber que estamos executando um mundo financeiro legado e que precisamos construir uma infraestrutura digital mais confiável. Na verdade, não é apenas o setor financeiro que precisamos transformar, mas sim todas as áreas que precisam de altos níveis de confiança, segurança e distribuição. Para isso, podemos ter métodos de blockchain de Layer 1, como Ethereum, mas ele mostrou um problema de escalabilidade, onde o livro-razão principal e a infraestrutura de computação não conseguem lidar com mais de 15–30 transações por segundo.
Mas, novos métodos estão sendo aplicados para aliviar a carga no Ethereum — mantendo a confiabilidade e a distribuição. Isso inclui implementações de Layer 1 para compartilhamento e uma transição para Proof-of-Stake (PoS). Os avanços mais interessantes, no entanto, estão acontecendo dentro dos métodos de Layer 2 e que se baseiam na rede Ethereum principal (Mainnet).
Os canais de estado foram inicialmente implementados com a rede Bitcoin Lightning e, desde então, foram dimensionados no Ethereum. Com isso, temos basicamente dois registros no livro-razão da Mainnet, e onde a parte envolvida deve comprometer alguns fundos que podem ou não ser gastos. Por exemplo, digamos que Bob queira criar um canal lateral para pagar seus clientes e comprometerá 10 Eth. Ele então criará um contrato de canal. O Ether comprometido será então bloqueado durante o tempo do canal e não poderá ser gasto. Bob poderia então dar 2 $Eth para Alice e 3 $Eth para Carol. Depois que ele terminar com isso, ele comprometerá a transação finalizada de volta, e onde Bob receberá 5 $Eth de volta, e Alice receberá 2 $Eth e Carol receberá 3 Eth. No final, Bob apenas publica os dados resumidos e pagará apenas taxas de gas para os dois compromissos com o livro-razão. A implementação de canais de estado é oferecida pela Polygon, e que implementa compatibilidade total com EVM e baixas taxas de transação. Um exemplo de aqui é:
pragma solidity ^0.7.0;
contract PaymentChannel {
address public sender;
address public receiver;
uint256 public expiration;
uint256 public amount;
constructor(
address _receiver,
uint256 _amount,
uint256 _expiration
) payable {
sender = msg.sender;
receiver = _receiver;
amount = _amount;
expiration = block.timestamp + _expiration;
}
function close(uint256 _payment) public {
require(
msg.sender == receiver,
"Only the receiver can close the channel"
);
require(
_payment <= amount,
"Payment amount exceeds amount in the channel"
);
selfdestruct(receiver);
}
function extendExpiration(uint256 _expiration) public {
require(
msg.sender == sender,
"Only the sender can extend the expiration"
);
require(
_expiration > expiration,
"Expiration must be set to a longer time than the current expiration"
);
expiration = _expiration;
}
}
Um dos melhores mecanismos para escalar o Ethereum é mover as transações off-chain por meio de roll-ups e side chains.
Eles processam as transações off-chain e presumem que as transações são válidas (basicamente, uma abordagem de “confiar e verificar”). Eles só consomem recursos de computação na Mainnet quando há uma disputa nas transações. Haverá, portanto, um atraso no “período de contestação” que é necessário antes que as transações sejam realmente confirmadas na Mainnet.
Com Arbitrum, observadores de fraude analisam as transações e, se uma transação fraudulenta for identificada, o observador publicará uma prova de fraude na Mainnet. Na verdade, Arbitrum pode identificar as linhas do código que se relacionam com a análise de fraude e, em seguida, postar isso na Mainnet. A Mainnet pode então julgar a prova de fraude e decidir se deve executar o código necessário. Para Arbitrum, há um período de retirada de sete dias [aqui].
Optimism também usa métodos off-chain com roll-ups otimistas e presume que as transações são válidas. Ele usa observadores (ou verificadores) para determinar se há uma transação fraudulenta e pode enviar uma prova de fraude, e onde a transação pode ser removida. O observador será recompensado por encontrar uma transação fraudulenta. No geral, há um atraso de cerca de sete dias para o desafio, e onde a transação é revertida se for constatado que a prova de fraude está correta [aqui]:
Eles movem as computações e o armazenamento do estado para off-chain e envolvem uma abordagem sem confiança. Uma vez postado de volta na Mainnet, haverá atualizações mínimas necessárias para a mudança de estado e as provas associadas a isso. Como temos as provas em uma forma compactada, podemos ter uma validação rápida das transações atualizadas, juntamente com o suporte à privacidade das transações. Com isso, em vez de roll-ups otimistas que levam dias para serem confirmados, com zk-Rollups (baseados em zkSnarks), precisamos de apenas cerca de uma hora para verificar as provas. Isso garante que não haja gastos duplos e que todas as transações sejam solventes. Um exemplo é ZKsync [aqui]:
Com zk-Rollups, há provas criptográficas da validade das transações e, em seguida, elas se conectam à Mainnet. Seria, portanto, extremamente difícil realizar uma transação fraudulenta. Com roll-ups otimistas, há uma falta de prova criptográfica, então, antes que haja um compromisso de volta na Mainnet, e, portanto, um atraso para que transações fraudulentas possam ser detectadas.
Esta é uma side chain independente e é um blockchain separado que é conectado à Mainnet. Ao contrário dos métodos de roll-up, as transações atualizadas podem então ser ecoadas de volta na Mainnet quando necessário. No geral, eles têm seu próprio blockchain e seus próprios mecanismos de consenso — como Proof of Authority (PoA). Polygon é um exemplo de uma infraestrutura de side-chain. A fraqueza geral dos canais laterais é que eles provavelmente terão um modelo de segurança diferente da rede Ethereum principal [aqui]:
Para mim, Zero Knowledge Proofs em uma cadeia offline é a melhor solução, pois é rápido para verificar as transações na cadeia principal e para manter a privacidade daqueles que transacionam. Também podemos usar a divulgação seletiva dentro de ZKPs, e que poderia ser útil para revelar informações importantes, como se uma pessoa tem o direito de acessar um recurso.
Com roll-ups otimistas, presumimos que as transações são válidas, a menos que seja provado o contrário, e onde precisamos de um período de contestação para que as transações sejam contestadas antes de serem finalizadas. Com zk-Rollups, nossas transações serão válidas, pois há uma prova associada a isso, e onde temos um compromisso rápido com a Mainnet. Infelizmente, zk-Rollups precisam de um forte entendimento de criptografia e blockchain, o que pode retardar os desenvolvimentos.
Obviamente, Ethereum não é o único show na cidade, e Polygon [aqui], Solana [aqui], Cardano [aqui] e Polkadot [aqui] estão fornecendo alternativas que escalam melhor do que Ethereum. Mas, amamos o blockchain que nos trouxe contratos inteligentes e a EVM (Ethereum Virtual Machine), e muitos esperam que ele possa superar seus problemas de escalabilidade e manter os mesmos níveis de distribuição e segurança.