Contratos inteligentes que você consegue ler.
A TCCL parece Python — blocos por indentação, poucas palavras-chave — mas todo valor tem tipo declarado, todo passo custa combustível e o mesmo código dá exatamente o mesmo resultado em todos os nós da The Coin.
Livre e de código aberto (MIT ou Apache-2.0). O playground roda o motor real no seu navegador — nada é publicado.
cloud_coin.tccl# A fungible token in a few lines: the standard token module plus a minter role.
contract CloudCoin
use std.token
role minter
init(supply: int):
token.setup("Cloud Coin", "CLD", 8)
grant minter to caller
token.mint(caller, supply)
action mint(to: address, amount: int) only minter:
token.mint(to, amount)
action add_minter(who: address) only minter:
grant minter to who
action burn(amount: int):
token.burn(caller, amount)Comece com um arquivo
Um contrato é um único arquivo .tccl. O compilador diz o que está errado, onde, por quê e como corrigir — em inglês, português ou espanhol.
Legível por projeto
state, action, view, require, emit. Sem conversões escondidas, sem null, sem números de ponto flutuante: valores são inteiros em motes.
Erros que ensinam
Todo erro tem linha e coluna, um código como C006, uma explicação e uma correção sugerida como “você quis dizer total?”.
Teste antes de pagar
tccl test roda cenários em texto simples; o playground mostra o estado antes e depois, os eventos e as taxas estimadas.
Evolua para pagamentos, privacidade, jogos e corretoras
A versão 2 da linguagem traz o que aplicações sérias precisam, sem complicar o que é simples.
Records e situações nomeadas
record Order com campos tipados; enum Status com transições permitidas verificadas toda vez que um valor é gravado.
Permissões explícitas
role manager, grant, revoke e only manager nas actions. As carteiras mostram quem pode chamar o quê.
Chamadas entre contratos
interface Token e Token(addr).transfer(...). O contrato chamado vê quem chamou como caller; falhas revertem tudo.
Biblioteca padrão
use std.token, use std.items, use std.payments: tokens, itens únicos e pagamentos condicionais compilados dentro do seu contrato.
Privacidade onde precisa
Assinaturas em anel vinculáveis (ring_verify) para pools de pagamentos privados — com os limites documentados, não escondidos.
Upgrades com autoridade
Contratos podem ser atualizados pela sua autoridade de upgrade ou tornados finais para sempre. Outros contratos podem conferir is_final(addr).
Proteções que a rede sempre aplica
Elas fazem parte do motor. Nenhum contrato, opção ou configuração as desliga.
Determinística
Sem relógio, sem ponto flutuante, sem aleatoriedade, armazenamento ordenado. Todo nó calcula o mesmo resultado.
Aritmética verificada
Estouro e divisão por zero interrompem a chamada. mul_div calcula a × b ÷ c sem estouro intermediário.
Limites de combustível e memória
Toda operação custa combustível; a versão 2 também limita a memória a 16 MiB por transação e cobra cópias por alocação.
Sem reentrada
Um contrato que já está rodando numa transação nunca pode ser chamado de novo durante ela.
Atômica
Se algo falha — em qualquer contrato — toda mudança, pagamento e evento da transação é revertido. A taxa continua paga.
Testada contra a rede
A versão 1 compila byte a byte igual ao motor que está na The Coin, conferido em mais de 10 000 programas.
O que a TCCL não promete
A TCCL é um interpretador escrito em Rust. Rust traz segurança de memória e desempenho previsível; não faz contratos rodarem em velocidade nativa. Publicamos nossas medições em vez de slogans.
Nada calculado numa blockchain pública é secreto ou aleatório por si só. Dados do mundo externo só são tão confiáveis quanto quem os assina. A documentação explica esses limites e os padrões que os contornam.