No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Bitcoin Core y Script

Curso de Bitcoin Core y Script

Juan Sebasti谩n Marulanda

Juan Sebasti谩n Marulanda

Script

16/19
Recursos

El lenguaje de programaci贸n de Bitcoin denominado Script, tiene su curva de aprendizaje como cualquier otro lenguaje. Algunas caracter铆sticas lo hacen algo m谩s complicado y poco convencional de aprender, dado que es un lenguaje de muy bajo nivel y por ser Turing incompleto.

Conociendo ya c贸mo funciona t茅cnicamente la Blockchain de Bitcoin, su arquitectura, los conceptos, teoremas, bitcoin-cli, los contratos, entre otras partes, ya est谩s listo para dar tus primeros pasos en este lenguaje.

Primeros pasos con Bitcoin Script

Script es un lenguaje de programaci贸n que permite ejecutar funciones a trav茅s de una pila con ciertos datos y operandos denominados OP_CODES, adem谩s de la utilizaci贸n de las llaves p煤blicas y privadas para tener los permisos necesarios sobre los BTC.

Tal vez te sorprendas cuando sepas que el white paper de Bitcoin, no hace menci贸n alguna a Bitcoin Script. Si bien Satoshi Nakamoto lo cre贸 desde la primera versi贸n de esta Blockchain en su c贸digo fuente desde el 2009.

El libro blanco de Bitcoin describe una transacci贸n de la siguiente manera:

Definimos una moneda electr贸nica como una cadena de firmas digitales.
Cada due帽o transfiere la moneda al pr贸ximo al firmar digitalmente un hash de la transacci贸n previa y la clave p煤blica del pr贸ximo.
(Bitcoin White Paper, p谩gina 2)

A pesar de sus limitaciones l贸gicas, Bitcoin Script permite crear todo tipo de transacciones. No sabemos si cuando Satoshi lo cre贸, lo hizo siendo consiente del potencial de esta herramienta que al d铆a de hoy a煤n contin煤a creciendo y evolucionando. Tal vez lo sab铆a y era su intenci贸n que la comunidad explotara las caracter铆sticas del lenguaje y le encontrara nuevos usos en el futuro.

驴C贸mo funciona Bitcoin Script?

Bitcoin Script permite bloquear salidas no gastadas (UTXO) con un script de bloqueo, y a trav茅s del cumplimiento de ciertas condiciones, permite gastarlas con otro script de desbloqueo. Siempre se ejecuta el script de desbloqueo primero que el script de bloqueo.

Todo lo que ocurre en la ejecuci贸n de un script, es booleano. Cada operaci贸n es verificada por si o por no para continuar con la ejecuci贸n del script en la pila de instrucciones.

Un Script se ejecuta siguiendo las siguientes premisas:

  • Siempre de izquierda a derecha
  • Los datos siempre se empujan a la pila
  • OPCODES pueden sacar elementos, y opcional, empujar
  • V谩lido si la cima y 煤nico elemento en la pila Ges 1 o m谩s
Ejemplo flujo de ejecuci贸n de un Script

Bitcoin Script es flexible. Si solo utiliz谩ramos los OP_CODES y las llaves p煤blicas y privadas para validar las transacciones, su comportamiento ser铆a mucho m谩s limitado. Podemos crear todo tipo de bloqueos para las salidas y distintas combinaciones de los operadores y los datos que utilizamos.

Veamos algunos ejemplos de Script:

  • Suma de dos n煤meros: [1 2 OPP_ADD]
  • Resta de dos n煤meros: [3 2 OPP_ADD 4 OPP_SUB]
  • P2PKH (Script m谩s com煤n para crear una transacci贸n): <signature> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

El lenguaje Bitcoin Script ha ido solucionando bugs y evolucionado con los a帽os. Al d铆a de hoy existen m煤ltiples scripts est谩ndar para crear transacciones, funciones especiales en el c贸digo fuente para validar los scripts como EvalScript, mejoras en la privacidad y ocultaci贸n de informaci贸n, hasta llegar a complejos mecanismos como 鈥淭aproot鈥 que hoy permiten desarrollar redes m谩s poderosas como lo es Lightning Network.

Conclusi贸n

Ahora entiendes c贸mo funciona por detr谩s Bitcoin Script. Se trata de un lenguaje de programaci贸n poco convencional y algo m谩s dif铆cil de utilizar, ya que los desarrolladores estamos acostumbrados a los condicionales, ciclos de iteraci贸n, clases, etc.


Contribuci贸n creada por: Kevin Fiorentino (Platzi Contributor).

Aportes 2

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

RESUMEN CLASE 16:
SCRIPT

Definimos una moneda electr贸nica como una cadena de firmas digitales.
Cada due帽o transfiere la moneda al pr贸ximo al firmar digitalmente un hash de la transacci贸n previa y la clave p煤blica del pr贸ximo.

I.- SCRIPT

  • No es nombrado en el whitepaper.

  • EvalScript (funcion).

  • M谩quina de pila que eval煤a y retorna validez.

  • Soporte para todo tipo de transacci贸n.

  • Cada nodo solo necesita entender la transacci贸n para evaluarla.

  • Predicado (Teorema de post).

II.- SCRIPT HISTORIA

  • Scriptsig

  • EvalScript

  • P2SH

  • Segregated Witness

  • Taproot (Firmar)

III.- QUE ES SCRIPT ?

  • Lenguaje de programaci贸n usado como mecanismo que bloquea salidas.

  • Un script de bloqueo se agrega en cada salida.

  • Un script de desbloqueo debe proveerse para desbloquear una salida.

IV.- COMPONENTES

  • Datos (Llaves p煤blicas y firmas).

  • OPCODES: funciones que permiten operar los datos.

V.- COMO ES EJECUTADO

  • Siempre de izquierda a derecha.

  • Los datos siempre se empujan a la pila

  • OPCODES pueden sacar elementos, y opcional, empujar.

  • V谩lido si la cima y 煤nico elemento en la pila Ges 1 o m谩s.

VI.- DONDE LO ENCUENTRAS ?

  • Script que bloquea en cada salida que se crea en una transacci贸n.

  • Script que desbloquea cada vez que quieres usar una salida como entrada en una nueva transacci贸n.

  • Siempre se ejecuta el script de desbloqueo primero que el script de bloqueo.

VII.- POR QUE LO USAMOS ?

  • 驴 Por qu茅 no usar una llave p煤blica y la firma solamente y no usar OPCODES ?

  • Podemos crear distintos tipos de bloqueos con distintas combinaciones, flexibilidad.

EJEMPLOS

  • Matem谩tico

    • Suma: 鈥榌1 2 OPP_ADD]鈥

    • Resta: 鈥榌3 2 OPP_ADD 4 OPP_SUB]鈥

  • P2PKH

    • <signature> <pubKey> OP_DUP
      OP_HASH160 <pubKeyHash>
      OP_EQUALVERIFY OP_CHECKSIG

VIII.- SCRIPT ESTANDAR

  • P2PK

  • P2PKH

  • P2MS

  • P2SH

  • NULL

Un claro ejemplo de Lightning Network es la adopci贸n de Bitcoin en El Salvador por medio de la billetera del gobierno que corre en Lightning network!!