Spacechains: como funciona esta nova proposta de sidechain do Bitcoin

Nó Fonte: 1544330

Spacechains é uma proposta de sidechain Bitcoin que oferece um mecanismo de fixação unidirecional utilizando design de mina de fusão cega.

A ideia de sidechains como um mecanismo de escalonamento e extensão de recursos para Bitcoin é um conceito muito antigo. Uma espécie de ideia básica de “ancestral” de cadeias laterais, mesclar cadeias minadas, remonta até antes do desaparecimento de Satoshi.

Essa proposta era simplesmente a ideia de duas cadeias completamente separadas e não relacionadas sendo exploradas pelo mesmo grupo de mineradores, sem capacidade de mover nada entre as cadeias. O proposta original de sidechain foi feito em 2014 por muitas das pessoas que fundaram a Blockstream literalmente uma semana ou mais após a publicação do artigo. A ideia básica era poder fazer com que as moedas se movimentassem entre o blockchain principal do Bitcoin e outras cadeias laterais, com provas simples de verificação de pagamento (SPV) sendo usadas para provar que as coisas são válidas quando você envia moedas de uma cadeia para outra. Isso nunca se concretizou devido às complexidades na implementação em torno das reorganizações da cadeia, ao potencial de roubo e aos riscos da centralização da mineração (todos os quais podem ser lidos na seção quatro do Papel branco Bitcoin).

Os mecanismos de fixação para cadeias laterais podem ser de duas variedades, unidirecionais e bidirecionais. Os significados deveriam ser óbvios – em uma indexação bidirecional, as moedas podem se mover para frente e para trás entre a cadeia principal e a cadeia lateral, e em uma indexação unilateral, elas só podem se mover da cadeia principal para a cadeia lateral e nunca voltar. Atualmente, a única forma de indexação de cadeia lateral bidirecional implementada no Bitcoin é por meio de consenso federado, o que significa que a indexação é garantida por um conjunto confiável de “custodiantes” que mantêm o controle dos fundos vinculados à cadeia lateral em uma carteira multisig até que sejam retirados.

As pessoas, no entanto, continuaram trabalhando em outros designs para pinos de cadeia lateral que não são federados. Aqui vou analisar a proposta Spacechain de Ruben Somsen como exemplo. É um mecanismo de fixação unidirecional que usa um design de mina de fusão cega, semelhante a Paulo Stztorc's. Isto significa que as moedas só podem entrar na sidechain e nunca mais sair, e que os mineiros não têm de executar novo software para obter compensação pela mineração da sidechain (no entanto, como abordarei mais tarde, podem beneficiar mais ao fazê-lo).

A proposta da cadeia espacial

A mineração combinada exige que os mineradores executem os nós da cadeia Bitcoin e de qualquer outra cadeia que estejam minerando, a fim de compilar os blocos para ambas as cadeias e se comprometer com eles no cabeçalho do bloco Bitcoin que estão minerando. A mineração de fusão cega aproveita o fato de que, na realidade, os mineradores de Bitcoin só precisam ter o cabeçalho do bloco da outra cadeia para se comprometer em seu bloco de Bitcoin, outra pessoa pode realmente se dar ao trabalho de montar o bloco para a outra cadeia.

O mecanismo proposto por Somsen para isso pode utilizar ANYPREVOUT (APO) para permitir a competição aberta para qualquer um poder competir para construir o próximo bloco da cadeia lateral, garantindo ao mesmo tempo que apenas um bloco pode ser comprometido por bloco da cadeia principal do Bitcoin. Outro benefício da proposta de Ruben é que ela não requer um soft fork específico para possibilitar a implantação de cadeias espaciais. Eltoo/ANYPREVOUT está sendo proposto para benefícios à Lightning Network, permitindo statechains flexíveis, bem como fábricas de canais. Spacechains são simplesmente outra possibilidade das muitas coisas para as quais a ativação do ANYPREVOUT abriria o caminho.

