Sei sulla pagina 1di 52

CAPÍTULO 1

Puenteando la cadena de bloques


Brecha de conocimiento
Aclimatarse al mundo de la cadena de bloques de movimiento rápido puede ser
desafiante. Este libro es tu guía. Antes de que nosotros comencemos, definamos
algunos de los términos que tendrá encuentro por delante.
Un blockchain es una red de software peer-to-peer completamente distribuida que
hace uso de criptografía para hospedar aplicaciones de forma segura, almacenar datos
y transferir fácilmente instrumentos digitales de valor que representan dinero del
mundo real. La criptografía es el arte de la comunicación a través de mensajes
codificados. En Bitcoin y Ethereum, la criptografía se utiliza para conjurar un entorno
informático seguro de miles de máquinas similares, ejecutándose sin autoridad central
y sin propietario único. Con ese tipo de potencial, es obvio por qué la tecnología ha
estado sujeta a una especulación, alboroto, confusión y pronóstico sin precedentes.
El término "Ethereum" puede usarse para referirse a tres cosas distintas: el Ethereum
protocolo, la red Ethereum creada por computadoras que usan el protocolo, y el
proyecto Ethereum financiando el desarrollo de los dos antes mencionados. En los
talones de Bitcoin, Ethereum se ha convertido en su propio macrocosmos, atrayendo
entusiastas e ingenieros de numerosas industrias. Muchas de las imperfecciones más
persistentes de la civilización podrían convertirse en el dominio de las aplicaciones
asesinas de blockchain, y el protocolo Ethereum (que se derivó de Bitcoin y se
extendió) se considera ampliamente como la red donde brotarán estas aplicaciones
"distribuidas". Para desarrolladores, diseñadores y gerentes de producto, no hay mejor
momento para comenzar a crear prototipos de aplicaciones para la red Ethereum.

Blockchain Roll Call! (Llamada de rol)


Dos grandes grupos de pensadores están interesados en los sistemas blockchain, y
Ethereum más específicamente: desarrolladores de aplicaciones interesados en
construir productos y servicios, y los no programadores que sienten curiosidad por el
potencial de Ethereum, quizás debido para trabajar o interesarse en servicios
financieros, consultoría, seguros, leyes, creación de juegos, gobierno, logística, diseño
de productos o 1T. Este libro es igualmente interdisciplinario. Proporciona una guía
contextual para programadores y no programadores para desarrollar ideas sobre qué
construir y cómo construirlo. Llena un espacio entre la informática, la economía, los
servicios financieros y, cuando es necesario, la historia bancaria.
Para los programadores, lo difícil de Ethereum no suele ser el código; me gusta la
mayoría de los proyectos de software de código abierto, este tiene rampas para
personas que ya programan en otros entornos. Por el contrario, el desafío es
familiarizarse con el concepto de "criptoeconomía" o el sistema de incentivos y
desincentivos que aseguran la red.
Para los no programadores, el desafío es adivinar cómo se desarrollará el ecosistema, y
cómo encaja. Las afirmaciones de que las cadenas de bloques modernizarán el sistema
bancario, revolucionarán los seguros y arruinarán la falsificación pueden ser
exageradas, pero ¿en qué medida?

Lo que hace Ethereum


En abstracto, las redes de cadena de bloques de fuente abierta como Ethereum y
Bitcoin son kits que le permiten mostrar un sistema económico en el software,
completar con la cuenta administración y una unidad de intercambio nativa para pasar
de una cuenta a otra. Algo así como el juego Monopolio. La gente llama a estas
unidades nativas de monedas, tokens o criptomonedas, pero no son diferentes de los
tokens en cualquier otro sistema: son una forma de dinero (o scrip) que solo se puede
usar dentro de ese sistema.
Blockchains funcionan algo así como redes de malla o redes de área local (LAN); ellos
simplemente están conectados a otras computadoras "iguales" que ejecutan el mismo
software. Cuando desee hacer que una de estas redes P2P (P2P) sea accesible a través
de un navegador web, debe usar bibliotecas de software especiales como Web3.js para
conectar el interfaz de una aplicación (la GUI que ve en un navegador), a través de las
API de JavaScript, a su back-end (la cadena de bloques).
En Ethereum, puede llevar este concepto un paso más allá al escribir contratos con
otros usuarios dentro del sistema. Como verá, estos contratos financieros se llaman
contratos inteligentes.
El componente clave es esta idea de una cadena de bloques de Turing completa. …
Como una estructura de datos, funciona de la misma manera que funciona Bitcoin,
excepto la diferencia en Ethereum es que tiene este lenguaje de programación
incorporado.
-Vitalik Buterin, inventor de Ethereum
En Ethereum, los contratos inteligentes están escritos en el lenguaje de programación
Solidity, del que aprenderá en el Capítulo 4. La completitud de Turing fue una ventaja
que muchos desarrolladores se adhirieron rápidamente, pero más importante es la
capacidad de Ethereum para salvar el estado. En informática, una definición simple de
un sistema con estado es aquella que puede detectar cambios en la información y
recordarlos a lo largo del tiempo.
Imagine una computadora sin disco duro; no podías hacer mucho con eso. Podría ser
como una calculadora, el contenido de su memoria fugaz. La capacidad de diseñar
interacciones entre usuarios en el futuro, y bajo ciertas condiciones, es una poderosa
adición a una cadena de bloques. Permite a los desarrolladores introducir el flujo de
control en la programación de transacciones de criptomonedas. Esta es la mayor
distinción entre Ethereum y Bitcoin, pero no la única, como verán.
■ Nota El flujo de control se refiere al orden en que se ejecutan o evalúan las
instrucciones informáticas. Los ejemplos son sentencias condicionales (si esto, luego
eso) y bucles que se ejecutan repetidamente hasta que se cumplan ciertas
condiciones).
En Bitcoin, todas las transacciones suceden lo antes posible. Debido a la falta de estado
de bitcoin, tiene que ejecutar las transacciones de una sola vez. La cadena de bloques
según lo previsto por los creadores de Bitcoin era un libro de transacciones distribuidas
que mantenía una cuenta corriente de los saldos de bitcoin de todos en la red. (Una
nota de estilo para los lectores cercanos: Bitcoin, la red está escrita en mayúsculas y
bitcoin, el token en minúsculas). En Ethereum, un sistema similar se puede extender de
forma estandarizada.
En segundo lugar, este lenguaje de scripting común hace que sea más sencillo para
blockchains que comparten el protocolo de Ethereum para compartir datos entre ellos,
permitiendo a los grupos que usan blockchains separados compartir información y
valor entre ellos.

¿QUÉ ES UN PROTOCOLO?
Si es nuevo en el desarrollo de software, aquí le será útil un curso acelerado de 10
segundos sobre tecnología de la información (TI). La TI se puede definir como el
estudio de los sistemas informáticos para almacenar, editar, recuperar y enviar
información. La forma en que se representa y actualiza la información a lo largo del
tiempo, para reflejar los cambios internos y externos, depende del sistema tecnológico
que se utilice.
En un contexto de telecomunicaciones, un protocolo es un sistema de reglas que
describe cómo una computadora (y su programador) pueden conectarse, participar y
transmitir información a través de un sistema o red. Estas instrucciones definen la
sintaxis y semántica del código que el sistema espera. Los protocolos pueden incluir
hardware, software e instrucciones en lenguaje sencillo. No se necesita hardware
especial para Ethereum, y el software es completamente gratuito.
En Ethereum, el protocolo está diseñado para crear aplicaciones descentralizadas, con
énfasis en el rápido tiempo de desarrollo, la seguridad y la interactividad.

Tres partes de una cadena de bloques


Se puede pensar en una cadena de bloques como una base de datos distribuida o
duplicada a través de muchas computadoras. La innovación representada por la
palabra blockchain es específica capacidad de esta base de datos de red para conciliar
el orden de las transacciones, incluso cuando unos pocos nodos en la red reciben
transacciones en varios órdenes.
Esto generalmente ocurre debido a la latencia de la red debido a la distancia física;
para, por ejemplo, se enviará una transacción creada por un usuario que compra un
hot dog en Tokio, primero, a nodos en Japón. Para cuando un nodo en Nueva York se
entera de esta transacción, unos milisegundos más tarde, una transacción cercana en
Brooklyn se cuela "adelante" de la de Tokio. Estas inconsistencias debidas a la
perspectiva subjetiva en los sistemas distribuidos es lo que las convierte en un desafío
para escalar. El poder de los sistemas blockchain es que representan una combinación
de tecnologías que podemos implementar para solucionar el problema.
Lo que se llama ampliamente blockchain es realmente la combinación de tres
tecnologías, una receta creada por primera vez por el creador pseudónimo de Bitcoin.
Esos tres ingredientes son los siguientes:
1) Red entre iguales: un grupo de computadoras como en la red BitTorrent que
puede comunicarse entre ellos, sin depender de una sola autoridad central y,
por lo tanto, no
presentando un único punto de falla.

2) Criptografía asimétrica: una forma para que estas computadoras envíen un


mensaje cifrado para destinatarios específicos, de modo que cualquiera pueda
verificar la autenticidad del remitente, pero solo los destinatarios pueden leer
el contenido del mensaje en Bitcoin y Ethereum, asimétrico la criptografía se
usa para crear un conjunto de credenciales para su cuenta, para asegurarse de
que solo usted pueda transferir sus tokens.

3) Hashing criptográfico: una forma de generar un pequeño, único "Huella digital"


para cualquier dato, lo que permite una comparación rápida de grandes
conjuntos de datos y una forma segura de verificar que los datos no hayan sido
alterado tanto en Bitcoin como en Ethereum, los datos del árbol Merkle la
estructura se usa para registrar el orden canónico de las transacciones, que
luego se convierte en una "huella dactilar" que sirve de base de comparación
para computadoras en la red, y alrededor que pueden sincronizar rápidamente.

La combinación de estos tres elementos surgió de experimentos con efectivo digital en


la década de 1990 y principios de 2000. Adam Back lanzó Hashcash en 2002, que fue
pionera en el uso de la minería para enviar transacciones. El pseudónimo Satoshi
Nakamoto agregó consenso distribuido a esta innovación con la creación de Bitcoin en
2009.
Juntos, estos tres elementos pueden imitar una base de datos simple que está
descentralizada y almacenado en los nodos de la red. De la misma manera que un
grupo de hormigas constituye una colonia en funcionamiento, puede pensar en Bitcoin
como una máquina. En términos informáticos, es una máquina virtual, cuyos detalles
veremos más adelante.
Ethereum agrega, en términos de informática, un marco de objetos globales confiables
sistema de mensajes al paradigma establecido por la máquina virtual Bitcoin. Ethereum
se propuso por primera vez en 2014 con el Libro Blanco de Ethereum.
Ethereum supone muchas cadenas

El Bitcoin que conocemos hoy no es la única implementación a gran escala del software
Bitcoin. Litecoin, por ejemplo, usa el software Bitcoin, modificado, como docenas más.
Ethereum se construyó con la suposición de que los copiones son una conclusión
inevitable, y que puede haber muchas cadenas de bloques, y por lo tanto debería
haber un conjunto de protocolos para comunicarse.
■ Nota Trabajar con el protocolo de Ethereum se beneficia del conocimiento de los
conceptos económicos y de programación. Este libro contiene definiciones para ambos,
cuando sea necesario.
Con una perspectiva radicalmente diferente a la de los creadores de Bitcoin, los
creadores de Ethereum tomaron implícitamente la posición de que la criptomoneda, si
existe en el futuro, no será un sistema descentralizado. En su lugar, será una red
distribuida de sistemas descentralizados, lo que permitirá que muchos tokens de
valores criptográficos diferentes, con varios propósitos e interpretaciones, se definan
fácil y rápidamente y luego se hagan realidad.

¡Esto es una estafa, al igual que Bitcoin!


Si trabajas en servicios financieros o estudias economía, buscar en Google información
adicional probablemente te haya llevado a la conclusión de que Bitcoin es
esencialmente un esquema Ponzi global. Pongamos esto a descansar.
Estás medio correcto: el valor de un bitcoin está determinado por el mercado de
bitcoins. Claro, ciertas entidades bitcoin-holding han obtenido licencias locales de
transmisor de dinero y canjearán sus bitcoins por dólares estadounidenses, euros, oro
u otras monedas fiduciarias. Pero estas entidades son empresas privadas que cobran
tarifas y podrían cerrar en cualquier momento.
Entonces, Bitcoin y las redes similares son vulnerables solo en la medida en que no
haya "Redentor de último recurso", ninguna entidad de confianza (gubernamental o
corporativa) puede estar seguro de que canjeará sus bitcoins o éter por dólares
estadounidenses en el futuro. Si no se paga un cambiador de dinero privado, la única
opción para convertir bitcoins en algo de valor real es conectarse a un intercambio en
línea y cambiar las monedas por moneda fiduciaria, encontrando así otro comprador.
Así como la red de Bitcoin mueve tokens de bitcoin, la red Ethereum mueve el ether
tokens. Ether funciona de manera diferente que bitcoin, como verá, y se le puede
llamar más correctamente una materia prima criptográfica que una moneda. Echemos
un vistazo a cómo la economía de Ethereum se relaciona con la tecnología subyacente.

El ether como moneda y mercancía


Comúnmente se dice que el bitcoin no está respaldado por nada, y eso es cierto. Por
supuesto, las monedas fiduciarias modernas tampoco están respaldadas por nada.
Pero son diferentes: avalados por un gobierno, una moneda fiduciaria se mantiene de
forma predeterminada por cualquiera que pague impuestos y compre bonos del
gobierno. Algunas ventas internacionales de materias primas también están
denominadas en dólares (por ejemplo, petróleo), lo que da a las personas otra razón
para mantener dólares.
Para las criptomonedas, los desafíos para la adopción permanecen. Hoy, estos tokens
digitales seguir siendo una capa de pago pública rápida, segura sobre el sistema de
dinero fiduciario existente; una implementación experimental que algún día podría
crecer para reemplazar las tecnologías de red de pagos centralizadas que usan hoy
compañías como Visa y MasterCard.
Sin embargo, hay posibilidades increíbles en el horizonte, ya que gobiernos y privados
los inversores institucionales comienzan a crear grandes mercados para productos y
servicios financieros denominados en criptomonedas. Los bancos centrales incluso
pueden adoptar la tecnología. Al momento de escribir esto, al menos un país ha
emitido un dólar digital usando el software Bitcoin: Barbados. Otros están investigando
activamente la perspectiva.

