EL LIBRO DE SATOSHI
Primero: me pone un poco nervioso que bitcoin tenga un lenguaje de
scripting, aunque es un lenguaje de scripting realmente simple (no hay
bucles, no hay punteros, nada excepto matemáticas y criptografía) Me
pone nervioso porque es más complicado y la complicación es la
enemiga de la seguridad. También hace más difícil crear una segunda
implementación compatible. Pero creo que lo puedo asumir.
Repasando el código, las nuevas transacciones se verifica poniendo la
firma y la clave pública sobre la pila del intérprete y ejecutando el
script TxOut (¿lo he entendido bien?).
¿Podría escribir código para crear transacciones con cualquier script
válido en el TxOut?
Por ejemplo, ¿podría crear una TxOut con un script de: OP_2DROP OP_
TRUE. . . para crear una moneda que cualquiera pudiera gastar?
Y, ¿es esta flexibilidad en los tipos de monedas creadas la razón de
estar programado de esta manera?
_____________________________________________________________
La naturaleza de Bitcoin es tal, que una vez publicada la versión 0.1, el
diseño base estará escrito en piedra para el resto de su vida. Por esta
razón quise diseñarlo de tal manera que soportara cualquier tipo de
transacción que pudiera pensar. El problema era que, cada una requería
campos de datos y código específico así se utilizara o no, y sólo cubría un
caso especial cada vez. Hubiera sido una explosión de casos especiales. La
solución fue el script, que generaliza el problema de tal manera que las
partes involucradas en la transacción pueden describir su transacción
como un predicado que los nodos evalúan. Los nodos sólo tienen que
entender la transacción hasta el punto de evaluar si las condiciones del
emisor se cumplen.
El script es de hecho, un predicado. Es sólo una ecuación que devuelve
verdadero o falso. Predicado es una palabra larga y poco común así que lo
llamé script.
El receptor del pago comprueba el script con una plantilla. Por ahora el
receptor sólo acepta dos plantillas: pago directo y dirección bitcoin.
Futuras versiones podrán añadir más plantillas para más tipos de
transacciones y los nodos que ejecuten esas versiones o superiores podrán
recibirlas. Todas las versiones de los nodos de la red pueden verificar y
147