BITCOIN UNA CORTA INTRODUCION

in #criptomonedas7 years ago

#BITCOIN

bitcoinbitcoinfastcommunitycriptomonedacriptomonedasbitcoins..jpg

Principios fundamentales

21 millones: la cantidad de unidades nunca podrá exceder los 21 millones de bitcoines.
Sin censura: nadie puede prohibir o censurar transacciones válidas.
Código abierto: el código fuente de Bitcoin siempre debe ser accesible para todos.
Sin permiso: nadie puede impedir la participación en la red.
Seudoanónimo: no se requiere identificación para participar en la red Bitcoin.
Permutable: cada unidad es intercambiable.
Pagos irreversibles: las transacciones confirmadas no pueden ser modificadas ni eliminadas. La historia es imborrable.

Cronología

Desde la década de 1970, la utilización de firmas digitales basadas en criptografía de clave pública ha proporcionado un fuerte control de propiedad. Sobre la base de la criptografía de clave pública, en 1998 Wei Dai describe b-Money, una solución descentralizada al problema de pagos electrónicos. Posteriormente, Nick Szabo y Hal Finney extienden y complementan el trabajo de Wei Dai.

En 2008, Satoshi Nakamoto publica un artículo en la lista de criptografía de metzdowd.com donde describe el protocolo Bitcoin.

El 3 de enero de 2009 la red P2P de Bitcoin entra en funcionamiento con la publicación del primer programa cliente, de código abierto, y la creación de los primeros bitcoins. Hasta la invención de bitcoin era obligado que todos los pagos en el comercio electrónico se canalizaran a través de entidades centralizadas de confianza,15 generalmente bancos y otras empresas financieras, que gestionaban el seguimiento de todas las transacciones.

Software
Programas cliente

Aunque existen monedas y billetes fabricados por particulares y empresas, normalmente para poder comerciar con bitcoines se utilizan programas cliente, que pueden ser aplicaciones nativas o aplicaciones web.

Aplicaciones nativas
Las aplicaciones nativas se instalan o se ejecutan directamente en ordenadores o en dispositivos móviles. También pueden ejecutarse automáticamente cuando el usuario clics en un navegador web sobre un enlace que cumple con el formato del URI scheme de bitcoin según la especificación registrada en IANA.
Bitcoin Core es el único programa que implementa totalmente el protocolo, protegiendo la red, y se considera la referencia en la que se apoyan el resto de clientes existentes. Bitcoin Core necesita descargar completamente la cadena de bloques y almacenarla localmente, que a marzo de 2017 ocupa aproximadamente 110 GB, lo que puede llegar a tardar varios días. Su uso solo se recomienda para usuarios avanzados que deseen aportar a la estabilidad de la red.

Aplicaciones nativas
Aplicación Web Plataformas Comentarios
Bitcoin CoreNota 4 http://bitcoin.org Windows, Linux, Mac OS X Cliente de referencia. Consume gran cantidad de recursos de máquina y la obtención completa de la cadena de bloques de varios gigabytes.
Bitcoin Unlimited https://www.bitcoinunlimited.info/ Windows, Linux, Mac OS X, ARM Cliente de referencia y completo. Según sus creadores busca dotar de mayor libertad al usuario. Al igual que Bitcoin Core, consume gran cantidad de recursos de máquina y la obtención completa de la cadena de bloques, de más de un centenar de gigabytes.
Armory http://bitcoinarmory.com Windows, Linux Requiere de Bitcoin Core para funcionar. Proporciona funcionalidades para usuarios avanzados: Importación y exportación de claves, almacenamiento seguro de claves en modo desconectado.
Bitcoin Wallet https://play.google.com Android, BlackBerry OS Fácil de utilizar. Se conecta directamente a la red Bitcoin, sin necesidad de servidores externos o servicios web. Permite escaneo de códigos QR y NFC.
Copay https://copay.io/ Windows, Linux, Mac OS X, Android, iOS Permite transacciones multifirma.
Electrum http://electrum.org Windows, Linux, Mac OS X, Android Rápido y sencillo de utilizar. Permite la recuperación del monedero a partir de una secuencia de palabras.
Mycelium https://play.google.com Android Fácil de utilizar. Requiere conectarse a servidores externos que no pertenecen a la red Bitcoin. Permite importar claves privadas en QR desde papel. Sustituye al antiguo cliente Bitcoin Spinner.
MultiBit http://multibit.org Windows, Linux, Mac OS X Sencillo y se puede utilizar en pocos minutos. Permite el uso simultáneo de varias carteras.
Aplicaciones web
Las aplicaciones web solo necesitan de un navegador, y por tanto están accesibles desde todas las plataformas, ya sean de escritorio (Windows, Linux, Mac OS X) o móviles (Android, iPhone, BlackBerry, tabletas, etc).

