El stack es una estructura de datos real en RAM, una pila, que existe dentro del proceso del nodo, y que el intérprete de Bitcoin Script utiliza como memoria temporal para evaluar una condición de gasto. Durante la ejecución del script, el intérprete va empujando y sacando datos del stack conforme va leyendo y procesando cada opcode o dato del script, y el contenido del stack solo vive mientras dura esa evaluación.
El intérprete es código del nodo, escrito en el lenguaje de implementación del cliente (por ejemplo C++ en Bitcoin Core). Es un conjunto de funciones que conocen el significado de cada opcode y que definen exactamente qué operación se ejecuta sobre el stack cuando aparece un determinado opcode. El intérprete lee el script byte a byte, decide si cada byte representa un dato o un opcode, y en el caso de un opcode ejecuta la función correspondiente sobre el stack y sobre los datos de la transacción que se está verificando.
Bitcoin Script es el lenguaje de condiciones definido por ese intérprete. No es código ejecutable del usuario, sino el conjunto de opcodes disponibles y sus reglas de ejecución tal como están implementadas en el software del nodo. El lenguaje existe porque el nodo lo implementa, no porque el script lo defina.
El script, en sentido estricto, es simplemente una secuencia de bytes que viaja en la blockchain como parte de una transacción. Esa secuencia contiene datos y opcodes codificados como ceros y unos. El script no contiene funciones, no contiene lógica propia y no ejecuta nada por sí mismo. Es el nodo, a través del intérprete, quien toma ese conjunto de bytes y lo evalúa usando las funciones ya existentes para comprobar si se cumplen las condiciones de gasto del UTXO.
No es un smart contract porque el usuario no puede programar ni desplegar comportamiento nuevo. El usuario no define funciones, no define estado, no controla el flujo de ejecución ni introduce lógica arbitraria. Lo único que puede hacer es combinar opcodes ya existentes para construir una condición lógica finita que el nodo sabe verificar. El resultado final de toda esa evaluación es siempre binario: la condición se cumple o no se cumple, el UTXO se puede gastar o no se puede gastar