Contratos inteligentes que se pueden leer.
TCCL se parece a Python — bloques por sangría, pocas palabras clave — pero cada valor tiene un tipo declarado, cada paso cuesta combustible y el mismo código da exactamente el mismo resultado en todos los nodos de The Coin.
Libre y de código abierto (MIT o Apache-2.0). El playground ejecuta el motor real en su navegador — no se publica nada.
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)Empiece con un archivo
Un contrato es un solo archivo .tccl. El compilador le dice qué está mal, dónde, por qué y cómo corregirlo — en inglés, portugués o español.
Legible por diseño
state, action, view, require, emit. Sin conversiones ocultas, sin null, sin números de coma flotante: los montos son enteros en motes.
Errores que enseñan
Cada error tiene línea y columna, un código como C006, una explicación y una corrección sugerida como “¿quiso decir total?”.
Pruebe antes de pagar
tccl test ejecuta escenarios en texto plano; el playground muestra el estado antes y después, los eventos y las comisiones estimadas.
Crezca hacia pagos, privacidad, juegos y exchanges
La versión 2 del lenguaje agrega lo que las aplicaciones serias necesitan, sin complicar lo simple.
Records y situaciones con nombre
record Order con campos tipados; enum Status con transiciones permitidas verificadas cada vez que se guarda un valor.
Permisos explícitos
role manager, grant, revoke y only manager en las actions. Las billeteras muestran quién puede llamar qué.
Llamadas entre contratos
interface Token y Token(addr).transfer(...). El contrato llamado ve al que llama como caller; los fallos revierten todo.
Biblioteca estándar
use std.token, use std.items, use std.payments: tokens, objetos únicos y pagos condicionales compilados dentro de su contrato.
Privacidad donde la necesite
Firmas en anillo vinculables (ring_verify) para pools de pagos privados — con sus límites documentados, no ocultos.
Actualizaciones con autoridad
Los contratos pueden ser actualizados por su autoridad de actualización o hacerse finales para siempre. Otros contratos pueden verificar is_final(addr).
Protecciones que la red siempre aplica
Forman parte del motor. Ningún contrato, opción o configuración las desactiva.
Determinista
Sin reloj, sin coma flotante, sin aleatoriedad, almacenamiento ordenado. Todos los nodos calculan el mismo resultado.
Aritmética verificada
El desbordamiento y la división por cero detienen la llamada. mul_div calcula a × b ÷ c sin desbordamiento intermedio.
Límites de combustible y memoria
Cada operación cuesta combustible; la versión 2 además limita la memoria a 16 MiB por transacción y cobra las copias por asignación.
Sin reentrada
Un contrato que ya se ejecuta en una transacción nunca puede volver a ser llamado durante ella.
Atómica
Si algo falla — en cualquier contrato — se revierte cada cambio, pago y evento de la transacción. La comisión se paga igual.
Probada contra la red
La versión 1 compila byte a byte igual que el motor desplegado en The Coin, verificado con más de 10 000 programas.
Lo que TCCL no promete
TCCL es un intérprete escrito en Rust. Rust aporta seguridad de memoria y rendimiento predecible; no hace que los contratos corran a velocidad nativa. Publicamos nuestras mediciones en lugar de eslóganes.
Nada calculado en una blockchain pública es secreto o aleatorio por sí mismo. Los datos del mundo exterior son tan confiables como quien los firma. La documentación explica estos límites y los patrones que los resuelven.