Algunas aplicaciones web proporcionan seguridad adicional en el acceso a los bitcoins mediante la utilización de autenticación de dos factores con mensajes SMS, correo electrónico, dispositivos específicos y Google Authenticator.

Aplicaciones web

Cryptobuyer https://www.cryptobuyer.io/ Venezuela, Brasil, Panamá, República Dominicana.
BitPesa https://www.bitpesa.co/ África
Wirex https://www.wirexapp.com/ UK
BlockChain https://blockchain.info/wallet EEUU
Coinbase https://coinbase.com EEUU
Cripto-Pay https://cripto-pay.com Europa (España)
Rbex https://www.rbex.eu/ Europa
Ripio https://www.ripio.com/ Argentina, Brasil, Chile, Colombia, España, México, Perú, Uruguay
Safello https://safello.com/ Europa
SatoshiTango https://www.satoshitango.com/ Argentina, Brasil, Chile, Colombia, México, Perú, Uruguay y Europa
Volabit https://volabit.com/ México
Xapo https://xapo.com/ EEUU
Bitnovo https://www.bitnovo.com/ España
SURBTC https://www.surbtc.com Chile, Colombia y Perú
Bitfinex https://www.bitfinex.com Asia (Hong Kong)
Poloniex https://www.poloniex.com/ EEUU
Coincheck https://coincheck.com/ Asia
Bitstamp https://www.bitstamp.net EEUU
Kraken https://www.kraken.com/ Europa
BitPay https://www.bitpay.com EEUU, Europa, Canada, Australia, México, Nueva Zelanda, UK y Sudáfrica

Comercio electrónico
Existen complementos para la mayor parte de las plataformas de comercio electrónico, como WordPress, Drupal, Zen Cart, PrestaShop, Magento y otros

A partir de una única semilla, algunos comerciantes generan carteras deterministas cuyas direcciones Bitcoin se pueden asignar a un pagador diferente para simplificar su seguimiento. Se utiliza el término cartera determinista para indicar que todas las direcciones de esa cartera están completamente determinadas por la semilla. Es decir, es suficiente con proteger la semilla para generar consistentemente la misma secuencia de direcciones Bitcoin de las que se tiene el control. Las direcciones generadas por una única semilla son virtualmente ilimitadas.

Programación
Bitcoin Core proporciona una API en JSON-RPC para acceder a la red Bitcoin.Es habitual que los desarrolladores prefieran programar en modo regtest, que permite desarrollar en una cadena de bloques privada con control total del entorno, creación de transacciones con confirmaciones instantáneas y sin necesidad de gastar bitcoins reales.

BitcoinJ es una librería popular para el lenguaje Java. Se conecta directamente a la red Bitcoin, no necesita de entidades de confianza y descarga una versión reducida de la cadena de bloques. Forma parte del código de Multibit y del Bitcoin Wallet para Android y Blackberry OS. También se puede acceder a BitcoinJ en Ruby a través de JRuby.

Pycoin es una librería popular para Python.

BitcoinJS es una librería popular para Javascript. Bitcore proporciona una API para acceder a la red Bitcoin a través de Javascript y Node.js.

Protocolo
Direcciones
Todo participante de la red Bitcoin tiene una cartera electrónica que contiene un número arbitrario de claves criptográficas. A partir de la clave pública, se obtiene la dirección Bitcoin, que funciona como la entidad remitente y receptora para todos los pagos. Su clave privada correspondiente autoriza el pago solo para ese usuario. Las direcciones no tienen ninguna información sobre su dueño, son generalmente anónimas y no requieren de ningún contacto con los nodos de la red para su generación.

Las direcciones son secuencias alfanuméricas aleatorias de 33 caracteres de largo, en formato legible para personas, como puede verse en este ejemplo: 1LtU9rMsQ41rCqsJAvMtw89TA5XT2dW7f9. Utilizan una codificación en Base58, que resulta de eliminar los siguientes seis caracteres del sistema Base64: 0 (cero), I (i mayúscula), O (o mayúscula), l (L minúscula), + (más) y / (barra). De esta forma, se componen únicamente de caracteres alfanuméricos que se distinguen entre sí en cualquier tipo de letra. Las direcciones Bitcoin también incluyen un checksum de 32 bitsNota 5 para detectar cambios accidentales en la secuencia de caracteres.