A ideia geral de sua proposta de mineração por fusão cega é que, ao fazer uso do APO, você pode predefinir um longo conjunto de transações que recebem o mesmo UTXO inicial e se comprometer a sempre recriá-lo. Então, imagine um único satoshi UTXO, com cada transação pré-criada garantindo que esse mesmo UTXO seja recriado como saída quando confirmado. Pense nisso como uma espécie de marcador, este UTXO especial é o identificador que permite que qualquer pessoa que olhe para o blockchain principal do Bitcoin saiba: “É aqui que encontro um compromisso com os blocos X do sidechain”. Isso deixa em aberto um problema: taxas de mineração. Se esse UTXO tiver que ser recriado com o mesmo valor, não haverá fundos para pagar taxas.

Isso pode ser resolvido utilizando SIGHASH_SINGLE (a assinatura de uma entrada apenas assina aquela entrada única e a saída correspondente) e SIGHASH_ANYONECANPAY (as pessoas podem adicionar livremente entradas e saídas adicionais sem invalidar a assinatura, desde que a entrada/saída usando SIGHASH_SINGLE seja deixada como está, para não invalidar essa assinatura). Então, qualquer um pode adicionar uma entrada e alterar a saída para pagar as taxas do minerador pela transação.

Este também é o mecanismo usado para confirmar o cabeçalho do bloco sidechain. Da mesma forma que Taproot se compromete com a árvore de diferentes condições de gastos ajustando a chave pública normal com a raiz Merkle da árvore, qualquer um pode ajustar a chave pública normal com o hash do cabeçalho do bloco sidechain. Os nós da cadeia lateral podem então revelar e retransmitir o cabeçalho do bloco com um ponteiro para a transação na cadeia principal para provar que ela foi realmente extraída. A partir daí, os nós da cadeia lateral fariam toda a validação normal para garantir que o bloco da cadeia lateral estivesse seguindo as regras de consenso adequadas e retransmitiriam os blocos reais através da rede da cadeia lateral, assim como na cadeia principal.

Se uma das transações usadas para confirmar com os blocos da cadeia lateral na cadeia principal foi usada para confirmar com um bloco inválido, ou mesmo com dados completamente inúteis, então, quando os nós da cadeia lateral veem a transação de compromisso usada na cadeia, duas coisas podem acontecer: Uma, um bloco inválido será propagado pela rede sidechain e, quando não passar nas verificações de validação, ficará órfão; ou dois, os dados nunca são revelados e, nesse caso, o próximo bloco da cadeia lateral será construído e comprometido com o último bloco realmente revelado, e o compromisso não revelado será ignorado. Esta segunda possibilidade segue o mesmo tipo de lógica de cadeia mais longa que a cadeia principal, por isso, mesmo que algo tenha sido revelado mais tarde, ainda ficará órfão devido a blocos futuros que não foram construídos sobre ele.

Mas ainda há o problema da duplicação de gastos. Qualquer pessoa com a chave privada usada para gerar o marcador UTXO poderia gastar o dobro de qualquer uma das transações predefinidas usadas para comprometer blocos de cadeia lateral e invalidar todo o conjunto daquele ponto em diante.

Isso é resolvido inserindo a assinatura no script de bloqueio do próprio UTXO. Isso trava a assinatura na entrada e na saída, garantindo a recriação do marcador UTXO na próxima transação que o utilizar. Como essa assinatura será passada e verificada automaticamente quando o UTXO for gasto, não é possível simplesmente substituí-la por outra e gastá-la em um destino diferente.

Isso deixa um último problema pendente. Seria possível, em teoria, submeter múltiplas transações consecutivas em um único bloco de Bitcoin, de modo que um grande número de blocos de cadeia lateral fossem confirmados pelos mineradores, todos em um único bloco de cadeia principal. Isso poderia ser abusado para atacar a rede sidechain por negação de serviço.

