Miniscript o cómo programar (al fin!) nuestras monedas de bitcoin, con José Luis Landabaso

José Luis Landabaso explains Miniscript, a new way to program Bitcoin scripts that lets you create flexible rules like multisig wallets that change over time. The conversation covers Policy Language (human-readable recipes), Output Descriptors, and PSBTs, plus practical tools like Liana and Ledger for testing these programmable wallets.
Chapters
¿Hola que tal? Os habla Lunaticoin y bienvenidos a mi podcast. Desde la creación de Bitcoin nos hemos ceñido a utilizarlo como una moneda que guardamos e intercambiamos como si fuera de oro. Al ser digital y enviarlo por un cable le hemos puesto la etiqueta de oro 2.0, pero en esencia lo hemos utilizado como si tuviera las mismas propiedades que un trozo de metal. Lo curioso del asunto es que Bitcoin tiene en su ADN la posibilidad de ser mucho más y nos permite programar a placer cada una de sus monedas como si fueran una caja fuerte con condiciones de apertura específicas. Por ejemplo, en la invención de Satoshi puedes tomar una moneda de ponle un Bitcoin y programarle la siguiente condició si no te he utilizado en el plazo de 5 años, permite a mi hijo utilizarte a aunque me encuentre a kilómetros de él o simplemente ya no esté en este planeta. Esta condición se programa en la esencia de la moneda. La moneda no existe sin esta condición y nadie, ni abogados, notarios, ni la fuerza del sistema legal de una jurisdicción concreta puede cambiarla y luego, pasado el plazo establecido, se autoejecuta sin permiso ni ayuda de nadie. Pero como decía al principio, no hacemos casi uso de su programabilidad y nos ceñimos a ser Dorothy en El Mago de Oz, utilizando a Bitcoin solo por el caminito de los azulejos amarillos e ignorando al resto de la pradera. Esto está a punto de cambiar gracias a una cosa llamada Mini Script. Y en el episodio de hoy junto a José Luis Landavaso te voy a explicar el qué, cómo y cuándo todos nosotros, porque esto no se va a quedar solo para desarrolladores, vamos a poder tomar el control, irnos a la pradera y establecer condiciones de gasto propias. Aunque el tema acaba siendo bastante técnico, en la charla con José Luis hacemos Mini script accesible para todos los públicos y solo es a partir de la hora y 10 minutos que damos rienda suelta a los detalles más técnicos. Igualmente te animo a que también escuches esos minutos finales para que imagines con nosotros cómo serán las wallets a 5 años vista. En la versión de YouTube encontrarás apoyo gráfico con infografías y ejemplos para consolidarlo con mayor facilidad. Si cuando escuches el pod te aporta valor y aprendes algo nuevo, tienes tres formas de apoyarme. La primera es practicando el valor por valor escuchando el podcast en cualquier aplicación de podcasting 2.0 como sería Fountain, donde también podrás ganar satoshis por escucharlo. Puedes también enviarme un zap a la nota de publicación en Noster o uniéndote a Patreon, donde por ejemplo hubieras tenido acceso a este episodio desde mitad de la semana pasada. Especial mención a Machiavelli que me ha hecho llegar el contravalor más grande desde el último pod con 17.000 sats y el mensaje para el mejor podcast de Bitcoin. Muchas gracias Maquiaveli. También puedes apoyarme dejando un comentario en el pod, dándole like, retweet y en definitiva compartiendo los capítulos que más te gusten. Y por último puedes apoyarme utilizando los productos de alguno de mis sponsors, que son servicios bitcoiners que selecciono cuidadosamente y que me permiten pot a pot seguir trabajando en lo que más me gusta. Ellos son HODLHODL, la página web donde comprar bitcoin de otros particulares sin KYC, Bitrefill, la página web donde comprar de todo pagando con Bitcoin, CoinKite, la empresa creadora de los dispositivos icónicos para guardar tus bitcoins con seguridad y BTC PRAC, conferencia Bitcoin que reunirá este junio bitcoines de todo el mundo en PRAG. Te hablaré más de ellas a lo largo del pod en fragmentos que he preparado específicamente para este episodio y con material de valor para que te lleves una pieza de contenido sobre lo que hace. Antes de dejarte con el pod, una nota al El micro de José Luis nos hizo una mala pasada y grabó este documento con algunos pequeños ruidicitos que van apareciendo de tanto en tanto. Te pido disculpas por ello y espero que no sean un inconveniente para acceder al cambio de paradigma en las wallets de Bitcoin que está a punto de comenzar. Ahora sí, prepárate para desencadenar la programabilidad de Bitcoin. Sin más, te dejo con el pod. Buenos días José Luis.
Hola, buenos días Luna.
Te reconozco que estaba haciendo scroll en Twitter hace un par o tres de semanas cuando hablamos la primera vez y vi un tuit de Salvatore Ingala, que trabajaba en Ledger, donde te retuiteaba y hablaba de una librería que habías publicado tú. Luego te preguntaré por ella. Y de golpe ahí se me encendieron todas las alarmas porque yo estaba estudiando ya todo el tema de mini script y yo ya pensaba que estaba obligado a hablar todo este tema con alguien que no hablara castellano, de habla inglesa. Entonces no, no, espera, espera, que voy a poder hablar con alguien en castellano. Entonces me hizo mucha ilusión descubrirte más. Luego la llamada que tuvimos previa a este pod fue muy interesante, pero te quería preguntar primero cuál es tu background y un poco cómo llegas tú a Bitcoin cuándo te relacionas con él.
Pues mira, yo soy ingeniero de telecos, luego hice un doctorado en procesado de señal, o sea que yo vengo de la parte técnica. Estuve trabajando en Telefónica i D durante un tiempo y luego cosas de la vida, me dio por aprender a invertir en bolsa, en mercados, no tenía ni idea. Entonces lo que decidí hacer es crearme mi propio simulador para ver cómo podía aprender yo a invertir, porque los simuladores que encontraba en aquel momento, estamos hablando de 2011, no eran del todo útiles, no funcionaban del todo bien. Entonces creé la plataforma esta que se llama La Bolsa Virtual, que en España se hizo súper popular, de hecho a lo largo del tiempo ya tiene como 600 mil usuarios registrados y se hizo súper, súper famosa en España y es lo que he estado haciendo desde 2011 más o menos. Entonces yo llego a Bitcoin en 2017. Como yo estoy metido con el tema este de la bolsa virtual, a pesar de que es un simulador de bolsa, la gente suele confundir lo que yo hago como si yo fuese un experto en mercados, en inversiones y tal. Entonces en 2017 es cuando viene el boom tan bestia de Bitcoin, la gran subida de precio y la gente me preguntaba muchísimo sobre Bitcoin, oye, ¿Cuándo vas a poner Bitcoin en el simulador y qué te parece Bitcoin? Entonces yo la respuesta que le daba a todo el mundo era Bitcoin es una estafa, es que ni se te ocurra meter el dinero en Bitcoin porque esto es una estafa. Además yo estaba súper convencido de que no podía funcionar Bitcoin, porque si yo tengo Bitcoin en un archivo, en un fichero, y yo te lo vendo a ti inmediatamente, la semana que viene este archivo que puedo hacer una copia bit a bit y se lo puede vender a otra persona. Entonces yo no había hecho ni el esfuerzo de intentar entender cómo funcionaba Bitcoin. La cuestión es que esto empiezo sobre todo en primavera de 2017, me empiezan a preguntar mucho cuando ya llega el verano, empiezo a ver gente a la que yo respeto bastante, gente muy buena técnicamente y tal, que empieza a hablar de Bitcoin. Digo, ostras, si este tipo está hablando de Bitcoin, es un tío que es inteligente y tal. Digo, voy a hacer el esfuerzo por lo menos de ver qué es lo que hace Bitcoin. Y yo voy directamente al white paper de Satoshi, es el artículo fundacional de Bitcoin. Y ese artículo es una maravilla. Y yo de verdad invito a todo el mundo que esté interesado en Bitcoin, sobre todo si tiene un background técnico y es un ingeniero o le gusta la tecnología en sí, porque es un paper que se puede leer bastante bien y además está traducido en un montón de idiomas, está en castellano también. Y lo que hizo ahí Satoshi fue muy bueno, porque puso toda la idea de Bitcoin en 8 páginas. En 8 páginas más las referencias y te lo puedes leer, se puede leer bastante bien. Y ahí te das cuenta de que Satoshi solucionó el problema del doble gasto, que es lo que yo estaba tan preocupado y que creía que sería una estafa y que no podía funcionar. Entonces yo caigo en la madriguera ahí. Entonces me paso yo un par de meses obsesionado con Bitcoin, leyéndolo todo a nivel técnico, pero también a nivel filosófico, porque van ligadas las dos cosas. Y así voy hasta hace cosa de un año y medio, una cosa así en la que yo decido que quiero pasar de ser un usuario de Bitcoin a contribuir en Bitcoin también yo siendo ingeniero y gustándome la programación y tal. Además detecto que existe ahí una ventana de tiempo en la que es posible contribuir en Bitcoin con un equipo pequeño. Yo normalmente trabajo solo. Entonces me recuerda bastante al principio de Internet, en el que tú solo podías hacer una página web que tuviese cierto impacto. Hoy en día no tienes Facebook, Google, Twitter, grandes empresas con montones de ingenieros, pero antiguamente tú podías hacer cosas de gran impacto en Internet y ahora en Bitcoin estamos en ese momento. Entonces yo hace cosa de un año y pico empiezo a buscar cosas en las que yo pueda aportar. Entonces, cosas de la vida, caigo en un canal de Telegram donde está Adambak, para quien no lo conozca es el inventor de Hashcash. Hashcash es el algoritmo que se utiliza en el minado de Bitcoin, o sea, toda la gente que está tan enfadada de que el Bitcoin gasta energía y tal, se puede enfadar mucho, pero que lo haga con Adamback. Y le pregunto que me dé alguna idea y él me propone una idea, luego podemos hablar, porque encajará muy bien con la historia de cómo paso de utilizar Bitcoin, Bitcoin Script y luego Miniscript. Él me da la siguiente idea, te la voy a explicar de forma intuitiva. Imagínate que tú guardas el Bitcoin en una billetera, en una cartera. Entonces tú esa cartera, tienes dos carteras, tienes una cartera para poco dinero, que es para guardar poco dinero y que usas en el día a día y luego tienes otra cartera donde tienes las grandes cantidades que podrían ser tus ahorros. ¿Qué pasa si tú vas por el mundo con esas carteras? Si te roban la pequeña, la de menudeo, la de comprar el pan, pues no sería un gran problema, pero si te roban la otra sí que es un gran problema porque te roban todos tus ahorros. Entonces él me propone un esquema por el cual oye mira, si a ti te roban esa cartera donde tienes todo ese dinero, puedes implementar un mecanismo por el cual durante una semana tú vas a poder hacer te la roban, se la lleva el atacante, se la lleva el ladrón y durante una semana tú puedes enviar de forma mágica, puedes enviar el contenido de esa cartera a un lugar ultra seguro que tú has predefinido con antelación. Y esa es un poco la idea que me da él y me incluso tú puedes delegar ese proceso. Imagínate, te roban la cartera pero por lo que sea tú no puedes acceder a un ordenador o cualquier cosa, un sistema informático, tú puedes delegar a una tercera persona, que podría ser tu hermano o alguien de tu confianza, que oye, que vea que tú has desaparecido o que ha pasado algo contigo y que te envíe también automáticamente esa cartera a ese lugar ultra seguro. Entonces ¿Esto se puede hacer en Bitcoin? Se puede hacer, lo que pasa es que muy pocas cosas se han hecho con Bitcoin utilizando todo lo que ofrece, pero se puede hacer y se hace utilizando el sistema de script de Bitcoin que está desde el día cero implementado por Satoshi. Entonces yo me pongo a desarrollar esta idea y luego ya entraremos en detalle en cómo se puede hacer y tal. Entonces es cuando caigo yo en Salvatore, que lo mencionabas antes, que es el ingeniero de Ledger que está implementando la aplicación de Bitcoin para las Ledger, los dispositivos de Ledger. Y él es el que me destroza la vida, porque cuando yo ya tengo un prototipo más o menos de la app implementado, él me dice no, no, nosotros aquí en Ledger vamos a dejar de dar soporte a Bitcoin Script y nos vamos a pasar a una cosa que se llama miniscript. Y yo digo, no me lo puedo creer, después de meses trabajando en esto, que vayan a hacer esto. De hecho al principio ni entiendo lo que es miniscript y lo único que me genera es rechazo porque me acaba de fastidiar la idea. Luego con el tiempo acabé viendo que sí, que Miniscript es útil y que de hecho tiene muchísimo sentido rehacer todo lo que he hecho utilizando mini script. Pero esta es un poco mi historia hasta este momento. De hecho yo lo que acabo haciendo es implementando una librería que permita usar miniscript y programar miniscript. Acabo haciendo como una capa que podré utilizar yo, pero podría utilizar otros, que nos da acceso a Miniscript. Y yo creo que aquí es cuando podremos entrar a explicar un poco miniscript un poco más adelante.
Pasas del rechazo a desarrollar una librería que la abres al mundo, una librería
de JavaScript, Corrígeme sí este es JavaScript. Para trabajar con miniscript existen varias librerías. Hay una que es la de bdkit que está desarrollada en Rust. Luego también tienes la wallet de Bitcoin Core, hace cosa de un mes o algo así, tiene soporte completo para miniscript también creo que también hay una librería que se llama Lib que la utilizan algunas hardware wallets, que también desde hace cosa de un mes o algo así, todas más o menos es la misma fecha. Mi librería también tiene una cosa de un mes, una cosa así, y esta está implementada que creo en C también. Y yo diría que la mía es la tercera librería y utiliza JavaScript, que es un lenguaje de programación, utiliza muchísima gente y hay muchas wallets que utilizan JavaScript, Por ejemplo Blue Wallet utiliza JavaScript y utiliza algunas de las librerías que yo también uso para desarrollar la librería miniscript. Incluso el proyecto este de John Carvalho de Synonym, ellos también utilizan JavaScript, sobre todo muchos de los proyectos que desarrollan wallets usando la tecnología reactiva acaban usando herramientas de JavaScript. Entonces era una pata que faltaba un poquito y yo ahí veo que puedo aportar mi granito de arena.
Te preguntaré más por ello más adelante. Lo que me gustaría hacer ahora es un poco ir introduciendo miniscript, no es sencillo. Y este pod lo que vamos a intentar hacer es lo que ya venimos haciendo desde el pod de mempool, que es hacer una parte para todos los públicos, intentando que no se pierda nadie y y luego que llegue un momento donde sí que ya nos podemos meter todo lo técnico que queramos. Entonces a Bitcoin se le define de muchas oro, digital, cash, electrónico. El propio Satoshi lo escribió así. Hay una forma en concreto que para el podcast de hoy cobra especial importancia, que es cuando se le llama dinero programable. En otros podcast he explicado la idea de que Bitcoin se parece mucho a las monedas de oro, porque lo que nos enviamos son una especie de monedas digital pero de Bitcoin y cada una con diferentes importes faciales que se juntan, se funden en una transacción para crear nuevas monedas que enviamos a diferentes destinos. Por poner un ejemplo más visual, Si yo tengo dos monedas, una de 1 bitcoin y otra de 2, y te he de enviar 2,5 bitcoin, crearé una transacción fundiendo esas dos monedas de 1 y 2, y crearé otras dos monedas, una DE 2,5 que te enviaré a ti y otra DE 0,5 que será mi cambio, mi vuelto en esta operativa que parece sencilla y realmente muy parecida a la que podrías tener con el oro. ¿Cómo podrías explicar cuál es la parte programable de Bitcoin?
Lo primero de todo, y a mí es una de las cosas que me fascina de Bitcoin y sobre todo de la historia de Bitcoin, permíteme que me remonte un poco a esto, pero a mí lo que me parece fascinante es que hay un tío o un grupo de personas que se llama Satoshi Nakamoto que en 2007 decide crear un sistema monetario completo, que al final Bitcoin es lo que estabas explicando tú, pero es que además es que la emisión de moneda, o sea, eso es un sistema monetario completo. Y luego crea la primera versión que crea Satoshi de Bitcoin. En esa primera versión él ya introduce el concepto de dinero programado. Lo cual a mí de verdad me explota la cabeza, porque ¿Cómo es posible? Normalmente cuando tú desarrollas o diseñas un producto, haces una primera versión que es la del mínimo producto viable y que con lo mínimo imprescindible ya funciona. Entonces Satoshi lo que podría haber hecho al principio de todo oye, voy a diseñar un sistema que envía monedas de A a B, en las cuales tú tienes que demostrar que tú eres el propietario de A para poder enviar a B. Entonces podrías poner una firma digital en una transacción en un campo fijo y con eso ya sería suficiente para enviar dinero. Pero Satoshi de alguna manera es como si él fuese consciente de que esto iba a agarrar, iba a coger tracción y que iban a ser necesarias estas funcionalidades de dinero programable. A mí esto de verdad que es algo que me sorprende un montón, porque él está trabajando, creo que es cosa como de un año, una cosa así, en Bitcoin, él solo. Nadie le paga por hacer esto. Pero es que encima lo hace súper completo con este sistema que estabas diciendo tú, programable ya desde el día cero, que esto es algo que le debió de llevar semanas o meses de hacer. Lo que hace Satoshi Nakamoto es, se inventa un lenguaje de programación que vale, sí, será todo lo sencillo que tú quieres, pero se inventa un lenguaje de programación, un compilador de ese lenguaje de programación y un intérprete de ese lenguaje de programación. Es que es una locura lo que llega a hacer Satoshi ya en la primera versión. Entonces esto era un poco una regresión de una cosa que a mí me sorprende un montón, que es el maestro de que él ya piense en el dinero programable. Entonces, ¿En qué consiste el sistema de Bitcoin Script? ¿Esto que inventa Satoshi? Él lo que hace es decir, en lugar de enviar dinero de A a B, tú lo que vas a hacer es generar unas condiciones de bloqueo de tu dinero. Eso es como una pequeña parte de un programa. Y eso es lo que subes a la blockchain cuando se mina y tal. ¿Que era la blockchain? Este programa, que es un programa incompleto, que tiene unas condiciones de bloqueo. ¿Entonces el que quiera gastar ese Bitcoin tiene que completar ese programa, tiene que poner las líneas de código que le faltan ese programa, de manera que cuando lo ejecute el minero, corra ese programa, el resultado, sea true o sea, sea OK? Sea correcto, o sea que le dé verdadero el resultado. Entonces en eso consiste el sistema de Bitcoin Script. En resumidas cuentas es una parte de locking script o de condiciones de bloqueo, que tú lo pones cuando envías el dinero y luego cuando él lo quiere gastar tiene que poner el unlocking script, que serían las condiciones de desbloqueo. Todo eso al final acaban siendo líneas de código de un programa y ese programa se ejecuta, lo ejecutan los mineros y son los que te permiten gastar o no gastar ese dinero.
Esto que acabas de decir me ha encantado, lo de que es un programa incompleto, porque esto claro, hacemos tantas abstracciones de Bitcoin para que lo entendamos todos, que no nos damos cuenta de lo que realmente es y pensamos que esto es como el oro, que cuando vas a enviar una moneda, pues la envías, la ha recibido la otra persona en su bandeja de entrada, como si fuera un email y ya está. Pero lo que está sucediendo es que cuando alguien envía una moneda, le está poniendo a esa moneda, le está quitando unas condiciones de bloqueo que tenía, le está poniendo otro candado. Lo que pasa que ese candado solo lo podrá abrir la persona que lo está recibiendo. Y ese candado de bloqueo, ahora parece muy abstracto, pero no es más que la dirección. En la gran mayoría de los casos no es más que la dirección que le pasa a la otra persona. La persona que lo ha de recibir le pasa una dirección y dentro de esa dirección no lo vemos, pero eso es un candado, ese es el candado que le estamos poniendo. Esto se va a la cadena de bloques y se queda ahí almacenado acumulando polvo, hasta que esa persona que recibió esos Bitcoin, lo que llamamos recibir Bitcoin, decide gastarlos. Y cuando los gasta, como tiene un candado puesto, lo que ha de hacer es darle una prueba o darle esa otra parte del programa que lo completa. A esta otra parte del programa le podemos llamar de muchas maneras, condiciones de desbloqueo, le podemos llamar testigo, le podemos llamar. Hay diferentes palabritas, pero no es más que eso, que es como aportarle la llave, las condiciones que le faltan. Y entonces lo que tú decías ahora, que cuando se juntan estas dos partes es como que da correcto, válido. Este válido viene a decir sí se puede desbloquear esa moneda. Y cuando tú desbloqueas una moneda, ¿Qué puedes hacer? Le puedes poner otro candado. Y eso es lo que llamamos enviar las monedas a a otro sitio. Esto es cómo funciona el envío y el recibo de Bitcoin con condiciones de bloqueo y luego de desbloqueo. Lo has mencionado, has hablado de toda esta creación de Satoshi y luego has dicho el nombre, has dejado caer que es el script. ¿Qué es esto del script para quien no le sude nada? Porque aquí un problema para mí, yo que eso no soy técnico, cuando empecé en Bitcoin y empecé a escuchar Bitcoin Script me hizo un lío brutal. Porque luego cuando hablamos de programación general fuera de Bitcoin, hacer un script es como hacer un programa. Entonces se utiliza como esa misma palabra y puede ser confuso, pero no sé si podría explicar un poco más qué es este script y qué relación tiene que ver con esto de las condiciones de bloqueo.
Bitcoin Script al final es un lenguaje de programación que tiene un conjunto de operadores. Lo que pasa es que mucha gente pensará, por ejemplo, JavaScript. Hay varios lenguajes de programación que tienen el script en la parte final, pero Bitcoin Script es todo lo contrario a JavaScript. Entonces, dentro de los diferentes lenguajes de programación tenemos lenguajes de programación de muy alto nivel y de muy bajo nivel, muy cercano al código máquina. Curiosamente, Bitcoin Script, a pesar de que tiene el script de coletilla, es un lenguaje de muy bajo nivel. Es un lenguaje que de hecho yo me imagino que Satoshi Nakamoto debe andar sobre los 50 o algo así, porque Bitcoin Script, si tú te lo miras, es un lenguaje de programación que se parece un montón al código ensamblador que se utiliza para programar los microprocesadores. Hoy día ya se hace muy poca cosa en ensamblador y solo gente trabajando en cosas muy especializadas. Pero el lenguaje de programación de Bitcoin Script recuerda muchísimo al lenguaje ensamblador que se utiliza para programar CPUs. Entonces, dentro de Bitcoin Script lo que tiene son primitivas básicas que te permiten sumar números, por ejemplo, o te permiten hacer cosas como verificar que la firma sea correcta cuando envías una transacción, la firma sea correcta. Hay como esas primitivas elementales que son las que te permiten hacer cosas. También puedes hacer cosas como if, then, o sea, si sucede esto o si esta condición es correcta haz esto y si no haz lo otro. Entonces hay varios operadores que te permiten hacer ese tipo de cosas. Hay cosas que no puedes hacer, por ejemplo no puedes tener bucles utilizando Bitcoin Script es lo que algunos dicen que Bitcoin Script no es un lenguaje de programación completo, no es Turing Complete que le suelen llamar, o sea no es un lenguaje como el que puedes utilizar tú en tu ordenador C o C o JavaScript que te permiten hacer muchísimas más cosas, no, es un lenguaje que ya se hizo así de forma expresa, limitada para que pudieses hacer bloquear y desbloquear monedas pero sin que pudieses llegar a cometer errores como por ejemplo acabar en un bucle infinito, imagínate que se quedase un minero allí colgado haciendo un cálculo en un bucle infinito. Es un lenguaje que no es completo pero que sí que te permite hacer muchísimas cosas. ¿Entonces lo que pasa es que durante muchísimos años casi nadie ha utilizado todas las cosas que se podían hacer con Bitcoin Script porque qué pasa? Que es un lenguaje de tan bajo nivel que es muy fácil meter la pata, es muy fácil equivocarte y cometer algún tipo de error. De hecho se sabe que hay muchas monedas por ahí bloqueadas en la blockchain por gente que hizo un programa con unas condiciones de bloqueo que no lo hizo bien y que luego no existe unas condiciones de desbloqueo para desbloquearlo. Entonces Bitcoin Script en resumidas cuentas es un lenguaje de programación de muy bajo nivel que se parece mucho al código ensamblador que se utiliza para programar CPU.
Para hacer un resumen y que nadie se nos quede atrás, aquí yo he detectado que tenemos tres elementos entonces por un lado las condiciones de bloqueo que es cuando yo envío una moneda es en esa salida. Una transacción tiene dos partes, la parte de las entradas desde donde gasto y luego la parte de las salidas hacia dónde envío. El hacia dónde envío que normalmente lo relaciona la gente con pon una dirección y pon la cantidad y lo envías pues eso es el hacia donde envío. Eso ahí debajo hay unas condiciones de bloqueo que como hemos dicho la simple dirección de esa otra persona es una condición de bloqueo. Perfecto, esa sería la parte 1 condiciones de bloqueo Las condiciones de desbloqueo es la parte de las entradas, es cuando alguien quiera gastar de esa moneda en sus entradas pondrá las condiciones de desbloqueo, esa llave que abrirá ese candado. Ese es el segundo elemento. Y luego estos dos elementos por lo que he entendido están escritos, están estructurados en script, que es en Bitcoin script, que es este lenguaje de programación que nos dejó Satoshi para encontrar esta lógica, que aparte como dices tú, es de muy bajo nivel, eso está muy cercano al lenguaje máquina. Y estabas diciendo que no es sencillo y por ahí va mi siguiente pregunta, porque claro, a uno le sorprende que tengamos un lenguaje de programación que digamos que Bitcoin es dinero programable. Si analizas un poco el script, yo he detectado que hay como 114 opcodes y luego unos 75 que son push, o sea operadores que no tienen opcode porque son pushbytes, tienen como un montón de funcionalidades. No estamos hablando que sólo tienen el suma, el reste y el verifica, que serían como en 10 operadores lo tienes. No, no, tienen un montón de operadores. Hablamos de dinero programable, pero a día de Hoy, para el 95% si no más, de la gente, Bitcoin se utiliza como si fuera oro. Te lo envío, me envías una moneda, me la devuelves y no se programa de programación, sí se supone que es programable. A alguien le suena el tema de los multifirma, pero poco más. Cuando hablamos de programación nos viene a la cabeza smart contracts y ahí nos vamos a otras cadenas como Ethereum y demás, cuando en teoría los smart contracts son igual de viables, no Turing complete, pero poder hacer un contrato inteligente debería ser igual de fácil con Bitcoin. ¿Cuál es el problema este que nos estabas diciendo ahora que es tan difícil que nadie tiene narices a programar?
Yo creo que una parte es esta, una parte importante yo creo que es esta, que el lenguaje de programación es complejo, además no existían las herramientas para poder utilizarlo. Sí, tú puedes hacerlo, pero es complicado. Tienes que conocer bastante sobre Bitcoin y tienes que entrar a bastante bajo nivel. Luego te tienes que aprender cómo funciona el Bitcoin script. Y luego a mí una de las cosas que me preocupa, por ejemplo cuando estoy desarrollando el tema este de la billetera que te he explicado antes, que la puedes hacer desaparecer y tal, si te la la roban. A mí una de las cosas que de verdad me preocupan un montón es que yo no haga un programa que tenga un back, que tenga un fallo y que si yo hago perder 50 euros a alguien mira, pero hay gente que tiene muchísimo dinero en Bitcoin, hay gente con millones de dólares, millones de euros en Bitcoin, imagínate que le haces perder a alguien todo ese dinero, es una de las cosas que a mí me hace perder el sueño. Entonces si tú tienes que desarrollar esto utilizando Bitcoin Script, te tienes que asegurar mucho de que esto esté bien hecho, además tienes que asegurarte que estos scripts luego no sean vulnerables a algún tipo de ataque, hay unos ataques extrañísimos y de gente que sabe un montón que podría fastidiarte de alguna manera. Entonces claro, Bitcoin Script tiene este tipo de problemas, pero bueno, es un problema que en realidad el hecho de que sea complejo no implica forzosamente que ese sea el motivo por el cual puedas cometer un bug, de hecho en lenguajes de programación más sencillos como el de Ethereum, de Solidity, hay multitud de fallos y de bugs que aparecen por ahí también, pero claro, si encima además de eso tu lenguaje de programación es complejo, sí tienes más posibilidades de meter la pata.
Leyendo algunos de estos genios que ahora luego mencionaré de todo lo que es Miniscript te das cuenta de los problemas, o sea que hay problemas que son como muy obvios pero que en verdad cuando te pones a programar estas condiciones o imaginar cómo podría ser un programa en una moneda de Bitcoin y dices que claro, esto es muy necesario, ¿A qué me refiero? Me refiero que Bitcoin Script es muy difícil de analizar, por ejemplo de poder leer de que tú lees un script de Bitcoin y de primeras es posible que no sepas lo que sucede. Yo no tengo mucha idea de programación, pero a mí me pones un código de Python y más o menos digo vale, sí, creo que sé lo que está haciendo y así pasa con la gran mayoría de lenguajes que son más populares, que más se utilizan a día de hoy porque son de más alto nivel, pero en el caso de Bitcoin Script es que no tienes narices de saber lo que va a pasar ni lo que va a hacer y luego que como no sabes lo que va a pasar ni lo que va a hacer, no sabes cómo tienes que construir la llave que desbloqueará ese candado, o sea qué elementos te va a pedir. Y entonces por estas dificultades y luego otras más que también hay, yo lo que me he dado cuenta es que por eso estamos en Bitcoin, con que todo sean firmas, transacciones de firmas simples que se llaman, que son estas que se parecen mucho a mover monedas de oro pero en digital. Hay unos genios que se han animado a hacer cada vez más fácil multifirma y ya nos podemos animar unos cuantos usuarios a utilizar multifirma y ahí ya sí que estamos utilizando algo de programación de Bitcoin. ¿Y pensándolo, pensándolo para este podcast, digo, cuál debe ser el script más complejo que se hayan animado a hacer y que esté ahí más popularizado y que se esté utilizando? Digo, pues seguramente sea el de Lightning, o sea los HTLCs, seguramente sea el script que se hayan roto más la cabeza, o por ejemplo ahora que están los Ordinals que también algo por ahí tienen, pero los HTLC de Lightning seguro que ahí tuvo que haber bastante materia gris puesta para construir algo que luego no se rompiese y que no fuera a bloquear monedas. Pero las consecuencias de la esencia de este lenguaje de Satoshi, que es muy increíble que lo tuviera en mente, pero que no era muy sencillo o no es muy sencillo de utilizar, yo creo que las consecuencias son estas en que estamos utilizando a Bitcoin, es como si estuviéramos en la época de las cuevas todavía prácticamente y hay algún ingeniero que utiliza el acero, pero el resto estamos con palos y piedras metidos en la cueva más o menos.
Sí, sí, es así. De hecho es totalmente como lo estás explicando tú. Uno de los problemas de que no se hayan implementado más cosas, yo me imagino que sí que será por esto, porque el lenguaje de scripting es complicado, pero por otro lado, una de las cosas interesantes, yo creo que Satoshi puso ahí las bases y luego dijo ya lo irán mejorando, ya irán viendo cómo solucionar este problema. La parte buena que tiene Bitcoin Script es que te permite hacer todo. Entonces ya veremos cómo lo hacemos y a lo mejor hemos tenido que esperar 10 años hasta que le vayamos a dar uso, pero incluso de la manera que lo concibió Satoshi, existen unos opcodes, unos operadores, unas primitivas en el lenguaje de programación que incluso todavía no estaban predefinidos. Entonces tenemos cosas que después de que desapareciese Satoshi se han ido metiendo en Bitcoin Script, lo cual vale que sí que era complicado, pero oye, es extensible y de hecho se ha ido extendiendo. De hecho el tema de Multifirma se introduce me parece que en 2011, no sé si él estaba o ya había abandonado el proyecto, eso ya no estoy muy seguro, pero luego el tema de los operadores de Timelock lo tengo por aquí escrito, aparecen en 2014 que son los bloqueos temporales. Lo de no puedo, hablaremos de esto un poco más adelante si te parece, no puedo gastar esta moneda hasta que haya pasado esta cosa. Entonces por suerte Bitcoin Script es extensible y se ha podido utilizar para ir añadiendo funcionalidades. Y lo último que nos faltaba era llegar a esta parte en la que de alguna manera lo hagamos accesible a todo el mundo, sobre todo accesible a los programadores para poder hacer cosas como las que vamos a ver, que hay cosas que son una pasada.
Espero que estés disfrutando de la charla con José Luis, justo ahora entraremos a tratar qué es esto de mini Script y también con algunos ejemplos de wallets para que tú te empieces a imaginar cómo lucirán todas estas aplicaciones en cosa de pocos años. Yo te interrumpo un momento para hablarte de dos de mis sponsors. HODLHODL es una página web donde podrás coordinarte con otros particulares para comprar y vender Bitcoin sin datos personales ni preguntas de más. HODLHODL coordina las compraventas con su tablón web de ofertas, pero también forma parte de los intercambios para que nadie se vaya con lo que no es suyo. Todo apoyado en las condiciones de gasto más utilizadas fuera de las convencionales que son las de Multifirma. Cuando alguien accede a vender Bitcoin a través de HODL HODL primero las ha de depositar esos Bitcoin que va a vender en una wallet con condiciones de gasto que dicen. Para mover estos fondos dos de las tres llaves participantes, el vendedor, el comprador y HODL HODL, tendrán que estar de acuerdo para que estos fondos se muevan. Y así es como HODLHODL se asegura que nadie intente levantarte la camisa e irse con tu dinero sin tú antes haber recibido tus SATs lo que has comprado. No te asustes que esto que te acabo de comentar puede sonar muy técnico, pero son solo los entresijos de su funcionamiento, porque por encima una interfaz muy amigable te recibirá y te acompañará durante todo el proceso. Si todavía compras Bitcoin con KIC, anímate a seguir el link de la descripción y rompe con eso. Y coincat, la empresa fabricante de los dispositivos más icónicos para la custodia de tus Bitcoin. En Coincat llevan desde 2011 construyendo herramientas para que guardemos con mayor seguridad y facilidad nuestros satoshis y por ello han construido dispositivos de hardware como la Colcar Mark 4, la Colcar Q, Tapsigner u Opendyne. Coinkite ha estado siempre a la última en este sector y buena prueba de ello es de ser la primera wallet que implementó las PSBT, las transacciones parcialmente firmadas de Bitcoin, que más tarde te indicaré y que te explicaré qué papel tienen en esto de mini script, que tienen un papel fundamental. También fueron los primeros en implementar VIP, que ahora cada vez más wallets implementan y ya han anunciado que próximamente tendrán Miniscript para dar rienda suelta a todo el potencial de Bitcoin. Si estás pensando en subir el nivel de seguridad de tus Bitcoin y dudas sobre qué hardware wallet conseguirte, te lo pongo fácil. Si eres muy principiante, tabsigner es tu camino. Si te consideras principiante, avanzado o intermedio y tienes ganas de una lección Bitcoin como ninguna otra, Coldcard Mark 4 o la reserva que te harán esperar todavía un poco de la Q. Así de simple. Échale un vistazo siguiendo el link de la descripción a todas las herramientas que la tienda de coinkite puede ofrecerte y cuidado, no te enamores con sus relojes de bloques Block Clock. Con todas estas dificultades, como ya estamos llegando, pues aparece uno de los que aparece siempre, que es Peter Wheeler junto con Andrew Poelstra y Sanket Kanyalkar en 2018 y ya proponen una cosa que se llamaba Mini Script, se llama Mini Script y que parecía, pues en aquel momento era como vale, vale, muy bien, la siguiente ida de olla, pero esto no sé cuándo lo vamos a aplicar y que ahora, como bien decías al principio, parece ser que está en un momento de eclosión. ¿Qué es Miniscript? ¿Dentro de toda esta dificultad que estamos viendo del lenguaje de Bitcoin Script, qué es Miniscript?
Mira, Miniscript es un subconjunto en realidad de Bitcoin Script MiniScript no te permite hacer nada, en realidad a nivel de blockchain ni siquiera aparece Miniscript, no te permite hacer nada que no te permitiese hacer Bitcoin Script. Lo que pasa es que Mini Script te soluciona un montón de cosas. Lo primero que te soluciona es que te evita que tú puedas crear scripts que luego no se puedan gastar. Por ejemplo, eso ya es un gran Ken, imagínate, eso ha pasado, lo que te comentaba antes, que tú creabas una parte de programa que luego al cabo de un tiempo querías gastarlo y ya no podías, entonces con Miniscript eso es posible. Luego encima Miniscript tiene un montón de características interesantes que es más o menos fácilmente legible, tú te lees un Mini Script y por ahí aparecen ANDS, OR y aparecen una serie de primitivas que no son muchas y que dedicándole media hora, una hora, pues más o menos tú puedes llegar a entender lo que está pasando por ahí. Además mindscript, otra de las características que tiene es que es componible, tú puedes tener un programa que entra dentro de otro programa, entra dentro de otro programa, que es muy fácil de analizar y luego te soluciona algún tipo de ataque de maleabilidad, que yo ahí creo que no vale la pena ni entrar. ¿Pero existe un tipo de ataque que se puede hacer con Bitcoin Script, solo lo voy a mencionar levemente, por el cual alguien podría cogerte tu transacción mientras está en el mempool, mientras no ha sido minada, en el paso previo al minado, alguien te la podría coger y sin que? Sin modificar la transacción, lo que podría hacer es ensancharla, podría hacer que el tamaño de la transacción fuese muy grande de manera que la fee, la comisión que tú habías preparado para el minero no fuese suficiente para que terminase la transacción. No sé si me explico. Ese es un tipo de ataque que soluciona también Miniscript, o sea que esto
es importante dejarlo claro. Miniscript no es nada de esas cosas que a veces necesitas un cambio radical en Bitcoin para que se pueda implementar, No, Miniscript es Script, solo que has hablado de un subgrupo de script, un subconjunto de script. Entiendo que no utilizará todos los opcodes que tiene Script y lo que hace es una abstracción para que se pueda programar de forma más sencilla. Estaría en lo correcto.
Sí existe un proceso, yo diría que no va a haber nadie que programe directamente en MinScript, luego hablaremos sobre ello, pero existe un proceso por el cual tú llegas al mini script que es a partir de otro lenguaje. Bueno, llegaremos un poco más adelante, pero la conclusión es que sí permite hacer mucho más fácil la programación de Bitcoin y te asegura que lo que tú programes va a poder venir alguien después y gastarlo, o sea que no se te va a quedar colgado ahí en la blockchain. Y te evita algún tipo de ataque como el que te comentaba de maleabilidad. Sobre todo es una gran mejora a nivel de seguridad, que yo lo que veo es que en Bitcoin cada cosa que se hace hay una obsesión increíble por la seguridad y por hacer que las cosas funcionen.
Hablábamos de que con script no hemos sido capaces de superar así para gran parte de la gente de las firmas simples, los multifirmas ya parecen como muy avanzados. Y bueno, Lightning, porque te lo dan masticado en una wallet, pero obviamente nadie se podría animar a hacer un script como el de Lightning. ¿Esto de Miniscript va a quedar así como muy abstracto para la gente de a pie o realmente vamos a poder ver gracias a Miniscript una programabilidad en Bitcoin que de golpe le encontremos el sentido y veamos que realmente es oro 2? ¿Cero y no simplemente oro 1.5 porque pasa por un cable?
Yo creo que a nivel de usuario, de hecho el usuario jamás debería de saber si su wallet utiliza Miniscript o no. Yo creo que sobre todo miniscript es una herramienta para desarrolladores. Lo que pasa es que es interesante que el usuario sepa si su wallet utiliza Miniscript o y que sepa de qué va. Pero a mí a veces cuando pienso en Miniscript, me acuerdo sobre todo de los primeros ordenadores que tú te comprabas y te ponían la pegatina de Intel Inside. Entonces yo creo que el usuario final de alguna manera tendrá que saber que su wallet soporta Miniscript, pero le dará igual cómo funciona Miniscript, no tendrá por qué saber cómo funciona Miniscript y por
qué le interesará saber qué tiene Miniscript dentro. Lo del MiniScript Insight, que me ha gustado esto ya que se hagan pegatinas por favor. ¿Pero dónde verá la utilidad en eso?
La utilidad para el usuario sobre todo es el tema de lo mismo que con Intel Inside. Tú sabías que cuando tú, o Windows, la pegatina de Windows y de Intel Inside, tú sabías que cuando te cambiabas de ordenador, todos los programas que tenías y todos los archivos que tú habías almacenado y tal, los podías pasar al siguiente ordenador, iban a seguir siendo compatibles, ibas a poder seguir ejecutando los mismos programas. Por eso se ponía la pegatina de IntelInsight, porque te decía todo lo que corra en Intel lo vas a poder ir cambiando de ordenadores y seguirá corriendo en ese procesador y con este sistema operativo. Eso mismo va a pasar con miniscript. Tú cuando estés utilizando tu wallet favorita, sea la que sea y sea compatible con miniscript, sabes que en el futuro te vas a poder pasar a otra wallet y que el proceso de exportación va a ser directo porque es un estándar, al final es un estándar que crea la comunidad Bitcoin para facilitar que el usuario no se quede colgado entre cambios de wallets y evoluciones de wallets. Entonces hasta la fecha eso no ha sido necesario por lo que decías tú, porque estábamos haciendo transacciones súper sencillitas, enviamos de A a B, entonces lo único que teníamos que saber es que teníamos que guardar 12 palabras, las típicas 12 palabras que todo el mundo se escribe en una tarjetita y que las esconde en algún sitio y con Eso era suficiente. ¿Por qué? Porque esas 12 palabras ya sabíamos la gente que desarrolla wallets, oye, qué tipo de scripts estaban utilizando, que eran los estándares. Ahora ¿Qué pasa? Que si vamos a empezar a utilizar de forma potente el sistema de script de Bitcoin, oye, ya no estamos utilizando cosas estándar, entonces vamos a utilizar scripts complejo y el que desarrolla la web no tiene ni puñetera idea de qué forma va a tener ese script. Entonces vamos a utilizar miniscript como un estándar para transportar esos programas de una wallet a otra. No sé si me explico.
Perfectamente, y este es otro tema que quería tratar después. Que miniscript lo que nos va a llevar es a otra forma de entender las wallets. Que si ahora mismo lo normal, dame 12 24 palabras y esto lo puedo ir pasando de wallet a wallet y es como mi formato de transferencia, donde yo hago portable mi clave privada extendida y la voy pasando de aquí a allí. Hay un cambio de paradigma con mini script y es que esto no va a ser suficiente, sino que aparte a la wallet le tendremos que dar una receta, le tenemos que oye, sí, muy bien, tu clave privada es muy bonita, pero a partir de ahora vas a necesitar saber qué tipo de script se ha utilizado con esta clave privada. Esto lo entiendo, lo que pasa que cuando. Porque esto viene sonando desde hace tiempo y normalmente te quieres quedar con la practicidad y dices ¿Para qué? Si yo ya tengo un sistema que ya me funciona y no tengo que guardar nada más y con 12 o 24 palabras hago que ahora voy a tener que guardar una cosa más. No hombre, no, esto no es para mí. Siempre piensas algo tiene que proveer esta flexibilidad en el scripting para que tú digas me compensa. Entonces, ¿Qué ejemplos tendríamos que me puedas contar de cosas que se puedan estar haciendo ya con mini script que serían impensables sin él?
Mira, sobre todo las cosas para las que se utiliza y sobre todo se va a utilizar Miniscript en el futuro es para utilizar el conjunto de operaciones de Bitcoin Script que tienen que ver con el tema de multifirma, o sea que pongamos el símil de una caja fuerte en la que existen varios cerrojos y esa caja fuerte solo se abre si tiene tres cerrojos y necesitas por ejemplo, a lo mejor con dos llaves ya puedes abrirlo. Este es el sistema de multifirma. Eso Miniscript te facilita el uso de ese tipo de condiciones. Luego hay otro tipo de condiciones que también te facilita Miniscript y luego vamos a ver cómo con eso podemos construir diferentes productos. Este otro tipo de operaciones que te permite hacer Miniscript, con las que te permite trabajar, es el símil de la caja de seguridad de apertura retardada, que es que tú le das a abrir una caja de seguridad pero esa caja de seguridad no se abre hasta el cabo de 20 minutos o de una semana. Esto puede ser útil por ejemplo en un banco, si lo van a atracar, pues a lo mejor el banco tiene este sistema de apertura retardada por el cual los ladrones no se pueden esperar allí dos horas porque va a llegar la policía, pero la caja fuerte no se va a abrir hasta de aquí dos horas. Eso mismo lo podemos hacer con Bitcoin y se puede hacer desde 2014, incluso desde antes, pero sobre todo desde 2014.
¿Pero qué pasaba?
Que era muy complicado hacer con Bitcoin Script. Entonces Mini Script nos va a permitir utilizar ese tipo de primitivas, la de apertura retardada y la de multifirma. ¿Y con eso qué podemos hacer? Pues ahí imaginación al poder. Pero hay esquemas que son muy interesantes, por ejemplo, para el tema de herencias, que es uno de los temas de los que más se ha hablado. Imagínate que tú tienes un montón de dinero en Bitcoin y quieres planificar tu herencia. ¿Lo más sencillo qué sería, sería dejarle una copia de tus contraseñas en vida ya a tus hijos y les mira, si me pasa algo, está aquí eso qué pasa? Si tú eres una familia bien avenida y tal, pues puede ser correcto. Oye, pero a lo mejor hay familias que no puedes hacer esto porque sabes que tu hijo te la va a liar o o no te puedes fiar de cualquier tipo de que alguien te vaya a robar esa contraseña que tienes guardado en otro lugar. Entonces con Miniscript lo que puedes hacer es lo tú tienes una wallet que es normal, como la que utilizas habitualmente, pero esa wallet, si no la has usado durante un año, inmediatamente le da acceso a unas nuevas contraseñas que son las que tienen tus herederos.
Es lo que le llaman la wallet de hombre muerto, como en los trenes, que tienes que ir apretando un botón para demostrar que el piloto no le ha pasado nada. Pues esto sería lo mismo, pero en una wallet de Bitcoin. Tú mientras muevas esos fondos, nadie va a tener acceso. Pero si los dejas parados acumulando polvo durante un año o lo que tú determines con Mini Script, entonces esa otra clave tiene acceso que podría ser tú mismo, porque es lo que tú dices, Miniscript te deja imaginación al poder. Tú te puedes habilitar una segunda clave que la entierras bajo hormigón por si perdieras las primeras, yo qué sé, y dices, bueno, pues que a lo mejor no sería el esquema más óptimo. Pero en este caso el botón del hombre muerto es una de las wallets interesantes que te habilita Miniscript.
Eso es. Y encima, como te comentaba al principio, que Miniscript es componible, tú puedes dejar, puedes hacerlo del sistema este de hombre muerto, en el cual al cabo de un año existe una llave nueva que es la que puede desbloquear ese Bitcoin, pero puedes hacer que esa llave en realidad sea una multifirma. Por ejemplo, imagínate que tienes tres hijos y tú pones una condición en la que el día que yo no esté, mis tres hijos se van a tener que poner de acuerdo en cómo quieren gastar el Bitcoin y si los tres no están de acuerdo, eso no se puede tocar, no lo pueden mover. Incluso podemos ir incluso un poco más allá y luego puedes pero voy a poner otra siguiente condición que un año más tarde de eso, con dos que se pongan de acuerdo ya es suficiente o incluso podrías decir otro año más adelante con que se pongan de acuerdo uno con un conciliador, alguien que yo designo, ya sería suficiente. Imagínate esto hasta infinito. Y con el esquema que se te puede llegar a ocurrir a ti es
increíble porque este es un ejemplo centrado en herencia, pero y además esto es muy pronto, es muy temprano, aunque Peter Wheel y estos genios empezaron a trabajar en 2018, como bien decías, es algo que Bitcoin Core recién acaba de implementar, o sea que ya puedes utilizar mini script en Bitcoin Core. Las librerías es ahora que empiezan a estar para diferentes lenguajes, siendo accesibles para todo tipo de programador, o sea, es ahora el momento de miniscript es ahora y ya no solo en la parte de desarrollo, en la parte de imaginación también es ahora y cada mes te aparece alguien que se le ha ocurrido una nueva idea de cómo aplicar mini script a un caso de la vida real. A mí hay uno que me encanta, bueno estaba incluido dentro de lo que has dicho tú, que es el multifirma en decadencia. Una multifirma en decadencia y es esto que tú ahora mismo, si tú te planteas un esquema multifirma tres de tres, dos de dos, cinco de cinco, eso es una locura porque entonces estás casi que pegándote un tiro al pie. Si pierdes una de esas cinco llaves ya está, fondos bloqueados. Pero con miniscript puedes hacer que este multifirma tenga decadencia y que empiece bueno, esto es mi cold storage, súper seguro, no quiero que nadie lo toque, ni yo mismo, y quiero aquello que sea muy difícil, quiero que sea un 3 de 3, pero quiero que de aquí un año, dos años, si he perdido una de las llaves por la razón que sea, quiero que se convierta en un dos de tres. Y luego, como tú bien decías, pasado cinco años, a lo mejor quiero que se convierta en un 1 de 3, pero a lo mejor quiero que se convierta en otro dos de tres donde una de las llaves cambia y es de una contraparte, una compañía de seguros o alguien a quien yo le pago para que me ofrezca ese servicio y me ayude a recuperar los fondos. Entonces, lo que estoy viendo yo ahora es que hay mucho desarrollo en la parte de software, pero también hay mucho desarrollo en la parte, vamos a llamarle de creadores de recetas, que eso es lo que creo que va a acabar pasando con miniscript. Vamos a acabar teniendo gente que desarrolle buenas recetas, que tenga buenas ideas y que entonces nos lleve a un nuevo paradigma de wallets, donde tú tendrás que vale, mi clave privada la guardo así muy bien. Y ahora con esta clave privada voy a seleccionar de este casillero de recetas, me interesa hacer esto, me interesa tener una wallet simple como la que has explicado tú, pero que tenga un Deadman Switch a dos años y que vaya siendo que cada vez que lo mueva, que se vaya corriendo este. Esta muerte, este tiempo de muerte, pues que se vaya avanzando para que no se active esa otra llave. Entonces tú vas a acabar montándote tu custodia de Bitcoin y yo creo que ya de una vez por todas lo que vas a tener es un dinero programable, pero con todas las de la ley, no sobre el papel, sino realmente vas a tener un dinero, vas a tener una moneda de Bitcoin ahí en el mundo digital, que tú vas a saber que eso no es una simple moneda y ya, sino que es una moneda que intrínsecamente en su esencia tiene unas condiciones que la hacen que se mueva de una manera o de otra.
Eso es. Y la cantidad de ejemplos que se pueden poner son infinitas. Luego, uno de los casos de uso, que también puede ser bastante interesante, y a mí es uno de los casos que a mí me parece divertido porque es el de Bitcoin para tontos, que lo has mencionado un poco de refilón tú también, que es el el de antipérdida. Y no sé si te habrá pasado a ti alguna vez que te viene algún familiar o alguien muy conocido a ti y te oye, ayúdame con esto de Bitcoin. Y tú le sí, te tienes que custodiar tú las contraseñas y te tienes que guardar tú las contraseñas. Y tú le ayudas, le ayudas a esa persona, ese familiar, y le haces el setup y le preparas su cartera, le escribes sus palabras y tú se lo das y le bueno, y ahora es tu responsabilidad guardarte estas contraseñas y no las pierdas. Pero tú en el fondo de tu corazón sabes que la va a cagar. Tú sabes que esa persona puede que acabe perdiendo las contraseñas, incluso aunque no deberías, con alguien muy cercano a ti oye, mira, aunque no debería, voy a acabar guardando yo estas contraseñas también para el día que me venga. Hoy he tenido un problema y he perdido esto. Entonces con Mini Script, ese tipo de cosas se pueden hacer, pero bien hechas. Tú lo que puedes hacer es le explicas a alguien cómo funciona la autocustodia, esa persona se crea sus contraseñas, se las guarda sus doce palabras, y de algún modo, si esa persona pierde esas contraseñas, pues al cabo de un año tú con tus contraseñas podrás acceder esos bitcoins y recuperárselos a él, a esa persona. Entonces, de alguna manera él es responsable de su Bitcoin y mientras haga buen uso, tú jamás vas a poder acceder a ellos. Pero tú ahí quedas como último ayudante en el caso de que suceda algo. Y este es uno de los casos de uso más directos, que seguro que habrá empresas tipo Casa o Unchained Capital, que les puede ser muy interesante porque es muy parecido a su modelo de negocio.
Estamos hablando de ejemplos relacionados con la custodia individual de Bitcoin. Y eso está genial. Pero a mí también, de las cosas que más me ha volado la cabeza escuchar a Rob Hamilton, que tiene esta, yo creo que es startup, la empresa que se llama AnchorWatch, si no me equivoco, Anchor Watch, que es una compañía de seguros de Bitcoin o sobre Bitcoin. Y entonces está muy loco en construir todas sus pólizas sobre Mini Script. Y esa es como la otra puerta que habilita, que yo creo que ya no es un tema de que mejorará la custodia personal de cada uno, que sí, pero es que también mejorará los contratos entre agentes Bitcoin que existen y bastantes, entre diferentes empresas y que entren en relación entre ellos. Por ejemplo, lo que va a hacer ROP es asegurar la custodia de Bitcoin de empresas que vengan y tengo 100 bitcoins, quiero asegurarlos. Y te voy a pagar tanto para que me asegures que en caso de pase lo que pase, pues que yo me lo pagues en dólares o en lo que sea, pero que a mí se me compense esta pérdida. Y lo que me pareció muy interesante de escucharle es que él aplica Mini script para el contrato de la póliza. El contrato de póliza no es una cosa que vaya por fuera de Bitcoin, sino que él, gracias a mini Script, ha diseñado la póliza dentro de Bitcoin. Y él por ejemplo, una de las cosas que dice es tú vas a tener como asegurado el control de tus Bitcoin, pero yo voy a estar como firmante. Yo no voy a poder mover en ningún caso esos Bitcoin, pero a mí me interesa estar como firmante porque al final te lo estoy asegurando y yo quiero que en el caso de que pase cualquier cosa que me necesites, yo estaré ahí para ayudarte a firmar si lo necesitases. Entonces ellos han creado su propia receta y una cosa que me pareció excelente es que normalmente las pólizas pagas por un año, por dos años, por tres meses o a mes, depende, fijas la póliza de seguro como quieras. Pero imaginemos que en este caso has firmado una póliza de un año, pues él esa condición la tiene dentro de la programabilidad de Bitcoin. Pasado ese año la llave de Anchor Watch desaparece y digamos que los deja hacer y que vayan por sí solos. Entonces les interesa, si tú quieres renovar la póliza, tenemos que mover esas monedas a otro, o sea, hacer una transacción para que se renueve y para que yo siga formando parte. Y obviamente para esto me vas a pagar la cuota de anual. Y me pareció como fascinante que sí, que muchas de las cosas que normalmente siempre hemos visto que se hacían fuera de Bitcoin, porque en Bitcoin esto es como un lenguaje tonto, bueno, pues no era tan tonto, simplemente parece que era muy difícil de utilizar y que Miniscript está abriendo la puerta a que se creen también wallets, monedas que tengan una programabilidad allá dentro en base a contratos con los que estamos totalmente acostumbrados, como podría ser una póliza de seguro.
Eso es, eso es un ejemplo más. Pero es que hay un montón. Mira, te pongo otro. Este es un ejemplo que pone Salvatore de Leche, que me parece que es súper interesante, que es para empresas que hacen mucho uso de Bitcoin y que seguramente utilicen, por ejemplo, un dispositivo de ledger para ir firmando transacciones. Pero como es una Ledger que la tienen por ahí en la oficina y que se hace muchísimo uso y que pasan por muchas manos, entonces existe un cierto riesgo de que alguien haga mal uso de eso. Entonces tú lo que puedes hacer también utilizando en realidad Bitcoin Script, pero sobre todo con mindscript, que es lo que te permite mejorar la seguridad, puedes tener un segundo firmante que sea un servicio con una serie de reglas predefinidas en la cual, por ejemplo, tú oye, no se pueden hacer más de 10 transacciones al día, y estas transacciones no pueden pasar de 0,3 bitcoins, por ejemplo. Y tú puedes hacer. Puedes implementar todo esto con miniscript de manera que el segundo firmante te asegure eso, que durante un día no puedes hacer ese tipo de cosas. Luego puedes tener que al cabo de dos semanas desaparece el segundo firmante este, y la wallet vuelve a funcionar de la manera original. Pero en realidad puede ser cualquier cosa que se te ocurra. Y hay cosas que no se nos han ocurrido todavía y que vendrá alguien y se le ocurrirán y será una idea genial.
Es como que por primera vez tenemos un lienzo en blanco y podemos ponernos a pensar. De hecho, hay varias webs que pondré en la descripción, como el playground de Bitcoin, DevKit, o otra web que también publicó Stepan Snigreb, que es más gráfico. Tú también tienes una, pero es más para técnico. También la pondré obviamente. Y ahí puedes toquetear y son como piezas de Lego. Eso es lo que me fascina, que te acabas dando cuenta, porque Miniscript como que lo simplifica mucho y te acabas quedando con un par de condiciones AND y OR, y a partir de ahí dices, pues va sumando timelocks, luego tiene Hashlogs también y tiene las claves. Y con esos elementos AND, OR y claves, timelocks y hashlogs, montas unas historias increíbles. Y todo eso llega un momento donde aprietas un botón, se te traduce a Bitcoin Script. Esa es la magia de mini script, que te lo acaba volcando a Bitcoin Script de toda la vida, del que nos dejó Satoshi. Y eso, pues todas ya empiezan a ver hardware, wallets, que están trabajando en ello. Ahora mismo solo está Spectre Do It Yourself y Ledger que te habilitan firmar ese tipo de scripts, pero ya hay varias. Creo que Colcar ha dicho que ya está trabajando en ello, Bitbox creo que también está y Green de Blockstream también ha dicho que que lo tendrá en algún momento. Así que es hacia donde parece que vamos. Yo me quedo con una frase del propio Rob Hamilton que creo que es bastante ilustradora de lo que habilita Mini Script y dice que Mini Script maximiza la utilidad del script de Bitcoin. Como que teníamos un tubo enorme y solo estábamos enviando un chorro de agua, un chorrito, estábamos dejando ahí todo el posible caudal vacío. Y ahora mismo parece ser que Miniscript, sin utilizar todos los opcodes, o sea que seguramente, y creo que esto es así, corrígeme, pero que miniscript la idea es ir trayendo otras funcionalidades que ahora mismo no tiene, pero si no utilizo,
no estoy seguro si se está planteando ampliarlo o no. Lo que sí sé es que se quiere pasar a. Para mi script se utiliza segwit sobre todo, se puede utilizar el sistema antiguo, el que creó Satoshi, pero sobre todo segwit, y se va a pasar a Taproot, que Taproot luego va a permitir una serie de funcionalidades extra, pero no estoy tan seguro que se esté pensando en extenderlo a hacer más cosas de las que ya hace. Lo que sí que viene, pero ya te estoy hablando de aquí cinco años o diez o cuando sea, es Simplicity, que eso ya es otra historia totalmente distinta, que es lo que sustituirá a MidiScript y sustituirá a Bitcoin Script, que es un nuevo sistema de scripting de Bitcoin mucho más potente utilizando C. Actualmente se está trabajando, Blockstrip tiene un equipo y llegará, pero no sé cuándo llegará y si llega, pero no estoy tan seguro que se esté trabajando en ampliar el conjunto de primitivas de Miniscript, la verdad.
Aunque no se amplíe, la suerte que tenemos de estar viviendo esto es que ahora mismo podremos utilizar mucho más caudal de esa tubería y parece ser que podremos pensar, imaginar y ejecutar un plan de custodia donde obviamente no hay que ser reckless, no hay que ser temerarios y hacer condiciones raras. Aquí vendrá, tendremos que hacer mucha formación porque seguramente aparecerán wallets que te permitirán hacer tu propio mini script y tus propias condiciones ya tenemos liana del equipo de Wizard, Sardin Revolt, que ya te permite utilizar incluso con Hot Wallets. Hasta la versión 2 solo puedes utilizar con hardware wallet, ahora lo puedes hacer en plan test con hot Wallets y así para quien quiera que se descargue y que practique. Y ahí ya te viene con una receta en concreto, aunque te permite algo de flexibilidad, pero seguro que aparecerá una wallet tarde o temprano que te permitirá hacer tu propia receta y tendremos que documentarnos todos y repetirnos muchas veces lo de keep it stupid simple, o sea de no te compliques, porque que sea flexible no significa que tengas que hacer todo lo que te permite, porque te vas a acabar bloqueando tus Bitcoin y más vale, o sea que también hará falta tener un poco de control. Pero en mi mente es un poco como que las posibilidades de Bitcoin hasta Mini Script eran un poco como un monte, estos montes que aparecen, las películas, estas praderas. Y en esa pradera habíamos hecho unos caminos, habíamos pavimentado unos caminos que son estos scripts estándar, y todos los bitcoiners pasábamos por esos caminos. A nadie se le ocurría apartarse un poco del camino y meterse y hacer otra cosa. Y ahora mismo es como que gracias a Mini Script dejamos de ser Dorothy en El Mago de Oz y liberalizamos la pradera. Y es como mira, piensa a dónde quieres llegar, piensa lo que quieres hacer y abre tu camino. No tienes ni que pavimentar, abre tu camino, tira por ahí, hazlo, guárdalo y ya está. Y claro, a mí esto con muchos problemas que los bitcoiners venimos teniendo, como la herencia que la has mencionado tú, o el ataque de llave inglesa, que siempre tienes que hacer un multifirma y repartir las llaves de cierta forma para que digamos, sobrevivir a ese ataque. Ahora es todavía más fácil, Ahora la custodia de Bitcoin se hace muy robusta a todos estos ataques. Claro, yo solo puedo estar muy motivado con todo esto.
Es fantástico. La verdad es que te amplía un montón el horizonte de las cosas que se pueden hacer. Y luego, sí, también lo estabas comentando un poco así de refilón, sobre todo nos pone ahora un reto para los que estamos desarrollando soluciones, wallets o productos, y es trabajar en la usabilidad de estas soluciones. Que realmente el usuario de Bitcoin que no le suponga una carga el utilizar este tipo de soluciones, que nosotros le simplifiquemos la vida y no se la compliquemos. Y eso no es fácil. No es fácil. Sobre todo en la primera iteración esta de Ministry que estamos viendo. Si tú quieres utilizarlo, por ejemplo con los dispositivos de Ledger, a día de hoy es un poco intimidatorio. Si tú quieres utilizar una de estas recetas que hemos estado viendo, tú tienes que registrar esa receta en el dispositivo de Ledger y tienes que hacer, yo que sé, 20 clics y te aparece en pantalla el mini script que aunque se pueda más o menos entender, intimida. Incluso el mismo Salvatore de Ledger dice que la versión esta que tenemos inicial, que es la primera que tenemos, es sobre todo para los programadores, pero que vamos a tener que ver cómo solucionamos esto para que el usuario final le ayude y no le intimide. Porque si al final un usuario final ve una cosa que le intimida no lo va a querer usar. Entonces tenemos que simplificar la vida al usuario, que el usuario lo quiera usar y que le ayude. Ahí tenemos trabajo. En general en Bitcoin hay bastante trabajo de usabilidad,
estoy de acuerdo. Lo que pasa que yo no puedo dejar de estar contento por este lado de que hasta que no te hablan de mini script y no lo ves con tus propios ojos, pensabas que esto era magia. En Bitcoin esto no era posible. Y recuerdo hablar con Kevin de Revolt y ¿Pero cómo me estás diciendo que yo puedo tener un multifirma dos de tres que pasado un tiempo incluya una cuarta llave que aparece de la nada o que se cambien las llaves y aparezcan otras? ¿Y qué narices es esta flexibilidad? Parecía que me estaba hablando de brujería. Entonces él se me reía y tal y me bueno, espérate a la segunda versión, ya verás. Y efectivamente, se pueden hacer genialidades, pero creo que estamos en la antesala de ver cómo habrá algunos que perderán dinero porque han sido demasiado temerarios. Y veremos cómo todo esto va tomando forma. No creo que se vaya a ningún sitio ese tipo de wallets donde con 12 palabras ya tienes todo. Creo que van a seguir existiendo y creo que el onboarding a Bitcoin va a seguir siendo igual de difícil. Con o sin mini script. Esto no va a cambiar nada. Pero para estos usuarios que nos vamos animando cada vez más, Venga, y ahora multifirma. Pues el hecho de decir, bueno, si ya estoy conservando por para tener multifirma hay una información pública que no puedes perder. Esta información pública es la receta. Lo que pasa que hasta ahora es el script este estándar de multifirma, y bueno, aunque si lo has perdido, si te acordabas de algunas cosas, pues sin eso también se puede recrear. Esa es la gracia de que sea tan estandarizado, tan utilizado. Esto es posible que acabe pasando con algunas recetas que se hagan tan populares, que tenías lo de la herencia a un año, dame las dos llaves que te lo rehidrato yo. Esto va a seguir pasando, pero creo que vamos hacia un nuevo paradigma donde entre todos vamos a tener que pensar el cómo destilar toda esta información y crear un boticario con diferentes recetas y saber cómo tratar esa información. ¿Que déjame decir, las recetas, aunque sea una información privada que vas a querer mantener de forma privada para no exponer tus fondos, cuántos fondos tienes? Pero teóricamente no comprometería ninguno de ellos, es una información que te implica en temas de privacidad, pero no en temas de compromiso de fondos. Nadie se podría robar tus fondos si encontrase una receta. Así que por lo tanto, custodiar la receta es más fácil, te puedes permitir tener más copias, tener más redundancia, incluso también tenerlo en soporte digital. Así que bueno, todo va a evolucionar y creo que la custodia de Bitcoin a cinco años va a ser un cambio total.
Te voy a comentar una cosa sobre las recetas, que es un tema bastante controvertido, así también veo cuál es la opinión que tú tienes sobre esto, y es que supongo que estás al corriente seguro de todo el tema de ordinals, inscriptions y tal. Entonces ha habido alguno, ha habido alguien que ha propuesto tú ahora con el tema sobre todo de mini script, como hasta la fecha, como hasta ahora, tú tienes que guardarte las contraseñas, eso tienes que hacer como siempre, pero además tienes que guardarte lo que tú dices que son las recetas, que son los programas, los tienes que guardar en algún sitio, porque son las condiciones, son el mapa de dónde están tus contraseñas. De alguna manera tienes que guardar esa información. Entonces alguien ha propuesto oye, ¿Y por qué no guardamos esas recetas en la blockchain? Hacemos una inscripción, pueden estar incluso encriptadas para que nadie pueda verlas, pero tú puedes poner de alguna manera en la blockchain. Entonces tú te olvidas, solo tienes que guardar esas 12 palabras como hasta ahora y olvidarte del resto. Y aquí hay un debate bastante filosófico que según con quien, a quien lo preguntes te va a decir que eso pues sí, perfecto, ponlo en la blockchain, oye, está para eso y si te da la gana úsala. Y habrá gente que te dirá que no, te dirá no, no, la blockchain solo está para hacer transacciones. Yo estuve recientemente en el Congreso E. Advancing Bitcoin en Londres y hacía gracia porque iba haciendo esta pregunta. La gente no te acaba de decir si le parece bien o no le parece bien. Entonces, pero bueno, existe esa posibilidad de utilizar en lugar de guardar las recetas en la nube, pues guardarlas en la blockchain. En realidad solo las tienes que guardar una vez, que es cuando creas la receta y el número de bytes es muy pequeño. No debería de ser un problema. Pero es casi a veces un tema filosófico de si tenemos que usar la blockchain para algo más que no sean transacciones o no.
Sí es un tema donde ha pasado. Hice un pod especial sobre la materia un mes y medio cuando sucedió todo a principios de febrero y creo que me voy más hacia el creo que los ordinals no se pueden bloquear. Y por otro lado, claro que me gustaría que solo se utilizara Bitcoin para transacciones monetarias, pero digamos que Bitcoin tiene unas reglas. Cambiar esas reglas actuales para bloquear eso, meter fotos de monos en la cadena de bloques nos haría ir varios años hacia atrás. No digo que a lo mejor miniscript no es que no pudiera darse, bueno, de hecho miniscript, la gran mayoría de lo que se está haciendo es sobre segwit. Podría cambiarse, a lo mejor se podría quitar el descuento de segwit o lo que sea. Pero digamos que Taproot está muy interesante y tirar para atrás, dejar Taproot, ir por esto Cuando ya desde 2017 sabíamos que los bloques podían ocupar 4 megas, quizá no deberíamos haber votado que sí a Sequit. Me parece un donde digo digo, digo Diego, que a mí no me gusta que me lo hagan. Entonces son como sensaciones encontradas. Y ante el no saber, ante el bloqueo, lo mejor, bueno, cuando te deslumbran, que vas conduciendo y te deslumbran, siempre te dicen en la no aceleres o no gires, frena. Pues digamos que tengo la opinión frenada y mientras tanto ahí están y van haciendo y vamos viendo. ¿Por qué? Porque yo sigo sin tenerla clara porque no creo que tenga una solución fácil y que si quieren meter información en la cadena de bloques la van a acabar metiendo.
Se ha podido hacer desde el principio. De hecho en el primer bloque ya Satoshi ya puso allí su graffiti, ya puso su mensaje, lo puso él. Entonces yo también lo veo así. Y yo creo que. No sé, mi opinión es que yo creo que todo esto, el tema de ordinals y tal, quedará como algo histórico y tal, algo gracioso y de aquí 5 o 6 años se seguirá usando pero no tendrá el bombo que tiene a día de hoy. No lo sé, ya lo veremos. Pero bueno, que existe la posibilidad esta que te comentaba de utilizar la blockchain para guardar los descriptores y a IOI sí que le veo bastante sentido porque además es algo que ocupa poquísimo y que soluciona un problema muy gordo para el usuario que es guardarse esos descriptores, esas recetas y tener que estar pendiente de dónde lo guardó, si lo puso en la Google Cloud o lo puso en un pendrive o dónde puso aquello. Entonces existe esa posibilidad, nadie lo ha hecho, pero yo me imagino que se acabará haciendo.
Además que parece bonito porque es como que todo está en el mismo sitio, como que tú solo vas a necesitar una wallet y a lo mejor le vas a tener que esta wallet se apoya en la receta de la inscripción, un millón, lo que sea. Y entonces digamos que la wallet lo puede rehidratar todo y rehidratar todo el esquema. Ni tan mal. Seguro que esto aparece dentro de no mucho. Y si lo has dicho, seguro que hay alguien ya que. Que está trabajando. No me digas que no está quedando un pod para reescuchar a José Luis y sacar apuntes. Yo ya lo he hecho editando, grabando y demás, y buena parte de ellos los he ido dejando plasmados en la parte gráfica de la versión de YouTube de este podcast. Si tienes dudas te animo a que le eches un vistazo. Aprovecho la interrupción para hablarte de mis otros dos sponsors, Bitrefill y BTC Prag. Bitrefill es la página web donde podrás vivir con Bitcoin. Así de simple. Porque Bitrefill te permite comprar tarjetas regalo de un montón de establecimientos que ya consumes habitualmente, pero ahora lo puedes hacer pagando con Bitcoin. En cada país tienen servicios distintos, con lo que te animo a que le eches un vistazo a ver cuáles hay disponibles en el tuyo. Pero por ejemplo, cuando vivía en España era una delicia porque conseguía canalizar el 80 de mis gastos con sus tarjetas regalo. CEPSA para la gasolina, Carrefour para la compra, Amazon y MediaMarkt para infinidad de cosas. Y Zalando y Zara para ropa. Estos son algunos de los ejemplos. Pero Bitrefill es infinitamente muchas cosas más. Así que si te apetece darte un capricho con tus Bitcoin, sigue el link de la descripción y sorpréndete con todo lo que puede ofrecerte. Y BTC Prague, el evento bitcoin más grande nunca celebrado en Europa y que reunirá buena parte de la plana mayor en dos días de conferencias de alto nivel. A los conferenciantes ya confirmados como Michael Saylor, Jameson Loeb, Adam Baku, Rockstar Depp, se une ahora Seyfieddin Amus, escritor del patrón Bitcoin, y que ahora yo personalmente hace tiempo que no veía en conferencias. Así que genial, un golazo del equipo de BTC Prag. La conferencia tendrá lugar del 9 al 10 de junio. Pero hay más, porque el 8 de junio se realizará el Industry Day con exposiciones y charlas exclusivas para gente de la industria que le interese ese tipo de networking. El 7 y el 8 tendrá lugar la carrera de 5 kilómetros para conocer la ciudad de Praga por parte de Bitcoin Runners. El 7 también habrá un evento para 100 personas sobre Noster. Y para culminar la escapada hay un meetup que estoy coorganizando con Carliato, que va a reunir a bastantes hispanos que se van a encontrar en Praga, y que ya tenemos un grupo de Telegram para acabarnos de coordinar. Y parece que apunta a que el día 8 nos vamos a reunir. Pero bueno, estamos todavía barajando qué días, qué hacer, y bueno, seguramente ese grupo dará lugar a otros momentos para cervezas, para intercambios y para seguir pensando en común qué es Bitcoin y hacia dónde vamos. Praga va a ser el epicentro bitcoiner a las puertas del verano. Y si te apetece descubrir su belleza junto a otros bitcoiners como un servidor, sigue el link de la descripción. Y recuerda que con el código descuento Lunaticoin en mayúscula, te llevas un 10% y además si pagas en bitcoin un 5% más. Así que yo creo que es una gran oportunidad. Creo que hasta aquí, aunque nos hemos metido en algunos momentos bastante técnicos, creo que hasta aquí es donde podemos llegar sin entrar en mucha más profundidad todavía tengo algunas preguntas que son algunas más técnicas. Si nos estás escuchando y ya te digamos que te ha parecido un vendaval todo lo que hemos hablado, yo te animo a que sigas, porque aunque tratemos temas muy técnicos, viene luego una parte final con este cambio de paradigma de las webs que creo que es interesante y que te puede gustar. Entonces quiero hablar un poco de anatomía de Mini Script para ayudar a quien se anime a investigar un poco. Porque yo, como tú dices, la información ahora la hay con cuentagotas gracias al equipo de Wizard Sardine que ha publicado muchas cosas. Hay un pod de Bitcoin Review de Novak que recomiendo, que está muy bien, sobre el tema de Seattle Dispatch también. Y luego hay unos artículos de Shift Crypto, que son tres, que sobre todo los dos primeros están muy bien. Y creo que con eso, y luego tu web está también muy bien, con muchas explicaciones y con algunos ejemplos, creo que con eso puedes tomar una idea.
Sí, está la web también de Peter Wheele, que quizás es un poco más técnica, es la que describe formalmente el lenguaje, pero yo creo que la introducción y algunas de las partes de la web, sobre todo la del principio, también son interesantes.
Pero yo estos días con la web de Peter Huila, ahí me hice un cacao. Me hice un cacao y lo vas a entender. Y de hecho estuve quemándole la oreja a Salvatore para oye, yo hay algo que me estoy volviendo loco y no entiendo. Tú lo has mencionado antes, y es que cuando empiezas a rascar un poco en Mini Script hay dos cosas y es muy importante entender la diferencia. Una cosa es mini Script y la otra cosa es el policy language. Es el lenguaje de políticas o el lenguaje de pólizas. La palabra policy se las trae, porque si tú buscas en el diccionario traducciones, tiene como 700 traducciones distintas en castellano y en inglés. Se utiliza para todas las acepciones. Entonces tú lees cualquier cosa de Mini script y a lo mejor te están diciendo ¿Ves? Y con esto te haces una policy para la herencia a qué se están refiriendo. Con policy a receta y luego te dicen no, pero esto lo tienes que hacer con policy language y ahí se están refiriendo a policy language, eso no es ninguna receta, entonces es un cacao maravilla. Yo lo que he detectado son. Y luego Salvatore cuando habla de policies, porque añade otra cosa, se está refiriendo a cuentas de bitcoin, a cuentas de rutas de derivación específicas, que ahí es donde lo quería matar, porque digo yo,
cámbiame, es que ahí la lío, ahí la lío Salvatore.
Exacto, porque Salvatore para quien no lo sepa, tiene un bip que se llama wallet policies y lo que viene a tratar es de cómo gestionar temas de descriptores, temas de mini script y demás, todo con hardware wallet y le llamó
wallet, es que utilizó la misma palabra para otra cosa y si ya teníamos bastante lío, pues reutilizó la misma palabra para otra cosa que no es la misma pero está relacionada. Entonces sí, la verdad es que poniendo nombres los bitcoiners no son lo mejor, la verdad.
Bueno, sí, sí, entonces vamos a aclarar, quiero, o sea, que quede muy clara esta parte, mini script es una cosa y luego policy language es otra cosa. ¿Cuál es la diferencia entre las dos?
Policy language es un lenguaje de programación súper sencillito, que este sí que es el human readable, el lenguaje de programación que pueden leer los humanos. Miniscript también se puede leer, más o menos se puede llegar a leer, pero el que de verdad es el que puede entender un humano y con el que va a programar miniscript un humano es con este policy language. Si tú te miras la sintaxis de este policy language, del lenguaje de programación de pólizas, es muy sencillito. Este es el que tiene AND, es decir, is y os and y pones paréntesis y vas poniendo paréntesis, por ejemplo puedes poner AND, la llave pública A, llave pública B y cierras paréntesis, eso quiere decir que esa transacción sólo se puede procesar si tú tienes las firmas de la llave A y de la llave B, o podrías poner or en lugar de and. Entonces, ¿Qué querría decir esto? Que tú esa transacción sólo la vas a poder desbloquear o solo la vas a poder gastar si tienes la llave A o la B. ¿Qué más cosas tiene este lenguaje de programación? Policy Language tiene por ejemplo una primitiva que es older o after, y eso quiere decir que después de este bloque por Ejemplo, puedes poner and after y un número de bloque, una llave pública. ¿Eso qué querría decir? Que si tú tienes esa llave tú puedes firmar una transacción y a la vez hemos llegado a un bloque determinado, se puede gastar esa transacción. ¿Qué más cosas tienes? Tienes threshold, Esos son timers. Exacto, otras cosas que tienes threshold, ¿Que es threshold? ¿Que es el umbral? ¿Para qué lo puedes utilizar esto? Pues para el tema multifirma, tú tienes el umbral 2 de 3, por ejemplo. Entonces ¿Qué quiere decir? Que si tú tienes dos de las tres firmas, tú puedes desbloquear esos fondos. En realidad son muy pocas, lo tengo aquí delante. Primitivas son una, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, o sea, con 10 cositas que te aprendas ya puedes acabar programando el policy language y tú te lo lees y lo entiendes perfectamente. Lo que está haciendo es con policy
language con lo que nosotros nos dejaremos ir a imaginar porque aprenderemos las tres, cuatro primitivas, el and, el or, que son combinables, que tú puedes meter OR dentro de and y ahí es donde viene toda esta flexibilidad que te permite miniscript, aunque esto, que ahí es donde viene la confusión en muchos sitios, te vas al playground de bitcoin devkit y te pones a jugar, tú te piensas que estás utilizando mini script, pero lo que estás es en pantalla, estás utilizando policy language y luego tú ves policy language and or, luego lees mini script y bueno, más o menos se parecen un montón AND, or, los and les cuelgan a veces letras, and v, or no sé qué, or b or, pero se parecen un montón. Y ahí yo creo que es donde viene la confusión, que tú no sabes si es que con el policy language te lo están masticando a ti lector, que no tienes ni idea de lo que es mini script, te lo están poniendo más bonito, o si es otra cosa, pero son cosas distintas. Perdona que te corto.
Sí, sí, son cosas distintas. De hecho tú puedes pasar, para pasar de policy language a miniscript, tú compilas el policy language, de hecho no hay nada que te garantice que una póliza se vaya a compilar siempre en el mismo miniscript, Eso es una cosa que te deja muy claro Peter Wille en su página web y hay varios compiladores de miniscript está el que propuso Peter Will con Andrew Polstra, me parece que lo escribí entre los dos, no estoy seguro. Y luego tienes el de BDK, que es otro compilador de miniscript y no tiene por qué darte el mismo miniscript, la misma póliza no tiene por qué darte el mismo miniscript, sí que hará lo mismo, pero tú puedes hacer que un programa te ejecute el mismo resultado de diferentes maneras. Entonces eso nunca hay la garantía de que la misma póliza se convierte en el mismo miniscript. De lo que sí que tenemos garantía es que el mismo mini script se convierte siempre en el mismo Bitcoin script. Eso siempre es así, eso es automático. Hay una correspondencia uno a uno de mini script a Bitcoin script y viceversa, pero de policies a bitcoin script no tiene por qué ser así. Y luego el mini script es lo que dices tú, es una cosa que se parece bastante a mini script, pero te añade varias cositas, te añade unos subíndices, se te añade unos prefijos. Y esto es simplemente porque hay varias maneras de hacer AND utilizando Bitcoin Script. Todos estos pequeños prefijos o sufijos y todo este tipo de cosas, lo único que hacen es que de manera interna, para cuando eso se compila, Bitcoin script utilizará un tipo de condición AND en Bitcoin Script o OR o de lo que sea. Como hay varias maneras de hacerlo, estos prefijos y sufijos de alguna manera te indican esto.
Leía a alguien, no sé si era Polstra, pero que decía que policy language es para que los programadores creen sus pólizas, sus recetas y que las diseñen y las piensen y luego las compilen, pero que un humano nunca tendría que toquetear mini script, que aunque es mucho más fácil que script para leer y entender, un humano sí que puede leer un mini script y ver más o menos lo que está sucediendo, pero que puestos a toquetear, un humano nunca ha de manipular mini script como tal, sino que tiene que irse a esta capa superior que es el policy language, porque podemos tocar, pero lo importante ya no es que el mini script, o sea, el mini script es de una manera para que luego se pueda gastar, para que luego se puedan crear las condiciones para poderlo gastar. Si tú te pones temerario a montar tu propio mini script, no porque sea mini script no vas a romper cosas, es probable que rompas cosas y que te quedes sin acceso a tus bitcoins. Así que la cadena sería, vale, piensa tu póliza, tu receta en policy language y luego eso lo compilas a mini script y luego ese mini script es el que se sí que lo pasas dentro de tu, o sea, lo puedes utilizar en tu wallet para generar direcciones que guarden monedas, pero esta sería un poco la lógica. Y de hecho es divertido ver cómo por encima, o sea, tenemos capa base script, no hay nada más abajo que esto, muy cercano a script, porque es que es lo mismo, simplemente otra forma de escribirlo es mini script, es una abstracción, pero estarían como en la misma capa, lo que pasa que es distintas formas de verlo, la cara A y la cara B. La siguiente capa es policy language y es divertido ver cómo se están creando capas por encima. Hay un lenguaje de IEK que es Minsk, no sé si lo has visto, que está que se compila a policy language, que se compila a miniscript, que se codifica en script language. Esa es la diferencia. Miniscript no se compila a script, miniscript se decodifica o codifica a script.
Eso es. De hecho, una de las cosas interesantes que tiene el compilador de mini script es que tú propones tu póliza, esta póliza se compila a miniscript y luego el mismo compilador te dice si ese miniscript es sano o no es sano. ¿Qué quiere decir si es sano o no sano? Al final lo que te está diciendo es si tú vas a poder gastar, vas a poder generar una satisfaction, lo que le llaman ellos unas soluciones al problema o no. Entonces el compilador este hace bastantes cosas interesantes, que es lo que te decía al principio de todo cuando hemos empezado a hablar, es te evita que tú generes un script que luego no sea gastable en el futuro por otra transacción. Entonces es una de las partes interesantes, que tú desarrollas tu póliza, pero no te preocupes que si tu póliza tiene un problema, el compilador la va a detectar y te va a avisar.
Algo que también lía muchísimo, que es característico de policy language, y lo ves mucho cuando empiezas a buscar por estas webs, por ejemplo la de Peter Wheeler, lo ves al principio y dices, y ahí es donde no entiendes absolutamente nada, es lo del arroba. Sabrás de lo que te hablo, la prioridad. Y es que tú en Policy Language puedes mira, te voy a poner tres claves privadas, tres keys en esta póliza, en esta receta, pero te digo que te pongo un arroba y te pongo un 9 o te pongo el número que quiera para mostrar prioridad frente a otras que a lo mejor le pongo un arroba y un 1. ¿Y qué estoy diciendo con eso? Que es que en el 90% de los casos voy a gastar por este camino, voy a utilizar esta llave, el resto de opciones no las voy a utilizar. Y tú dices, ¿Pero en qué momento me he perdido yo de que en script de bitcoin haya prioridades? ¿De qué manera puedo yo priorizar una clave privada en script de Bitcoin? Y no, no puedes, no existe. Pero creo que ahí es donde se ve la diferencia entre policy y miniscript, que es que en función de la prioridad que tú le des a una clave o a otra, se compilará a un mini script o a otro. Por eso una misma receta con una prioridad distinta en las claves te llevará a compilar con un mismo compilador, te llevará a compilar a otro mini script. Y eso también es de las cosas que lía un montón, el ver que de golpe aparecen prioridades. Y qué es esto
lo que intentan hacer con el tema de prioridades es, a ver, tú pongas la prioridad que pongas, esto te va a generar un script que va a ser, es verdad lo que dices tú, van a ser scripts distintos, pero una vez lleguen al minero y el minero en el intérprete de script lo ejecute, el resultado siempre va a ser el mismo. Va a ser true o false, el resultado va a ser exactamente el mismo. La única diferencia, y para eso sirve el tema de las prioridades, es que te minimiza tamaño del script. Como tú sabes que vas a utilizar muchísimas más veces una rama de ejecución cuando se genera el programa, te va a asegurar que todas las veces que pase por ahí el programa, ese script será mucho más pequeño. Entonces, de alguna manera, lo que estamos intentando hacer con esto es reducir el uso de los bloques en general en Bitcoin.
Bueno, quien investigue, quien se deje caer por la madriguera de los mini scripts, verá, se sentirá identificado. Luego hay otra madriguera que es intentar ponerlo en práctica todo esto y es otro lío, sobre todo si no eres técnico, pero creo que estamos muy al principio y es normal. Y déjame decirlo por última vez, porque ahora hemos visto como las fees, gracias a miniscript, las fees las podemos acabar calculando, o sea, miniscript, o sea el policy language te va a dar un mini script en función de que vayas a. Para que gastes menos fees. Pero luego también es eso, que mini script de inicio no se ve, porque todo el policy y el mini script va enfocado a que tú veas con tus ojos la parte del output, la parte del script de la salida, pero también tiene implícito, todo el mini script tiene implícito las condiciones de desbloqueo, eso no lo ves con los ojos de inicio, porque está como guardado y en base al mini script que tú tengas hay una tabla de equivalencias de las cosas que vas a necesitar. Pero es muy importante eso, que en función de los operadores que estés utilizando en MiniScript, pues la wallet de mini scripts, mini script inside, ya sabrá qué información tiene que proveer para desbloquear unas monedas que se hayan bloqueado con ese mini script. Y eso también es muy importante y que quede patente que la parte del testigo también la sabemos gracias a el mini script. Bueno, y si utilizas Pay to script hash, pues la parte del script sí. Con esto creo que hemos tratado bastante bien Miniscript, pero déjame abrir un melón que para mí me ha motivado tanto como descubrir todo el tema mini script, y aquí podríamos poner bot del Señor de los Anillos del principio de la película, cuando salía aquella elfa hablando, ahora me van a matar todos los seguidores porque yo no me acuerdo del nombre, o si es Galadriel o una de estas. Y decía, el mundo está cambiando, pues el mundo de las wallets de Bitcoin está cambiando y de hecho el crujir del árbol que está a punto de caer, lo venimos escuchando desde hace tiempo con varias mejoras. Yo quiero traerlo esto aquí a modo de un pequeño aviso de que esto está viniendo y comentarlo contigo, porque ha sido una madriguera fascinante en la que he estado metiéndome gracias a miniscript y donde realmente he entendido que sí, que el mundo está cambiando, que viene Sauron o quien sea que viene y que se va a acabar esto, que va a haber aquí una historia bastante interesante. ¿Cuál es este mundo? Bueno, hay una charla que recomiendo desde ya en Advancing Bitcoin de Andrew Chow, creo que del 21, donde hablaba la nueva arquitectura de las wallets de Bitcoin. Y básicamente en esa charla él venía a hablar de descriptores, ahora hablaremos de descriptores. Y él dijo una frase que me la tengo aquí apuntada, subrayada y es la que yo creo que explica mejor todo lo que voy a decir ahora, y es que las wallets van a cambiar de modelo y que el nuevo modelo se aleja del toma una llave y haz algo y se va hacia otro modelo que mira, toma un script y dime lo que necesito para poder hacer cosas. Básicamente pasaremos de unas wallets que son keycentric con la llave en el centro, a unas wallets donde el centro es el script y obviamente habrá llaves también, pero donde lo que mandará es el script. Y voy a traer tres mejoras o tres avances ahora sobre la mesa, que son los que es un tridente que ejemplifica que realmente esto está cambiando. Yo creo que con mini script es la lo que faltaba para darle la vuelta a esto. Porque todo Esto empieza en 2017 con las PSBT, las transacciones parcialmente firmadas de Bitcoin, que cuando empiezas a estirar del hilo, porque cuando lees sobre mini script es imposible no relacionarte con PSB, que te acabe relacionando con PSBT y que te acabe relacionando con descriptores. Las tres patas del tridente son estas, mini script, descriptores y PSBT. ¿Y por qué? ¿Por qué es así? Entonces te das cuenta que hasta la llegada de los PSBT las wallets en tema de transacciones eran muy. Me faltará una palabra aquí, pero como muy cerradas, como que no buscaban dialogar con otras personas, sino que buscaban encontrar en su cadena de bloques, en la suya propia o en una de un tercero, transacciones y a partir de ahí ellos generar sus propias transacciones, firmarlas y volverlas a enviar. Era como que era un cool de sac, un callejón sin salida. No querían dialogar con otras personas propietarias. Esto es lo que buscaba, unas soluciones muy propietarias. Cada wallet tenía su sistema de gestionar las transacciones y ya está. A partir de ahí aparece PSBT. ¿Por qué? Porque hay una necesidad de que las soluciones de multifirma no sean propietarias. Y cuando ya no quieres hacer tu propia solución de multifirma, pues tienes que hablar con otros tipos de wallet. Y ahí es donde las PSBT liberalizan la construcción de transacciones. Se crea un estándar, la palabra estándar en Bitcoin es muy mala, pero se crea una especie de estándar sin obligación, donde puedes compartir una transacción que no está firmada, pero no es una simple transacción, sino que dentro de un PSBT hay un montón de metadata y en montón de metadata se dice qué output se está firmando, cómo se hizo ese output y qué claves públicas se están utilizando en ese output, qué índices. Eso para temas de multifirma, digamos que fue como la primera gran liberalización en este proceso que estamos hablando de que las wallets están cambiando, las transacciones ya no son cosa tuya solo, sino vamos a hablar todos el mismo lenguaje. Y con esto nos vamos a la segunda pata del tridente, que es los output descriptors. Hemos dicho que cuando tú construyes una transacción, cuando envías una moneda, estás creando un script, una condición de gasto. Pero Bitcoin, ostras, que te das cuenta de cómo funciona hasta ahora y sigue funcionando en la gran mayoría de wallets. Y es alucinante. Bitcoin ha utilizado unos caminos determinados, estos caminos de Dorothy, de Mago de Oz que hablaba, que son estos BIPs que mucha gente técnica conoceremos el BIP 44, el BIP 49, el 84, el 86, el 48 para multifirma, que establece cómo se tiene que construir un script de salida para utilizar diferentes cosas de todos estos para Segwit, para Taproot. ¿Entonces lo que las wallets han hecho, a mí me da la sensación visto desde ahora, es que cuando tú les dabas una llave, muchas te esta clave que me entregas qué es? ¿Segwit, es Payscript Hashwrap Segwit qué es? Pero luego hay wallets donde dice, bueno, tú dame algo, yo ya te busco. Y básicamente lo que hacían estas wallets es hacer un brute force, que es probar en estas cinco, seis, siete posibilidades y intentaban buscar en todas ellas a ver si encontraban fondos. Entonces cuando encontraban fondos te decían, oye, he encontrado aquí te añado esta cuenta, Sí, añádemela. Pero así es un poco cómo venían y vienen funcionando las wallets a día de hoy, porque no es que ya haya cambiado esto, sino que funcionan así, funcionan por brute force. Y por eso también digamos que se ha limitado muy mucho las cosas que se pueden hacer en Bitcoin. Pero en 2018 se empezó a trabajar en una cosa que se llama output descriptors que se implementó en bitcoin core en el 21. Las wallets ahora por defecto en Bitcoin Core son wallets de descriptor que lo que hacen es que ya no tienes que hacer la wallet no tiene que hacer brute force, sino que tú vas con tus 12 palabras y una cosa ya que se empieza a parecer a una receta y le vienes a mira y aquí esta wallet quiero que se comporte de esta manera, esta wallet quiero que busque en el camino del BIP. Y ya está o esta wallet es un multifirma y tiene estas otras claves y te aporto la recetita. Lo que ahora mismo utilizamos los de multifirma como esa información pública serían estos descriptors que le aportamos toda esa información. ¿Básicamente estamos haciendo a la wallet tonta, Estamos haciendo a la wallet que no tenga que hacer brute forcing de nada, sino que simplemente la wallet lo único que nos está diciendo dame instrucciones, dónde busco? Entonces el descriptor es una instrucción que le mira, esta wallet está construida de esta manera. Por ahí voy bien, ¿No José Luis?
Sí, sí, perfecto.
Y aquí es donde llega la última parte que la hemos tratado todo el podcast de hoy, que es mini script, que es una cosa también me costó Dios y ayuda a ver cómo se dialogaban los descriptos con mini script. De hecho es muy gracioso leer a Poelstra en 2020 cuando le preguntaban por oye, es que se parecen mucho, pero son lo mismo, no son lo mismo mini script descriptor. A mí me dio la sensación como que al principio incluso que les costaba un poco explicarlo las diferencias, porque de hecho se hicieron muy a la par las dos cosas. Creo que ahora se ve más claro. Pero aquí es donde llega minescript y donde básicamente nos permite hacer wallets de las que nos indican los descriptors. Pero cuando un descriptor te esto es una wallet de script, un pay to witness script hash o un pay to script hash, pues lo que miniscript nos permite es modificar este script y hacerlo todo lo complejo que queramos y digamos que sería el descriptor es la parte exterior y el miniscript es lo que va dentro y te dice cómo es esta wallet. Es como por capas. Y de esta manera es una forma donde la wallet ya no tiene que hacer el brute force por los descriptors. Pero es que luego aparte, por primera vez podemos hacer scripts arbitrarios, podemos hacer lo que nos dé la gana con estos mini scripts dentro de los descriptors, con este tridente, las wallets dialogan entre ellas en todo. Las PSBTs, gracias a los descriptos y a los mini scripts, saben qué información, qué metadata tienen que llevar para que otras wallets, que también tienen que ser de mini script insight o descriptors insight para que puedan firmar. Entonces aquí es donde se cumple esta visión que mencionaba Andrew Chow, de que una wallet con todas estas funcionalidades deja de tener la clave privada en el centro y pasa a tener el script que sería descriptor mini script en el centro, que luego ese script cuando lo necesite irá a buscar diferentes claves privadas que también las tendrá almacenadas. Pero ya no es dame una clave privada y yo ya me buscaré la vida para encontrar cosas, sino dame un script y yo no te preocupes que de ahí no me salgo.
Sí, sí, es así. Yo veo bastante el tema de los descriptores como una extensión a lo que siempre hemos venido usando, que son las direcciones de bitcoin. Y lo veo bastante así. Entonces, normalmente teníamos un tipo de direcciones prefijadas, que eran las que había utilizado Satoshi, que son las legas y las antiguas. Luego estuvimos a segwit y tal. Entonces los programas, las wallets, cuando ven ese tipo de dirección, ya saben lo que es, ya saben qué tipo de script tienen que utilizar. Pero eso es porque estaba hardcore de aislaría definido de esa manera. Pero con eso ya nos quedábamos cortos, porque ahora si queremos empezar a utilizar condiciones de bloqueo más complejas, ya con una dirección no sabes qué tipo de programa vas a tener. Por eso se han implementado los descriptores, que es una forma estructurada de explicar cómo se puede gastar cierto output. Entonces pues acabas teniendo lo que acabas de comentar. Eso lo has comentado perfecto, acabas teniendo un descriptor que te oye, pues esta es una dirección, este output es un tipo de output de los de toda la vida. Esto entonces es pkh, public key hash paréntesis, y ahí metes una llave pública tenemos los wpkh, esta es una dirección tipo segwit, entonces tú tienes el descriptor sería de esta forma, sería wpkh paréntesis y ahí dentro tendrías una clave pública y luego tienes otro tipo de script que es wsh que es witness script hash que son los que utilizarías para meter miniscript, entonces tendrías windows script hash paréntesis y ahí dentro de ese paréntesis metes un miniscript,
el que te compila la web de Wheela, el que te compila bdk, ahí dentro de los paréntesis es como que ya le has avisado, viene un script chico y dentro de los paréntesis el script que es el mini script, ahí está.
Entonces tú acabas teniendo, de hecho si te quieres mirar un descriptor, yo me parece que en la página web que te pasé por ahí luego la puedes poner, pongo algún ejemplo de un descriptor entero, se puede leer más o menos pero empieza a ser complicado cuando hay bastantes condiciones, pero la anatomía sería esta por ejemplo de un descriptor con witness script hash, un descriptor de estos que utiliza miniscript sería wsh paréntesis y ahí dentro vendría el miniscript y dentro de miniscript tienes llaves públicas, por ejemplo lo que hemos hablado de multifirma, tienen que firmar dos de tres, pues ahí tienes que poner las llaves públicas y las llaves públicas pueden ser una cadena hexadecimal o pueden ser una llave pública BIP, que aún lo complica un poco más. Las BIP son estas, que son las llaves públicas BIP son estas que las puedes ir derivando y que tienen un path y tal, entonces puedes llegar a tener un descriptor muy largo, muy largo, que un humano lo puede leer, pero que sobre todo está pensado para que las wallets interactúen entre ellas y y se pasen absolutamente toda la información necesaria para poder gastar un output.
Una pregunta, porque con esto de miniscript, lo bonito de miniscript es que está muy masticado y digamos que te lo hace fácil para que tú con los ojos no tengas que estar viendo claves públicas extendidas y te sustituye clave privada, o sea pk private key o public key A y te pone A y se queda tan pancho y entonces lo lees muy fácil, ah pues la clave A, la clave B y cuando todo esto, la duda que tengo es cuando un mini script acaba dentro de un descriptor ya es expresivo con toda esta parte de las claves públicas, o todavía no, o el mini script.
¿Sí, ahí lo tienes, eso que estás diciendo, el descriptor final, en lugar de tener la A le puedes poner el nombre de la variable, no? Ahí ya directamente tienes que poner la clave pública en formato hexadecimal. Si es una clave pública wif de estas que es un par de llaves, la pública, la privada, tienes que poner la clave pública, o bien incluso tienes que poner todo el path, tienes que poner el path de tu clave vi
y luego también la cuenta, el origen,
la cuenta y todo este tipo de cosas. Toda esa información tiene que estar ahí. Esto se llama, tú lo puedes ir a mirar, no hay un bit para esto, que me parece bastante curioso que no haya un bit para esto, pero sí que puedes ir a la página web de Bitcoin Core y allí tienen un readme de estos que te explica el tema de los descriptores y tienes un descriptor, consta de script expressions y key expressions. Y las key expressions son lo que estás diciendo, y hay varias, tú puedes expresar de diferentes maneras una clave pública, puedes hacer una fija que es solo para si tuvieses un par de llave privada, pública, puedes tener bit, puedes poner incluso la llave privada podría poner. Hay bastantes formas de hacerlo, pero cuando ya creas el descriptor final sí que tiene que estar entera, de forma extendida ya toda la llave. Otra cosa es lo que se ha inventado Salvatore, que es lo que lo has mencionado tú antes, que son las wallet policies, que él lo que hace es un invento y es un híbrido entre estos dos mundos. Cuando tú registras una wallet policy, que es lo que le llama él que es, cuando tú registras de alguna manera cómo va a funcionar mi wallet, tú guardas una cosa que es entre mini script y policy language, porque tú lo que estás guardándole este es mi mini script, pero yo ahí no pongo las llaves públicas, ahí pongo esas son mis claves públicas, y luego a la vez yo tengo que guardar cuáles son esas llaves públicas y cómo se extienden. Entonces explicar esto así de voz es complejo, pero al final él llega como una solución intermedia en la que guardas unas condiciones que son más fáciles de leer, porque no pones la clave pública en formato hexadecimal y separas la expresión de las llaves públicas, guardas la tupla de información, porque dentro de todas las
fricciones que supone el mini script, el problema es que tú cuando estás firmando algo, cuando estás registrando una receta, una policy en una wallet, tú has de ser consciente de lo que estás firmando, porque de nuevo el paradigma ha cambiado. Entonces tú le aportas una receta, eso es tu core, y a partir de ahí también tienes que tener claves. Pero como es tu core, igual que antes, bueno, seguimos todavía, hablo ya como si lo hubiéramos superado, pero seguimos ahí. Igual que tú verificas las direcciones a donde estás enviando en tu hardware wallet y te dice el verifica que realmente es la misma dirección, tú el primer paso has de verificar que realmente estás estableciendo esa receta, que no estás utilizando una receta que algún man in the middle te está metiendo y que tú has de ser consciente de lo que estás haciendo. Entonces yo lo que entiendo de las wallets policy es el problema que se habrá encontrado Salvatore en Ledger con las pantallas tan pequeñas, de decir necesito una forma simplificada, ya no por la pantalla pequeña, sino también porque mi usuario no van a ser todos deps, entonces no tienen que estar haciendo scroll para ir viendo todas las claves públicas extendidas, sino que se lo voy a dar masticadito y se lo tengo que dar masticadito también a nivel de función, sin llegar a mini script, para que sepan lo que están firmando. Y luego que Ledger, lo que tú decías ahora que hay no sé cuántos clics, es porque tienes que verificar que esa es la póliza que quieres guardar y digamos que se crea como una prueba de que esa es la que tú en su día probaste. Porque claro, tú has de saber que cuando vuelvas a utilizar el ledger, que esa póliza es la misma, que nadie te la ha cambiado. Entonces una de las cosas que veo al darme cuenta de todo esto, al hablar con él y demás, es que vamos a tener un montón de problemas de UX, de UI, y que esto está todo por hacer, que animo a todo el mundo a que se sume gracias a librerías como las tuyas, que cada vez más desarrolladores tienen menos excusas, porque ahora ya está todavía para más lenguajes de programación, pero que el problema que vamos a tener aquí es hacerlo todo esto masticable, de hacer que mi padre algún día pueda llegar a animarse con miniscript sin saber qué es miniscript.
Sí, yo creo que vamos a acabar porque ellos son conscientes, sobre todo Salvatore es consciente de que esto ahora mismo es una cosa que es la primera iteración y que sobre todo está pensado para desarrolladores. Pero yo me imagino que vamos a atender a una cosa en la que las wallets van a tener un conjunto de policies ya predeterminadas, que una será la de herencia, otra será la de. Hemos hablado de varios casos, la de antipérdida y tal. Y entonces tú seleccionarás qué tipo de policy quieres usar y esto ya vendrá hardcodeado en la wallet, ya vendrá predefinido dentro de la hardware wallet y tú no tendrás que registrar policies. Sí que podrás hacerlo y el usuario avanzado podrá hacerlo, pero normalmente simplemente elegirá, oye, yo quiero gastar de la wallet de herencia o yo quiero gastar de la wallet esta de antipérdida. Supongo que lo iremos trabajando y se irá simplificando y acabaremos en algo así, mucho más sencillo.
Yo creo que es así. Yo lo veo igual que tú ahora mismo. Ya tenemos algunos ejemplos. Nunchak te permite hacer multifirmas o multifirmas scrow, donde entra otra tercera persona. Yo creo que acabarás teniendo ¿Qué tipo de Wallet quieres hacer? ¿Para qué has venido aquí? Yo quiero una de apoyo y seguramente ya habrá comunicación, será vía WhatsApp o algo por el estilo, donde dirás ¿Quién quieres que te apoye en esta wallet antipérdida? Tal persona, Espera que voy a pedirle la llave y como que todo se hará muy así. Es fascinante pensar lo que estamos por ver. Déjame preguntarte antes de cerrarte ahora mismo, ¿Cuál es el estado para poder probar miniscript? Porque yo sé que tenemos liana que te permite ahora con hot wallets y te facilita mucho más las cosas que no antes, pero necesitas un nodo, si la vas a utilizar en testnet, necesitas un nodo de testnet y design, pues lo mismo. Y también la puedes utilizar en mainnet, pero cuidado, pero por ejemplo no tengo ledgers a mano, no lo he podido probar, casi que he tenido ganas de volver a tener un ledger y hacía tiempo que no tenía esa necesidad para probar todo esto. Pero no sé si se puede probar con qué app, no sé si has de ser desarrollador para poder probar la parte de Ledger. Y luego, por ejemplo, yo sí que sé que tengo Spectre Do It Yourself. No es que sea sencillo. He podido utilizar mini script con el emulador de Spectre, pero no con mi aparato de Spectre, porque de hecho es como que faltan, aparte de aplicaciones, que falta documentación para explicar todas estas cosas. Entonces, no sé si tendrías algún otro ejemplo que la gente se pueda animar a probar miniscript.
No estoy muy seguro. Yo creo que lo más directo sería lo de Liana y que no es fácil. De todas maneras, si alguien quiere probar sin ser desarrollador, pero quiere probar, tiene una Ledger Wallet, por ejemplo, y quiere probar a registrar una policy y tal, en la página web que yo he creado es bitcoinerlab. Com hay una sección de guías y una de las guías es la de guía con la Ledger o sin la Ledger. Hay un par de guías con miniscript, una con Ledger y sin Ledger. Y esto le das al Playground y te arranca, no hace falta ni que mires el código, pero te arranca un entorno de programación en el cual en la parte derecha de arriba hay un clic que pone Click to start y tú ahí le das a clic y te va diciendo paso a paso lo que tienes que ir haciendo. Te dice, mira, vamos a crear en la testnet, vamos a crear esta dirección, ahora envía fondos a esta dirección y ahora vamos a desbloquear. Te crea un time block, ahora vamos a desbloquear este time block. Entonces dale para desbloquear. Tú le das para desbloquear y te no, aún no han pasado cinco bloques porque hemos creado un time block de cinco bloques. Y te tienes que ir esperando y le puedes ir dando y puedes ir viendo cómo funciona MiniScript. Si sabes un poco de código mejor, pero si no, también lo puedes utilizar incluso con una Ledger Wallet. Puedes conectar la Ledger Wallet y te va a pedir el programita este, te va a decir, vale, registra esta Ledger Wallet, ahí vas a ver tu mini script y lo vas a poder registrar italiana. Te vamos a gastar ese mini script con la Ledger Wallet y sin ningún tipo de riesgo porque estás utilizando la testnet, puedes gastar esa transacción al cabo de cierto tiempo. Eso es por si quieres tener un pequeño contacto con miniscript, aunque no seas programado lo puedes utilizar en la página web, te tienes que instalar la app, si utilizas la ledger, la app de test, que es una app diferente de la de Bitcoin con ledger, el que tenga una ledger ya lo sabrá, que tú tienes una para Ethereum, tienes una para Bitcoin y luego tienes una app para Bitcoin Test para Testnet. Entonces con esta app puedes utilizar y probar mi página web y ver un poquito cómo funcionaría una ledger cuando quieres usar Miniscript.
Para alguien que tenga una ledger con fondos de Mainnet, ¿Podría probarlo con la aplicación de Testnet o es mejor que se consiga otra ledger y que no mezcle cosas?
A ver, yo creo que es mejor utilizar otra ledger, la verdad, porque podría utilizar, sería seguro utilizar su wallet, pero yo no mezclaría. ¿Yo por ejemplo tengo una ledger totalmente diferente para las pruebas y casi que mejor no? Además más que nada porque le pierdes un poco incluso el respeto a la ledger si la empiezas a usar para este tipo de cosas y acabas haciendo clics muy rápidos y tal, y es mejor tener como un dispositivo totalmente diferente que sabes que es para pruebas y el otro lo tienes guardado en un sitio esperemos que muy seguro y que no está ahí a la vista y que no vas a poder acceder de forma muy fácil. Sí que recomiendo utilizar otro, pero quien no tenga una ledger también puede utilizar el programa este que tengo mi Coroner Lab, es el de miniscript y ledger y puede hacer las mismas pruebas, no hace falta que tenga una ledger para hacer la prueba.
Perfecto, pues creo que con esto para quien esté hambriento de mini script y quiera empezar a ver y con todos los recursos que dejaré abajo, es un mundo fascinante y es una madriguera en la que creo que me voy a seguir quedando. Hay madrigueras donde normalmente estoy un rato, preparo el pod y tengo que saltar a la siguiente. En esta noto adicción por mi parte a querer ver más, a querer saber más, la custodia es un tema que me fascina y en esto me doy cuenta que estoy descubriendo toda una madriguera enorme, maravillosa y que me apetece quedarme. Y te agradezco mucho toda esta charla, ha sido muy ilustrativa, espero que haya ayudado a gente no tan experta y también a gente más avanzada. Hay un montón de temas que podríamos haber tratado más, pero claro también hay que intentarlo mantener en un horario lógico. Ya estamos cercanos a las 2 horas, pero te agradezco mucho el esfuerzo porque sé que tratando todos estos temas tiene una mayor exigencia a la hora de explicarlo y sobre todo solo en audio. Así que muchas gracias por tu tiempo y por el esfuerzo.
Gracias a ti Bruna.
Y hasta aquí el podcast que lo he disfrutado un montón. Llevo preparándolo bastantes semanas, yo creo que meses dejándome caer por esta madriguera específica de mini script y de hecho después de este podcast tengo pendiente grabar otro documento en caso ya gráfico, una especie de directo que voy a hacer con José Luis, donde vamos a estar toqueteando Miniscript en su web Bitcoin, Airlab y vamos a enseñar de qué manera hoy podemos crear cualquier póliza de Miniscript y adaptarla para que la gente vea qué direcciones se crean, cargar fondos y bueno un poco romper el hielo con esto de Minescript que ahora mismo pues parece muy etéreo. Hay alguna opción como Lyanna estoy pendiente a fecha de grabación de que publiquen la versión 0 4.0 que permitirá crear políticas propias. Quiero ver cómo acaba de ser. Es posible que sea un gran gol por parte de Lyana el estar fuera ya en el mercado y ser el first mover, pero más allá de eso me queda pendiente este duque con José Luis, le agradezco un montón la charla y también toda la preparación. Es un pot que tenía muchas ganas de hacer y que venía charlando con Kevin de Liana, con Salvatore de Ledger y me faltaba alguien de habla hispana y fue una gran alegría conocerle, encontrarle y ver que bueno, que era un lujo poder charlar con él y poder discutir todas estas cosas. Creo que la custodia de Bitcoin va a cambiar, va a cambiar mucho. Yo me lo imagino en mi cabeza como eso, como que las wallets cuando accedas te van a dar opciones, va a ser una especie de boticario de recetas, cada receta va a ser un tipo de wallet y donde tú vas a poder escoger qué te interesa. Ya no va a haber aquello de bueno, supongo que las wallets legacy van a seguir existiendo. Wallets legacy refiriéndome a este tipo de wallets simples donde con una clave pues bloqueas, desbloqueas monedas y no tiene más. Van a seguir existiendo, va a ser una receta más. Pero le vamos a dar esa utilidad a Bitcoin que mucha gente busca o espera de él. Vamos a superar ese oro 2.0, nos vamos a ir a un oro infinito. Y la gente pues yo me imagino a alguien que empieza en Bitcoin, se descarga una nueva wallet que todavía no está creada y dice algo así como mira, me voy a crear una wallet antipérdida porque esa es la que me ha dicho mi hijo que me tengo que crear. Y esa wallet va a dialogar, como ya hacen Nunchuk, que tienes una especie de WhatsApp ahí metido para dialogar con otros usuarios, y va a dialogar con la wallet de su hijo y va a crear una wallet antipérdida. El hijo no va a poder mover nada, pero si pasado un tiempo esas monedas se quedan bloqueadas, pues el hijo sí que le podrá echar una mano porque es posible que ese familiar haya perdido la clave. Eso es una opción. Pero así va a haber muchas. Hemos repasado algunas en este podcast, pero no tenemos el libro, ni conocemos el futuro, no sabemos qué tipo de wallets se van a crear. Es el momento de crearlas, es el momento de imaginar. Y eso es lo que a mí me aporta como mucho optimismo y me hace estar muy enganchado con Mini Script, porque yo mismo creo, yo mismo diseño, cuál es la mejor custodia, de qué forma Mini Script puede romper el ataque de llave inglesa para siempre. Todo eso es lo que yo le doy vueltas a mi cabeza y me encantaría, una de las cosas que quiero hacer es sentarme, me gustaría hacer una. Una app, creo que la veo bastante clara. No sé si hay alguien por ahí que se anima a romperse un poco los cascos conmigo. Pues me encantaría. Yo si no me voy a poner a explorar ChatGPT y lo poco que sé de Python y a ver si saco algo, pero me encantaría hacer una app que fuera en estas líneas de experimentar con recetas, con scripts, con output scripts y miniscript y ver qué posibilidades daría y empezar a jugar. Es el momento de hacerlo, es el momento inicial. Entonces estoy como muy conectado, muy enchufado. Y también creo que cuando encuentras algo como Mini Script hace que mentalmente se superen momentos anteriores o tecnologías anteriores que tenías en la cabeza. En este caso me viene multifirma y multifactor no deja de ser un script avanzado de bitcoin que también tienes que guardar su script y su receta, no puedes solo quedarte con las llaves, pero era como la punta de lanza de lo más avanzado en custodia. Dentro de muy poco esto no va a ser así. Multifirma va a ser como eso que ya hace mucho tiempo que existe y lo avanzado avanzadísimo va a ser todo lo que se cree con Miniscript y quizá eso sirva para que más gente sea se anime con multifirma y para que entre todos le perdamos ese miedo y al menos subamos ese nivel de seguridad que aporta el multifirma y que entendamos lo que estamos haciendo. Esta semana dejo la sección de Lightning desierta para la semana que viene, espero poderos leer en los boosts y poder también comentar sobre tanto el último post que publique como en este en la próxima sección. Y sin más, me pongo a trabajar, que queda un último empuje después de Semana Santa y ha servido bastante para desconectar y para cargar pilas. Y queda este último empuje hasta el verano, donde cerraré paradita al menos de esta quinta temporada y nos iremos ya a recuperarnos para, esperemos, la sexta temporada. Hasta aquí el pot, yo te dejo aquí y te saludo pro.
More from Javier

Cuando nadie reconoce tu dolor por la pérdida de una mascota: así es el duelo desautorizado 💔

¿Tu perro hace suficiente ejercicio? Mantenerlo activo es clave para que viva mejor 🐶💪

GATIFICANDO UNA PARED PARA MI GATO 😻🧗♂️ Ideas para aprovechar el espacio vertical en casas pequeñas

Por qué duele tanto perder a un perro o un gato: el vínculo que explica nuestro duelo 💔🐾






