The Coin Cloud Language · versão 2 da linguagem

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.