Bitcoin Core

proyecto de código abierto relacionado a la moneda virtual Bitcoin

Bitcoin Core (en español nucleo de Bitcoin) es un proyecto de código abierto, implementación de referencia para nodos de Bitcoin (BTC) y una cartera capaz de verificar pagos en bitcoins de forma autónoma. También conocido como cliente de satoshi, es una continuación directa del cliente original de bitcoin lanzado por Satoshi Nakamoto (rebautizado luego como "Bitcoin Core").[1]

Bitcoin Core
Información general
Tipo de programa software libre y de código abierto
Desarrollador
Lanzamiento inicial 2009
Licencia Licencia MIT
Información técnica
Programado en
Plataformas admitidas
Interfaz gráfica predeterminada Qt
Versiones
Última versión estable 27.015 de abril de 2024
Enlaces

Ha sido el cliente más usado por "nodos completos" en toda la historia de la red Bitcoin.[2]​ Recibe contribuciones de contribuidores casuales y es mantenido por un equipo de desarrolladores denominados "mantainers" (mantenedores) con Wladimir J. van der Laan dirigiendo el proceso de lanzamiento.[3]​ Algunos de sus desarrollos han sido financiados por la Digital Currency Iniciative del MIT.[4]

El proyecto también mantiene software relacionado como la biblioteca de criptografía libsecp256k1.[5]

Características editar

El cliente de Bitcoin Core incluye un motor de verificaciones de transacciones y se conecta a la red en forma de nodo completo. IIncluye por defecto una cartera de bitcoin que le permite recibir y enviar fondos y generar códigos QR.[5]

Almacena y valida el registro de transacciones entero de la cadena de bloques, de más de 492 gigabytes para octubre de 2022, el cual debe descargar para sincronizarse antes de poder interactuar con la red a pesar de que la no necesita la blockchain completa para ello desde que le es posible de correr en pruning mode.

Contiene un daemon para uso mediante línea de comandos y llamadas a procedimientos remotos denominado bitcoind. También proporciona acceso a testnet, un entorno de pruebas global que imita la red principal de bitcoin usando una blockchain alternativa donde se usan monedas denominadas "bitcoin testnet" que carecen de valor en el mercado. A través de un modo de pruebas denominado Regtest o Regression Test Mode el programa es capaz de crear una blockchain privada bajo las mismas reglas que la testnet de bitcoin evitando la interacción con pares y bloques aleatorios.[6]​ Adicionalmente contiene un sencillo programa que permite a los usuarios enviar comandos RPC a bitcoind llamado bitcoin-cli.

Contiene algunos puntos de control codificados para impedir ataques DDoS contra nodos, especialmente durante la etapa de sincronización[7][8]​ y un límite máximo del tamaño de los bloques de 1 MB agregado en 2010 por Satoshi Nakamoto, el cual limita la capacidad máxima de la red a aproximadamente tres transacciones por segundo.[9]​ Ha recibido mejoras de rendimiento así como un aumento "de facto" del tamaño de los bloques propiciado por la implementación de SegWit. Contenía un sistema de alerta incluido por Satoshi Nakamoto como forma de informar a los usuarios noticias importantes relacionadas con Bitcoin, pero este fue eliminado oficialmente en noviembre de 2016.[10]

Incluye un lenguaje de scripting inspirado en Forth que puede definir transacciones y especificar parámetros.[11]​ Se suele usar ScriptPubKey para "bloquear" transacciones basadas en un conjunto de condiciones futuras. ScriptSig es usado para conocer estas condiciones o "desbloquear" una transacción. Las operaciones en la data son realizadas por varios OP_Codes (en español códigos operacionales). Se usan dos stacks, main y alt. El llooping está prohibido.

Bitcoin Core usa OpenTimestamps para sellar el tiempo en Git de las actualizaciones de su código fuente.[12]

Desarrollo editar

Satoshi Nakamoto, el creador original del cliente declaró a través de correo electrónico enviado a la lista de correo cryptography que comenzó a escribir el código primero para convencerse de que podría resolver los problemas que se presentasen en el desarrollo de su sistema. Luego de eso, habría escrito el whitepaper (documento técnico) de bitcoin.[13]​ Aunque la mayoría de los participantes de la red utilicen Bitcoin Core, la influencia de sus desarrolladores se ve limitada por la elección voluntaria de las personas sobre que implementación del protocolo usar.[14]​ Desde que asumió funciones el 8 de abril de 2014, el desarrollador líder del proyecto es Wladimir J. von der Laan, Gavin Andresen fue el desarrollador líder anterior, pero abandonó el rol en función para dedicarse al desarrollo estratégico de su tecnología.

El código fue almacenado inicialmente en Sourceforge antes de su puesta a disposición en GitHub.[15]​ Debido a que no existe una estructura formal, el desarrollo de Bitcoin Core se basa en torno a las Propuestas de Mejora de Bitcoin (Bitcoin Improvement Proposals), también conocidas como BIPs, las cuales funcionan de forma similiar a Request for Comments. Para examinar y discutir las expresiones iniciales de ideas se usan listas de correo.[16]​ Cuando suficiente apoyo se muestra en torno a una BIP, esta se formaliza con la creación de un documento. Este es el procedimiento estándar para compartir ideas y obtener feedback de la comunidad en torno a la mejora de bitcoin y fue iniciado por Amir Taaki en 2011.

