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