Transacciones
Los bitcoines contienen la dirección pública de su dueño. Cuando un usuario A transfiere algo a un usuario B, A entrega la propiedad agregando la clave pública de B y después firmando con su clave privada.37 A entonces incluye esos bitcoins en una transacción, y la difunde a los nodos de la red P2P a los que está conectado. Estos nodos validan las firmas criptográficas y el valor de la transacción antes de aceptarla y retransmitirla. Este procedimiento propaga la transacción de manera indefinida hasta alcanzar a todos los nodos de la red P2P.

Construcción de la cadena de bloques

La cadena principal (negro) es la serie más larga desde el origen (verde). Los bloques huérfanos aparecen en lila.
Todos los nodos que forman parte de la red Bitcoin mantienen una lista colectiva de todas las transacciones conocidas en una cadena de bloques. Para ello los nodos generadores de los bloques, también llamados mineros meten en la cabecera de dichos bloques el hash o resumen del último bloque de la cadena más larga de la que tienen conocimiento, así como las nuevas transacciones publicadas en la red. Cuando un minero encuentra un nuevo bloque, lo transmite al resto de los nodos a los que está conectado. En el caso de que resulte un bloque válido, estos nodos lo agregan a la cadena y lo vuelven a retransmitir. Este proceso se repite indefinidamente hasta que el bloque ha alcanzado todos los nodos de la red. Por tanto la cadena de bloques contiene el historial de posesión de todas las monedas desde la dirección-creadora a la dirección del actual dueño. Por lo tanto, si un usuario intenta reutilizar monedas que ya usó, la red rechazará la transacción.

Bajando un poco el nivel de abstracción, los mineros rastrean las transacciones (los pagos) y los agrupan en bloques, cada bloque tiene la siguiente estructura:

Número mágico. El valor del número mágico 0xD9B4BEF9. Valor poco probable que se produzca en la tabla ASCII en los datos normales con el siguiente bloque.
Tamaño de bloque
Cabecera de bloque
Número de versión (4 bytes): Número de versión del protocolo bitcoin usado
Hash de la cabecera del bloque anterior (32 bytes). Esto va formando una cadena de bloques (de ahí el nombre de cadena de bloques) que nos da un orden bien definido de las trasacciones y una firma acumulativa de las transacciones (se firma lo actual y todo lo anterior enlazado)
Hash del contenido de el bloque (32 bytes). Para ello usa el hash de la raíz del árbol de Merkle de las transacciones del bloque. Esto asegura que las transacciones del bloque no se pueden cambiar una vez que son parte de un bloque
Una marca temporal tipo UNIX (4 bytes), que es el número de segundos que han pasado desde enero de 1970.
Dificultad minera del bloque (4 bytes). Indica el número de ceros que tiene que poseer el hash al principio de este. Esto regula la dificultad para validar un bloque.
El nonce (4 bytes). Es una serie de bits con valor arbitrario.
Contador de transacciones
Lista de las transacciones incluidas en el bloque
La extracción
La generación de bloques se conoce en inglés como mining y puede traducirse al español como extracción por analogía con la minería del oro. Todos los mineros de la red están compitiendo para ser el primero en encontrar la solución al problema criptográfico de su bloque-candidato actual, mediante un sistema de pruebas de trabajo, resolviendo un problema que requiere varios intentos repetitivos, por fuerza bruta,Nota 7 no determinista, de manera que se evita que mineros con gran nivel de procesamiento dejen fuera a los más pequeños. De esta forma, la frecuencia de localización de cada bloque sigue una distribución de Poisson y la probabilidad de que un minero lo encuentre depende del poder computacional con el que contribuye a la red en relación al poder computacional de todos los nodos combinados,40 lo que permite que el sistema funcione de manera descentralizada. Los nodos que reciben el nuevo bloque solucionado lo validan antes de aceptarlo, agregándolo a la cadena. La validación de la solución proporcionada por el minero es trivial y se realiza inmediatamente.

El objetivo concreto de los mineros es buscar un nonce correcto para el bloque de forma que el bloque completo satisfaga cierta condición. Esta condición es que el hash SHA-256 del bloque tenga un cierto número de ceros iniciales.