Historial de versiones editar

La versión 0.1 fue liberada el 9 de enero de 2009 por Satoshi Nakamoto con soporte solamente para Windows.[17]​ Este lanzamiento fue seguido por algunas versiones cuyo objetivo era arreglar algunos errores menores. El 16 de diciembre de 2009 se libera la versión 0.2, la cual incluía por primera vez una versión para Linux y soportaba el uso de minería multi-procesador. En la versión 0.3.2 Nakamoto incluyó puntos de control como medida de seguridad.

Luego de la liberación de la versión 0.3.9, su creador, Satoshi Nakamoto, dejó el proyecto, y poco después dejó de participar definitivamente en foros en línea. Desde ese momento el desarrollo del software era fue asumido por un amplio grupo de desarrolladores independientes al que se suere referir como una comunidad, emuchos de los cuales han planteado ideas de como mejorar el protocolo.

Entre 2011 y 2013 nuevas versiones del software fueron lanzadas a través del portal Bitcoin.org.[18]​ Los desarrolladores querían diferenciarse como creadores de software en lugar de defensores de bitcoin, por lo que ahora destinan el portal bitcoincore.org sólo para el software.

La versión 0.5.0 de Bitcoin-Qt fue lanzada el 1 de noviembre de 2011. Introdujo un front end que utilizaba el toolkit de interfaz de usuario Qt.[19]​ El software anteriormente utilizó Berkeley DB para administración de base de datos. Los desarrolladores cambiaron a LevelDB al lanzar la versión 0.8 para reducir el tiempo de sincronización con la blockchain.[20]​ La actualización a esta versión dio como resultado en una bifurcación menor el 11 de marzo de 2013, el cual fue resuelto al poco tiempo. El sembrado de nodos a través de IRC fue descontinuado en la versión 0.8.2. Con este lanzamiento las comisiones por transacción, también conocidas como costes de retransmisión, se redujo de 50.000 satoshis a 10.000 satoshis.[21]

A partir de la versión 0.9.0 el software fue rebautizado como Bitcoin Core. Los costes de transacción fueron reducidos de nuevo en un factor de diez como medio para fomentar las microtransactions. A pesar de que Bitcoin Core no utiliza OpenSSL para la operación de la red, el software utilizó OpenSSL para llamadas de procedimiento remoto. La versión 0.9.1 fue lanzada para remover la vulnerabilidad de la red al Heartbleed.[22]

La versión 0.10 fue hecha pública el 16 de febrero de 2015.[23]​ Introdujo una biblioteca de consenso qué dio programadores acceso fácil a las reglas que gobiernan consenso en la red. En versión 0.11.2 los desarrolladores añadieron una nueva característica que permitió hacer no gastables determinadas transacciones hasta un momento concreto en el futuro.[24]​ Bitcoin Core 0.12.1 fue liberado el 15 de abril de 2016 y habilitó múltiples soft forks al mismo tiempo.[25]​ Alrededor de 100 colaboradores trabajaron en Bitcoin Core 0.13.0, el cual fue liberado el 23 de agosto de 2016 e introdujo más de diez cambios significativos.[26]

En julio de 2016 fue activado CheckSequenceVerify a través de un soft fork.

En octubre de 2016, Bitcoin Core 0.13.1 presentó el soft fork Segwit, cuyo objetivo era servir como una mejora en el escalado que apuntaba a optimizar el espacio en los bloques en Bitcoin sin aumentar el tamaño de los mismos.[27]​ Esta característica fue originalmente terminada en abril, y 35 desarrolladores se comprometieron a desplegarlo.[28]​ Este lanzamiento presentó a SegWit con el objetivo de bajar la presión al alza sobre las tarifas de transacción así como incrementar la capacidad máxima de la red para procesar transacciones.[29]​ La versión 0.13.1 soportó búsqueda y testaje extensos que dirigen a algunos retrasos en su fecha de liberación. Además, el uso de SegWit impide la explotación de varias formas de ataques de maleabilidad de transacciones.[30][31]

Lanzado en febrero de 2018, la versión 0.16.0 da soporte al uso de un formato de direcciones nativo para SegWit, también llamado formato de direcciones bech32, el cual fue originalmente desarrollado por Peter Wuille y Greg Maxwell.[32]

En septiembre de 2018, un desarrollador de Bitcoin Cash descubrió la vulnerabilidad CVE-2018-17144 en el software de Bitcoin Core,a la cual podría permitir a un atacante de explotar un error en nods Bitcoin Core vulnerables y superar el límite de emisión de 21 millones de monedas.[33]

Véase también editar

