¿Qué es un smart contract?
Un smart contract (contrato inteligente) es un programa guardado en una blockchain que se ejecuta cuando alguien lo llama. No es inteligente ni, en el sentido legal, un contrato. Es una máquina expendedora: metes lo correcto, sale lo que está definido, y nadie tiene que aprobarlo.
Las propiedades que importan
- Determinista: la misma llamada en el mismo estado siempre produce el mismo resultado.
- Público: cualquiera puede leer el bytecode desplegado y, normalmente, el código fuente.
- Autónomo: una vez desplegado, se ejecuta sin su autor y, a menudo, sin ninguna forma de detenerlo.
"El código es ley" es una advertencia, no un eslogan
Un contrato hace lo que dice, no lo que su autor quiso decir. No hay una cláusula sobre la intención ni un juez ante quien apelar. Si el código permite que alguien lo vacíe, eso no es una violación del contrato: es el contrato funcionando.
Por eso existen las auditorías, y por eso un contrato sin auditar que guarda dinero real es un riesgo real y no un simple trámite pendiente. También por eso la frase "el contrato está verificado" solo significa que el código fuente publicado coincide con el bytecode desplegado. No dice absolutamente nada sobre si ese código es seguro.
Verificado significa "este es realmente el código que se está ejecutando". No significa "este código es seguro", y confundir las dos cosas le ha costado a la gente muchísimo dinero.