Todo este proceso de prueba-error es simplemente para hacer difícil la generación de bloques. Podría usarse cualquier otro mecanismo. La energía usada para reintentar hasta encontrar el nonce se pierde para siempre. Es simplemente una prueba de trabajo. Normalmente para hallar un nonce se comienza en 0 y se va incrementando en uno cada hash hasta que se desborda el valor del nonce (4 bytes). Cuando se desborda se varía el valor de hash de la raíz del árbol de Merkle.

La dificultad
Según el protocolo solo debe salir un bloque válido cada diez minutos independientemente de cuánto trabajo haga la red. Así que la red tiene que actualizar la dificultad de forma que los futuros bloques requieran condiciones más o menos estrictas. Para calcularlo se mide el tiempo que se tardó en encontrar los últimos 2.016 bloques, se compara con el tiempo de 20.160 minutos. Se calcula de este modo la relación entre el intervalo de tiempo real y el intervalo de tiempo y realiza el ajuste correspondiente de la dificultad, hacia arriba o hacia abajo. Al ser la red Bitcoin una red descentralizada de nodos, la reasignación de la dificultad se produce de forma automática y en cada nodo independientemente. Cada 2.016 bloques, todos los nodos reorientan la dificultad

Para evitar la volatilidad extrema en la dificultad, el ajuste de reasignación de la dificultad como máximo puede ampliarse en cada ciclo de 2016 bloques por un factor de cuatro. Por ello, si se da el caso de que la dificultad requerida durante un ciclo es mayor que un factor de cuatro, se ajustará por el máximo, pero nunca más. Cualquier otro ajuste se llevará a cabo en el próximo ciclo. Esto evita la volatilidad extrema en la dificultad, pero como consecuencia, provoca también que las grandes discrepancias entre el poder de hash y la dificultad puedan tardar varios ciclos en equilibrarse.

En la dificultad actual, la posibilidad de un hash tener éxito es un poco menos de uno de cada {\displaystyle 10^{19}} {\displaystyle 10^{19}}. Encontrar un hash de éxito es más difícil que encontrar un grano particular de arena de todos los granos de arena en la Tierra. Para medir la capacidad de un equipo para generar hashes o resúmenes de los datos, se utiliza la medida hash/segundo. Actualmente, los mineros de la red Bitcoin están haciendo cerca de tres mil millones gigahashes por segundo.

Financiación de la minería
La minería está financiado en su mayoría por la recompensa 12.5 BTC por bloque (este valor se reducirá a la mitad cada 210.000 bloques), y un poco por las comisiones voluntarias de transacción (tasas pagadas por los usuarios que envían las transacciones para incentivar para que el minero incluya la transacción en su bloque), unos 1.3 bitcóin por bloque. En los sistemas de cambio actuales la recompensa minera resuelve a cerca de 15.000 dólares por bloque. Por cada transacción, los mineros están recibiendo alrededor de 34 dólares en recompensa 0,65 dólares en honorarios

Como el premio por bloque disminuye con el paso del tiempo, en el largo plazo la gran parte de la las recompensas de los mineros provendrán únicamente de las tarifas de transacción.

Minería colaborativa
Debido a la dificultad de la minería normalmente se realiza en piscinas de minería, donde un grupo de mineros comparten el trabajo y comparten los beneficios. Si uno mina por su cuenta, es posible extraer con éxito un bloque y obtener 25 bitcóin cada pocos años. Por la minería como parte de un grupo, usted puede obtener una fracción de un bitcóin todos los días en su lugar, que para la mayoría de la gente es preferible.

Prueba de trabajo para tener consenso
Bitcoin podría operar perfectamente sin prueba de trabajo, siempre que todos los participantes fueran perfectamente honestos y altruistas. La prueba de trabajo es un método para establecer un consenso entre un número de personas interesadas, ninguna de las cuales está subordinada a otra, y existen incentivos considerables para resistirse a dicho consenso.

Antes de que un bloque nuevo sea generado, puede que haya muchos pagos pululando por la red sin existir respuesta objetiva acerca de qué pagos deberían ser validados. Algunos podrían ser inválidos, así que todos deben ser comprobados. Algunos pueden no incluir una tasa de transacción, así que debe decidirse si dejar a estos gorrones pasar, o si ignorarlos. Finalmente, podría haber un conjunto de 2 o más pagos que no pueden ser válidos simultáneamente. Por ejemplo, si alguien intenta gastar los mismos bitcoines en dos transacciones que aún no han sido confirmadas, habría que tomar una decisión sobre qué pago permitir.