La ley de Gresham
¿Por qué es importante si los productos financieros, los contratos, las pólizas de seguro
(y demás) son estar denominado en una criptomoneda? ¿Y qué tiene esto que ver con
Ethereum?
Una moneda que puede comprar una gran cantidad de valores y activos valiosos es una
moneda que vale la pena ahorro. La red Ethereum permite a cualquier persona escribir
un documento confiable y autoejecutable contrato financiero (contrato inteligente)
que moverá el éter en el futuro. Posiblemente, esto podría permitir contratos
financieros que se proyecten en el futuro, dando a los interesados en el contrato una
razón para mantener y usar el éter como una reserva de valor.
Originalmente aplicada a la moneda de oro y plata, la Ley de Gresham establece que,
en una economía, el dinero "malo" expulsa "bueno". En otras palabras, la gente ahorra
y acumula monedas que esperan apreciar en valor, mientras gastan monedas que
esperan depreciar en valor.
Aunque la ley lleva el nombre de un financista inglés del siglo XVI, el concepto aparece
hasta la fecha todo el camino de regreso a las escrituras medievales, y de hecho todo el
camino de regreso a los textos antiguos, incluido el poema de Aristófanes "The Frogs",
por lo general data de alrededor del año 405 aC:
Monedas sin tocar con aleaciones, oro o plata, cada uno bien acuñado, probado cada y
sonando claro. ¡Sin embargo, nunca los usamos! Otros pasan de mano en mano ...
Durante milenios, las personas han ahorrado el valor de su producto de trabajo en un
instrumento que se mantendrá estable, apreciará en valor o inflará en precio, no algo
propenso a estrellarse en el valor. Hoy en día, las criptomonedas son volátiles en precio
y solo son aceptadas por un puñado de gobiernos y corporaciones en todo el mundo al
momento de escribir estas líneas. Pocos, si acaso, los contratos inteligentes
descentralizados están en uso en las empresas de hoy. Pero por la misma razón, las
monedas fiduciarias emitidas por los bancos centrales tienen un historial histórico
horrible, demostrablemente propenso a burbujas, depresiones y manipulación. ¿Puede
la criptomoneda ser dinero real, y será mejor que el dinero al que estamos
acostumbrados?

El camino hacia un mejor dinero


Hoy, Bitcoin (indicado por el símbolo de cotización BTC) es utilizado por personas,
gobiernos y corporaciones para transferir valor y comprar productos o servicios. Cada
vez que envían bitcoins, pagan una pequeña tarifa a la red, que se denomina en
bitcoins. El éter, indicado por el símbolo de cotización ETH, se puede usar de manera
similar. Para entender el camino a seguir, necesitas saber algunas cosas.
Primero, ether tiene otro uso: pagar para ejecutar programas en la red de Ethereum.
Estos programas pueden mover ether ahora, o en el futuro, o cuando se cumplan
ciertas condiciones.
Debido a su capacidad para pagar la ejecución de transacciones en el futuro, el ether
también puede considerarse un producto básico, como combustible para que la red
ejecute aplicaciones y servicios. Entonces tiene una dimensión adicional de valor
intrínseco sobre bitcoins; no es solo una tienda de valores.
Hoy, el uso abrumador de las monedas fiduciarias podría sugerir que las
criptomonedas son peores, es decir, son más propensas a la inutilidad a largo plazo. Y,
sin embargo, los bitcoins y el ether están acaparados por los titulares, e incluso en
manos de un fideicomiso al menos por una empresa: Grayscale, una subsidiaria de
Digital Currency Group. Mientras tanto, los bancos centrales de Occidente
experimentan tasas de interés cercanas a cero y flexibilización cuantitativa, también
conocida como impresión de dinero, en intentos cada vez más peligrosos y
desesperados de mantener controlada la inflación y la deflación.
Con la recompensa de bitcoin a la mitad cada cuatro años, los problemas de política
monetaria global, la incertidumbre económica general y la disminución de la confianza
en las monedas fiduciarias, grandes cantidades de criptomonedas "acumuladas"
latentes están siendo arrastradas al mercado por los precios más altos para atender la
demanda genuina. Esto se refleja en los precios cada vez más altos de la mayoría de los
tokens criptográficos, por volátiles que sean sus precios intradía. Este acto de equilibrio
entre acaparadores, especuladores y gastadores crea un mercado próspero y saludable
para la criptomoneda, y sugiere que cryptotokens como una clase de activos ya están
sirviendo a los propósitos de dinero, y mucho más.

Criptoeconomía y seguridad
Una razón para traer divisas y materias primas en la discusión de contratos inteligentes
es entrenarse para pensar en términos de construir sistemas económicos en software
puro. Esa es la promesa de Ethereum.
El diseño de sistemas de software con reglas teóricas de juegos constituye el campo de
la criptoeconomía, que discutiremos junto con las lecciones técnicas en este libro. Lo
que puede parecer simple al principio -una moneda de equidad, por ejemplo- crea
mundos de complejidad cuando se representa en código. De hecho, lo que hace que
sistemas como Ethereum y Bitcoin es tan seguro que no se basan en ninguna
tecnología a prueba de intrusiones, sino que dependen de poderosos incentivos
financieros y desincentivos para mantener a raya a los malhechores.
Estas son propuestas de valor atractivas que todo ingeniero y diseñador de software
debería estar emocionado. Pero el arranque de las monedas (o scrip) es un todo
desafío separado y adicional para entusiasmar a la gente con las aplicaciones de los
usuarios finales. Este libro aborda ambas mitades del desafío.
Y aunque las aplicaciones más obvias de este software se pueden encontrar en
servicios financieros, las aplicaciones futuras también pueden usar las mismas palancas
(confianza, transacciones, dinero y secuencias de comandos) para otros fines. Del
mismo modo que la línea de comandos finalmente condujo a una GUI y ahora
aplicaciones de realidad virtual (VR), depende de usted decidir qué debe
reacondicionar con Ethereum. Pero discutiremos algunos ejemplos de todos modos.

De vuelta a los buenos viejos días


Es cierto que Bitcoin y Ethereum agregan un poco de complejidad -economía- a la
escritura de programas de software. Pero también son más simples en algunos
aspectos; trabajar con protocolos descentralizados es similar al trabajo con
computadoras de la década de 1970. Eran recursos compartidos enormes y costosos, y
las personas podían alquilar tiempo en estas máquinas a una universidad o corporación
que poseía uno. La red Ethereum funciona como una gran computadora que ejecuta
programas en bloque; es una máquina que es "virtualizada" por una red de otras
máquinas. Al estar compuesto por muchas computadoras privadas, se puede decir que
la Máquina Virtual Ethereum (EVM) es una computadora compartida sin propietario.
Los cambios en el EVM se logran mediante el bifurcado duro: persuadir a la totalidad
comunidad de operadores de nodo para actualizar a una nueva versión del software
Ethereum.
Los cambios en la red no pueden ser simplemente impulsados por el equipo de
desarrollo central. Ellos involucran un proceso político de persuasión y exposición. Esta
configuración sin propietario está diseñada para maximizar el tiempo de actividad y la
seguridad, al tiempo que minimiza el incentivo para el subterfugio.

Cryptocaos
En este punto, tu cabeza podría estar girando. No se preocupe, toda esta información
hará más sentido cuando te sumerges en los detalles en capítulos posteriores. Aun así,
nunca temas: todo el mundo que ve el desarrollo de blockchain por primera vez se
siente abrumado. Es una tecnología nueva, las cosas cambian rápidamente y la
experiencia en sistemas descentralizados es rara.
Nadie sabe qué vendrá después, pero está claro que la tecnología está funcionando:
para la sintonía de más de $ 26 mil millones de dólares (a partir de este escrito), que es
aproximadamente la capitalización de mercado de todas las criptomonedas
combinadas. Los minoristas grandes, pequeños, en línea y fuera de línea están
comenzando a aceptar pagos en monedas digitales. (Tenga en cuenta que a menos que
se especifique lo contrario, todos los montos en dólares están denominados en dólares
estadounidenses).
Entonces, incluso si nunca has programado antes, no te detengas aquí. El proyecto
Ethereum está diseñado pensando en los nuevos desarrolladores, y te brinda las
herramientas para crear soluciones a problemas antiguos. Depende de usted descubrir
qué construir con este nuevo y poderoso conjunto de herramientas. Cómo construirlo,
y por qué deberías aprender el desarrollo de blockchain son los temas del resto de este
libro.

El poder está en el protocolo


En la industria de la tecnología actual, las reglas de la capa de aplicación: es donde
viven todos los datos del usuario. Compañías multimillonarias como Google, Facebook
y Twitter han construido una enorme infraestructura para apoyar grupos de usuarios
internacionales. Todo en la parte superior del Protocolo de control de transmisión /
Protocolo de Internet (TCP / IP), Protocolo de transferencia de hipertexto (HTTP),
Protocolo simple de transferencia de correo (SMTP) y un puñado de otros protocolos.
En Ethereum, como en Bitcoin, la capa de aplicación es más delgada, al menos hasta
ahora, porque el protocolo te da mucho. De hecho, muchas compañías basadas en
Bitcoin hasta la fecha son capas bastante mínimas además de lo que ya es una red de
pagos increíblemente efectiva.
■ Nota La capitalización de mercado es una medida del valor de una organización o
ecosistema. Se calcula multiplicando el precio de una acción del capital, por ejemplo,
un ether, por el número de acciones en circulación. El límite de mercado es
ampliamente citado como una indicación de la adopción de criptomonedas; sin
embargo, usar una base monetaria podría ser más apropiado. La base monetaria es la
cantidad total de una moneda circulada por el público o mantenida en reserva por las
instituciones que usan la moneda.
Como resultado, la explosión de arranque de Bitcoin que muchos capitalistas de riesgo
anticiparon hace solo cinco o seis años nunca llegó. En cambio, la industria de Bitcoin
entró rápidamente en consolidación. Pero la capitalización de mercado de Bitcoin
como red se ha disparado a casi $ 19 mil millones en menos de una década. El límite de
mercado de Ethereum es de aproximadamente $ 1 mil millones.
Esta es una nueva forma, sin precedentes, rápida de iniciar un nuevo protocolo de red.
Las aplicaciones web tradicionales son costosas en gran parte porque deben ser
diseñado para almacenar e intercambiar datos de usuario, y por lo tanto debe tener
sistemas establecidos para aislar a los malos actores para generar confianza. Muchos
centros de datos privados operan detrás paisaje defensivo resistente a las bombas y
capas de alambre de púas. Cuando la seguridad ofrecida por estas capas de
infraestructura privada puede ser superada por una red descentralizada segura, los
operadores de negocios en línea experimentan costos indirectos drásticamente
menores, que pueden traspasar a los clientes para interrumpir los reproductores
heredados. Las aplicaciones y servicios basados en Blockchain son perjudiciales no solo
por su naturaleza segura, sino también por lo económicos que pueden ser para operar
a escala.

Usted puede construir sistemas sin fideicomiso


Una vez que aprenda el lenguaje Solidity, se preguntará rápidamente qué tipo de
programas puede escribir, y allí es donde se establece la curva de aprendizaje real. El
objetivo de los proyectos en este libro es mostrar exactamente cómo y dónde,
blockchains puede mejorar o automatizar la experiencia del usuario final de todo tipo
de empresas y posibilitar la creación de nuevos tipos de productos y servicios. Verá
cómo los productos y servicios bancarios que conocemos hoy, que evolucionaron a lo
largo de mil años de prueba y error, pueden cambiar, beneficiarse o ampliarse
mediante sistemas distribuidos o semi distribuidos sin confianza. Trustless se usa en
este contexto para significar "no requerir fe de que las contrapartes operarán con
honestidad y sin fallas, por lo tanto, serán inmunes al fraude y otros riesgos de
contraparte.
Ya hay buena información en Internet sobre Ethereum y Solidity para desarrolladores
de software que buscan comenzar. Sin embargo, si ha leído estos documentos,
probablemente se haya quedado con más preguntas que respuestas. A continuación,
aclararemos alguna jerga.

Qué contratos inteligentes (realmente) hacen


Incluso en estas primeras páginas, es posible que haya encontrado algunos conceptos
muy nuevos. Pero hay un término que continuará apareciendo en Ethereum, y esa es la
noción de un contrato inteligente: alguna lógica de negocios que se ejecuta en la red,
mover valor de forma semiautónoma y hacer cumplir los acuerdos de pago entre las
partes.
Los contratos inteligentes a menudo se equiparán a las aplicaciones de software, pero
esto es una reductiva analogía; son más como el concepto de clases en orientado a
objetos convencionales programación. Cuando los desarrolladores hablan de "escribir
contratos inteligentes", suelen ser refiriéndose a la práctica de escribir código en el
lenguaje Solidity para ser ejecutado en la Red Ethereum. Cuando se ejecuta el código,
las unidades de valor se pueden transferir tan fácilmente como los datos. Como ya se
mencionó en este capítulo, la promesa del dinero digital es inmensa. Pero, ¿cómo
funciona, exactamente? ¿Cómo pueden los datos actuar como dinero en un sistema
descentralizado?
La respuesta a esa pregunta depende de qué tan técnico sea. Así que tomemos un
poco ejemplo en profundidad.

Objetos y métodos para el valor


