Introdução

A TCCL — The Coin Cloud Language — é a linguagem de contratos inteligentes da The Coin. Ela se lê como Python: os blocos são indentados, há poucas palavras-chave e um primeiro contrato cabe em vinte linhas. Por baixo, é rigorosa: todo valor tem tipo declarado, todo passo custa combustível, a aritmética é verificada e o mesmo código produz exatamente o mesmo resultado em todos os nós.

counter.tcclcontract Counter

state count: int

action increment(by: int):
    require by > 0, "by must be positive"
    count += by

view get() -> int:
    return count

Princípios

  • Legível em primeiro lugar. Um contrato é um único arquivo que qualquer pessoa pode revisar. Não há conversões implícitas, null, ponto flutuante nem fluxo de controle escondido.
  • Segura por construção. Estouro, divisão por zero, falta de combustível e requisitos não atendidos interrompem a chamada e revertem todas as mudanças. Reentrada é impossível. Essas proteções fazem parte do motor e não podem ser desligadas.
  • Honesta sobre os limites. Nada numa blockchain pública é secreto ou aleatório por si só, e um interpretador não é código nativo. A documentação diz isso e mostra os padrões que funcionam.
  • Compatível com o histórico. O compilador faz parte das regras de consenso: uma publicação leva o código-fonte e cada nó o compila. Versões antigas da linguagem ficam congeladas para que blocos passados sempre possam ser reexecutados.

Versões da linguagem e onde rodam

VersãoSituaçãoO que traz
1Em uso na The Coin v0.2.0 (mainnet, testnet, regtest)Tipos, estado, actions, views, eventos, combustível, pagamentos em TCN, depósitos de armazenamento, assinaturas em anel
2Esta versão: compilador, CLI, simulador e playground. Ainda não ativa na redeRecords, enums com transições permitidas, papéis e only, interfaces e chamadas entre contratos, módulos e biblioteca padrão, autoridade de upgrade, mul_div/isqrt/pow, limites de memória, cópias com novo preço

Todo contrato válido na versão 1 também é válido na versão 2 e se comporta da mesma forma (veja Versões). Enquanto a rede não ativar a versão 2, publique na The Coin usando tccl check --language 1. O plano de ativação é público: implant-the-coin-language.md.

Por onde começar

O que há nesta documentação

PáginaConteúdo
Seu primeiro contratoInstalar, criar, verificar, testar, simular e publicar
Referência da linguagemSintaxe, tipos, instruções, records, enums, papéis, interfaces, funções embutidas, limites
Módulos e biblioteca padrãoMódulos versus contratos publicados, std.token, std.items, std.payments
Chamar outros contratosInterfaces, identidade de quem chama, transferências, retornos, atomicidade, reentrada
PermissõesPapéis, only, grant, revoke e padrões comuns
UpgradesAutoridade de upgrade, regras de compatibilidade, upgrade(), tornar o código final
SegurançaDeterminismo, falhas e taxas, limites, privacidade, dados externos, aleatoriedade, checklist
Combustível, taxas e depósitosTabela de combustível, fórmula da taxa, depósitos, medições
Referência de errosTodos os erros de compilação e execução com explicação e correção
Receitas testadasContratos completos com cenários que rodam na integração contínua
FerramentasCLI, cenários, playground, instaladores, publicação com a carteira
ArquiteturaCompilador, formato do programa, máquina virtual, interface do host, testes
VersõesVersões da linguagem e da ferramenta, política de compatibilidade, mudanças

A TCCL é software livre, com licença dupla MIT ou Apache-2.0. Código-fonte: github.com/LucasBolla94/tccl.

Melhore esta página no GitHub