Pontos-chave
- Haskell utiliza programação funcional e um sistema de tipos expressivo.
- Plinth, antes Plutus Tx, conecta Haskell aos validadores de Cardano.
- O rigor dos tipos complementa os testes; não elimina os erros de negócio.
O que é Haskell?
Haskell é uma linguagem funcional com tipagem estática que permite expressar regras por meio de funções e estruturas de dados explícitas. No ecossistema Cardano, está relacionada ao desenvolvimento do protocolo e ao Plinth, a linguagem anteriormente chamada Plutus Tx, que utiliza um subconjunto de Haskell para criar validadores.
Um validador decide se uma transação cumpre determinadas condições. A aplicação que constrói essa transação realiza outro trabalho: seleciona entradas, calcula o troco, adiciona dados e solicita assinaturas. Distinguir as duas camadas evita atribuir ao contrato responsabilidades que pertencem à integração.
Como funciona
Em Cardano, o modelo EUTXO representa o estado por meio de saídas de transações que podem ser consumidas se suas condições forem satisfeitas. Um validador recebe informações relevantes da transação, junto com dados como datum e redeemer, e verifica as regras do gasto. Sua execução é avaliada dentro de um orçamento de recursos.
Os tipos ajudam a modelar estados e transições de forma explícita. Por exemplo, uma operação pode admitir abertura, cancelamento ou liquidação sob condições distintas. Projetar essas alternativas permite discutir o comportamento antes de conectá-lo a uma wallet ou a um sistema de pagamentos.
O que Haskell oferece
Haskell pode ser útil quando a equipe precisa trabalhar com regras complexas e tem experiência em programação funcional. Em um contrato de depósito, um modelo de referência pode descrever quais participantes autorizam cada transição e como os valores são conservados. Os testes comparam as transações construídas com essas regras e exploram combinações de entradas.
A verificação formal exige uma especificação e uma demonstração sobre propriedades concretas. Usar Haskell ou compilar um validador não equivale a ter concluído esse processo. O escopo dos testes também deve incluir a construção de transações, o tratamento de erros e a integração com componentes externos.
Limitações e critérios de escolha
Haskell não é obrigatório para desenvolver qualquer produto sobre Cardano. Existem outras linguagens e ferramentas, como Aiken, e o frontend pode usar uma stack diferente. A decisão depende do código existente, do suporte do ambiente de compilação e da capacidade da equipe de revisar e manter os validadores.
Antes de escolhê-lo, convém prototipar a operação mais exigente: tamanho da transação, orçamento de execução e acesso concorrente ao estado compartilhado. Um modelo elegante pode se mostrar pouco prático se concentrar todas as operações em uma mesma saída. A arquitetura do produto e a de suas transações devem ser projetadas em conjunto.
Também conhecido como
- GHC
- Plutus
- functional Web3





