The Coin Cloud Language · versión 2 del lenguaje

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.