Tabla de Contenidos
ToggleCuando hablamos de Bitcoin Script nos referimos a un lenguaje de programación de Bitcoin. Este se encarga del procesamiento de las transacciones. Desde transacciones tan sencillas como los micro pagos hasta cuentas multiusuarios. Este lenguaje se lee de izquierda a derecha y basa su funcionamiento en un conjunto de estructuras lineales conocidas como pila (stack). Las instrucciones de este lenguaje se ejecutan en orden consecutivo una detrás de la otra.
Es importante tener en cuenta que este lenguaje no es Turing Completo por lo que no puede resolver todo tipo de problemas. Su funcionamiento está limitado a no permitir los bucles en el sistema. No obstante, esta limitación no es una desventaja, ya que está creada intencionalmente. Gracias a esta limitación en caso de haber algún error en el sistema no se repetiría constantemente.
En el caso contrario podrían crearse operaciones muy complicadas en bucle ralentizando el sistema y consumiendo la tasa total de Hash. Este lenguaje de programación es altamente importante, ya que permite la escritura de programas y que el ordenador ejecute nuestras órdenes. Para ello se utilizan los OP_CODES. Estos sirven para funciones como las matemáticas, bucles, llamadas a funciones, etcétera…
En otras palabras, Bitcoin Script es un conjunto de instrucciones que registran cada transacción realizada. En estas instrucciones se establece como los usuarios pueden hacer uso de la red y obtener acceso a los Bitcoins.
El objetivo de Bitcoin Script se encuentra en ofrecer un conjunto de parámetros flexibles que permitan las transacciones en Bitcoin de forma sencilla. Por este mismo objetivo Satoshi Nakamoto deshabilitó ciertas funciones cuando desarrolló Bitcoin, entre estas la multiplicación. Por esta razón se trata de un script simple en cuanto a programación.
Este lenguaje decide si una operación puede o no realizarse en la red. En otras palabras, decide si dicha operación está autorizada a la transferencia de fondos. El Bitcoin Script aporta la naturaleza programable de Bitcoin. Gracias al Script de Bitcoin podemos hacer una transacción que solo se lleve a cabo si determinadas condiciones se cumplen. Propiedades como esta solo se encuentran en las criptomonedas. Esto las hace diferentes del dinero digital actual y sobre todo del dinero de papel.
Este programa es una evolución que permite al dinero actuar de forma independiente y descentralizada según la programación implementada en el mismo. Pero el Script de Bitcoin no solo permite las transacciones, también evita la creación de errores en el sistema y evita el uso de operaciones complejas. Este Script convierte las transacciones en operaciones fáciles de calcular y como ya hemos mencionado anteriormente, no permite bucles infinitos que ralenticen la red.
Entre los script más usados en la red actualmente encontramos el script P2PKH. Los script son vitales para llevar a cabo cualquier tipo de operación en Bitcoin. En este cada acción se realiza por un script en específico que determina lo que se debe realizar. En esta operación no pasará nada que no esté dictado por un Bitcoin Script.
Un script estándar estaría formado por una estructura de dos partes, la ScriptPubKey y la ScriptSig. Este tipo de script es la forma más común para realizar una transacción de BTC.
La ScriptPubKey podría ser :
15higMjoCCNXSA95xZbJUdPvXNmkAduhCA
Y la ScriptSig sería un conjunto de números y letras parecido al siguiente :
760402203f004eeed0cef2715643e2f25a27a28f3c578e94c7f0
f6a4df104e7d163f7f8f022100b8b248c1cfd8b55a0365107a9511d
759b7544d979dd152a955c867epect0ef79702
A primera vista solo vemos la dificultad de una mezcla de números y letras imposibles de entender, pero realmente es la capa tras la que se esconde un sistema totalmente sencillo.
En la scriptPubKey vemos las acciones que deben realizarse en la transacción y en la ScriptSig vemos la clave pública y la firma que ayudarán a verificar la autenticidad de la transacción. Así es como el Bitcoin Script se asegura de que el usuario que envía la transacción tiene acceso a los fondos y pueda moverlos.
En todo esto intervienen los OP_CODES mencionados anteriormente. Estos son códigos de operación que representan una porción de una instrucción de lenguaje que especifica qué operación será realizada.
Además, los OP_CODES crean estructuras avanzadas y programan operaciones dentro de la blockchain. Cada OP_CODE tiene una tarea distinta. Algunos llevan a cabo la modificación de entradas, otros se encargan de la verificación de datos y se aseguran de que estos sean correctos y válidos y algunos duplican elementos. Cada OP_CODE realiza un papel importante en el funcionamiento del Bitcoin Script.
Para ejecutar un script el primer paso es duplicar la clave pública del dueño de los fondos que intervienen en la transacción. A continuación esta clave se somete a un proceso de hashing donde es aplicado el Hash SHA-256. A la combinación resultante se le aplica el hash RIPEMD-160.
Una vez se haya aplicado este último hash el resultado de los hashes se compara con el hash que se encuentra en la clave pública del scriptPubKey para comprobar que sea la misma clave y que esta esté verificada como válida. Una vez se haya comprobado que el script coincide este procede a ejecutarse y pasa al CHECKSIG donde se verifica la firma a través de la clave pública.
Es muy común que los usuarios crean que Bitcoin es incapaz de crear contratos inteligentes. Bitcoin Script es el lenguaje de smart contract de Bitcoin por lo que si puede crear smart contracts. Cabe destacar que las capacidades de los smart contracts de Bitcoin son limitadas respecto a Ethereum, sin embargo, la red de Bitcoin cuenta con esta capacidad.
Ya sabemos que Bitcoin Script no comparte todas las capacidades de una máquina Turing completa por lo que no permite bucles y gracias a ello podemos determinar cuándo acabará un programa y de que forma lo hará. En el Bitcoin Script no existe la posibilidad de crear script que se ejecuten eternamente al igual que es imposible que el lenguaje bloquee los programas o a su ejecutor.
Estas limitaciones atrasan los smart contracts de Bitcoin en comparación con los de Ethereum, sin embargo, garantizan una mayor seguridad en la red.
El lenguaje de programación de Bitcoin cuenta con características que lo diferencian del resto de lenguajes. A continuación veremos algunas de ellas.