C贸mo funciona una propuesta de mejora de Bitcoin (BIP)

Por Acaleus Nakamoto|15/10/2022 | 181 | 0

como funciona un bip bitcoin

驴Te has preguntado alguna vez como se cambia el c贸digo de Bitcoin? o 驴Qui茅nes tienen el poder para poder cambiarlo? Pues en este art铆culo voy a hablaros sobre las propuestas de mejora de bitcoin, tambi茅n conocido como BIP por sus siglas en ingl茅s (Bitcoin Improvement Proposals).

A continuaci贸n, os contar茅 que son estas propuestas, como como se desarrollan, como se votan y finalmente quien las integra en el c贸digo de Bitcoin.

驴Qu茅 es una Propuesta de Mejora de Bitcoin (BIP)?

Como adelant茅 en la introducci贸n de este art铆culo, BIP son las siglas en ingl茅s de 芦Bitcoin Improvement Proposal禄 o como lo traducir铆amos al espa帽ol, 芦Propuesta de Mejora de Bitcoin禄.聽

BIP es un tipo de est谩ndar, el cual permite a los usuarios proponer cambios en el protocolo de Bitcoin de forma ordenada. Cada BIP presentado es un documento donde se debe realizar una especificaci贸n t茅cnica de los cambios a introducir en la estructura de Bitcoin de forma clara y concisa, as铆 como su justificaci贸n y motivaciones que llevan al desarrollo de esta nueva implementaci贸n.

El formato de los BIP es m茅rito de Amir Taaki, quien present贸 el primer BIP (BIP-0001) en agosto de 2011 donde defin铆a que es un BIP y c贸mo pod铆an utilizarlo los usuarios para proponer mejoras. Como curiosidad, Amir Taaki cre贸 a BIP a semejanza del PEP, un est谩ndar para introducir mejoras en el lenguaje de programaci贸n Python.

M谩s tarde, en febrero de 2016, Luke Dashjr traer铆a ciertas mejoras al est谩ndar con su BIP-0002, como una mayor variedad de licencias abiertas, el requisito de la implementaci贸n antes del cambio de estado ha propuesto (ya veremos m谩s adelante que significa esto) o los encabezados para los BIP entre otras mejoras.

Todos los BIP est谩n recopilados en el repositorio Git oficial, y pod茅is consultarlos desde aqu铆: https://github.com/bitcoin/bips

Los tres tipos de BIP

Debido a la variedad de propuestas de mejora para Bitcoin, se tom贸 la decisi贸n de clasificar estos BIP seg煤n su prop贸sito y se formaron tres grupos de BIP:

  • Est谩ndar (o seguimiento de est谩ndares): En este tipo de BIP se describen todos los cambios que afecten a la mayor铆a o a la totalidad de las implementaciones en Bitcoin. Por ejemplo, en este tipo de BIP incluir铆amos los cambios de protocolo de red, cambios en las reglas de validaci贸n de bloques o transacciones鈥 etc. Un ejemplo de este tipo de bip ser铆a el BIP-141, que implement贸 SegWit.
  • Informativo: En este tipo de BIP se describen problemas en el dise帽o de Bitcoin o se aportan pautas generales a la comunidad, pero no implementa una caracter铆stica nueva. Este tipo de BIP pueden ser libremente ignorados por los usuarios e implementadores. Un ejemplo de este tipo de BIP seria el BIP-010 que define distribuci贸n de transacciones multifirma.
  • Proceso: Este tipo de BIP describe un proceso que afecta en Bitcoin o propone un cambio o un evento para un proceso. En estos BIP se puede proponer una implementaci贸n siempre y cuando no afecte al c贸digo base de Bitcoin. Aqu铆 tenemos como ejemplo el BIP-123, que introduce la clasificaci贸n de los BIP en cuatro capas.

El flujo de una propuesta de mejora de Bitcoin (BIP)

flujo de procesos de un BIP
Flujo de procesos de un BIP

Lo primero que debe hacer el autor de un BIP es determinar si su idea es compatible con un BIP. Muchas veces las ideas se corresponden m谩s con un parche que con una propuesta de mejora y estos parches siguen un camino diferente ya que son enviados directamente al tracker de incidencias.

