Pular para o conteúdo

Sobre o mecanismo de colateral

Por volta de 3 min

O mecanismo de colateral é uma característica importante projetada para garantir a execução bem-sucedida de contratos inteligentes.

Baseando-se nas garantias fornecidas pelo design determinístico do ledger, Cardano implementa um esquema de validação em duas fases. A principal razão para introduzir a validação em duas fases é limitar a quantidade de trabalho de validação não compensado pelos nós. Cada fase serve a um propósito para alcançar esse objetivo:

  • A primeira fase verifica se a transação é construída corretamente e pode pagar sua taxa de processamento.
  • A segunda fase executa os scripts incluídos na transação.

Se a transação for válida na fase-1, os scripts da fase-2 são executados. Se a fase-1 falhar, nenhum script é executado e a transação é imediatamente descartada.

O colateral é usado para garantir que os nós sejam compensados pelo seu trabalho em caso de falha na validação da fase-2. Assim, o colateral é a garantia monetária que um usuário dá para assegurar que o contrato foi cuidadosamente projetado e exaustivamente testado. A quantidade de colateral é especificada no momento da construção da transação. Não diretamente, mas adicionando entradas de colateral à transação. O saldo total nos UTXOs correspondentes a essas entradas marcadas de forma especial é a quantidade de colateral da transação. Se o usuário cumprir as condições da garantia, e um contrato for executado, o colateral está seguro.

O cenário

Sem colateral, o usuário não é cobrado se um contrato inteligente falhar. No entanto, no momento em que a transação falha, a rede já incorreu em alguns custos para iniciar e validar a transação. Isso significa que um ator malicioso poderia inundar a rede com transações inválidas, negando serviço a outros usuários a um custo baixo.

A solução

Quando um usuário inicia uma transação, ele compromete ada suficiente para cobrir seu custo de execução. Em Alonzo, transações que chamam e usam contratos inteligentes não nativos (conhecidos como contratos da fase-2) também precisam de colateral suficiente para cobrir custos relacionados a possíveis falhas na transação. Essa quantidade pode ser pequena, mas é suficiente para tornar um ataque de negação de serviço (DOS) proibitivamente caro.

As taxas de colateral são coletadas apenas se uma transação falhar na validação. Se o contrato passar na validação, as taxas da transação são coletadas, mas o colateral não.

O raciocínio

Um usuário honesto nunca está em risco de perder seu colateral.

A blockchain Cardanoopen in new window é determinística em relação aos custos de transação porque esses custos dependem apenas de valores locais e do estado local. Isso significa que um usuário pode calcular o custo de execução (em ada) de uma transação antes de submetê-la. Essa característica é diferente de outras blockchains, incluindo Ethereum, onde outras atividades da rede podem influenciar o custo do gás. A quantidade de colateral necessária depende apenas do custo de execução.

O testnet Cardanoopen in new window fornece um ambiente seguro com ada de teste gratuito, para que os desenvolvedores de aplicativos distribuídos (DApps) possam testar exaustivamente seus contratos inteligentes antes de implantá-los no mainnet. Se as transações tiverem sucesso no testnet, o desenvolvedor pode ter certeza de que todos os scripts de fato terão sucesso.

Se as condições on-chain mudaram desde que a transação foi construída, essa transação será totalmente rejeitada e nenhuma taxa será cobrada. Se uma assinatura estiver faltando, por exemplo, nenhum colateral seria cobrado.

Detalhes técnicos

O termo colateral refere-se ao total de ada contido nos UTXOs referenciados pelas entradas de colateral. Uma transação usa entradas de colateral para cobrir suas taxas se um script da fase-2 falhar.

A especificação formal de Shelley introduziu o conceito de scripts de "multissinatura". Scripts da fase-1, como esses, são capturados inteiramente pelas regras do ledger. Os custos de execução podem, portanto, ser facilmente avaliados antes de serem processados pela implementação, e quaisquer taxas podem ser calculadas diretamente dentro da implementação da regra do ledger, com base no tamanho da transação que inclui o script, por exemplo.

Em contraste, scripts da fase-2 podem realizar computações arbitrárias (e, em princípio, Turing-completas). Exigimos que transações que usam scripts da fase-2 tenham um orçamento em termos de um número de ExUnits abstratas. Este orçamento dá um limite quantitativo sobre o uso de recursos em termos de um número de métricas específicas, incluindo uso de memória ou passos de execução abstratos. O orçamento é então usado como parte do cálculo da taxa da transação. Para mais detalhes, leia a especificação do ledger Cardano para Plutus Coreopen in new window.

Com a atualização Vasil, os desenvolvedores de DApps também têm a possibilidade de especificar um endereço de troco para o colateral do script. Isso significa que, em caso de falha na validação da fase-2 do script, apenas a quantidade correta será retirada, e os fundos restantes serão enviados para o endereço de troco fornecido. O tutorial como usar saídas de colateralopen in new window fornece mais detalhes.

Última atualização:
Contribuidores: cauechianca