Referencias editar

  1. «Bitcoin Core version 0.9.0 released». Bitcoin Core. 19 de marzo de 2014. Consultado el 21 de octubre de 2018. 
  2. «Global Bitcoin nodes distribution». bitnodes.earn.com. Consultado el 9 de septiembre de 2018. 
  3. «0.13.0 Binary Safety Warning». Bitcoin Core. Bitcoin Project. 17 de agosto de 2016. Consultado el 21 de octubre de 2018. 
  4. «MIT Announces $900,000 Bitcoin Developer Fund». Inc. 29 de marzo de 2016. Consultado el 21 de octubre de 2018. 
  5. a b «About». Bitcoin Core. Consultado el 21 de octubre de 2018. 
  6. «Bitcoin Developer Examples». Bitcoin. Consultado el 21 de octubre de 2018. 
  7. «checkpoints.cpp». Repository source code. GitHub, Inc. Consultado el 13 de noviembre de 2016. 
  8. «bitcoin/chainparams.cpp». GitHub. Consultado el 21 de octubre de 2018. 
  9. Mike Orcutt (19 de mayo de 2015). «Leaderless Bitcoin Struggles to Make Its Most Crucial Decision». Consultado el 15 de noviembre de 2016. 
  10. «Alert System Retirement». Bitcoin Project. 1 de noviembre de 2016. Consultado el 16 de noviembre de 2016. 
  11. Antonopoulos, Andreas (29 de mayo de 2013). «Bitcoin is a money platform with many APIs». Radar. O'Reilly. Consultado el 19 de noviembre de 2016. 
  12. «Bitcoin Core devtools README - Create and verify timestamps of merge commits». GitHub. Consultado el 5 de mayo de 2018. 
  13. «Re: Bitcoin P2P e-cash paper». The Cryptography Mailing List. Satoshi Nakamoto Institute. 9 de octubre de 2016. Consultado el 13 de noviembre de 2016. 
  14. Aaron van Wirdum (7 de septiembre de 2016). «A Primer on Bitcoin Governance, or Why Developers Aren’t in Charge of the Protocol». BTC Inc. Consultado el 13 de noviembre de 2016. 
  15. Daniel Cawrey (29 de diciembre de 2014). «Gregory Maxwell: How I Went From Bitcoin Skeptic to Core Developer». Consultado el 23 de diciembre de 2016. 
  16. Bailey Reutzel (14 de mayo de 2016). «Bitcoin Core is Seeking to Overhaul How it Upgrades its Code». Consultado el 7 de noviembre de 2016. 
  17. «History of Cryptocurrency, Part I: From Bitcoin’s Inception to the Crypto-Boom». 11 de abril de 2015. Consultado el 21 de octubre de 2018. 
  18. «About bitcoin.org». Bitcoin Project. Consultado el 14 de noviembre de 2016. 
  19. «Bitcoin-Qt version 0.5.0 released». Bitcoin Project. 1 de noviembre de 2011. Consultado el 13 de noviembre de 2016. 
  20. Vitalik Buterin (13 de marzo de 2013). «Bitcoin Network Shaken by Blockchain Fork». BTC Inc. Consultado el 7 de noviembre de 2016. 
  21. Danny Bradbury (28 de febrero de 2014). «Bitcoin Transaction Fees To Be Slashed Tenfold». Consultado el 22 de diciembre de 2016. 
  22. Khaosan, Venzen (8 de abril de 2014). «OpenSSL Heartbleed Security Bug "Massive"». Consultado el 21 de octubre de 2018. 
  23. Joon Ian Wong (17 de febrero de 2015). «Bitcoin Core 0.10 Gives Developers Simplified Access to Network Consensus». Consultado el 7 de noviembre de 2016. 
  24. «Bitcoin Core version 0.11.2 released». Bitcoin Project. 13 de noviembre de 2015. Consultado el 14 de noviembre de 2016. 
  25. Kyle Torpey (15 de abril de 2016). «Bitcoin Core 0.12.1 Released, Major Step Forward for Scalability». NASDAQ.com. Consultado el 7 de noviembre de 2016. 
  26. Aaron van Wirdum (22 de agosto de 2016). «What’s New in Bitcoin Core 0.13.0?». BTC Inc. Consultado el 7 de noviembre de 2016. 
  27. Joseph Young (18 de octubre de 2016). «Ready, Steady, Fork: Bitcoin Core to Release SegWit in November». Consultado el 7 de noviembre de 2016. 
  28. Luke Parker (29 de octubre de 2016). «Bitcoin scaling solution, Segwit, released». Consultado el 7 de noviembre de 2016. 
  29. «Bitcoin Core 0.13.1». Bitcoin Core. Consultado el 25 de octubre de 2016. 
  30. Joseph Young (3 de noviembre de 2016). «Bitcoin Core is Most Talented Dev Team, Says VC». Consultado el 7 de noviembre de 2016. 
  31. «Segregated Witness Benefits». Bitcoin Core. 26 de enero de 2016. Consultado el 20 de octubre de 2018. 
  32. Hertig, Alyssa (20 de febrero de 2018). «New Bitcoin Code Will Finally Boast Full SegWit Support». Consultado el 21 de octubre de 2018. 
  33. «CVE-2018-17144 Full Disclosure» (en inglés). Consultado el 23 de septiembre de 2018. 

Enlaces externos editar