Hechos clave:
-
El programa admite scripts de Elements.
-
B’SST utiliza el Z3, un demostrador de teoremas lógicos de primer orden.
Un nuevo programa permite analizar el código fuente de Bitcoin. El desarrollador Dmitriy Petukhov dio a conocer, a través de la lista de correo de desarrolladores, el repositorio de Bitcoin Script Symbolic Tracer (B’SST), una herramienta capaz de ejecutar códigos de operación y detectar posibles errores.
B’SST es capaz de analizar los guiones de bitcóin “Ejecutar simbólicamente todas las rutas de ejecución posibles y rastrear las restricciones que los códigos de operación imponen a los valores con los que operan”, dice Petukhov. Luego, el programa genera un informe basado en este análisis.
Él programa Utiliza la biblioteca Elements de código abierto, diseñada por Google para el lenguaje de programación Python. También utiliza el probador del teorema de primer orden Z3, diseñado por Microsoft Research, Uno de los componentes más potentes para solucionar problemas de scripts. (o conjunto de instrucciones escritas en lenguaje de programación). Según el repositorio B’SST, esta característica permite un análisis profundo. Sin embargo, el programa se puede ejecutar sin Z3 para ciertas pruebas “donde la velocidad de verificación es más importante que la minuciosidad”.
Este programa debe usarse como una capa adicional de defensa en la lucha por detectar defectos y comportamientos inesperados en los scripts, al igual que otras cosas como pruebas o auditorías de código se usan para este propósito, simplemente reduciendo la probabilidad de que no se encuentren defectos. detectar. También se puede utilizar como herramienta para comprender mejor el comportamiento de los scripts analizados.
Dmitry Petukhov, repositorio de Bitcoin Script Symbolic Tracer.
Para ejecutar este programa Se requiere Python 3.10 o posterior. Además, requiere el uso de la biblioteca secp256k1, diseñada específicamente para Bitcoin, para verificar la validez de las claves públicas. Este último es un requisito opcional, al igual que el uso del probador Z3.
En cuanto a su licencia de uso, B’SST es de código abierto: está registrada como Prosperity Public License 3.0.0., la cual es gratuita para uso no comercial. Esta licencia otorga 30 días gratis si el programa se utiliza con fines comerciales. Están exentas las instituciones educativas y de investigación.
B’SST también contiene fragmentos de código Bitcoin: el código de clase CSHA256 de la licencia MIT, escrito por varios desarrolladores de núcleo de bitcoin y la función ripmd160, también con licencia del MIT, escrita por el desarrollador Pieter Wuille.
Entre las funciones de B’SST se encuentra la capacidad de informar fallas de script detectadas, con el código que pudo haber causado el error; detectar rutas válidas para la ejecución de scripts; hacer una lista de restricciones que se deben cumplir para completar exitosamente un guión; y analiza posibles valores para diferentes variables: por ejemplo, tokens, resultados de script o campos de transacción.
Sin embargo, como advierte Pethukov, el programa “no puede garantizar que no haya problemas, inconsistencias, errores, vulnerabilidades, etc. en el script analizado”. En este sentido, sugerimos leer atentamente la descripción del proyecto en GitHub, que cubre un conjunto más detallado de factores que pueden conducir a un análisis exitoso y posibles limitaciones del programa.

Petukhov indica que este tipo de desarrollo no había sido objeto de trabajo por parte de los programadores de Bitcoin desde hacía mucho tiempo: “Sólo conozco un proyecto que antes tenía como objetivo realizar este tipo de análisis: el ‘SCRIPT Analyser’, pero no tuvo actualizaciones en su repositorio de GitHub durante 5 años.
La detección de errores es una parte vital del proceso de mejora de Bitcoin. A lo largo de los años se han encontrado y solucionado numerosos errores. Por ejemplo, en 2018, los desarrolladores de Bitcoin Core solucionado una vulnerabilidad eso podría haber afectado la política monetaria de bitcoin, según informó CriptoNoticias.