De este modo, para un conjunto de pagos dado, pueden existir muchos bloques posibles que pueden construirse con ellos, ninguno de los cuales es objetivamente el más correcto. Tampoco habrá necesariamente un acuerdo acerca de qué resultado es preferible, porque los distintos bloques posibles benefician a distintas personas. Primeramente, está el beneficio que surge de generar un bloque en forma de nuevos bitcoins. Esto es necesario porque, si no existiera, habría muy poco incentivo para hacer la contabilidad para empezar. Con esta recompensa, cada minero naturalmente prefiere que el nuevo bloque sea su propuesta, y no la de cualquier otro.

Además puede haber comportamientos malintencionados. Por ejemplo un minero podría negarse a validar las transacciones procedentes de su enemigo, o podría mostrarse más o menos altruista con las tarifas por transacción que aceptará. Podría incluso proponerse estafar a alguien mediante el doble gasto: él mandaría un pago a la víctima a cambio de un bien determinado, pero solo confirmaría otro pago que hace a una cartera de su propiedad y que está en conflicto con el primero; esto invalidaría el primer pago, y acabaría quedándose con un bien por el que no ha pagado.

Para evitar que se hagan manipulaciones interesadas Bitcoin añade requerimientos extra al protocolo que incrementan enormemente el coste de la deserción. Los bloques se generan aleatoriamente mediante un cálculo muy difícil, que requiere muchos recursos computacionales, y solo se propone un único bloque a la vez. Es anunciado y verificado por la mayoría de otros nodos (lo cual es fácil verificando los hashes o resúmenes). Cuando un bloque ha sido propuesto, los mineros tienen la opción de continuar buscando un bloque alternativo que les sea más favorable, o aceptar la propuesta (dar por verificado) y luego pasar a buscar el siguiente. Alguien que acepta el último bloque propuesto entiende que está siguiendo un proceso de consenso natural y que, si tiene la suerte de generar el siguiente bloque, será probablemente aceptado por las mismas razones que él aceptó el anterior. Por el otro lado, la opción de esperar e intentar encontrar un bloque más favorable para él es muy arriesgada, porque entonces tendría que convencer a un número suficiente de mineros de que podrá establecer un nuevo consenso, para que le sigan.

La regla general es que el primer bloque minado nunca es egoísta, porque nadie puede planear ser el primero en resolverlo. Uno solo puede ser el primero con suerte. Cualquiera que se desmarque de ese bloque levantará sospechas, porque tiene que rechazar una alternativa perfectamente válida y supuestamente altruista, y convencer a los demás de que hagan lo mismo; algo nada fácil de hacer.

La fortaleza de la firma realizada por la red Bitcoin es directamente proporcional al poder computacional total de todos los mineros. Cuanto mayor sea más difícil será (más poder computacional) cambiar la cadena de consenso. En esto se basa el protocolo de consenso de bitcóin, el cual puede manejar fallos bizantinos.

Si queremos cambiar un bloque de la cadena, cada bloque que viene después de ese bloque tiene que volver a hacerse su hash y rehacer el trabajo. Esto hace que sea esencialmente imposible modificar un bloque.

Críticas
Concentración del poder de creación de bloques: La especialización del proceso de minado, para hacerlo rentable, está provocando que el poder para crear bloques se esté centralizando en aquellos que emplean economías de escala para competir y que además estas entidades no tienen por qué tener muchos BTC por lo que pueden no estar involucradas en el buen funcionamiento de la red. Este es el origen del uso de protocolos de consenso por prueba de participación. Otra solución sería usar algoritmos por prueba de trabajo resistentes a tecnologías ASIC por ejemplo basándose en gastar recursos de almacenamiento en lugar de en recursos de CPU.
Despilfarro de recursos en la minería: La cantidad de trabajo computacional que hoy día se gasta en el proceso de minería es extraordinario. Se critica del algoritmo de consenso de Bitcoin que todo ese trabajo que se realiza no se malgaste inútilmente reintentando hasta conseguir un valor hash con ciertas propiedades. Se podría aprovechar los cálculos para obtener algún beneficio para la sociedad. Se diría que tendríamos un algoritmo de prueba de trabajo útil (en inglés proof of useful work). Por ejemplo el algoritmo de consenso de Primecoin (buscan primos con ciertas características) y de Permacoin (basado en almacenamiento distribuido de información.

Sort:  

Muy buena explicación!

hello francis en hora buena sigo tus videos

Genial! Espero participes en el sorteo de Bitcoin que estamos haciendo =)

Hey that's an interesting post. I'll follow your account to see how you doing :). Please follow me @barteksiama.