En informática, un objeto suele ser una pequeña porción de información de datos
encapsulada en una estructura o formato particular. A menudo, estos datos tienen
instrucciones asociadas llamadas métodos que indican cómo se puede usar o acceder
al objeto. Ahora imaginemos que la información contenida en este objeto es valiosa
para alguien, y esta persona estaría dispuesta a pagar para activar un método que la
muestre.
En el ejemplo a continuación, imaginemos que un usuario quiere pagar una pequeña
tarifa para usar un pastel receta que descubrió en línea. Esta receta es el objeto de
datos en nuestro ejemplo. En el nivel más literal, las características del objeto pastel,
llamadas atributos, se almacenan junto con los métodos en una determinada dirección
en la memoria de la computadora.
El siguiente objeto representa los atributos de un pastel, y contiene un método por el
cual la computadora puede mostrar instrucciones sobre cómo combinar estos
ingredientes para hacer el pastel. Almacenar la información de esta manera hace que
sea fácil para el programa y el programador para intercambiar los atributos sin
necesidad de cambiar el código de las instrucciones de visualización. En otras palabras,
los objetos son fragmentos modulares de información que pueden combinarse y
recombinarse para adaptarse. Esto será importante de recordar en capítulos
posteriores cuando analicemos la anatomía de los bloques que componen la cadena de
bloques. En JavaScript, puede escribir un objeto de pastel de la siguiente manera:
var cake = {

firstIngredient: "milk",

secondIngredient: "eggs",

thirdIngredient: "cakemix",

bakeTime: 22

bakeTemp: 420

mixingInstructions: function()

{ return "Add " this.firstIngredient + " to " + this.secondIngredient +

" and stir with " + this.thirdIngredient + " and bake at " + bakeTemp +
" for " + bakeTime + " minutes." ;

};

Este es un ejemplo de cómo las computadoras "mueven" datos para mostrar


resultados útiles a sus usuarios humanos. En Ethereum, puede escribir funciones que
envían dinero, de la misma manera que el método de este pequeño objeto llamado
mixingInstructions, cuando se ejecuta, puede mostrar las instrucciones de mezcla de
un pastel.

Just Add Commerce (Solo Añadir Comercio)


Como verá en el Capítulo 4, el código de solidity se puede utilizar en el back-end de
una aplicación para agregar micro pagos, cuentas de usuario y funcionalidad incluso a
programas informáticos sencillos, sin la necesidad de bibliotecas de terceros o saber
programación avanzada.
Imagine por un momento que la función de mezcla de instrucciones cuesta unos
centavos en ether para ejecutarse. Después de deducir el precio de la receta de la torta
del saldo de la billetera Ethereum del usuario, que toma unos segundos, en promedio,
su contrato inteligente llamaría al método mixingInstructions y le mostraría al usuario
cómo hacer la torta. Todo esto se puede hacer sin autenticación, API de pago, cuentas,
tarjetas de crédito, formularios web extensos y todo el trabajo típico que implica la
creación de una aplicación de comercio electrónico. De hecho, toda su aplicación
JavaScript necesita interactuar con la cadena pública mundial de Ethereum, esa es la
biblioteca de software mencionada anteriormente, Web3.js.

Creación de contenido
Hasta ahora, en este capítulo, nos hemos centrado en los usos pecuniarios del ether,
pero el ejemplo de la receta del pastel muestra otra gran área de potencial para
Ethereum: propiedad intelectual, licencias y regalías de contenido. Hoy, vender
contenido en la Web o a través de aplicaciones significa lidiar con poderosos
distribuidores, incluidos Apple, Google y Amazon, que establecen reglas punitivas
sobre la venta de contenido digital y cobran grandes tarifas.
Ethereum hace posible facilitar las micro transacciones mediante las cuales un usuario
paga solo, por ejemplo, $ 0.25 por una receta, una cantidad que no sería práctico pagar
con redes de tarjetas de crédito cargadas. Hay desafíos para los creadores de contenido
que hacen negocios de esta manera hoy, incluida la volatilidad del precio del token
ether, pero como verá en los capítulos siguientes, estos problemas encontrarán una
solución a medida que la red madure.

¿Dónde están los datos?


Espera: si el protocolo de red proporciona tanta funcionalidad lista para usar, y este es
un sistema distribuido, ¿dónde se guardan los datos del usuario? Exactamente cómo
funciona la red Ethereum es el tema del siguiente capítulo, pero en el espíritu de
abordar preguntas molestas primero, aquí hay un resumen rápido de cómo se registran
las transacciones en Ethereum: todo está almacenado en cada nodo de la red.
Todas las transacciones en Ethereum se almacenan en el blockchain, una historia
canónica de cambios de estado almacenados en cada nodo de Ethereum.
Cuando paga por el tiempo de computación en la red Ethereum, esto incluye el costo
de ejecutar la transacción y para el almacenamiento de los datos incluidos en su
contrato inteligente. (Si su contrato se reduce después de la ejecución, recibirá un
reembolso parcial en forma de tarifa de transacción reducida.)
Tan pronto como ejecute su contrato inteligente y las tarifas se pagan desde su ether
equilibrio, esos datos se incluirán en el siguiente bloque. Debido a que la red Ethereum
requiere que todos los nodos conserven una base de datos completa de todos los
contratos, cualquier nodo puede consultar la base de datos localmente. Si esto suena
incasable, estás prestando buena atención. Las versiones 1.5 y 2.0 de Ethereum
definen una hoja de ruta que aborda este problema de escalabilidad.
Vamos a profundizar en cómo funciona la cadena de bloques de Ethereum en el
próximo capítulo.

¿Qué es minería?
Debido a que un sistema distribuido no tiene un único propietario, las máquinas son
libres de unirse a la red Ethereum a voluntad y comenzar a validar las transacciones.
Este proceso se conoce como minería. Pero, ¿para qué?
Los nodos mineros consultan para llegar a un consenso sobre el orden de las
transacciones en todo el sistema, lo cual es necesario para tabular los saldos de las
cuentas de todos sobre la marcha, incluso cuando muchas transacciones pasan a través
de la red. Este proceso consume electricidad, lo que cuesta dinero, por lo que a los
mineros se les paga una recompensa por cada bloque que extraigan: alrededor de 5
ether.

Precios de éter y electricidad


A los mineros se les paga este éter por la minería, y también por ejecutar secuencias de
comandos en la red (en forma de gas, que se explicará más adelante). El costo asociado
con el gasto de electricidad de los servidores que se ejecutan en la red Ethereum es
uno de los factores que le da a ether, como criptocomodidad, su valor intrínseco, es
decir, alguien pagó dinero real a su compañía eléctrica para operar su máquina minera.
Las plataformas de minería especializadas, que utilizan matrices de tarjetas gráficas
para aumentar sus probabilidades de completar un bloqueo y cobrar, pueden acumular
facturas de electricidad entre $ 100 y $ 300 por mes por máquina, según las tarifas en
su área.
La minería es fundamental tanto para Bitcoin como para Ethereum, y en principio
funciona de manera similar en ambas redes, con algunas advertencias. Ethereum
también ha revisado el paradigma aquí, especialmente alrededor de la emisión del
ether. Cómo funciona exactamente esto es el tema del Capítulo 5.

Entrando en el EVM
El objetivo de este libro es enseñar a los programadores y propietarios de productos
cómo se puede programar la máquina virtual Ethereum (EVM), el nombre del sistema
que se acaba de describir, y con qué fines. Está escrito de una manera que debería
tener sentido para los pensadores financieros y técnicos, de modo que los
desarrolladores y expertos en el dominio puedan llegar más fácilmente a un
entendimiento común de lo que deben construir juntos, y qué herramientas son
adecuadas para su proyecto. Pero primero necesitaremos dedicar algo de tiempo a los
conceptos básicos de usar y mantener el ether.
■ Nota: si no está seguro de lo que es una máquina virtual, no se preocupe; se pondrá
de manifiesto más tarde. Por ahora, puedes pensar que es una computadora que
comprende muchas otras computadoras.

El navegador Mist
En esta etapa, implementar aplicaciones sigue siendo difícil, pero hay formas de
prototipos de contratos inteligentes simplemente, con solo los scripts de Solidity. Para
hacer esto, usarás el navegador nativo Ethereum, apodado Niebla. Este navegador
también tiene tu ether. El Capítulo 2 cubre más sobre billeteras, navegadores,
herramientas de línea de comandos y exploradores de cadenas de bloques, pero
primero una nota sobre terminología.

Browser vs. Wallet or Keychain (Navegador vs. Monedero o Llavero)


Mist (Niebla) a veces se conoce como una billetera, un término tomado del lenguaje de
Bitcoin. ¿Por qué las aplicaciones de Bitcoin se llaman billeteras? No porque tengan tu
dinero, aunque las aplicaciones de billetera te permiten enviar y recibir pagos. Estas
aplicaciones, cuando están instaladas en su teléfono, reciben claves criptográficas que
le permiten leer y escribir datos en una base de datos descentralizada.
Entonces, aunque el llavero podría ser una mejor metáfora, el término que recibimos
es billetera.
Si quieres adelantar y echar un vistazo a Mist, encontrarás la descarga para Mac,
Windows y Linux en el proyecto Ethereum GitHub
https://github.com/Ethereum/mist/releases.
Con las herramientas de línea de comandos de Mist y Ethereum, los contratos de
muestra se pueden probar con ether falso para garantizar que no pierdas dinero real
durante la depuración. Y aunque hacer esto parece un poco primitivo si ha utilizado
entornos de desarrollo modernos, es un gran punto de partida para los estudiantes
menos técnicos, ya que los obliga a aprender sobre redes y sistemas informáticos de
bajo nivel solo para hacer una aplicación de demostración simple.

La solidity es algo así como JavaScript, pero ...


Escrita en el vacío, gran parte de Solidity es intuitiva para cualquiera que esté
familiarizado con JavaScript, Java o C. Aunque las aplicaciones de Ethereum no están
alojadas en ningún servidor, las agallas de una aplicación de Ethereum son una serie de
(relativamente) simples contratos de contratos inteligentes que se parecen a JavaScript.
Los crea localmente antes de desplegarlos para propagarlos por toda la red para
alojarlos de forma descentralizada. En este sentido, el desarrollo de Ethereum combina
redes, hosting de aplicaciones y bases de datos en uno.
Al igual que muchas nuevas tecnologías, la implementación de estos sistemas es un
desafío. Hablaremos sobre algunas formas de hacerlo más fácil. Pero después de crear
su primera aplicación mínimamente funcional, rápidamente llegará a la parte divertida:
imaginando qué nuevas aplicaciones y sistemas son posibles con sus nuevas
habilidades.

Para qué Ethereum es bueno


Ethereum es adecuado para construir sistemas económicos en software puro. En otras
palabras, es un software para la lógica empresarial, donde las personas (los usuarios)
pueden mover dinero (datos que representan el valor) con la velocidad y escala que
normalmente obtenemos con los datos. No es el período flotante de tres a siete días
que obtienes con el comercial sistema bancario. O las tarifas asociadas a proveedores
como Visa, MasterCard y PayPal. Con una simple aplicación de Ethereum, por ejemplo,
es bastante trivial pagarle a cientos de miles de personas, en cientos de países,
pequeñas cantidades cada pocos minutos, mientras que en el sistema bancario
tradicional necesitaría un departamento de nómina completo trabajando horas extras
para reequilibrar constantemente los libros contables de su cuenta y tratar con los
problemas transfronterizos.

"Sin ninguna posibilidad de tiempo de inactividad, censura o


interferencia de terceros"
Si no está familiarizado con el mundo del desarrollo de código abierto, entonces la
forma en que la base de código se gobierna aparecerá oscuro al principio. A pesar de
que el protocolo Ethereum fue escrito por un pequeño grupo de desarrolladores
principales, muchas clases de partes interesadas deben cooperar para cambiar la forma
en que funciona la red, ahora que está en funcionamiento. A medida que la red crece,
estos llamados tenedores duros serán menos factibles y menos necesarios, y por lo
tanto menos frecuentes. Recuerde, la red Ethereum aún no está completa. Está
operativo hoy, pero no estará completo hasta 2019. Los fondos para el desarrollo
continuo se otorgan a la fundación sin fines de lucro Ethereum Foundation.

"Una plataforma segura, gratuita y abierta para Internet de las cosas"


Las máquinas pueden ser los ejecutores de muchos contratos inteligentes, por lo que
se piensa. Digamos que entras en un vecindario en el que nunca has estado y pierdes la
señal de tu celular. Es posible que su teléfono "se alquile" automáticamente de una red
femtocell cercana en otra red y le pague una pequeña tarifa al enrutador, todo sin la
necesidad de pedirle permiso. El precio y la velocidad pueden ser variables en un
contrato inteligente creado por el enrutador, casi como un acuerdo de nivel de servicio
(SLA) que puede mover dinero cuando usted lo acepta.

"Permitir una gobernanza transparente para las comunidades y negocios


"
De acuerdo, este es complicado: las empresas transparentes son un resultado
probable. Pero las empresas autónomas descentralizadas (denominado
alternativamente DAO o DAC) probablemente estén muy lejos. El término utilizado en
este libro es en el que la industria parece estar asentándose: la organización
descentralizada o DO. El progreso en esta área es complicado. La gobernanza a través
de un instrumento criptográfico está sujeta a las mismas manipulaciones que han
plagado a las democracias durante siglos. ¿Es un voto una dirección de billetera?
Bueno, ¿quién recibe una dirección de billetera? Si una moneda es un voto, ¿gobiernan
los ricos? Esa conversación está fuera de los límites de este libro, pero cualquiera que
le venda sobre los conceptos de organizaciones completamente autónomas,
corporativas o gubernamentales, probablemente también tenga un puente en el que
pueda estar interesado.

"Maneja la autenticación de usuario y los pagos seguros para usted,


como, así como mensajería e incluso almacenamiento descentralizado "
Este será completamente cierto cuando Ethereum esté más avanzado en su hoja de
ruta. Usuario la autenticación y los pagos seguros se encuentran en la caja cuando se
conecta a la Ethereum blockchain, pero la comunicación entre pares y el
almacenamiento descentralizado (en sí mismo un segmento incipiente de las empresas
de software blockchain) están disponibles actualmente con integraciones de terceros.
Sin embargo, el mapa de ruta de Ethereum incluye estos elementos según lo planeado
bajo los nombres Swarm y Whisper. Ambos están actualmente disponibles en versiones
experimentales limitadas.

"No es necesario registrarse o pagar el host de la aplicación; el primero


del mundo plataforma de infraestructura cero "
Técnicamente cierto, pero el tiempo es dinero, y mientras discutimos el alojamiento y
la implementación, quedará claro que los términos mutuamente excluyentes y libres
podrían ser mutuamente exclusivos en este nuevo mundo del software.
Sin embargo, la mayor parte del poder de blockchain está en la creación de
aplicaciones que permiten a los usuarios realizar transacciones: comprar, vender,
licenciar, comercializar, transmitir, etc. Esto significa que las personas necesitan tener
algo de éter o una moneda nativa que pertenezca a su proyecto. La circulación y
disponibilidad de esa moneda nativa se llama liquidez. La alta liquidez también puede
generar precios más estables en una moneda y tiene efectos de red.
A menudo, los desarrolladores emprendedores intentarán arrancar sus monedas
circulación para lograr los beneficios de la liquidez. De hecho, el EVM y el ether
funcionan exactamente de esta manera. La Fundación Ethereum fue financiada por
crowdfunding por una suma de $ 18 millones en su lanzamiento en 2014. Las
contribuciones pagadas en bitcoins fueron devueltas en éter, y una comunidad nació.

Monedas Copycat
Las monedas alternativas son copias de Bitcoin que usan la base de código de Bitcoin.
Puede haber razones legítimas para comenzar una moneda alternativa; no siempre son
intentos de fuerza bruta para crear una base de usuarios.
Ethereum conserva muchos de los conceptos subyacentes de Bitcoin, pero puede
considerarse una red totalmente nueva, ya que sus componentes clave son diferentes.

Financiando su proyecto
El crowdfunding es una forma de que los emprendedores combatan el dolor y el gasto
de las pruebas beta en vivo y la recaudación de fondos, vendiendo acceso temprano a
un producto o servicio a posibles usuarios. En las criptomonedas, esto se llama
lanzamiento simbólico. Algunas compañías han adoptado el término oferta de
monedas inicial (ICO), porque suena como el término oferta pública inicial (IPO) del
término de Wall Street. Sin embargo, este término es engañoso, ya que los tokens no
siempre representan la equidad. Esto se aplica tanto al ether como a los bitcoins, que
no representan equidad en nada.
Si está pensando en recaudar dinero para financiar su proyecto Ethereum, no necesita
volar por la noche, los administradores de activos y ejecutivos se están despertando
rápidamente al poder de esta tecnología, y si está buscando empleo, inversión o
desarrollo comercial, está disponible (o lo estará pronto). Busque eventos locales de
Bitcoin o Ethereum en Meetup (www.meetup.com) para buscar otros entusiastas de la
criptografía y formar un equipo.

Decidir dónde encajas


Además de cubrir los aspectos técnicos de Ethereum, este libro presenta una gran
cantidad de información contextual que puede ayudarlo a decidir cómo la
programación de Solidity y las aplicaciones distribuidas deben encajar en su carrera.
Este libro también tiene como objetivo identificar nuevos vectores para el pensamiento
innovador sobre el software.
Un ejemplo es la longevidad. En servicios web heredados, el tiempo de actividad
depende de si los desarrolladores han pagado sus facturas de hosting y han mantenido
sus servidores. Como resultado, pocos las personas crean aplicaciones de software
destinadas a ejecutar comandos en, digamos, 30 años.
La red Ethereum es también una base de datos distribuida totalmente redundante, con
copias en cada nodo Eso significa que puede confiar en que su aplicación
desencadenará una llamada cuando se cumpla una determinada condición, incluso si
esa condición se produce durante décadas en el futuro, e incluso si todos los nodos han
cambiado.
La eliminación de las viejas limitaciones del software y la banca, y la introducción de
nuevos, son temas constantes en cada capítulo a continuación.

Una nota para los nuevos programadores


Saber cómo funcionan los sistemas monetarios, bancarios y de seguros existentes será
de enorme ventaja al imaginar aplicaciones para Ethereum. Si puede combinar eso con
algunos conocimientos técnicos, mucho mejor.
■ Nota: no tiene que preocuparse por las URL o las referencias de este libro.
Encontrará enlaces actualizados para todas las citas de este libro, indexados por
capítulo, en http://eth.guide.
Entonces, aunque no seas programador y no pretendas convertirte en uno, sigue a lo
largo de las secciones que discuten el código de todos modos. Te ayudará a
comprender los límites de lo que es posible. Y si decides aprender desde cero la
programación de Solidity, ya que nunca has programado, también puedes acceder a las
lecciones de este libro.
De alguna manera, aprender el desarrollo de Ethereum puede ser más fácil e intuitivo
que aprender el desarrollo web desde cero.

Ethereum es libre y de código abierto


Ethereum se puede bifurcar y replicar en otros sistemas que permanecen compatibles.
En el futuro, incluso es posible que las monedas se transfieran de una cadena a otra.
Aunque esto está lejos de ser un proceso sencillo, ya están surgiendo artículos
académicos sobre cómo se puede hacer.
Vale la pena señalar, para los lectores no programadores, que la fuente libre y abierta
no son sinónimos. El código abierto es una metodología para crear software; la libertad
es una construcción social. Según la Fundación GNU, "Cuando llamamos software libre,
queremos decir que respeta las libertades esenciales de los usuarios: la libertad de
ejecutarlo, estudiarlo y cambiarlo, y redistribuir copias con o sin cambios".

El EVM está aquí para quedarse


Como verán, Ethereum tiene una hoja de ruta ambiciosa y objetivos aún más
ambiciosos. Ya sea que se desarrolle como los planes centrales del equipo de
desarrollo, su contribución duradera al desarrollo de la cadena de bloques puede ser el
EVM. El lenguaje Solidity puede convertirse en uno de muchos que se compilan hasta
los bytecodes de EVM.
Solidity la misma sin duda crecerá y cambiará, y está lejos de ser perfecta o completa
en la actualidad. Pero nos permite construir y probar casos de uso para criptomonedas
ahora, de maneras que posiblemente pasarían más lentamente en la comunidad de
Bitcoin.
En resumen, Ethereum busca crear un sistema en el que se puedan probar y probar
modelos económicos. Por el momento, Solidity parece estar a punto de convertirse en
el lenguaje de facto de tales modelos, siempre que se ejecuten en una máquina virtual
global como el EVM.

Lo que puedes construir hoy


Basta hablar de potencial; ¿Qué es posible hoy? Mucho, pero vamos a romper cosas
dividido en dos categorías: privado y público. Hasta ahora, Ethereum ha sido descrito
ambos como una cadena de bloques pública única, y un protocolo para la creación de
muchas cadenas de bloques.
Comprender el potencial en diferentes dominios (y cómo se puede manifestar) es
principalmente una cuestión de entender cómo la cadena pública difiere de las
cadenas privadas de Ethereum, desplegadas por las corporaciones u otras
comunidades silo'd.

Cadenas privadas y públicas


Porque cualquiera puede bifurcar el proyecto Ethereum, es posible "hacer su propio
Ethereum "en lugar de construir en la cadena pública. Esto se llama blockchain privado,
y al igual que las monedas alternativas de Bitcoin, representa una duplicación de
esfuerzos por parte de la comunidad de desarrollo existente de Ethereum.
Como descubrirá al final de este libro, las cadenas privadas son generalmente terribles
forma de hacer las cosas para un producto o servicio de inicio, pero eso no ha detenido
a empresas de intentar lanzar uno. En lugar de reinventar la rueda, una mejor idea para
los emprendedores es construir sobre la cadena pública de Ethereum.
Como verá, la cadena pública tiene una gran cantidad de potencia informática dedicada
a su seguridad, lo que hace que sea bastante sencillo para las pequeñas empresas
lanzar servicios web seguros a gran escala. Sin embargo, el blockchain público de
Ethereum hoy es completamente público, y algunas corporaciones pueden optar por
mantener sus transacciones confidenciales en una cadena privada, que tiene un
puente hacia la cadena pública. En un contexto de software empresarial, donde los
accionistas corporativos tienen ciertos derechos y privilegios para leer y escribir en la
cadena de la compañía, la implementación se conoce como cadena de bloques
autorizada. Para las cadenas de bloques autorizadas, las direcciones de billetera suelen
ser emitidas por un tercero de confianza que verifica su permiso para ingresar al
sistema, del mismo modo que el pase de seguridad de un edificio de oficinas le permite
realizar transacciones dentro del edificio. Por la misma metáfora, la cadena pública se
consideraría un parque de la ciudad u otro espacio común.
La correlación positiva entre la escala de una cadena de bloques y su confiabilidad se
hará evidente en capítulos posteriores. Sin embargo, vamos a caminar a través de la
configuración de privado cadenas en el Capítulo 9 para obtener una mejor
comprensión de las similitudes entre blockchains y bases de datos.
En cadenas de Ethereum públicas o privadas, puede hacer lo siguiente:
• Enviar y recibir ether
• Escribir contratos inteligentes
• Crear aplicaciones probadamente justas
• Lanza tu propia ficha basada en ether
Cada uno se describe en las siguientes subsecciones.

Enviar y recibir éter


Puedes enviar y recibir un éter, aunque en una cadena privada tienes un éter privado
que es un vale sin valor. Cualquiera puede obtener una dirección pública de billetera de
Ethereum descargando la billetera Mist, que trataremos en el próximo capítulo.
Alternativamente, las aplicaciones de monedero móvil están disponibles en iOS App
Store y Google Play. Para intercambiar dólares por el éter, debe unirse a un intercambio
de criptomonedas o comprar un transmisor de dinero comercial como Coinbase. La
mayoría de la gente simplemente compra bitcoins (que están más ampliamente
disponibles en forma de ATM, y también a través de la red de distribuidores minoristas
de LocalBitcoins.com) y los convierte a ether a través de un intercambio o mediante un
servicio cryptomoney-changing como ShapeShift.io.

Escribir contratos inteligentes


Puede controlar pagos y transferencias entre cuentas (e incluso entre otros contratos)
incluso si tienen muchas contingencias, o se extienden en el futuro y a través de las
fronteras nacionales. El verdadero potencial aquí reside en lo imparable que es la
cadena pública, y eso depende de quién participe y de cuántos actores malos entren
en el sistema. Alternativamente, las cadenas privadas pueden permitir que los grupos
con recursos tengan la misma funcionalidad, solo de forma privada.

Crea aplicaciones convenientemente justas


Crear aplicaciones probadamente justas es especialmente importante para los juegos y
los juegos de azar. Espere que los videojuegos y los juegos de realidad virtual presenten
puntos que representen real dinero y se puede gastar en el mundo real.

Lanza tu propio token


En términos prácticos, rodar su propio token es algo así como hacer girar un sistema de
cuentas de usuario. Con un contrato token de Ethereum, puede crear una subcurrencia
para usarla en un libro mayor de transacciones privadas, accesible solo para usted y su
grupo privado, pero que utiliza la cadena pública de todas las otras maneras: renuncia
a la necesidad de bifurcar o mantener su propia red de transacciones, máquinas de
minería. Esto es conveniente y un enfoque superior para la mayoría de los
desarrolladores y organizaciones. La dinámica de tokens y cadenas será más clara en
los Capítulos 5 y 9.

La promesa de bases de datos descentralizadas


Como todas las bases de datos, un blockchain tiene un esquema: las reglas definen,
restringen y hacen cumplir relaciones entre entidades. Las motivaciones para romper o
alterar estas relaciones se pueden encontrar en todas las industrias, llevando al
soborno y la corrupción, y haciendo que las cualidades sin confianza de blockchain
sean aún más atractivas para las empresas que las generaciones anteriores de software
y redes. En todas las bases de datos, el acceso compartido de lectura / escritura crea
una enorme complejidad. Las máquinas de todo el mundo pueden experimentar una
latencia variable, dependiendo de dónde se encuentra físicamente la base de datos, lo
que hace que algunas operaciones de escritura lleguen fuera de servicio. Esto se vuelve
aún más difícil si se supone que varias partes comparten una base de datos por igual;
por ejemplo, varias compañías que forman un grupo comercial de la industria. Esto ha
hecho extremadamente costoso para las grandes organizaciones habilitar el estado
compartido de lectura / escritura con otras organizaciones, y hoy en día, la filtración de
información del cliente es muy común. Hoy en día, los departamentos corporativos de
TI han encontrado la forma de asegurarse de que estos sistemas funcionen según lo
planeado. Pero a medida que aumentan, la oportunidad de malversación se vuelve
demasiado grande para que algunos malos actores la ignoren.

Qué sigue: nuevas formas de trabajar


En septiembre de 2016, miles de empleados del banco Wells Fargo fueron despedidos
por manipular las bases de datos de las cuentas para generar números de venta y
activar bonificaciones para recompensar a los vendedores que abren nuevas cuentas.
El costo de esos errores de juicio será enorme, al igual que el costo de construcción
software que de alguna manera puede evitar que los administradores realicen cambios
erróneos. Ethereum representa una nueva oportunidad para que las empresas y los
consumidores interactúen en un entorno más confiable que la capa de datos de la
aplicación que se ha creado hoy en la web HTTP.

Resumen
En este capítulo, aprendió que Ethereum ofrece otro enfoque para la creación de
software, uno en el que la seguridad y la confianza se preparan a nivel de protocolo.
Esto puede tener un impacto global sustancial. A medida que el mundo digitaliza, los
sistemas a gran escala se vuelven cada vez más críticos para todo tipo de
organizaciones, no solo en banca y seguros, sino también en servicios municipales,
comercio minorista, logística, distribución de contenido, periodismo, fabricación de
indumentaria y cualquier otra industria que tiene procedencia o pagos en juego. A
continuación, tendrá manos a mano con Ethereum creando claves para acceder a la
cadena de bloques de Ethereum a través de programas conocidos como clientes. El
siguiente capítulo cubre el uso de las aplicaciones cliente de Ethereum para Windows,
macOS, Linux, iOS y Android.

CAPITULO 2
El navegador Mist
En el ámbito del software de criptomonedas, hay generalmente dos tipos
esenciales de aplicaciones de cliente: billeteras y nodos completos
■ Nota: Wallet generalmente denota un nodo liviano que se conecta a una cadena de
bloques para realizar funciones básicas, como enviar y recibir criptomonedas. Los
nodos completos son interfaces de línea de comandos que pueden realizar la gama
completa de operaciones permitidas por la red.
Como vimos en el último capítulo, Ethereum puede referirse tanto al protocolo de
Ethereum como a la red Ethereum creada por computadoras que usan el protocolo.
Operar un nodo en la red le permite cargar contratos inteligentes. Para enviar y recibir
criptomonedas (en nuestro caso, ether), todo lo que necesita es una aplicación de
billetera para su computadora o teléfono inteligente.
Ethereum tiene varias aplicaciones de clientes que se analizan en este libro. El más útil
(para la mayoría de los lectores) es el navegador Mist, una billetera fácil de usar que
puede realizar algunas de las funciones de un nodo completo, es decir, la ejecución de
contratos inteligentes.
Eventualmente, se podrán acceder a programas enteros de tipo aplicación web a través
de Mist, con sus backend construidos en Ethereum; es por eso que se llama navegador.
No te dejes engañar por la simplicidad de Mist. Hoy en día, es útil para enviar y recibir
la criptomoneda de ether.
Pero mañana, también puede ser un punto de distribución para aplicaciones de
software para consumidores y empresas, casi como una App Store.
■ Nota El término moneda, como en criptomoneda, se refiere a una unidad de valor
fungible para el sistema, muy similar a un token o scrip. Lo que exactamente
representan estos pequeños tokens se aclarará más adelante en este capítulo. El
término fungible, aplicado a una moneda, significa "mutuamente intercambiable". En
términos de moneda fiduciaria, se puede decir que un dólar es fungible por otro dólar.
En este capítulo, aprenderá cómo acceder a la red mediante el uso de Mist y otras
aplicaciones, a fin de comprender los conceptos básicos de envío y recepción de tokens
de ether entre cuentas. Los capítulos siguientes desglosan cómo funciona el sistema y
cómo programar contratos inteligentes para él.

Billeteras como una metáfora informática


Las billeteras son aplicaciones de software para computadoras de escritorio o
dispositivos móviles que tienen sus llaves a la EVM. Estas claves corresponden a una
cuenta, a la que hace referencia un largo dirección de la cuenta en Ethereum, las
cuentas no almacenan su nombre ni ninguna otra información personal. Ellos son
pseudónimos. Cualquiera puede generar una cuenta Ethereum conectándose a la red
con cualquier cliente Ethereum (como Mist). Puede generar tantos como desee.
Si ya descargó una billetera Ethereum o un nodo completo en su computadora o
teléfono, probablemente se le solicitó que creara una cuenta. La aplicación de billetera
probablemente también le pida que cree una contraseña para proteger sus claves con
encriptación. Como puedes deducir, estas claves son una parte importante del envío y
recepción del éter.
Comencemos mirando la dirección de su cuenta, también llamada clave pública. Tu
clave pública tiene una clave privada coincidente que permite el acceso a su cuenta.
Esta clave privada debe mantenerse en secreto y no debe publicarse en ninguna parte.
Las cuentas en Bitcoin y Ethereum están representadas por largos hexadecimales
direcciones. Una dirección Ethereum se ve así:
0xB38AA74527aD855054DC17f4324FE9b4004C720C
En el protocolo de Bitcoin, la dirección hexadecimal bruta está codificada en la base 58
con un número de versión incorporado y suma de comprobación, pero por debajo
parece una dirección de Ethereum. Aquí hay un ejemplo de una dirección de Bitcoin:
1GDCKfdTo4yNDd9tEM4JsL8DnTVDw552Sy
Para recibir ether o bitcoins, debe darle su dirección al remitente, que es la razón por la
cual se llama clave pública. Por supuesto, estas cadenas no son memorables. Si eres
nuevo en la programación, te estarás preguntando qué está pasando aquí; ¿por qué el
lío alfanumérico difícil de manejar? Los programadores experimentados ya pueden
saber que estas claves públicas y privadas son parte de la criptografía de clave
asimétrica.

Tu dirección es ¿Qué?
¿Por qué las direcciones de cuenta, que deben ser públicas, y que algunas personas
incluso incluyen en sus sitios web, consisten en cadenas largas y crípticas? ¿Por qué no
podemos simplemente tener nombres de usuario?
La respuesta es que algún día muy pronto probablemente pueda generar nombres de
usuario en inglés, pero hoy funcionarán más como nombres de dominio de primer
nivel. Alquilarás un nombre de un registrador de red descentralizado y se
redireccionará a la dirección de tu cuenta real, del mismo modo que los dominios de
alto nivel redireccionan a direcciones IP en la actualidad.
Se están preparando muchos planes para la red Ethereum que eventualmente replicar
las sutilezas de la Web HTTP de hoy en día tal como la conocemos. Para obtener más
información sobre la hoja de ruta de Ethereum, vaya al Capítulo 11.
■ Nota Una cuenta es un objeto de datos: una entrada en el libro mayor de blockchain,
indexada por su dirección, que contiene datos sobre el estado de esa cuenta, como su
saldo. Una dirección es una clave pública que pertenece a un usuario particular; es
cómo los usuarios acceden a sus cuentas. En la práctica, la dirección es técnicamente el
hash de una clave pública, no la clave pública en sí, pero para simplificar, es mejor
ignorar esta distinción.
En el EVM, la red utiliza la criptografía asimétrica para generar y reconocer direcciones
válidas de Ethereum, y también para "firmar digitalmente" transacciones. En las
comunicaciones seguras, la criptografía asimétrica se utiliza para cifrar las
comunicaciones privadas, por lo que incluso si son interceptadas por los enemigos,
permanecen ilegibles. En blockchain el principio funciona igual; es un método para
garantizar que los mensajes (en forma de solicitudes de transacción EVM) provengan
del titular de la dirección real y no de un intruso que intente secuestrar sus fondos.

¿Dónde está mi ether?


Es importante tener en cuenta que el ether no está contenido en ninguna máquina o
aplicación en particular. Su balance de ether puede ser consultado y enviado o recibido
por cualquier computadora con un nodo o billetera Ethereum. Incluso si la
computadora donde vive tu billetera Mist se destruye, no temas: todo lo que necesitas
es tu llave privada, y voila, puedes acceder a tu ether desde otro nodo.
Sin embargo, si entrega sus llaves privadas a otra persona, esa persona puede acceder
el EVM y saca tu dinero sin que lo sepas. En cuanto a la red es preocupado, cualquiera
con tu clave privada eres tú.
Como el EVM es una máquina global, no tiene forma de saber qué nodo usará crear
una transacción desde. A diferencia de las aplicaciones web actuales, Ethereum no
busca un Computadora "confiable"; no conoce su teléfono desde ningún otro teléfono.
Si esto parece inusual, piense en ello como un sistema ATM bancario, que proporciona
acceso a la cuenta para cualquier persona que tenga su número de tarjeta de débito y
su pin de cuatro dígitos.
Como se mencionó en el Capítulo 1, perder su teléfono o computadora por robo o
destrucción no significa que pierda su dinero, siempre que lo siguiente sea cierto:
Ha hecho una copia de seguridad de su clave privada.
No le diste tu clave privada a nadie más.
Hacer una copia de seguridad de una clave privada es tan simple como copiarla y
pegarla en un archivo de texto, y guardándolo en una memoria USB. O escribirlo en
papel. Encontrará más métodos de copia de seguridad de clave privada más adelante
en este capítulo.

La metáfora del cajero bancario


En cierto modo, usar una billetera o un nodo completo es como ponerse detrás del
escritorio del banco y tener el control de su propio dinero. No en el sentido de que
puede obtener efectivo en papel, sino en el sentido de que un cajero de un banco
controla un nodo dentro del sistema informático del banco que puede ejecutar
transacciones en una base de datos global de transacciones. Un cajero controla la base
de datos del banco, que se conecta a otras bases de datos bancarias.
En la banca convencional, por extensión, un cheque en papel es una instrucción escrita
para el cajero de banco para realizar una transacción utilizando el sistema informático
del banco. En el cheque está su número de cuenta y un número de ruta. (Hablaremos
más sobre el sistema bancario convencional en el próximo capítulo).
Por ahora, solo es importante señalar que los edificios están llenos de gente (más
recursos informáticos) son necesarios para tomar su verificación en papel, convertirla
en un transacción, envíe la transacción a otra parte y luego actualice los saldos de
ambas partes. En criptomoneda, este sistema bancario heredado -una mezcolanza de
procesos humanos y computacionales- se obvia por completo con el uso de un motor
de consenso algorítmico que se ejecuta en una red informática de igual a igual. La
liquidación y compensación de las transacciones se realiza en la red en cuestión de
segundos (o, con bitcoin, minutos) de la transacción que se firma digitalmente y se
transmite por un nodo. Por lo tanto, se puede decir en una transacción de
criptomoneda que "el acuerdo es el intercambio".

En criptomoneda, tienes tus propios activos


Las criptomonedas son diferentes de las monedas fiduciarias utilizadas por los bancos
convencionales, que están centralizadas. Sus tokens son virtuales, y su balance (junto
con el de todos los demás que tienen ether) está tabulado por la red blockchain. No
existe una moneda tangible de ether o bitcoin, aunque algunos terceros han creado
monedas "coleccionables" precargadas con criptomoneda.
Tenga mucho cuidado con cualquier servicio u organización en línea que ofrezca
almacenar, almacenar, o actuar como custodio de ether, bitcoins o cualquier otra
criptomoneda. La ventaja de sistemas públicos distribuidos es eliminar las
contrapartidas de las transacciones, y permitir entidades para realizar transacciones en
una base de igual a igual. El punto es que puedes mantener estos activos de forma
segura, sin un custodio.
Habiendo dicho eso, vivimos en un mundo de monedas fiduciarias. Incluso si las
criptomonedas son de hecho el futuro (y como verán en este libro, hay una gran
evidencia de que son) tal vez varios años o más servirá como un período de transición,
en el que las personas tienen una cartera de criptomonedas y una cuenta bancaria
tradicional.

Para resumir: no use ninguna billetera o servicio en línea que contenga sus llaves
privadas para ti. Solo use aplicaciones que almacenan sus claves privadas en su
dispositivo. Más adelante en este capítulo, encontrará recomendaciones para billeteras
de escritorio y móviles. Volvamos a explicar el propósito de Mist como su primera
puerta de entrada al EVM.

Visualizando transacciones de Ethereum


La mejor forma para que los nuevos programadores de Ethereum visualicen el
concepto de cadena de bloques es imaginar un libro mayor de transacciones en papel
que se pueda sincronizar con otros libros mayores de transacciones en papel de todo el
mundo.
Cuando una aplicación de billetera intenta hacer un cambio en la base de datos, el
cambio es detectado por el nodo Ethereum más cercano, que luego propaga el cambio
alrededor de la red. Finalmente, todas las transacciones se registran en cada libro.
En abstracto, esto funciona algo así como la máquina de polígrafo patentada por John
Isaac Hawkins en 1803. Esta fue la primera "copiadora", aunque su nombre hoy en día
se usa para referirse a los llamados dispositivos de detección de mentiras. Esta
máquina duplicadora, famosa por Thomas Jefferson como la mejor invención de su
época, se muestra en la Figura 2-1. Al igual que el polígrafo, el blockchain es un aparato
que permite que muchas "máquinas" cambien el estado de un ledger de la misma
manera, casi simultáneamente.
Figura 2-1. La máquina de polígrafo es similar a la cadena de bloques en principio:
muchas máquinas trabajan en concierto para escribir datos similares a bases de datos
locales similares. En Bitcoin y Ethereum, la innovación tecnológica radica en el hecho
de que estos cambios de estado pueden estar fuera de servicio, debido a la latencia de
la red, y la red puede reconciliarlos en un solo libro de contabilidad.
Como se mencionó anteriormente, su dirección a veces se llama su clave pública, pero
una metáfora mejor sería una caja de seguridad con un número de serie único. La clave
privada es la única cosa en todo este sistema que tiene un nombre sensato:
desbloquea su cuenta y le permite mover el ether.
¿Qué es el ether, exactamente? Es simplemente un saldo en su cuenta. Cuando envía y
recibe cualquiera, en realidad no se envía ni recibe nada.
En el EVM, cuando una cuenta aumenta, el sistema se asegura de que sea porque otra
cuenta ha enviado un pago y, por lo tanto, ha disminuido la misma cantidad. Es un
sistema cerrado. Es prácticamente imposible darse ether gratis, o al menos no valdría
la pena los costos en los que incurrirías al intentar falsificar el libro mayor. Ethereum
usa incentivos financieros y desincentivos para la seguridad, como verá en el Capítulo
7.

Rompiendo con la historia bancaria


Una de las facetas más interesantes del protocolo de Ethereum es su esquema de
emisión, que se discutirá más adelante. Por ahora, solo es importante señalar que
(como con Bitcoin) ningún individuo tiene el poder de crear más ether. Esta
característica está en marcado contraste con los últimos 400 años de los mercados
financieros y los banqueros centrales, que se asemeja a una historia de estafadores a
gran escala.
Desde los días de la bolsa de trabajo de fines del siglo XVII en el Callejón de
Intercambio de Londres, los empresarios y estafadores (entonces llamados proyectores
de acciones) han estado vendiendo acciones en emprendimientos tanto legítimos
como no. A menudo, secretamente emitían nuevas acciones para ellos y sus cómplices
cuando subiría el precio, conocido por los estadounidenses en el siglo 19 como regar el
ganado.
Con el tiempo, especular sobre las existencias se convirtió en un pasatiempo que
personas de todas las edades y antecedentes disfrutados en ambos lados del Atlántico,
y los mercados de valores modernos nacieron, con sus procesos y contrapartes para
actuar como intermediarios que aseguran transacciones confiables. Pero incluso con
las regulaciones bancarias aprobadas después de la Gran Depresión, los empresarios
deshonestos todavía encontraron formas de dividir las reservas de acciones secretas, o
descargar las acciones que tenían sin que el público lo supiera, solo para permitir que
la empresa colapsara después de sacar su dinero.
Pocas veces en la historia moderna las burbujas especulativas han eliminado tanta
riqueza y el progreso humano como la caída de 1929 en los Estados Unidos. Sin
embargo, similares episodios depresivos en los Estados Unidos y Europa (incluido el
pánico de 1873-1879) fueron causados por alguien, ya sea los bancos centrales o los
propios inversores, jugando con la cantidad básica de dinero, acciones o bonos en un
gran mercado.

Cómo la encriptación conduce a la confianza

El Capítulo 1 superó rápidamente cualquier discusión real de la criptografía, y se centró


en cambio en el impacto de las cripto redes. Pero, hay algo extraño acerca de una red
segura compuesta por un montón de computadoras de extraños trabajando en
concierto. ¿Cómo es que una sola manzana podrida no puede hackear la red y robar el
éter de todos? Para responder esa pregunta, primero recuerda que un blockchain usa
las siguientes metodologías:
Criptografía asimétrica
Hashing criptográfico
Computación distribuida punto a punto
Dediquemos un tiempo a hablar brevemente sobre el primer elemento de esta lista: la
criptografía asimétrica, que a veces se denomina criptografía de clave pública. Un
desvío rápido aquí nos ayudará a entender mejor cómo una red pública puede ser
segura. Nos ocuparemos de los otros dos elementos en el Capítulo 6.
La criptografía asimétrica es un método para enviar y recibir mensajes seguros a través
de una red, donde el remitente y el destinatario no confían en el canal de
comunicación. En el caso del EVM, esos mensajes son transacciones, se firman y se
envían a la red para cambiar el estado de algunas de sus cuentas. Se llama "asimétrica"
porque cada parte tiene un par de dos claves diferentes, pero matemáticamente
relacionadas.
La criptografía de clave pública se desarrolló para las comunicaciones en tiempo de
guerra, y cuando se usa correctamente, puede ser extremadamente segura. A
diferencia de las claves criptográficas de clave simétrica, las comunicaciones
criptográficas de clave pública no requieren un canal seguro entre las partes.
Esto es esencial en Bitcoin y Ethereum, ya que cualquier computadora que ejecute el
protocolo puede unirse a la red, sin ninguna verificación. Sin embargo, la complejidad
computacional involucrada en el cifrado de datos lo hace útil solo para objetos de
datos pequeños, como la cadena alfanumérica que se convierte en su clave privada.
Esta es la razón por la que el cifrado debe usarse con moderación.
En un nivel alto, se puede decir que Ethereum usa el cifrado para validar y verificar que
todos y cada uno de los cambios realizados en los saldos de las cuentas en el EVM son
legítimos, y que ninguna cuenta ha sido aumentada (o disminuida) erróneamente.
Si eres nuevo en ciencias de la computación, el mismo mecanismo de cifrado puede ser
confuso. Por el momento, aquí hay algunas definiciones que ayudarán a avanzar:
Cifrado simétrico: un proceso por el cual un fragmento de llanura el texto,
generalmente contenido en un documento, se rompe junto con una cadena de datos
más corta llamada una clave para producir un texto cifrado salida. Esta salida puede ser
revertida o descifrada por el Parte que lo recibe, siempre y cuando también tengan esa
misma llave. Intentar decodificar el mensaje sin la clave ser, computacionalmente
hablando, inmensamente lento y caro, tanto que algunos tipos de encriptación se
consideran prácticamente irrompibles, incluso con enormes recursos informáticos.
Encriptación asimétrica: esta forma de encriptar información requiere que el programa
emita dos claves simultáneamente, una eso es público y uno que mantienes en
privado. El público La clave es pública en el sentido de que puede listarla en su web
sitio o perfil social, como una dirección de correo electrónico. (Cuando comunicándose,
las partes pueden usar claves públicas de otro para cifra la información, como se
describe a continuación).
Mensajería segura: en nuestro primer ejemplo, Alice usa el público de Bob clave para
cifrar un mensaje. Cuando recibe el texto cifrado, él puede descifrarlo usando su clave
privada correspondiente, asegurando que solo Bob puede leer el mensaje. Esto se
llama seguro mensajería. Pero deja una posibilidad peligrosa abierta: cualquiera podría
enviarle un mensaje a Bob diciendo que es Alice. ¿Cómo él ¿Sabes que Alice es el
verdadero remitente del mensaje?
Mensajería segura y firmada: si Alice quería asegurarle a Bob que ella es la verdadera
remitente, que haría las cosas de manera diferente. Primero, tomaría su mensaje de
texto plano y lo encriptaría usando su clave privada. Luego, ella lo encriptaría
nuevamente usando Clave pública de Bob Cuando Bob recibe el mensaje, descifra
primero usando su clave privada, pero aún le queda texto cifrado. Él debe descifrarlo
nuevamente usando la clave pública de Alice. Esta segunda capa de encriptación le
asegura que Alice es de hecho la remitente, porque presumiblemente, nadie tiene la
clave privada de Alicia pero Alice. Esto se conoce como mensajería "segura y firmada".
Si Alice fuera a encriptar solo su texto plano usando su propio clave privada, entonces
cualquier persona con su clave pública podría descifrarlo. Esto se conoce como un
"formato de mensaje abierto" porque, aunque demuestra la identidad del remitente,
puede ser descifrado por nadie.
Firma digital: para una seguridad máxima, Alice tomaría otro paso: ella debería decir el
texto claro de su mensaje, y adjuntarlo junto con el mensaje. Ella luego encriptaría este
paquete con su propia clave privada, y de nuevo con Bob Llave pública. Cuando Bob
recibe y descifra el texto cifrado puede ejecutar el mensaje de texto sin formato de
Alice a través del mismo hashing Algoritmo que Alicia usó. Si por alguna razón la huella
dactilar del mensaje resulta diferente, entonces significa el real el texto del mensaje
fue dañado o alterado en el camino.
Como apreciará más en el Capítulo 6, que cubre la minería, el método por el cual las
transacciones individuales que se transmiten al EVM son similares a la descripción de la
firma digital anterior, donde los contenidos de la transacción se codifican y codifican
antes de ser transmitidos a sus pares. Ahora que puede apreciar la seguridad de la red
de Ethereum, vayamos a las tachuelas de bronce de la instalación de Mist.

Requisitos del sistema

La mayoría de los usuarios optarán por el navegador Mist, pero esta sección enumera
otras herramientas que los desarrolladores pueden encontrar igual de interesantes.
Mist hace que sea fácil enviar y recibir ether. También contiene una interfaz para
ejecutar contratos inteligentes rápida y fácilmente. Hablaremos más sobre cómo
ejecutar contratos en Mist en el Capítulo 4.
Mist funciona bien en una computadora moderna con al menos 2 GB de RAM y 30 GB
de espacio libre en el disco duro. Para máquinas de bajo rendimiento, prueba la
extensión MetaMask Chrome. Se describe más adelante en esta sección.
Encontrarás la última versión de Mist en el sitio del proyecto Ethereum GitHub ( https://
github.com/ethereum/).

Más sobre Eth.guide y este libro


Debido a que Ethereum es un proyecto nuevo y de rápido movimiento, algunos de los
enlaces de proyectos y documentación pueden cambiar después de la publicación de
este libro. Por esta razón, los enlaces y referencias que se necesitan comúnmente para
este libro también se incluyen en http://eth.guide y se actualizan regularmente con
material nuevo. Del mismo modo, todos los enlaces a pie de página se indexan en esta
página por capítulo y se actualizan cuando cambian.
Para que el sitio sea más útil como referencia, se han creado subdominios para temas
populares. Verá estos accesos directos mencionados a lo largo del texto.
El sitio Eth.guide está vinculado al proyecto GitHub para el libro en sí, así que lo hará
también encuentre los proyectos de código de muestra de este libro en la misma URL.
La URL completa para el proyecto GitHub para este libro es
https://github.com/chrisdannen/Introducing-Ethereum-y-Solidez.
Si eres un lector no técnico que solo busca comenzar con lo básico, sigue adelante y
salte a la sección titulada "¡Finalmente, en la niebla!" Desarrolladores, siga leyendo
para ver otras herramientas para examinar en esta etapa de su viaje Ethereum.

Herramientas para Desarrolladores


Los desarrolladores querrán consultar estas tres herramientas además de Mist:
• Extensión de MetaMask Chrome (útil para todos)
• Geth (útil para desarrolladores intermedios)
• Parity (útil para desarrolladores avanzados)
La extensión de Chrome MetaMask es la forma más sencilla de comenzar a usar
Ethereum. Te permite ejecutar contratos y transacciones inteligentes directamente en
tu navegador sin necesidad de un nodo Ethereum completo. MetaMask tiene el poder
de crear cuentas y enviar y recibir ether. Puede descargar MetaMask desde el menú
Complementos de Google Chrome, o navegando hasta la URL del proyecto en
https://metamask.io/.
Para su conveniencia, MetaMask no descarga toda la cadena de bloques para tu
computadora; ni puede extraer transacciones y ganar ether. Sin embargo, estos son
menores inconvenientes para los usuarios que solo desean comenzar a utilizar
Ethereum rápidamente.
MetaMask fue construido por Aaron Davis (a.k.a Kumavis) de ConsenSys, una compañía
de desarrollo y consultoría de Ethereum cuyas herramientas gratuitas encontrará con
frecuencia en este naciente espacio de blockchain Ethereum. ConsenSys es una
empresa de consultoría y estudio de riesgo de Ethereum con capacidad para 60
personas en Brooklyn, NY, dirigida por el cofundador del proyecto Ethereum, Joseph
Lubin.
MetaMask fue financiado en parte por subvenciones de desarrollo (DEVgrants) de la
Fundación Ethereum. Estas subvenciones están abiertas a cualquier persona que
trabaje en un proyecto Ethereum, y no requieren que el creador del proyecto renuncie
a ninguna equidad. Para obtener más información sobre DEVgrants, visite el canal
Gitter del programa en https://gitter.im/devgrants/public o siga su identificador de
Twitter @devgrants.

Nodos CLI
Si ya sabe que quiere comenzar el desarrollo con Solidity, descargue un nodo de línea
de comando completo. Los nodos de la interfaz de línea de comandos (CLI) más
populares para la red Ethereum están escritos en Go y C ++, y se llaman Geth y Eth.
(alternativamente, go-ethereum y cpp-ethereum).
■■ Nota Debido a que hay muchos clientes de Ethereum para varios sistemas
operativos, este libro usa el entorno de desarrollo más sencillo: Ubuntu 14.04 con
Geth. Los usuarios de Mac o Windows pueden intentar instalar una máquina virtual
como VirtualBox que pueda ejecutar una instancia de Ubuntu.
Los desarrolladores avanzados también pueden emparejar Geth con Parity, un cliente
Ethereum súper rápido escrito en el lenguaje de programación Rust. En el Capítulo 6
hablaremos sobre los comandos básicos de Geth.

Recomendado: usar la parity con Geth


Ethcore.io es una empresa privada de desarrollo Ethereum compuesta por algunos ex
contribuyentes al proyecto Ethereum, incluido Gavin Wood, otro cofundador del
proyecto Ethereum, que creó el lenguaje Solidity y es autor del Papel amarillo de
Ethereum.
Él y su equipo han creado un nodo poderoso escrito en el lenguaje de programación
Rust. Parity funciona en macOS, Windows, Ubuntu y en una instancia de Docker. Puede
obtener más información visitando el proyecto GitHub en
https://github.com/ethcore/parity.
■ Nota Si planea usar una billetera Mist a través de su nodo Parity, necesitará Inicie
manualmente Parity antes de abrir Mist. De lo contrario, Mist se conectará a través de
su propio nodo. Debajo del capó, el navegador Mist ejecuta un nodo Geth.

¡Finalmente, en Mist!
Ahora que tiene una mejor idea de lo que hace un cliente de Ethereum, pongamos uno
en su computadora. El navegador Mist es compatible con las computadoras Linux,
macOS y Windows con arquitecturas de 32 y 64 bits. Si no sabe si su computadora es
de 32 o 64 bits, consulte el perfil de hardware de su sistema. La mayoría de los
sistemas más nuevos son de 64 bits.

Descargando e Instalando Mist


Primero, descargue Mist desde https://github.com/ethereum/mist/releases, como se
muestra en la Figura 2-2.
Figura 2-2. Desde el proyecto Ethereum en GitHub, haga clic para descargar el
ejecutable para su sistema operativo, o descargue el código fuente para compilarlo
usted mismo
Encontrará este enlace de descarga entre las descargas de otros clientes en:
http://clients.eth.guide
En Windows, haga doble clic en el ejecutable que descarga. En macOS, abre la imagen
de disco que descarga y arrastre la billetera Ethereum a su carpeta de Aplicaciones. En
Ubuntu, descargue el paquete Debian o descomprima el archivo zip y ábralo para
instalarlo.
■ Nota: no es posible ni ventajoso ejecutar más de un nodo a la vez. Si por Por
ejemplo, si intentas abrir Geth mientras Mist ya se está ejecutando, obtendrás un error
que te indicará que un nodo ya está operativo en tu máquina.

Configurando Mist
Después de descargar y abrir el instalador, verá una pantalla de bienvenida como la de
la Figura 2-3. (¡Hay algunas de esas grandes promesas del Capítulo 1!)
Configurando la Mist
Después de descargar y abrir el instalador, verá una pantalla de bienvenida como la de
la Figura 2-3. (¡Hay algunas de esas grandes promesas del Capítulo 1!)
Aquí se le preguntará a qué cadena o red desea conectarse. En esta etapa, no importa
cuál elijas; podrás cambiar de red más tarde. Pero para nuestros propósitos, hagámosle
una verdadera dirección de billetera: haga clic en Usar la red principal.
Observe la parte inferior de la ventana, que indica la descarga de bloques. Esta la
aplicación ejecuta un nodo completo en la red Ethereum; eso significa que guarda su
propia copia de la cadena de bloques, que primero debe descargar antes de que pueda
tener lugar cualquier acción real. Esto llevará mucho tiempo, porque la cadena de
bloques contiene un registro de cada transacción en la cadena Ethereum.
A continuación, verá la pantalla que se muestra en la Figura 2-4, que puede omitir, a
menos que haya participado en el crowdsale de Ethereum en 2014. En ese caso, siga
estas instrucciones para canjear su ether.
Después de elegir su contraseña, como se ve en la Figura 2-5 (y anotarla o
memorizarla), verá un mensaje que requiere alguna explicación.
Figura 2-5. Luego, elige una contraseña
■ Nota No existe la función Olvidé mi contraseña en la red de Ethereum. Eso es porque
su contraseña es solo para esta instancia local de la billetera Mist; no está guardado en
la cadena de bloques de Ethereum. De hecho, su clave privada es todo lo que necesita
para volver a crear esta cuenta en cualquier otra computadora que ejecute Mist. La
contraseña que creas simplemente te protege de un intruso sentado en tu
computadora y gastando tu dinero a través de la interfaz de Mist. No impide que nadie
robe sus claves privadas del sistema de archivos de su computadora, si no se protege.
Tome precauciones, como el cambio de la función Inicio de sesión automático al inicio
en su Mac, Linux o PC con Windows.
En la pantalla siguiente, que se muestra en la Figura 2-6, obtendrá su primera visión de
la dirección de su etherbase, que es como la dirección Ur para esta máquina, siempre
que este nodo y sus datos estén intactos. Si elimina la aplicación Mist y sus datos de la
biblioteca del sistema, se eliminará este par de claves públicas y privadas (su
etherbase). Es por eso que es necesario hacer una copia de seguridad de sus cuentas,
que veremos al final de este capítulo.
Figura 2-6. Aquí puedes ver la nueva dirección. También puede depositar bitcoins para
convertirse en ether mediante la API Shapeshift.io.
Finalmente, verá la pantalla en la Figura 2-7, ya que la cadena de bloques se sincroniza
con su computadora.
Si hace clic en Iniciar aplicación, se cargará la interfaz Mist. No te angusties si tu nueva
cuenta no aparece aún. Aparecerá cuando el nodo esté completamente sincronizado.

Figura 2-7. Esto tomará un rato. Su nueva cuenta aparecerá cuando esté lista.
Encontrar su nueva dirección
Puede crear más direcciones, pero todas existirán bajo la égida de esta dirección
etherbase, lo que facilita la copia de seguridad.
Si hace clic en las siguientes pantallas, se dará cuenta de que son solo factores que
matan el tiempo para que pueda aprender más sobre Ethereum mientras se descarga
el blockchain. Si tiene curiosidad, haga clic en cualquiera de los ejemplos en estas
pantallas para ver el código del contrato.

Enviando y recibiendo ether


Enviar éter requiere primero sostener algo de éter. En la red principal, los tokens
cuestan dinero o se pueden extraer. Sin embargo, esta es una forma difícil de comenzar
para la mayoría de los principiantes de Ethereum.
Seguimos adelante y creamos una cuenta en la red principal, por si acaso interesado en
mantener verdadero ether por valor especulativo, o si ya tiene amigos y colegas que lo
usan para pagos. Para la mayoría de los lectores, usar el ether de prueba (que puedes
generar gratis en el testnet, llamado Ropsten) es mejor que pagar dinero por el éter
real para usar en la red principal. Las instrucciones para conectarse a Ropsten se
presentan en el Capítulo 5.
Por ahora, vale la pena describir cómo se envía y recibe el éter, sin pasar por los
movimientos, porque ayudará a aclarar la forma en que funciona el sistema
subyacente. Ether se envía a través del cuadro de diálogo Enviar, que se muestra en la
Figura 2-8.
Figura 2-8. El cuadro de diálogo Enviar en Mist facilita enviar, recibir y verificar balances
de ether sin utilizar una interfaz de línea de comandos.
Para enviar ether, siga estos pasos:
1. En la vida real, solicite al destinatario su dirección de Ethereum.
2. Abra Mist. Haga clic en Enviar en la barra superior de la billetera Mist. Se abre el
cuadro de diálogo Enviar.
3. Elija de qué billetera le gustaría enviar,
4. Pegue en la dirección del destinatario.
5. Ingrese la cantidad.
6. Haga clic en Enviar.
Verá dos opciones más que puede alternar: un campo de datos para ingresar texto
adicional (por ejemplo, un número de orden o nota de agradecimiento) y una barra
deslizadora para elegir una tarifa de transacción. El propósito de las tarifas de
transacción será más claro en el Capítulo 6. Por ahora, deje el control deslizante en la
posición predeterminada y sus transacciones se procesarán bien.
■ Nota Para fines prácticos, al enviar ether, su billetera Mist debe estar completamente
sincronizado. Eso significa que es posible que tenga que esperar un tiempo para que
Mist descargue blockchain antes de poder estar seguro de que sus transacciones se
procesarán sin error. Como verá más adelante, esto no es técnicamente necesario; los
nodos recientemente fuera de línea son de hecho capaces de iniciar transacciones,
pero solo si el usuario crea la transacción en la línea de comando, con información
actualizada sobre la cuenta en uso.
Para recibir ether, su nodo no tiene que estar sincronizado. Si desea verificar su saldo,
puede hacer clic con seguridad en Iniciar aplicación y omitir la sincronización proceso
cuando se inicia Mist.

Comprender los tipos de cuenta de Ethereum


Los usuarios interactúan con el blockchain Ethereum a través de cuentas. En la jerga
Ethereum, las cuentas creadas y utilizadas por humanos se denominan cuentas de
propiedad externa. Esto está en contraste con las cuentas de contrato, como en una
dirección que está ocupada por un contrato inteligente.
■ Nota Las cuentas externas no siempre están controladas por humanos. A veces están
controlados por puntos finales de confianza en otro lugar. El punto es que son externos
al EVM.
Si esta distinción es confusa, recuerde que los contratos pueden tomar medidas en
lugar de personas en la red de Ethereum. Puede enviar valor (ether) a las personas o
puede enviarlo a un contrato inteligente, lo que tomará algunas medidas automáticas.
Por ejemplo, un contrato de remesas puede tomar el depósito del remitente, dividirlo
en tres y enviar las cantidades a tres familiares humanos diferentes. De esta forma, los
contratos pueden actuar en lugar de los humanos para automatizar tareas dentro de
una organización descentralizada o para mediar transacciones entre individuos que de
otra manera necesitarían una contraparte.
■ Nota Tanto las cuentas de contrato como las cuentas externas son objetos de estado.
Las cuentas de contrato tienen estado de saldo de cuenta y almacenamiento de
contrato; las cuentas externas solo tienen estado de saldo. Sin embargo, es importante
notar que actualmente hay una propuesta de desarrollo bajo revisión por parte de la
comunidad de desarrollo de Ethereum para una mayor abstracción en el EVM. Su
intención es abstraer la dualidad que tenemos hoy convirtiendo todas las cuentas en
contratos inteligentes ellos mismos. De esta manera, los usuarios son libres de definir
su propio modelo de seguridad.
Para revisar algunos de los conceptos básicos:
• Se emite un par de claves cuando registra una nueva cuenta.
• Puede registrarse para tantas cuentas como desee.
• Crear una cuenta (un par de claves) puede ser hecha por cualquier Ethereum nodo
(incluso cuando no está conectado).
• No hay una lista maestra de pares de claves o cuentas en ninguna parte de la Tierra.
• Los números de cuenta no están asociados con usted, su identidad o tu
computadora.
• Puede acceder a la red de Ethereum con su clave privada de cualquier computadora
con un nodo Ethereum.

Copia de seguridad y restauración de sus llaves


Mientras esté en el navegador Mist, y después de que Mist haya completado la
sincronización con la cadena de bloques, vaya al menú Archivo de su sistema operativo
y seleccione el menú Cuentas, luego Copia de seguridad de cuentas. Esto abre una
carpeta. Dentro de esta carpeta hay archivos de texto que tienen nombres largos con la
fecha de creación, como UTC - 2016-09-01 (...) Cada uno de estos archivos de texto
claro representa una cuenta.
Haga una copia de seguridad de esta carpeta del almacén de claves comprimiéndola y
colocándola en un lugar seguro, como Llave USB o disco duro encriptado Si abre uno de
estos archivos de texto, encontrará su par de claves públicas y privadas, formateado en
una cierta notación.
Para restablecer una cuenta en un nodo diferente al que se creó, simplemente ubique
la carpeta keystore por el mismo método descrito anteriormente. En lugar de duplicar
los archivos que ya están allí, restaurar una cuenta de Ethereum en Mist simplemente
implica copiar un archivo de texto que contiene una clave privada dentro de la carpeta
del almacén de claves y reiniciar Mist. Para obtener un tutorial completo, visite
http://backup.eth.guide y http://restore.eth.guide.
Si desea buscar la carpeta del almacén de claves en su disco duro a través del terminal,
generalmente se encuentra en los siguientes directorios:
• Mac: ~/Library/Ethereum/keystore
• Linux: ~/.ethereum/keystore
• Windows: %APPDATA%/Ethereum/keystore
El proceso anterior respaldará solo sus cuentas normales. Los contratos de Wallet son
retenido en la carpeta de datos, entonces (una vez que hayas hecho los ejercicios en
capítulos posteriores) haz una copia de seguridad de eso:
• Mac: ~/Library/Application Support/Mist/
• Linux: ~/.config/Mist or, in earlier versions, ~/.config/
Chromium/Mist (folder is hidden)
• Windows: C:\Users\< Your Username >\AppData\Roaming or
~\AppData\Roaming\Ethereum\keystore
Cada vez que crees una nueva cuenta en Mist, asegúrate de tomar el archivo de clave y
realizar una copia de seguridad.

Uso de carteras de papel


Es posible que haya detectado en la sección anterior que un nodo Ethereum no
necesita estar en línea para crear una cuenta. Esto tiene que ver con la forma en que la
red Ethereum genera direcciones; puede crear un par de claves nuevo y válido con
posibilidades cercanas a cero de que el par de claves ya exista.
Esta característica del sistema permite que la mayoría de las aplicaciones web no
puedan ofertar: una cuenta "en papel". Sitios como MyEtherWallet
(www.myetherwallet.com) permiten usuarios para crear un par de claves directamente
en el navegador, almacenadas localmente en la máquina. Este sitio también facilita la
impresión de su par de llaves en papel, para su custodia.
Esto se llama billetera de papel porque contiene un código de respuesta rápida (QR),
permitiendo a las personas hacer depósitos en su cuenta de Ethereum simplemente
colocando el código QR en la hoja de papel. En teoría, podría ir recogiendo pagos de
Ethereum de esta manera, pero tendría que poner esa clave privada en una instancia
de Mist (u otro cliente) para acceder a ese éter y enviarlo a cualquier otro lugar.

Uso de carteras móviles


Cada vez son más las aplicaciones de monedero móvil para iOS y Android que
almacenan claves privadas en el dispositivo móvil. El más popular y confiable hasta la
fecha es Jaxx, que se muestra en la Figura 2-9, que está hecho por una compañía de
software canadiense llamada Decentral. Su software se ejecuta en Mac, Linux,
Windows e incluso algunas otras plataformas, incluidas Firefox y Chrome. Decentral es
operado por el cofundador del proyecto Ethereum, Anthony Di Iorio.
Figura 2-9. Jaxx es probablemente la mejor opción para las aplicaciones de billetera
que se ejecutan en iOS y Android. Tiene bitcoins, ether y una selección de otras
cryptocurrencies.
El diseño de la interfaz básica que se ve en la Figura 2-9 se ha convertido en una
interfaz de usuario bastante estándar en las aplicaciones de billetera. Los usuarios
reciben sus direcciones de billetera y pueden ver esas mismas direcciones como
códigos QR. Los códigos QR facilitan el envío de ethers o bitcoins en persona, del
mismo modo que Snapchat utiliza códigos QR para permitir que los usuarios se sigan
unos a otros simplemente colocando el código del otro usuario. Aquí encontrará una
lista de aplicaciones de billetera confiables: http://wallets.eth.guide.
Antes de seguir adelante, vale la pena mencionar que la comprensión de los códigos
QR es todo lo que se necesita para participar en la criptoeconomía. Para enviar a
alguien ethers o bitcoins con una billetera móvil, haga clic en Enviar, escanee el código
QR de la otra parte (o pegue su clave pública) e ingrese un monto. Ellos recibirán su
éter en segundos.

Trabajando con mensajes y transacciones


En ambos Ethereum, las transacciones se utilizan para referirse a los cambios de estado
en el distribuido base de datos (es decir, en el blockchain). Las transacciones cambian
los saldos de las cuentas dentro de EVM. Los mensajes son objetos de datos que pasan
de ida y vuelta a través de la red entre los contratos inteligentes, y no necesariamente
dan lugar a cambios en la cadena. Por ejemplo, si un contrato verifica el saldo de otro.

Estado de cambio de transacciones


Una transacción en Ethereum se refiere a una pieza de datos con una firma
criptográfica, que va en el blockchain, y así se registra en cada nodo en la red. Cada
transacción activa un mensaje para lograr este cambio de estado, pero los mensajes
también se envían por código EVM. Estos mensajes son privados para las partes y no
están representados en la cadena de bloques.

Editando una base de datos global


Una razón por la cual las redes blockchain como Ethereum son promocionadas como
inmutables es que una vez que una transacción se escribe en la base de datos global
compartida, no puede ser revertida por ninguna otra transacción. En la terminología
moderna de pagos, esto se conoce como un sistema sin contracargos.
Una devolución de cargo en los canales de pago de América del Norte se define como
la devolución forzada de fondos a un titular de cuenta, iniciado por el banco emisor del
instrumento. Porque Ethereum no tiene una autoridad emisora central, no hay nadie a
quien recurrir si falla la clave una transacción. En la actualidad, la única forma de
revertir una transacción es con un tenedor estatal, que requiere que todos los nodos
de la red acepten revertir manualmente una transacción. Esto es un escenario
extremadamente difícil e improbable reservado para ataques de toda la red de una
forma u otra.

El motivo de este modelo de transacción es la seguridad. Comparar el envío de


criptomonedas de una cuenta a otra, al proceso de escribir un cheque de papel
convencional. En el último ejemplo, su banco recibe noticias de la transacción saliente
desde su cuenta. El banco primero verifica su saldo para ver si tiene los fondos para
pagar el monto que endosó en el cheque; si no lo hace, el banco del depositante no
aumenta la cuenta de depósito. En cambio, se le aplica una tarifa por escribir un
cheque sin fondos. Las transacciones en la red Ethereum funcionan de manera similar.
El sistema asegura que el monto saliente de una cuenta siempre se agrega a la cuenta
de destino.
Si por algunos motivos por los que no se puede acceder a la cuenta de destino,
digamos porque la firma criptográfica no es válida, entonces la cuenta de origen no
tiene su saldo decrementado y, por lo tanto, los fondos no se pierden. En Ethereum, las
transacciones generadas externamente siempre se firman criptográficamente con las
claves del remitente y del destinatario, lo que facilita que los malos actores no puedan
crear transacciones, y no se puede perder dinero solo por una dirección incorrecta.

Entonces, ¿Qué es un Blockchain?


Hasta ahora, hemos evitado cuidadosamente desglosar el concepto de bloques y nos
hemos centrado en cómo se inician las transacciones. A continuación, analizaremos
cómo la red borra y liquida esas transacciones. Un bloqueo es una unidad de tiempo
que abarca una cierta cantidad de transacciones, del mismo modo que un latido del
corazón es un período de tiempo en el que una cierta cantidad de sangre se mueve a
través del cuerpo de un animal. Dentro de ese período, se registran los datos de la
transacción; cuando la unidad de tiempo transcurre, comienza el siguiente bloque. El
blockchain representa el historial de cambios de estado dentro de la base de datos de
red del EVM. Para citar los documentos de Ethereum:
Los bloques en el blockchain representan unidades de tiempo; el blockchain en sí
mismo es una dimensión temporal y representa toda la historia de los estados en los
puntos de tiempo discretos designados por los bloques en la cadena.
Los contratos inteligentes pueden cargarse en la red en un bloque determinado, pero
puede que no En realidad, envíe cualquier mensaje o transacción hasta un bloque
mucho más tarde.

Pagar por transacciones


Cuando un ser humano envía una transacción, el EVM requiere una pequeña tarifa
para procesar la transacción. Esto funciona de manera similar para la carga de
contratos inteligentes: los usuarios deben pagar el esfuerzo computacional que gastará
el EVM ejecutando cada contrato. Al forzar a los usuarios a pagar por las transacciones
en el EVM, la probabilidad de que se ejecuten programas innecesarios e innecesarios
se reduce teóricamente. Estos costos tienen un precio en una unidad llamada gas.
Puedes pensar en el gas como una métrica que indica el número de pasos que tendrá
el EVM para llevar a completar las instrucciones en la transacción. Si se trata de una
instancia simple de una persona que envía dinero a otra, la tarifa de transacción será
barata, ya que esto requiere un pequeño número de pasos computacionales. Sin
embargo, en el caso de un contrato inteligente complejo, la tarifa será mayor, porque el
EVM tiene que usar sus recursos globales para ejecutar el código de solidity en el
contrato y averiguar qué transacciones ejecutar luego como resultado.
Los remitentes de transacciones deben incluir un límite de gas que indique cuánto
están dispuesto a pagar para que se ejecute su transacción. Nodos completos en la red
que están extrayendo, o asegurando la red para pagar, proporcionan el hardware para
estas muchas transacciones que se recopilarán, validarán, compensarán, liquidarán y
almacenarán dentro de la cadena de bloques, por lo que recibirán las tarifas de
transacción que paga un usuario cuando envía correo electrónico a un amigo o ejecuta
un contrato inteligente. Los mineros que ejecutan la transacción cobran la tarifa, por lo
que está en juego un proceso de mercado implícito. Si una transacción se ejecuta o no
se determina por la cantidad de gas que el emisor está dispuesto a pagar. Si el número
total de pasos excede el gas presupuestado para una transacción, se revierten todos los
pasos y no se ejecuta ninguna parte de la transacción. Si un usuario envía una
transacción con una tarifa de transacción muy baja, se procesará solo después de un
tiempo, o no se procesará.
Por contexto, es verdad que cada operación cuesta cierta cantidad de gasolina; la
mayoría de las operaciones cuestan 1 unidad de gas. Una transacción compleja puede
costar cientos de unidades de gas. Sin embargo, en términos de dólares, esto suma
muy poco.

Entender las denominaciones


Al igual que las monedas fiduciarias, los saldos de éter y los valores tienen
denominaciones estandarizadas para unidades pequeñas. Todos los balances de ether
están típicamente denominados en ether, y los residuos están denominados en wei.
Por ejemplo, 10.234 éter = 10,234,000,000,000,000,000 wei.
Si piensas en el éter como dólares, somos como monedas de diez centavos, monedas
de veinticinco centavos, centavos y monedas de cinco centavos.
La Tabla 2-1 detalla las denominaciones wei.
Tabla 2-1. Denominaciones de éter En la columna Unidad a la izquierda, las
denominaciones de bitcoin equivalentes se proporcionan entre paréntesis
Puede encontrar una herramienta de conversión de denominación de éter en
http://ether.fund/tool/converter.

Obteniendo Ether
La forma más fácil de obtener éter es convertir bitcoins dentro de la billetera Mist,
como se describió anteriormente en este capítulo. Puede ganar ether extrayendolo,
pero como se mencionó anteriormente, esto requiere una configuración inicial; no
puedes extraer desde dentro de Mist, a menos que esté en el testnet. (Esto tiene que
ver con la manera en que se prueban y ejecutan los contratos inteligentes en la red,
como verá en el Capítulo 5).
Si desea comprar un ether con moneda fiduciaria, como dólares estadounidenses,
debe hacerlo en un intercambio o con un transmisor de dinero con licencia. Para ver
una tabla de plataformas en línea que venden éter, vea http://vendors.eth.guide.
Testnet ether es gratuito, como se indicó anteriormente en este capítulo. Instrucciones
para obtener el ether de prueba de un "faucet" están en el Capítulo 5, con más detalles
sobre la creación de transacciones.

Anonimato en Criptomonedas
Bitcoins y ethers no son instrumentos de pago anónimos. Cualquiera que conozca tu
clave pública puede mirar en la cadena de bloques y ver las fechas y cantidades de las
transacciones que entran y salen de su cuenta. A partir de estos datos, podrían armar
un conjunto de transacciones de las cuales pudieran deducir sus actividades. Las
autoridades federales ya están usando transacciones de aprendizaje automático para
decodificar los patrones de gasto en sitios oscuros como AlphaBay.
El anonimato, el secreto y la privacidad en la criptomonedas suelen combinarse entre
los novatos, a veces con fines desastrosos. Las direcciones de Bitcoin y Ethereum son
seudónimas por naturaleza; no están vinculados a tu nombre o información real. Pero
cada transacción que envíe es pública, en el sentido de que cualquiera puede ver la
transacción en la cadena de bloques. Esta es la razón por la cual las cadenas de bloques
públicas son promocionadas por su transparencia; si conoce la clave pública de alguien,
puede buscar todas sus transacciones.
Los datos dentro de los contratos inteligentes están codificados, pero no cifrados. La
encriptación se usa solo para analizar grandes conjuntos de datos y verificar los
remitentes y los destinatarios de las transacciones. Sin embargo, puede encriptar los
datos usted mismo antes de incluirlos en un contrato inteligente de Ethereum, si desea
utilizar las cadenas públicas de Ethereum de manera privada.
Como verá más adelante, cada transacción de Ethereum deja espacio para una carga
adicional de texto con la etiqueta Datos de entrada. No tengas la tentación de guardar
cosas secretas aquí para su custodia a menos que planees encriptarlas. Incluso
entonces, generalmente es una mala idea almacenar cadenas como contraseñas o
números de identificación de cuenta en la cadena de bloques de Ethereum porque es
pública y nunca se puede eliminar. Cualquiera puede explorar una cadena de bloques
como Ethereum usando una aplicación accesible a través de la web conocida como
explorador de blockchain.

Exploradores de Blockchain
Al igual que con Bitcoin, cada transacción dentro y fuera del EVM se registra
públicamente. La transacción que se muestra en la Figura 2-10 es típica de la cadena de
bloques de Ethereum. Al hacer clic en la dirección del remitente o del destinatario,
puede ver las transacciones para esa dirección desde que se creó. Esta captura de
pantalla es de Etherscan (https://etherscan.io), pero cualquiera puede hacer un
explorador de blockchain para la cadena pública de Ethereum.
■ Nota Los exploradores de cadenas de bloques le muestran un registro histórico de
todas las transacciones en la red y le permiten agrupar un historial de transacciones.
¡No es necesario registrar manualmente los detalles de su transacción!
Como puede ver en la Figura 2-10, las transacciones tienen bastantes atributos.
Hablaremos más sobre lo que significan estos campos en el Capítulo 3, pero por ahora
esto es lo más importante: el envío y recepción del éter es privado para los
participantes y para todos los que lo digan, porque las claves públicas son seudónimas
por naturaleza, pero estas transacciones no son estrictamente secretas, en el sentido
de que todas las transacciones son públicamente visibles en la cadena de bloques. Es
fácil rastrear el salto de dinero de una cuenta a otra.
Figura 2-10. Todas las transacciones ether y bitcoin son públicas. Algunos usuarios
evitan tener su clave pública vinculada a su identidad creando una nueva cuenta para
cada transacción. Otros usan la misma clave pública durante años y la publicitan como
un conducto para donaciones o contribuciones de un tipo u otro.

Resumen
Hasta ahora nos hemos movido rápidamente. En este capítulo, aprendió más sobre
billeteras y clientes de Ethereum. Si comenzó a sincronizar su instancia de Mist
mientras estaba leyendo este capítulo, ¡probablemente ni siquiera haya terminado!
Mientras tanto, preparémonos para implementar un contrato inteligente.
Aunque no necesitará acceder a una máquina Ubuntu para el próximo capítulo, Vale la
pena alinearse para los Capítulos 4, 5, 8 y 9. Mientras tanto, pasar al siguiente capítulo,
donde aprenderás cómo funciona la Máquina Virtual Ethereum.

CAPÍTULO 3
El EVM
La máquina virtual Ethereum (EVM) es una aplicación mundial
computadora que cualquiera puede usar, por una pequeña tarifa,
pagadero en éter
El EVM es una única "computadora" global de 256 bits en la que todas las
transacciones son locales en cada nodo de la red y se ejecutan en sincronía relativa. Es
una máquina virtual accesible a nivel mundial, compuesta de muchas computadoras
más pequeñas.
Esta computadora gigante, a la que cualquier persona que tenga un nodo o aplicación
de monedero puede acceder, hace que sea sencillo mover cantidades arbitrariamente
grandes de valor (dinero) casi instantáneamente. Aunque cualquiera puede usar esta
máquina virtual global, nadie puede crear dinero falso en su interior ni mover fondos
sin permiso.
Si parece un desperdicio tener todo el EVM, todos esos nodos, replicando el mismo
transacciones y mantener servilmente el mismo estado entre miles de individuos
computadoras, es importante tener una base adecuada para comparar cómo funcionan
las TI de servicios financieros en la actualidad. ¡El EVM es un ejemplo de simplicidad y
eficiencia en comparación! Más importante aún, todo ese trabajo no es en vano. De
hecho, como verá en este capítulo, es la evidencia de este trabajo lo que realmente
protege la red.

La Red del Banco Central de ayer


En la actualidad, las empresas, las aseguradoras, las universidades y otras grandes
instituciones gastan cantidades increíbles de dinero en la creación y mantenimiento de
servicios de software y TI para sus propios empleados y todas sus líneas de negocio.
Sus diversos flujos de entrada y salida son conciliados por los grandes bancos
comerciales, que tienen su propia arquitectura, política, base de código, bases de datos
y capas de infraestructura. Esto, por supuesto, está en la cima del Fedwire, que es el
sistema de liquidación bruta en tiempo real de la Reserva Federal, o RTGS.
La Reserva Federal es el banco central de los Estados Unidos. El Fedwire es utilizado
por todos los bancos miembros de la Reserva Federal para liquidar los pagos finales en
dólares estadounidenses. Cualquier banco habilitado por el estado puede convertirse
en miembro del sistema comprando acciones en él. Fedwire es propiedad y está
operado por los 12 bancos de la Reserva Federal, y aunque cobra tarifas, no se opera
con fines de lucro.
Este sistema procesa cantidades inimaginables de dólares estadounidenses todos los
días, trillones y billones. También tiene algunas características excelentes: hay un
sistema de sobregiro que cubre todas las cuentas existentes y aprobadas, y el sistema
es famoso por su fiabilidad, incluso para las remesas en el extranjero. Ha estado en
funcionamiento de una forma u otra durante aproximadamente 100 años.
Como se puede imaginar, mantener la seguridad y confiabilidad del software Fedwire
es extremadamente costoso. Sin embargo, el costo de construir y mantener capas
sobre un RTGS es aún mayor, debido a sus requisitos de seguridad. En última instancia,
estos costos se transfieren a las empresas que usan bancos comerciales, en forma de
tarifas. Esas compañías tienen sus propios costos de infraestructura de TI. En conjunto,
estos costos en última instancia aumentan los precios y las tarifas para los
consumidores.

¿Qué son las máquinas virtuales, exactamente?


Si no estaba familiarizado con las máquinas virtuales al principio de este libro,
probablemente ya haya comprendido que una máquina virtual (VM), en el contexto de
Ethereum, es una computadora global gigante compuesta de nodos constituyentes,
que también son computadoras.
En términos generales, una máquina virtual es una emulación de un sistema
informático por otro sistema informático. Estas emulaciones se basan en las mismas
arquitecturas de computadora que el objetivo de su emulación, pero por lo general
reproducen esa arquitectura en hardware diferente de lo que podría haber sido
diseñado. Las máquinas virtuales se pueden crear con hardware, software o ambos. En
el caso de Ethereum, son ambos. En lugar de conectar de manera segura miles de
máquinas discretas, como con Fedwire, Ethereum tiene el enfoque de operar de
manera segura una máquina muy grande que puede abarcar toda la Tierra.
Como verá en la larga lista de clientes de Ethereum para varios sistemas operativos, el
EVM es una emulación colectiva que se ejecuta en miles de máquinas que, en un nivel
individual: puede ejecutar cualquiera de las docenas de versiones de Windows, Linux,
ethOS y macOS (más sobre ethOS en el Capítulo 6).
El papel del protocolo de Ethereum en la banca
Está más allá del alcance de este libro postular si los sistemas basados en blockchain
son apropiados para ser utilizados por los bancos centrales soberanos o son de hecho
los que reemplazan. Es mucho más probable que los propios bancos centrales adopten
la tecnología. Los bancos comerciales están ciertamente interesados; Encontrará más
información sobre los bancos y empresas involucradas en el desarrollo de Ethereum en
el Capítulo 11.
El sistema Fedwire es un sistema de liquidación con una experiencia de usuario
adaptada a bancos declarados por el estado y sus operadores. Poco o nada preocupa al
usuario final de un banco minorista, por ejemplo; ese es el trabajo del banco minorista.
Los desarrolladores de software reconocerán a Fedwire como una "plataforma para
bancos". Lo que el banco elige construir sobre Fedwire (la experiencia del cliente, las
herramientas de banca en línea, las sucursales físicas, los productos financieros, las
ventas cruzadas). es lo que lo distingue de otros bancos en el sistema Fedwire.

Cualquiera puede hacer una plataforma bancaria


Ethereum es mucho más generalizado. Permite a cualquier persona activar una red con
una seguridad o confiabilidad tan buena o mejor que Fedwire, y con la capacidad de
realizar transferencias seguras de valor casi al instante. Pero esto es solo donde
comienza Ethereum. Los desarrolladores pueden construir cualquier tipo de producto
financiero o lógica comercial que deseen sobre este libro de contabilidad seguro, con
scripts automatizados e inmutables, y sin tener que pagar los gastos generales que les
impone la tradicional infraestructura centralizada de banca y alojamiento.
Pero, ¿se adapta a la velocidad y tamaño de un sistema como Fedwire? La respuesta es,
sí, puede, pero esto llevará varios años. No hay límite directo o fijo ni para tamaños de
transacción o tamaño de bloque. En Bitcoin, el tamaño del bloque está limitado a 1
MB, lo que da como resultado aproximadamente 7 transacciones por segundo. En
Ethereum estos límites aumentan y disminuyen de acuerdo con la demanda y la
capacidad de la red.
Sin embargo, esto no significa que los bloques pueden ser de tamaño ilimitado.
Recuerde que las unidades de trabajo en la red Ethereum tienen un precio en gas. Por
lo tanto, los contratos inteligentes más grandes y complejos cuestan más gas para
almacenar y ejecutar. La cantidad máxima de gas que se puede gastar por bloque es
variable, pero hay un máximo. Teóricamente, una transacción grande podría consumir
todo el límite de gas de un solo bloque. Pero si existe una demanda continua de
mayores límites de gas, el sistema aumentará el límite de gas por bloque en
incrementos de 0.09 por ciento. (Para obtener más detalles sobre cómo funciona esto,
consulte el Papel amarillo de Ethereum, ecuaciones 40-42). Al momento de escribir
esto, el límite de gas es 4.041.325 de gas por bloque.
¿Qué significa esto para la industria de servicios financieros? Ciertamente, no fatalidad,
pero tal vez una competencia inesperada. El impacto podría ser una separación de los
servicios bancarios en marcas cada vez más pequeñas a medida que la cadena pública
Ethereum escala y es capaz de procesar más transacciones, más rápido y más rápido.
Laura Shin, autora y presentadora del podcast centrado en blockchain Unchained,
entrevistó a Adam Ludwin de la cadena de inicio de San Francisco blockchain en 2016 y
escribió esto:
En cuanto a quién posee la red, en el sistema actual, si vas a Chase a deposita $ 50 en
efectivo, Chase retiene ese dinero, que fue emitido por el Reserve, en su red. Pero
Ludwin dijo que podrías imaginar, en lugar de bancos que ejecutan la red, Fedwire, el
sistema actual para electrónicamente liquidación de pagos entre bancos miembros,
siendo reconstruido en un blockchain para el cual los bancos tienen claves para realizar
transferencias.
Eso podría llevar a que las instituciones no financieras sean custodias de tales
monedas. "Con cantidades suficientemente pequeñas, no necesitas un banco", dijo
Ludwin. "Podría Google, podría Apple, podría Facebook ser pequeña
cantidades de efectivo digital? ¿Eso cambia el modelo de quién es un custodio?
es o podría ser? Y la respuesta es sí ". También podría abrir más avenidas
para préstamos de igual a igual, reduciendo la dependencia de los consumidores en los
bancos para préstamos.