Pular para o conteúdo
buybitcoinsmart

Glossário / Protocolo e atualizações

Covenant

O que é um covenant?
Um covenant é uma regra de gasto que limita para onde o bitcoin pode ir depois, e não apenas quem pode movê-lo, e hoje nenhum opcode do Script do Bitcoin consegue impor uma.

Todo script na cadeia responde a uma pergunta: este gasto está autorizado? Um covenant permitiria que o script fizesse uma segunda pergunta sobre a transação que o gasta, e as propostas para permitir isso (BIP-119, BIP-118, BIP-345, BIP-347) estão todas sem ativação há anos. Nada do que você guarda hoje é afetado, mas os produtos de cofre e de herança que as pessoas não param de pedir dependem disso.

Como funciona

Status: nenhum opcode de covenant está ativo na mainnet do Bitcoin. Todos os projetos abaixo são propostas, e nenhuma tem parâmetros de ativação integrados ao Bitcoin Core.

A capacidade que falta tem um nome preciso: introspecção. Quando um nó executa um script, o script pode examinar assinaturas, hashes, timelocks e a pilha, mas não consegue ler as saídas da transação que está gastando a saída. Esse único ponto cego é a razão pela qual o bitcoin consegue expressar “duas destas três pessoas precisam concordar” e não consegue expressar “este dinheiro só pode ir para aquele endereço”.

As propostas fecham essa lacuna de duas formas diferentes, e a diferença entre elas é o centro do debate.

A abordagem de modelo fixa de antemão um hash de toda a transação de gasto. O OP_CHECKTEMPLATEVERIFY funciona assim: a saída guarda um hash de 32 bytes, e o gasto falha a menos que o hash da transação tenha o mesmo valor. É estreita, é barata de verificar e, como o compromisso não pode descrever outro compromisso, a restrição não pode se repetir indefinidamente.

A abordagem de introspecção dá ao script as peças e deixa que ele faça aritmética. Combinar o OP_CAT com uma verificação de assinatura, ou acrescentar o OP_CHECKSIGFROMSTACK, permite que um script reconstrua o hash de assinatura da transação a partir de peças da pilha e o verifique, e a partir daí o script pode exigir o que quiser sobre as saídas. Isso é geral, e é recursivo: um covenant pode insistir que a próxima saída carregue o mesmo covenant.

A recursão é a objeção que travou tudo. Bitcoins presos em uma regra que se perpetua poderiam, em princípio, ficar onerados para sempre, o que levanta questões sobre fungibilidade e sobre emissores que poderiam tornar a regra obrigatória. O contra-argumento é que um grupo de pessoas já consegue imitar um covenant ao pré-assinar o único gasto permitido e destruir a chave, então a capacidade existe na prática, e a imposição pelo consenso sobretudo elimina a necessidade de confiar que a chave realmente foi destruída.

Onde você encontra isso

Covenants já estão implantados em cadeias que copiam o motor de script do bitcoin, que é a forma mais barata de ver o que eles fazem.

A Liquid, a sidechain baseada no Elements, executa um tapscript com opcodes de introspecção que leem diretamente as saídas da transação de gasto, e sua federação os usa para a sua ancoragem. Qualquer pessoa também pode testar os opcodes propostos para o bitcoin em signets personalizadas antes de decidir se os quereria na mainnet.

Na mainnet, o substituto é uma transação pré-assinada com uma chave excluída. Um provedor de cofres gera a chave de depósito, assina o único saque que permitirá algum dia e então destrói a chave, para que nenhum outro gasto possa ser criado. Esse é um covenant imposto por uma promessa em vez de pela rede, e a promessa é exatamente o que um opcode de covenant de verdade tornaria desnecessário. Vale saber disso se um serviço vender um cofre para você: pergunte qual dos dois é.

Covenant vs contrato de depósito em garantia

Um covenant restringe o destino; um contrato de depósito em garantia restringe os signatários. Eles resolvem metades diferentes da mesma preocupação, e só uma das duas está disponível.

Um contrato de depósito em garantia é uma multiassinatura comum com um terceiro no quórum, normalmente dois de três, e funciona no bitcoin hoje: um marketplace guarda uma chave, e o comprador e o vendedor podem liquidar sem ela ou chamá-la para resolver uma disputa. O que o depósito em garantia não consegue fazer é restringir o resultado. No momento em que se forma um quórum de gasto, os bitcoins podem ir para qualquer lugar, inclusive para o árbitro. Um covenant fixaria o destino de antemão e tiraria a discricionariedade do árbitro do projeto por completo.

Não confundir com

Perguntas frequentes

Posso usar um covenant no bitcoin agora?

Não. Nenhum opcode de covenant está ativo na mainnet. Produtos que anunciam hoje um comportamento de cofre se baseiam em transações pré-assinadas e uma chave excluída, o que é uma promessa e não uma regra imposta pela rede.

Por que os covenants são controversos?

Porque as versões gerais são recursivas, o que significa que um bitcoin poderia carregar uma restrição que se reata a cada gasto futuro. Os críticos se preocupam com bitcoins onerados permanentemente; os defensores observam que as transações pré-assinadas já imitam o efeito.

Leia a seguir

Termos relacionados

Mais em Protocolo e atualizações

Ler esta página em inglês