Blockchain do Bitcoin: desempenho e escalabilidade
O Bitcoin é um sistema de dinheiro eletrônico descentralizado que possibilita o pagamento peer-to-peer sem passar por um intermediário. O software original do Bitcoin foi desenvolvido por Satoshi Nakamoto e lançado sob a Licença MIT em 2009, seguindo o white paper do Bitcoin, Bitcoin: Um Sistema de Dinheiro Eletrônico Peer-to-Peer.
O Bitcoin é a primeira implementação bem-sucedida de uma criptomoeda distribuída. Dezesseis anos após o nascimento do Bitcoin, há cerca de 20 milhões de Bitcoins em circulação, e ele agora atingiu um valor de mercado de mais de $2 trilhões.
Dentro da blockchain do Bitcoin, uma transação significa que uma coleção de entradas e saídas transfere a propriedade de bitcoins entre pagador e recebedor. As entradas instruem a rede de qual moeda ou moedas o pagamento será retirado. Essas moedas na entrada precisam estar não gastas, o que significa que não foram usadas para pagar outra pessoa. Enquanto isso,
as saídas fornecem os montantes gastáveis de bitcoins que o pagador concorda em pagar aos recebedores. Uma vez que a transação é feita, as saídas se tornam os montantes não gastos para o recebedor, e eles permanecem não gastos até que o recebedor atual pague alguém com a moeda.
Quando, por exemplo, Alice precisa pagar Bob 10 BTC, Alice abre sua carteira de Bitcoin, e escaneia ou copia o endereço de transação de Bob e cria uma transação com um pagamento de 10 BTC para Bob. Uma vez que a transação é assinada digitalmente e submetida, ela é enviada para a rede blockchain do Bitcoin.
Após a transação ser transmitida para a rede Bitcoin, o contador nó, geralmente um nó completo em uma rede P2P que recebe as transações, a valida de acordo com as regras do protocolo Bitcoin. Se a transação for válida, o contador a adiciona ao pool de transações e retransmite a transação para os pares na rede.
Dentro da rede Bitcoin, a cada 10 minutos, um subconjunto de nós da rede, chamados de “nós de mineração” ou mineradores, coleta todas as transações válidas do pool de transações e cria os blocos candidatos. Eles também criam uma transação coinbase para si mesmos a fim de receber recompensas e coletar taxas de transação. No caso de “vencerem a corrida de mineração” e adicionarem o bloco à cadeia, todos os nós verificarão o novo bloco e o adicionarão à sua própria cópia da blockchain. Magicamente, Bob será capaz de ver o pagamento de Alice — e 10 BTC em sua carteira.
Uma das principais preocupações na rede Bitcoin, ou em geral para qualquer blockchain baseada em prova de trabalho (PoW), é a escalabilidade. Por design, cada transação precisa ser verificada por todos os nós. Leva em média 10 minutos para criar um novo bloco, com o tamanho do bloco limitado a 1 MB. Limitações de tamanho e frequência de blocos restringem ainda mais a capacidade da rede. Como resultado, um bloco de Bitcoin é capaz de acomodar uma média de 2.700 transações. Com os sistemas de pagamento de hoje, a VISA é capaz de lidar em média com cerca de 2.000 transações por segundo (TPS), e a taxa de pico diária é de cerca de 4.000 TPS. A partir de 2025, o Paypal pode lidar em média com cerca de 193 TPS, ou quase 17 milhões de transações por dia.
Claramente, alcançar uma capacidade semelhante à da Visa na rede Bitcoin não é viável. Maior desempenho e melhor escalabilidade exigiriam aumentar o limite de processamento de transações da rede e realizar melhorias de software para a rede Bitcoin.
O trilema da blockchain aborda a "trifeta" de alcançar escalabilidade, descentralização e segurança em uma rede blockchain sem comprometer nenhum deles. Central para a premissa do trilema é a afirmação de que é quase impossível alcançar todas as três propriedades dentro de um sistema de blockchain.
O diagrama a seguir é uma ilustração do trilema de escalabilidade da blockchain.
A chave para o conceito de escalabilidade é encontrar uma maneira de alcançar todos os três requisitos na camada base. As escolhas de design do Bitcoin favorecem a descentralização e a segurança enquanto fazem um sacrifício na escalabilidade.
Soluções de escalabilidade do Bitcoin
Existem muitas propostas de soluções de escalabilidade para o Bitcoin, que podem ser divididas em escalabilidade on-chain e off-chain.
Escalabilidade on-chain
Soluções on-chain, às vezes também chamadas de soluções de Camada 1, abordam questões de escalabilidade e desempenho na camada base da rede blockchain do Bitcoin. Em termos de latência de rede, a escalabilidade on-chain fornece a capacidade de lidar com mais transações na blockchain. Exemplos incluem SegWit, que acomoda um maior número de transações em um bloco de 1 MB, e Bitcoin Cash (BCH, símbolo Ƀ), que simplesmente aumenta o tamanho do bloco.
SegWit
SegWit (Proposta de Melhoria do Bitcoin número BIP14) é a abreviação de “testemunha segregada”, que significa separar a assinatura digital de uma transação. Foi introduzido pela primeira vez pelo desenvolvedor Pieter Wiulle na conferência Scaling Bitcoin em dezembro de 2015. O objetivo do SegWit era prevenir a maleabilidade não intencional das transações de Bitcoin e permitir a transmissão opcional de dados, além de contornar certas restrições do protocolo.
Uma transação de Bitcoin consiste em três coisas:
uma entrada de transação, que é o endereço do remetente de Bitcoin
uma saída de transação, que é o endereço de recebimento de Bitcoin
a quantidade de Bitcoin sendo enviada, juntamente com uma assinatura digital que verifica que o remetente está apto a enviar as moedas
O identificador da transação muda se a assinatura digital mudar. Acontece que o código do Bitcoin permite que assinaturas digitais sejam alteradas quando uma transação ainda precisa ser confirmada. Uma vez que uma transação é adicionada à rede, a transação, incluindo a assinatura, torna-se imutável. A alteração da assinatura é feita de forma que, se você executar uma verificação matemática nela, ainda seja validada pela rede. No entanto, quando você executa um algoritmo de hashing nela, ele dá um resultado diferente.
Vamos dar uma olhada em um exemplo:
Entrada:
Transação anterior: p9k5ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Índice: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Saída:
Valor: 2000000000
scriptPubKey: OP_DUP OP_HASH160 201371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG
A entrada nesta transação importa 20 BTC da saída #0 na transação p9k5e… Então, a saída envia 20 BTC para um endereço Bitcoin (expresso aqui em hexadecimal 2013… em vez do normal base58). Quando o destinatário quiser gastar este dinheiro, ele referenciará a saída #0 desta transação em uma entrada de sua própria transação.
Algumas definições:
• Transação anterior — um identificador da transação anterior para o endereço A
• Índice — número de entrada (aqui temos apenas um número de entrada: 0)
• scriptSig — primeira parte do script de validação (contém uma assinatura de transação)
• Valor — o número de bitcoins a enviar em unidades de satoshi (um bitcoin = 100 milhões de satoshis) (20 bitcoins no exemplo acima)
• scriptPubKey — segunda parte do script de validação, que também contém o endereço do receptor B.
Para verificar se o valor da transação anterior pode ser gasto, é necessário combinar o scriptSig de uma nova transação com o scriptPubKey da transação anterior, a fim de garantir que o resultado seja verdadeiro e válido; scriptPubKey simplesmente verifica a igualdade da chave pública e a validade da assinatura (OP_CHECKSIG).
Em uma transação de Bitcoin, o txid (abreviação de ID de transação, ou hash de transação) é um hash sha256d de todos os campos dos dados da transação. O valor do txid depende do scriptSig. Durante um processo de transação de nó de mineração, o nó pode modificar o scriptSig para que a assinatura permaneça válida, e a transação terá o mesmo efeito, mas o txid mudará. Por exemplo, pode-se adicionar uma operação OP_NOP (que não faz nada). Ou para um pouco de sofisticação, pode-se adicionar duas operações: OP_DUP e OP_DROP (a primeira duplica a assinatura na pilha, e a segunda a remove novamente). A assinatura ainda é válida, mas o txid muda.
Outro exemplo: Se o valor da assinatura for "3", podemos mudá-lo para "03" ou "3+7-7". Matematicamente, ainda é o valor da transação com uma assinatura válida, mas há diferentes resultados de hash, já que o hash depende de como você escreve o valor, e não do valor em si.
Um id de transação mutável para uma transação existente pode ser problemático por várias razões. Por exemplo, se você quiser construir uma solução de Camada 2 sobre a rede Bitcoin, você precisa garantir que ninguém possa alterar a Camada 1, já que a Camada 2 depende dela.
Modificar o txid pode causar problemas se você estiver gastando ou aceitando fundos não confirmados. Aqui está como o SegWit resolve esse problema:
Com o SegWit, todas as informações maleáveis são separadas da transação em “dados de testemunha” separados. Ao calcular o txid, ele não incluirá essas informações maleáveis. Neste caso, o identificador nunca poderá mudar, pois os problemas serão corrigidos.
Aqui está um exemplo de saída de transação SegWit:
Índice 0
Detalhes
Saída
Endereço
35SegWitPieWKVHieXd97mnurNi8o6CM73
Valor
1.00200000 BTC
PkScript
OP_HASH160
2928f43af18d2d60e8a843540d8086b305341339
OP_EQUAL
SigScript
0014a4b4ca48de0b3fffc15404a1acdc8dbaae226955
Testemunha
30450221008604ef8f6d8afa892dee0f31259b6ce02dd70c545cfcfed8148179971876c54a022076d771d6e91bed212783c9b06e0de600fab2d518fad6f15a2b191d7fbd262a3e01
039d25ab79f41f75ceaf882411fd41fa670a4c672c23ffaf0e361a969cde0692e8
Podemos ver que há informações de testemunha, e que os dados incluem todas as informações maleáveis. O SigScript tem muito menos informações de hash em comparação com o exemplo anterior sem a transação SegWit. Isso também significa que ele reduz o tamanho de uma transação Bitcoin e melhora a velocidade das transações ao remover os dados de testemunha da parte original e anexá-los como uma estrutura separada no final.
Aqui estão alguns dos benefícios do SegWit:
Desempenho do nó — O tamanho da transação é reduzido, de modo que a rede Bitcoin fica menos congestionada, pois os nós podem verificar blocos (ou transações) mais rapidamente.
Maleabilidade da transação — Como discutido acima, com o SegWit, a assinatura é movida dos dados da transação para um bloco de dados de testemunha. O txid é imutável e protege os dados da transação contra hackers.
Escalonamento linear das operações de hash de assinatura — Reduzir o tamanho da transação adiciona mais dados de transação para uma determinada transação como parte de um lote. O SegWit separa as assinaturas de transação dos dados da transação para que cada byte de uma transação precise ser hash no máximo duas vezes.
Aumento da segurança para transações de múltiplas assinaturas — O SegWit fornece dois scripts diferentes: um para uma chave pública e outro que direciona pagamentos para um hash de script. Ao combinar esses scripts, o SegWit aumenta a segurança ao permitir uma transação de múltiplas assinaturas (multisig).
Construir sobre a Camada 1 — SegWit é ótimo para o desenvolvimento de protocolos de Camada 2 do Bitcoin, como a Lightning Network. Além disso, a ativação do SegWit impulsiona o trabalho de desenvolvimento em outras funcionalidades, como MAST (que permite contratos inteligentes de Bitcoin mais complexos), assinaturas Schnorr (que permitem um aumento na capacidade de transação) e TumbleBit (uma rede de camada superior anônima).
Protege a Lightning Network — Os canais de micropagamento da Lightning Network dependem de transações com dupla assinatura para bloquear os depósitos iniciais. Para iniciar um pagamento na Lightning Network, os fundos de ambas as partes são enviados para um endereço com dupla assinatura. Para evitar fraudes, a transação deve ser assinada duas vezes antes que quaisquer fundos sejam realmente enviados para o endereço com dupla assinatura. Ambas as partes precisam estar sincronizadas para coletar as saídas das transações da blockchain principal. Este ID de transação necessário é imutável.
Em teoria, o SegWit pode dobrar a capacidade de processamento do Bitcoin (ou TPS). No entanto, embora melhorar a capacidade de processamento da rede Bitcoin seja crítico, mesmo uma duplicação teórica ainda é muito baixa para o uso generalizado do Bitcoin como sistema de pagamento.
Tamanho do bloco
Outra proposta para melhorar a escalabilidade on-chain do Bitcoin sugere aumentar o tamanho do bloco. A ideia é superficialmente simples: aumentar o tamanho do bloco de 1 MB de hoje para, por exemplo, 8 MB aumentaria a capacidade de transação em oito vezes. Por exemplo, os blocos do Bitcoin Cash (BCH) eram inicialmente de 8MB, e atualmente um bloco BCH é definido em 32 MB. Tal abordagem de escalonamento vertical adiciona muitas mais transações dentro de um bloco. No entanto, aumentar o tamanho do bloco significa que a blockchain pode ser muitas vezes maior — e isso requer uma melhor capacidade de computação para processar blocos de grande tamanho. Ao mesmo tempo, isso diminuiria a segurança da rede até certo ponto, devido à diminuição do poder de hash honesto efetivo.
Isso também pode levar a um cenário em que uma rede é concentrada em poucas mãos ricas e, assim, pode, em última análise, comprometer a descentralização e a segurança, os principais princípios da blockchain. Em termos de preocupações com a segurança, é uma crença comum que uma rede blockchain é mais segura se mais nós da rede participarem no processamento de transações. Com a distribuição mais ampla das cadeias de altcoin, menos nós operarão em qualquer blockchain dada.
Isso pode realmente tornar a blockchain menos segura, já que uma rede de altcoin menor pode ser mais vulnerável a ataques de rede. Por exemplo, digamos que temos cerca de 10.000 nós em uma rede maior. Será necessário que pelo menos 5.001 nós (51%) sejam comprometidos para lançar um ataque à rede. Se dividirmos 10.000 nós em 50 cadeias menores, cada cadeia compreende 200 nós, então só são necessários 101 nós para derrubar qualquer cadeia menor, o que chamamos de problema de ataque de 1%.
Outro problema é a integração entre cadeias: embora existam algumas soluções para lidar com a integração entre blockchains, a complexidade geral de integrar cadeias menores e altcoins aumentará drasticamente. SegWit2x, uma proposta de compromisso para o debate sobre o tamanho do bloco em 2017, sugeriu que o SegWit fosse ativado como um primeiro passo, e depois disso, o tamanho do bloco seria aumentado para 2 MB. No entanto, esta proposta não foi aceita pela maioria dos nós na rede Bitcoin.
Soluções fora da cadeia
Semelhante às justificativas para uma solução na cadeia, a comunidade Bitcoin também está ativamente buscando soluções fora da cadeia, às vezes chamadas de soluções de Camada 2. Na escalabilidade fora da cadeia, a solução é construir uma camada extra sobre a blockchain do Bitcoin que possa processar todos os tipos de transações com dois participantes. Essas transações podem então ser agrupadas e enviadas como uma única transação na blockchain. Uma dessas soluções fora da cadeia é chamada de Lightning Network.
Lightning Network
Em janeiro de 2016, um white paper intitulado The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments foi submetido por Joseph Poon e Thaddeus Dryja. Nele, os contornos da Lightning Network foram descritos.
Lightning é uma rede descentralizada que utiliza a funcionalidade de contratos inteligentes dentro de uma blockchain para permitir pagamentos instantâneos através de uma rede de participantes.
A solução de pagamento de Camada 2 do Lightning Network escala blockchains e permite pagamentos instantâneos sem confiança ao manter a maioria das transações fora da cadeia. Ele constrói uma rede de canais de pagamento, nos quais duas partes realizam uma transação e pagam apenas uma à outra. O processo é instantâneo, e a transação não precisa ser validada, retransmitida e armazenada por cada nó da rede Bitcoin, pois é apenas entre os dois participantes.
Ao mover pagamentos para fora da cadeia, o custo de manutenção dos canais é reduzido em relação ao volume de pagamentos nesse canal, permitindo micropagamentos e transações de pequeno valor para as quais as taxas de transação na cadeia seriam, de outra forma, muito caras para justificar. Além disso, o Lightning Network escala a capacidade de transações fora da cadeia com processamento de dados moderno e limites de latência, para que os pagamentos possam ser processados com grande velocidade.
Vamos dar uma olhada em como o Lightning Network funciona.
Exemplo: Inicialmente, Alice possui a transação de compromisso A1, e Bob possui a transação de compromisso B1. A chave de revogação para A1, K A1, é de propriedade apenas de Alice, e a chave de revogação para B1, K B1, é de propriedade apenas de Bob.
Suponha que Alice e Bob tenham cada um 10 BTC em sua conta. Alice quer enviar 2 BTC para Bob.
Alice e Bob depositam ambos quantias iguais de dinheiro (neste caso, 10 BTC) e cada um coloca um bloqueio nisso. Esta ação de depositar quantias iguais de dinheiro em uma caixa comum é registrada no blockchain na forma de um "canal de pagamento", que é então aberto entre os dois participantes.
Alice cria uma nova transação, B2, que aloca 8 BTC para Alice e 12 BTC para Bob.
Alice assina B2 e a envia para Bob.
Bob recebe B2, assina e a guarda.
Bob cria uma nova transação, A2, que aloca 8 BTC para Alice e 12 BTC para Bob.
Bob assina A2 e a envia para Alice.
Alice recebe A2, assina e a guarda.
Alice fornece Ka1, invalidando A1. Ela pode então deletar A1.
Bob fornece K B1, invalidando B1. Ele pode então deletar B1.
Para resumir, o canal de pagamento está criando uma combinação de agrupamento de dinheiro para ambas as partes, e então transferindo a promessa de propriedade do dinheiro agrupado da maneira acordada. Quando Alice ou Bob quiserem fechar o canal, eles podem. “Fechar um canal” significa simplesmente que ambos os lados pegam seu próprio dinheiro de volta. Esta abertura da caixa ocorre na blockchain, e o registro de quem possui quanto da caixa é registrado para sempre.
A Lighting Network usa um Contrato de Bloqueio de Tempo com Hash (HTLC), uma classe de pagamentos que utiliza hashlocks e timelocks para exigir que o receptor de um pagamento reconheça o recebimento do pagamento antes de um prazo, gerando prova criptográfica de pagamento, ou perca a capacidade de reivindicar o pagamento, retornando-o ao pagador. Permite que transações sejam enviadas entre partes que não têm um canal direto, roteando-as através de múltiplos saltos (canais adicionais), de modo que qualquer pessoa conectada à Lightning Network faça parte de um único sistema financeiro global interconectado.
Vamos dar uma olhada em um exemplo:
Alice quer enviar um pagamento para Tim, mas ela não tem um canal de pagamento com Tim. Alice tem um canal de pagamento com Bob, que tem um canal de pagamento com Tim. A questão é: Como Alice pode pagar Tim?
Para isso, Tim deve criar uma string secreta criptográfica (chave), então hashá-la usando uma função de hash (como SHA-256) e enviá-la para Alice. Tim também compartilha esse hash com Bob. Para simplificar esta ilustração escrita, representaremos o valor como V.
HTLC
O Hash (V) é a fechadura, e a chave é o código para desbloquear o HTLC.
Alice cria um HTLC com Bob e diz a Bob que ela o pagará se ele puder produzir a pré-imagem de V dentro de 3 dias. Alice assina uma transação com um tempo de bloqueio de três dias após sua transmissão. Bob pode resgatá-la, com o conhecimento de V, e depois disso é resgatável apenas por Alice. O HTLC permite que Alice faça uma promessa condicional a Bob, enquanto garante que seus fundos não serão acidentalmente queimados se Bob não souber o que é V.
Bob faz o mesmo, criando um HTLC que pagará Tim se Tim puder produzir V dentro de dois dias. No entanto, Tim, de fato, conhece V. Como Tim é capaz de retirar a quantia desejada de Bob usando sua chave, Tim pode considerar o pagamento de Alice como concluído. Agora, ele não tem problema em compartilhar V com Bob para que ele também possa coletar seus fundos.
Tim divulga a chave para Bob dentro de dois dias, e Tim é pago por Bob.
Bob divulga a chave para Alice dentro de três dias, e Bob é pago por Alice.
Depois que todos cooperam, todas essas transações ocorrem dentro da Lightning Network. Todos são pagos de maneira mecânica, já que a Lightning Network é quase atômica por natureza e bidirecional, o que significa que ou todos são pagos — ou ninguém é pago.
Com a Lightning Network, quando uma transação de pagamento é transmitida, todas as transações individuais são verificadas primeiro, e elas devem corresponder ao histórico de transações para evitar a transmissão de transações falsas ou incorretas. Há também uma penalidade imposta a transações fraudulentas: se a Lightning Network detectar um ator malicioso no sistema, ele é imediatamente penalizado. Dessa forma, toda a rede garante credibilidade e consistência enquanto desencoraja comportamentos inadequados.
Existem vários benefícios em usar a Lightning Network, em comparação com transações na cadeia:
Transações rápidas e instantâneas: O tempo de liquidação para transações na Lightning Network é inferior a um minuto e pode ocorrer em milissegundos.
Micropagamentos: A Lightning Network permite microtransações em grandes quantidades.
Taxa de transferência de transações: Fundamentalmente, não há limites para o número de pagamentos por segundo que podem ocorrer sob o protocolo. O número de transações é limitado apenas pela capacidade e velocidade de cada nó.
Privacidade: Sem registros na blockchain. Os detalhes das transações de pagamento individuais na Lightning Network não são registrados diretamente e publicamente na blockchain. Os pagamentos podem ser roteados através de muitos canais sequenciais, já que cada operador de nó poderá ver pagamentos através de seus canais. No entanto, eles não poderão ver a origem ou o destino desses fundos se não forem adjacentes.
Menos congestionamento na cadeia
Taxas de transação extremamente baixas: As taxas de transação pagas aos nós intermediários na Lightning Network são frequentemente pequenas, tipicamente em millisatoshis.
Limitações
A Lightning Network é composta por canais de pagamento bidirecionais entre dois nós que, quando combinados, criam contratos inteligentes. Se a qualquer momento qualquer uma das partes encerrar o canal, o canal será fechado e liquidado na blockchain.
Devido à natureza do mecanismo de disputa da Lightning Network, é necessário que cada participante sempre monitore seu canal e acompanhe o estado do livro-razão offline sendo transmitido para a rede. O conceito de uma "torre de vigia" foi desenvolvido para resolver este problema.
Conclusão
A blockchain do Bitcoin continua sendo um sistema de pagamento descentralizado inovador, mas seu design inerente prioriza a segurança e a descentralização em detrimento da escalabilidade, resultando em uma capacidade de transação limitada em comparação com as redes de pagamento tradicionais. Inovações como SegWit e a Lightning Network representam avanços críticos que melhoram o desempenho do Bitcoin ao aumentar a capacidade de transação e permitir pagamentos instantâneos fora da cadeia.
No entanto, o trilema da escalabilidade da blockchain continua a desafiar os desenvolvedores a equilibrar escalabilidade, segurança e descentralização sem compromissos. À medida que o Bitcoin evolui, pesquisas contínuas e soluções de escalonamento em camadas serão essenciais para apoiar uma adoção mais ampla e manter a integridade da rede em uma economia cada vez mais digital.
#LearnWithBybit