Despu茅s es necesario revisar las discusiones de desarrollo (bien en la lista de correo de desarrollo o bien en el subforo dedicado para ello en BitcoinTalk) para asegurarnos que la idea que planteamos no ha sido discutida antes y rechazada por alg煤n motivo. Adem谩s, es recomendable que los BIP solo incluyan una propuesta o idea nueva. Si tu BIP incorpora varias propuestas, es mejor que cada una sea presentada por separado como BIP independiente.

Una vez tenemos claro que nuestra idea no ha sido rechazada previamente y se corresponde con un BIP, debemos enviar nuestra idea (no el BIP) a la lista de correo de desarrollo de Bitcoin para ser discutida por la comunidad. Esto es necesario para asegurarnos que la idea es aplicable a toda la comunidad y no es una propuesta que va a beneficiar 煤nicamente al autor.

Cuando ya hemos debatido con la comunidad y hemos concluido que nuestra idea tiene opciones de ser aceptada empezaremos a redactar el BIP y una vez lo tengamos lo volveremos a enviar a la lista de correo de desarrollo de Bitcoin. Ahora ser谩 el BIP sobre lo que se va a discutir, se informar谩 de las correcciones necesarias (en caso de necesitarlas) para que tenga el formato adecuado y se abordar谩n las dudas o inquietudes nuevas que surjan de la propuesta.

Una vez discutido el BIP, el autor deber谩 recopilar los comentarios de la comunidad sobre su propuesta inicial y los comentarios sobre su BIP para incluirlos en su propuesta mediante un enlace en la wiki del git de los BIP.

ejemplo discusi贸n en lista de correo
Ejemplo de una propuesta a discutir en la lista de correo de desarrollo de Bitcoin

Una vez recopilados los comentarios, el BIP se enviar谩 al repositorio git de BIP con una pull request (un tipo de petici贸n para que ciertos cambios o mejoras se integren en un repositorio). En este punto deberemos subirlo con alias tipo 鈥渂ip-taberna-propuestaX鈥 ya que los autores tienen prohibido asignar un n煤mero de BIP a su propuesta. Son los editores de BIP los que asignan los n煤meros a las propuestas (hablaremos m谩s adelante sobre este grupo).

Tras la revisi贸n por los editores y una vez el BIP est茅 completo, un editor le asignar谩 un n煤mero, le dar谩 el estado de 鈥渂orrador鈥 y le asignar谩 el tipo de BIP que le corresponda. A continuaci贸n, integrar谩 propuesta de BIP en el repositorio.

Cuando el autor considera que tiene suficiente apoyo de la comunidad, ha completado el BIP con los cambios necesarios planteados en las discusiones con la comunidad y tiene una implementaci贸n funcional es cuando podr谩 cambiar el estado de 鈥渂orrador鈥 a 鈥減ropuesto鈥. El autor tambi茅n puede volver al estado de 鈥渂orrador鈥 si considera que tiene propuestas que corrigen las objeciones planteadas por la comunidad.

Para que nuestra propuesta cambie de estado 鈥淧ropuesto鈥 a 鈥淔inal鈥 y sea implementado en el c贸digo de Bitcoin deberemos tener en cuenta que tipo de fork se va a realizar, soft-fork o hard-fork.

En un soft-fork se requiere una clara mayor铆a de los mineros expresada en una votaci贸n en la blockchain y se recomienda que el BIP reciba alrededor de un 95% del apoyo. Tambi茅n es posible determinar un porcentaje inferior siempre que se pueda justificar esta decisi贸n.

En el caso del hard-fork se requiere la adopci贸n de toda la comunidad de Bitcoin y no valdr谩 con una amplia mayor铆a. Esta aceptaci贸n se demostrar谩 por el uso del fork por parte de la comunidad.聽

Para finalizar con el flujo de las propuestas de mejora de Bitcoin, comentar que hay otra serie de estados menos importantes como son 鈥Rechazado鈥 si el BIP no cumple los criterios. 鈥Retirado鈥 si tras la discusi贸n el autor considera que su idea era err贸nea. 鈥Reemplazado鈥 u 鈥Obsoleto鈥 para los BIPs ya en estado final que no tienen uso o su implementaci贸n ha sido mejorada por otro BIP.

La estructura de una propuesta de mejora de Bitcoin (BIP)

