Un BIP es un documento donde se presenta una propuesta de mejora técnica, organizativa o de cualquier otro tipo para el desarrollo del Bitcoin.
Las siglas BIP significan Bitcoin Improvement Proposal, que en español significa Propuesta de Mejora para Bitcoin. Este es un documento en el que reposa una propuesta o diseño para mejorar la estructura o funcionamiento del ecosistema Bitcoin. Sea esta de carácter técnico u organizativo para la comunidad detrás del desarrollo de Bitcoin. La propuesta está acompañada de una explicación y justificación clara y concisa de la nueva característica. Esto es necesario para someter a la misma a aprobación o no por parte de la comunidad.
Para lograr esto, se recopila comentarios de la comunidad y se busca un consenso sobre la decisión a tomar. Esta labor es parte de las responsabilidades del autor, quien además debe archivar las posiciones en pro y en contra de la propuesta. Debido a la forma en cómo se estructura el trabajo dentro del Core de Bitcoin, estos almacenan sus cambios de forma histórica. De esta forma, la propuesta original y sus distintas variaciones siempre estarán disponibles para el resto del equipo. Una característica de trabajo importante en medio de un grupo de desarrollo tan activo, heterogéneo e internacional.
La propuesta de creación de estos documentos fue dada por el desarrollador criptoanarquista Amir Taaki, el 19 de agosto de 2011. Para su diseño, Taaki se basó en los conocidos PEP (Python Enhancement Proposals – Propuestas de Mejoras de Python). Más tarde, la estructura sería mejorada por Luke Dashjr.
Tipos de BIP
Existen tres tipos de BIP que pueden ser presentados, y son los siguientes:
Seguimiento de Normas
Conocidos como Standards Track, estos se usan para describir cambios que afectan a la mayoría o todas las implementaciones de Bitcoin. Estos cambios generalmente incluyen, cambios en el protocolo de red, cambio en las reglas de validez de bloque o transacción, o cualquier otro cambio o adición que afecte la interoperabilidad de las aplicaciones que utilizan Bitcoin. Suelen ser BIP altamente técnicos y largamente debatidos debido a las implicaciones profundas de los mismos sobre la operatividad de la blockchain. Un ejemplo de este tipo se presenta en el SegWit (BIP-141).
Informativo
Estos son utilizados para describir o dar a conocer un problema de diseño del Bitcoin, dando pautas o recomendaciones para su solución. Generalmente son el resultados de investigaciones particulares, grupales o empresariales. En las mismas se presentan datos, pruebas o estudios conceptuales que soportan la propuesta y sus afirmaciones. Un ejemplo de este tipo es Multi-Sig Transaction Distribution (Distribución de Transacciones Multi-Sig) o BIP-10.
Proceso
En estos se describe un proceso que rodea a Bitcoin, proponiendo un cambio o mejora del mismo. Los BIP de proceso se aplican a distintas áreas del protocolo Bitcoin. Pueden proponer una implementación, pero no directamente al código base de Bitcoin. Al ser más que recomendaciones, estos no pueden ignorarse como los BIP informativos.
Los ejemplos de estos BIP incluyen procedimientos, directrices, cambios en el proceso de toma de decisiones y cambios en las herramientas o el entorno utilizado en el desarrollo de Bitcoin. Cualquier meta-BIP también se considera un BIP de proceso. Un ejemplo de estos BIP se puede hallar en el BIP Classification (Clasificación de BIP) o BIP-123.
Estructuración de un BIP
Un BIP se encuentra estructurado de la siguiente forma:
- Preámbulo. Esta sección contiene los encabezados donde se sitúan los metadatos sobre el BIP.
- Resumen. Aquí se ubica una breve descripción (~ 200 palabras) del problema técnico que se está abordando.
- Derechos de autor. Este debe tener una licencia explícita bajo los términos aceptables de derechos de autor. Generalmente esta licencia es una compatible con GPL o carece de ella.
- Especificación. En este punto se describe la sintaxis y la semántica de cualquier característica nueva. La especificación debe ser lo suficientemente detallada para permitir implementaciones competitivas e inter-operables para cualquiera de las plataformas actuales de Bitcoin.
- Motivación. Acá es donde se explica claramente los motivos por los cuales se ha creado la propuesta. Es crucial que esta sección sea clara y despeje cualquier duda la misma y su creación.
- Justificación. La justificación de la especificación describe qué motivó el diseño y por qué se tomaron decisiones de diseño particulares.
- Compatibilidad con versiones anteriores. Todos los BIP que introducen incompatibilidades con versiones anteriores deben incluir una sección que describa estas incompatibilidades y su gravedad. El BIP debe explicar cómo el autor propone lidiar con estas incompatibilidades.
- Implementación de referencia. La implementación de referencia debe completarse antes de que cualquier BIP tenga el estado «Final», pero no es necesario que se complete antes de que se acepte. Es mejor terminar primero la especificación y la justificación y llegar a un consenso al respecto antes de escribir el código. La implementación final debe incluir el código de prueba y la documentación adecuada para el protocolo Bitcoin.
Estatus de un BIP
Un BIP tiene un determinado ciclo de vida que depende de los estatus en los que se encuentre el mismo. En ese punto podemos decir que los estatus de un BIP son los siguientes:
- Borrador (Draft). En este punto, el BIP apenas está en su estado más temprano de presentación. En este punto, el BIP está incompleto.
- Diferido (Deferred). El BIP ha sido pospuesto debido a que no se han realizado avances en el desarrollo del mismo.
- Propuesto (Proposed). Es la propuesta acompañada con la mayor parte de sus elementos explicativos y presentada a la comunidad. En este punto, se comienza el debate sobre su aplicación o no dentro del ecosistema de desarrollo de Bitcoin.
- Rechazado (Rejected). Si la propuesta presentada no es bien recibida, existen elementos perjudiciales o cualquier otra razón que esgrima la comunidad para su rechazo, esta será marcada con este estatus.
- Retirado (Withdraw). Este estatus aplica a aquellas propuestas que han sido retiradas por sus autores por razones que atienden a su interés.
- Final/Activo (Final/Active). Para llegar a este punto, la propuesta debe haber pasado por la revisión y consenso de la comunidad. Debe tener todos los espacios y estructuras necesarias para su aprobación.
- Reemplazado (Replaced). Este estatus se entrega a propuestas que han sido reemplazada por mejores propuestas. Generalmente porque las nuevas propuestas, solucionan o mejoran aún más la propuesta anteriormente presentada.
- Obsoleto (Obsolete). Este cambio de estatus está relacionado sobre todo cuando los cambios introducidos por el BIP ya no son relevantes. Esto puede deberse a distintas situaciones, generalmente porque existen nuevos cambios que hacen innecesaria su aplicación.
BIP y sus distintas representaciones en otras blockchain
No queda duda que los BIP son una gran herramienta para organizar el trabajo y el desarrollo de Bitcoin. El modelo fue exportado desde Python, donde ha permitido la evolución de este lenguaje de programación de una forma muy rica. Y lo mismo ha sucedido en otros desarrollos blockchain. Por ejemplo, en Ethereum tiene los conocidos EIP (Ethereum Improvement Proposal) y en Litecoin los LIP (Litecoin Improvement Proposal ). Siguiendo un poco más, en Dash existen los DIP (Dash Improvement Proposal) y en TRON existen los TIP (TRON Improvement Proposal). Todas y cada una de estas estructuras basan su funcionamiento en el esquema básico de los BIP. Con algunas añadiduras según han creído necesarias las desarrolladores de estas blockchain para adaptarlas a su particular desarrollo.
En cualquier caso es claro que los BIP han tenido un profundo impacto en la forma en cómo se organiza y se hace público el trabajo de desarrollo del las blockchain. En cualquier caso, Bitcoin fue realmente vanguardista con la forma de resolver esta parte del trabajo y que, a día de hoy, todavía lo sigue siendo gracias a la cantidad y calidad de presentaciones que tiene.
BIP relevantes en Bitcoin
Algunos BIP relevantes dentro de la blockchain de Bitcoin son los siguientes:
BIP-11: Transacciones estándar M-of-N
El BIP-11, está pensado en habilitar monederos seguros, transacciones en custodia y otros casos de uso en los que el canjeo de los fondos requiere más de una única firma. Presentado por Gavin Andresen, el 18 de octubre de 2011. Esta propuesta es del tipo Seguimiento de Normas y se encuentra en estatus Final.
BIP-16: Pay to Script Hash
El BIP-16, es una nueva forma de manejar los sistemas de pago de Bitcoin permitiendo que se pueda incluir los datos de pago en un código QR para facilitar los pagos. Este BIP fue presentado por Gavin Andresen, el 03 de enero de 2012. Esta es otra propuesta del tipo Seguimiento de Normas y se encuentra en estatus Final.
BIP-141: SegWit
El BIP-141 tiene como objetivo aumentar la capacidad de la red Bitcoin y también resuelve el problema de la maleabilidad de las transacciones. Es un soft fork que requiere que la mayoría (95%) de los mineros realicen la actualización durante dos semanas.
Segregated Witness (también conocido como SegWit) es una solución de escalado de blockchain. En un lenguaje sencillo, SegWit significa separar las firmas de los testigos de las transacciones.