Para resolver este problema, um bloqueio de tempo relativo CHECKSEQUENCEVERIFY (CSV) pode ser inserido no script do marcador UTXO para garantir que apenas uma transação usando o marcador UTXO possa ser confirmada dentro de um único bloco da cadeia principal.

Ao todo fica assim: 

fonte

É importante notar também que duas variantes deste design podem ser implementadas com CHECKTEMPLATEVERIFY (CTV) ou sem qualquer alteração. Essas duas variantes de design simplesmente apresentam compensações abaixo do ideal.

A variante CTV usaria essa funcionalidade para confirmar a cadeia de transações usando CTV em vez de APO com o hack incluindo a assinatura dentro do script de bloqueio UTXO. A CTV se compromete com todos os resultados de uma transação que gasta o CTV UTXO, mas não se compromete com nenhuma entrada além de si mesma.

Isso significa que você pode adicionar entradas, mas não saídas, a uma transação CTV. Portanto, você pode trazer sua própria taxa, assim como no design do APO, mas não pode adicionar um compromisso ao cabeçalho do bloco sidechain.

Então, o que precisamos fazer aqui é criar uma transação completamente fora da cadeia de transações CTV para o compromisso sidechain de criar um UTXO que seja apenas suficiente para pagar a taxa da transação CTV (porque você não pode criar uma nova saída de alteração em nessa transação, 100% da entrada que você adiciona vai para taxas), e dentro da transação que prepara a taxa UTXO é onde nos comprometemos com um cabeçalho de bloco sidechain. Então, primeiro passo: uma transação criando uma saída pagadora de taxas e um compromisso com um cabeçalho de bloco sidechain. Segundo passo: pegamos a saída da taxa e a adicionamos como uma entrada para a transação CTV, que quando confirmada, “minera” nosso bloco sidechain específico. Esta variante se parece com isto:

fonte

A próxima variante simplesmente usa transações pré-assinadas. Poderia ser implantado hoje, mas devido às limitações do que o script pode fazer, exige que todas as taxas das transações sejam pagas antecipadamente por quem cria a cadeia espacial.

A cadeia de transações começa com um único UTXO e em uma cadeia cria duas saídas. A primeira saída é o marcador UTXO, que sinaliza que a cadeia de transações está relacionada a uma cadeia espacial específica, a segunda é um UTXO de pequeno valor que pode ser gasto abertamente por qualquer pessoa, permitindo anexar outra entrada/saída a ela. Esta segunda transação é onde qualquer um pode se comprometer abertamente para ser o primeiro a gastar a segunda saída da cadeia de transações da cadeia espacial e usá-la para se comprometer com o cabeçalho do bloco da cadeia lateral.

Na variante CTV, o bloco sidechain teve que ser comprometido em uma transação secundária porque o CTV não permite adicionar novos outputs em uma transação gastando um input bloqueado pelo CTV. Esta variante requer o uso de uma transação secundária porque se você adicionar novas entradas ou saídas à cadeia pré-assinada, você alteraria o TXID da transação e invalidaria todas as transações pré-assinadas que vierem depois dela. Esta variante se parece com isto: 

fonte

A única desvantagem desta última variante é que se quem pré-assinou todas as transações a serem usadas para compromissos de bloco sidechain não excluir as chaves privadas usadas para fazer isso, ele poderá efetivamente interromper a cadeia gastando o dobro do marcador atual UTXO a qualquer momento. tempo.

E aí está. Esta é a proposta mais recente para um design de sidechain no Bitcoin, e pode ser implementada de três maneiras diferentes, com a ressalva óbvia de que o caminho de implementação que pode ser feito agora tem o problema de exigir que alguém exclua uma chave privada.

Este artigo é simplesmente o primeiro de uma série relacionada às principais propostas de design de sidechain que foram publicadas para Bitcoin desde o design original de 2014. Fique de olho no resto.

Este é um post convidado por Shinobi. As opiniões expressas são inteiramente próprias e não refletem necessariamente as da BTC Inc ou da Bitcoin Magazine.

Carimbo de hora:

Mais de Bitcoin Magazine