Como os podr茅is imaginar para poder presentar una propuesta de mejora se debe presentar un documento que siga un est谩ndar definido por la comunidad. Este est谩ndar qued贸 definido con los BIP-0001 publicado en 2013 y BIP-0002 publicado en 2016 que es simplemente una revisi贸n del primero.

ejemplo preambulo bip
Ejemplo de un pre谩mbulo en el BIP-147

Todo BIP debe comenzar con un pre谩mbulo que contiene los metadatos necesarios sobre el BIP. A continuaci贸n, se debe incluir un resumen de unas 200 palabras en el que se describe el problema t茅cnico que se est谩 abordando y seguidamente deberemos indicar qu茅 derechos de autor tiene nuestra propuesta indicando expl铆citamente el tipo de licencia. Existen una serie de licencias recomendadas por la comunidad que est谩n recopiladas en el BIP-002.

Tambi茅n se deber谩 incluir la especificaci贸n en la que se describe la sintaxis y la sem谩ntica de cualquier funci贸n nueva lo suficientemente detallada para permitir implementaciones interoperables.

Lo siguiente a a帽adir ser谩 la motivaci贸n, este punto es fundamental para cualquier BIP que quiera cambiar el protocolo. En este punto se debe explicar claramente porque el protocolo existente es inadecuado para abordar el problema que resuelve este BIP. Adem谩s se debe a帽adir聽la justificaci贸n en los casos necesarios, donde se especifica que motiv贸 el dise帽o y porqu茅 se tomaron ciertas decisiones en el dise帽o.

En pen煤ltimo lugar habr谩 que indicar la compatibilidad con versiones anteriores, en este punto se deben detallar todas las incompatibilidades junto con su gravedad, as铆 como la propuesta del autor del BIP para solucionarlas.

Finalmente llegamos a la implementaci贸n de referencia, la cual no es necesaria completar antes de la aceptaci贸n del BIP, pero si es imprescindible para que el estado de un BIP pase a 芦Final禄. La implementaci贸n final debe incluir el c贸digo de prueba y la documentaci贸n necesaria para el protocolo de Bitcoin.

El equipo que mantiene el c贸digo de Bitcoin

Desde que en 2010 Satoshi public贸 la 煤ltima versi贸n en la que participa y la primera que ser铆a alojada en Github, han sido varios los desarrolladores que han trabajado en el c贸digo de Bitcoin. Inicialmente Satoshi Nakamoto era el creador y mantenedor principal del c贸digo de Bitcoin, pero tras su desaparici贸n este puesto qued贸 a cargo de Gavin Andresen a quien Satoshi le concedi贸 permisos para modificar el c贸digo de Bitcoin.

Unos a帽os despu茅s, Andresen dejar铆a su cargo de mantenedor principal tras una pol茅mica surgida entre la comunidad por el cambio de nombre del repositorio de Bitcoin, el cual pas贸 a llamarse Bitcoin Core (este nombre ten铆a connotaciones de centralizaci贸n cuando esa no era una idea que se compartiese en la comunidad de Bitcoin).

El cargo de mantenedor principal cay贸 en manos de Wladimir J. van der Laan hasta la actualidad. Pero no solo Wladimir J. van de Laan tiene permisos sobre Bitcoin Core. Hay otra serie de desarrolladores que tambi茅n tienen permisos:

  • Marco Falke que tiene el cargo de mantenedor de QA/Testing
  • Michael Ford que tiene el cargo de mantenedor del sistema de compilaci贸n y mantenedor general.
  • Hennadii Stepanov mantenedor de la GUI y mantenedor general.
  • Andrew Chow mantenedor de la wallet.
  • Gloria Zhao mantenedora general, y primera mujer y 煤ltima persona en ser aceptada dentro del equipo de mantenedores.

Adem谩s de las figuras de mantenedor principal y mantenedor, existe otra figura importante en todo el proceso. El editor de BIP. Este cargo actualmente lo ocupan Luke Dashjr y Kalle Alm quienes se encargan de revisar y validar todos los BIPs que aspiran al estado de borrador, y una vez aceptado un BIP y cambiado su estado al de borrador se procede a solicitar el autor que haga un pull request del BIP para poder recibir comentarios. Es en este momento cuando el editor le asignar谩 un n煤mero de BIP.

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada.

馃敐