Pular para o conteúdo

Custos de transação e determinismo

Por volta de 4 min

A abordagem do Cardano para a definição de preços depende principalmente da demanda do mercado sobre a oferta real. Com o lançamento de contratos inteligentes, há mais de um tipo de demanda competindo pela oferta comum. Assim, é crucial considerar tanto a precificação relativa quanto absoluta. Uma maneira de fazer isso é inspecionar os efeitos da precificação de contratos inteligentes, operações de token não fungível (NFT) e assim por diante, com relação a algum valor comum - no nosso caso, o consumo do poder de processamento do Cardano.

O design do ledger Cardano é focado em alta garantia, segurança e verificação formal comprovada. Em alinhamento com essa estratégia, também é importante garantir que o processamento de transações seja determinístico, ou seja, que um usuário possa prever o impacto e o resultado de uma transação antes de sua execução real.

A capacidade de garantir o custo da execução de transações e como a transação se comporta no ledger antes de ser submetida, torna-se ainda mais proeminente com a introdução do suporte a contratos inteligentes. Essa característica é diferente de outras blockchains, incluindo Ethereum, onde outras atividades de rede podem influenciar o custo do gás. Essa capacidade também é garantida pela natureza determinística do Cardano e dos scripts Plutus.

Determinismo

Determinismo, no contexto de processamento de transações e scripts, é um sinônimo para previsibilidade. Isso significa que um usuário pode prever localmente (off-chain) como sua transação impactará o estado on-chain do ledger, sem encontrar o seguinte:

  • resultados inesperados de validação de script ou falhas
  • taxas inesperadas
  • atualizações inesperadas de estado do ledger ou script

Validação

Um aspecto importante do processamento de uma transação é validar as ações que ela está realizando. Uma transação está realizando uma ação quando contém dados no campo específico para aquela ação. Por exemplo, uma transação está gastando o UTXO U quando contém uma referência ao U em seu campo de entrada, e está cunhando um token X quando seu campo de cunhagem contém X.

Cardano usa scripts para validar ações. Esses scripts, que são pedaços de código, implementam funções puras com saídas True ou False. Validação de script é o processo de invocar o interpretador de scripts para executar um script dado em argumentos apropriados.

A validação de script pode ser realizada para as seguintes ações:

  • Gastando um UTXO bloqueado por um endereço de script: o script que é executado é aquele cujo hash forma o endereço.
  • Cunhando um token: o script que é executado é aquele cujo hash forma o ID da política do token sendo cunhado.
  • Retirada de recompensa: o script que é executado é aquele cujo hash forma o endereço de staking.
  • Aplicando um certificado: o script que é executado é aquele cujo hash forma a credencial do autor do certificado.

Além de informar ao nó qual script executar, todas as ações de transação indicam como montar argumentos passados para esse script. Alonzo introduz uma nova abordagem para a validação de transações no Cardano devido à implementação de scripts Plutus.

Atualizações do Ledger

Alonzo alterou os dados no ledger da seguinte forma:

  1. Scripts Plutus podem bloquear UTXOs.
  2. Um novo componente, adicionado ao conteúdo das partes de saída dos UTXOs, permite funcionalidade semelhante ao estado do script. Além de ativos e um endereço, um UTXO bloqueado por scripts Plutus também contém um datum. Um datum é um pedaço de dados que pode ser pensado como uma interpretação do estado do script.
  3. Há uma série de novos parâmetros de protocolo usados para impor requisitos adicionais de validação nas transações. Estes incluem limites superiores nos recursos computacionais que os scripts podem consumir.

Para suportar scripts Plutus, as transações foram atualizadas da seguinte forma:

  1. Para cada uma de suas ações, a transação agora carrega um argumento especificado pelo usuário, chamado de redentor. Dependendo do script, um redentor pode servir a um propósito diferente. Por exemplo, pode atuar como o lance que o usuário coloca em um leilão, ou o palpite do usuário em um jogo de adivinhação, entre muitas outras funções.
  2. A transação especifica orçamentos de execução computacional para cada script.
  3. Para garantir que uma transação possa pagar sua taxa de execução, Alonzo introduz colateral.
  4. As transações contêm um hash de integridade, necessário para garantir que não foi comprometida, desatualizada, etc.

Com a atualização Vasil, os scripts Plutus foram atualizados para a funcionalidade V2 com um modelo de custo melhorado e novos built-ins. O uso de entradas de referência, datums inline e scripts de referência permite um throughput eficiente e um desempenho significativamente aumentado. Veja a visão completa das funcionalidades do Vasil aquiopen in new window.

O nó realiza novas verificações que garantem que a transação é construída corretamente. Por exemplo, ela não deve exceder o orçamento máximo de recursos de execução. Ele também invoca o interpretador de script Plutus para executar os scripts.

O modelo de gás não determinístico pode cobrar taxas imprevisivelmente altas dos usuários. Nos scripts Cardano, essa fonte de indeterminismo é abordada exigindo que o orçamento de recursos em si, bem como a taxa necessária para cobrir esse orçamento, sejam incluídos na transação. A execução do script necessariamente retorna True ou False, e não entrará em loop indefinidamente. A razão para isso é que toda operação que um script realiza consome uma quantidade não nula de recursos, que são rastreados pelo interpretador. Se o orçamento especificado pela transação for excedido, a execução do script termina e retorna False.

Os seguintes pontos-chave tornam os resultados da validação de script e transação previsíveis:

  • o interpretador de script sempre terminará e retornará o mesmo resultado de validação quando aplicado aos mesmos argumentos.
  • uma transação necessariamente fixa todos os argumentos que serão passados ao interpretador de script durante a validação.
  • uma transação especifica todas as ações que está tomando que requerem validação de script.
  • assinaturas obrigatórias em uma transação garantem que ela não possa ser alterada por um adversário de maneira que cause falhas nos scripts.
  • aplicar uma transação no modelo de ledger EUTXO é determinístico.

Falha ou sucesso na validação de script afeta como uma transação é processada. No entanto, o resultado True ou False, bem como as alterações no ledger associadas a cada resultado, são previsíveis para uma determinada transação.

Você também pode usar o estimador de taxa Plutusopen in new window para prever taxas de script e transação.

Leitura adicional:

Última atualização:
Contribuidores: cauechianca