Mastering Bitcoin
11. Cadenas Alternativas, Monedas y Aplicaciones » Cadenas Alternativas No Monetarias » Ethereum
Página 87 de 98
Cadenas Alternativas No Monetarias
Las cadenas alternativas son implementaciones alternativas del patrón de diseño de la cadena de bloques, que no se utilizan principalmente como moneda. Muchas incluyen una moneda, pero la moneda se utiliza como ficha para la asignación de alguna otra cosa, como un recurso o un contrato.
La moneda, en otras palabras, no es el punto principal de la plataforma; es una característica secundaria.
Namecoin
Namecoin fue la primera bifurcación del código bitcoin. Namecoin es un registro clave-valor descentralizado y una plataforma de transferencia que usa una cadena de bloques. Es compatible con un registro de nombre de dominio mundial similar al sistema de registro de nombres de dominio en Internet. Namecoin se utiliza actualmente como una alternativa al servicio de nombres de dominio (DNS) para el dominio de nivel raíz .bit. Namecoin también se puede utilizar para registrar nombres y pares clave-valor en otros espacios de nombres; para almacenar cosas como direcciones de correo electrónico, claves de cifrado, certificados SSL, firmas de archivos, sistemas de votación, certificados de acciones; y una multitud de otras aplicaciones.
El sistema Namecoin incluye la moneda Namecoin (símbolo NMC), que se utiliza para pagar las comisiones de transacción para el registro y la transferencia de nombres. A los precios actuales, la comisión de registrar un nombre es de 0,01 NMC o aproximadamente 1 centavo de dólar. Al igual que en bitcoin, las comisiones son recogidas por los mineros namecoin.
Los parámetros básicos de Namecoin son los mismos que en bitcoin:
Generación de bloque: 10 minutos.
Moneda total: 21 millones de NMC hacia 2140.
Algoritmo de consenso: Prueba de trabajo SHA256.
Capitalización de mercado: $10 millones a mediados de 2014.
Los espacios de nombres de Namecoin no están restringidos, y cualquier persona puede utilizar cualquier espacio de nombres de cualquier manera. Sin embargo, ciertos espacios de nombres tienen acordado una especificación para que cuando se lean desde la cadena de bloques, el software de nivel de aplicación sepa leer y proceder desde allí. Si está mal formado, entonces cualquier software que haya utilizado para leer desde el espacio de nombres específico lanzará un error. Algunos de los espacios de nombres populares son:
d/ es el nombre de dominio del espacio de nombres de dominios «.bit».
id/ es el espacio de nombres para almacenar personas identificadas tales como direcciones de correo electrónico, claves PGP, etc.
u/ es una especificación adicional, más estructurada para almacenar identidades (basado en openspecs).
El cliente Namecoin es muy similar a Bitcoin Core, porque se deriva del mismo código fuente. Tras la instalación, el cliente descarga una copia completa de la cadena de bloques Namecoin y luego estará listo para consultar y registrar nombres. Hay tres comandos principales:
name_new
Consulta o preregistra un nombre
name_firstupdate
Registra un nombre y hace público el registro:
name_update
Cambia los detalles o actualiza un registro de nombre.
Por ejemplo, para registrar el dominio dominio-bitcoin.bit, utilizamos el comando name_new de la siguiente manera:
$ namecoind name_new d/mastering-bitcoin
[
"21cbab5b1241c6d1a6ad70a2416b3124eb883ac38e423e5ff591d1968eb6664a",
"a05555e0fc56c023"
]
El comando name_new registra una reclamación en el nombre, mediante la creación de un hash del nombre con una clave aleatoria. Las dos cadenas devueltas por name_new son el hash y la clave aleatoria (a05555e0fc56c023 en el ejemplo anterior) que se puede utilizar para hacer un registro público de nombres. Una vez que la reclamación ha sido registrada en la cadena de bloques de Namecoin se puede convertir en un registro público con el comando name_firstupdate, proporcionando la clave aleatoria:
$ namecoind name_firstupdate d/mastering-bitcoin a05555e0fc56c023 "{"map": {"www":
{"ip":"1.2.3.4"}}}}"
b7a2e59c0a26e5e2664948946ebeca1260985c2f616ba579e6bc7f35ec234b01
En este ejemplo se asignará el nombre de dominio www.mastering-bitcoin.bit a la dirección IP 1.2.3.4.
El hash devuelto es el ID de la transacción que se puede utilizar para realizar un seguimiento de este registro. Usted puede ver qué nombres están registrados ejecutando el comando name_list:
$ namecoind name_list
[
{
"name" : "d/mastering-bitcoin",
"value" : "{map: {www: {ip:1.2.3.4}}}}",
"address" : "NCccBXrRUahAGrisBA1BLPWQfSrups8Geh",
"expires_in" : 35929
}
]
Los registros Namecoin necesitan ser actualizados cada 36.000 bloques (aproximadamente de 200 a 250 días). El comando name_update no tiene comisiones y por lo tanto la renovación de dominios en Namecoin es gratuita. Se puede manejar el registro, la renovación automática, y la actualización a través de una interfaz web por parte de proveedores de terceros, por un módico precio. Con un proveedor de terceros puede evitar la necesidad de ejecutar un cliente Namecoin, pero se pierde el control independiente de un registro de nombres descentralizado ofrecido por Namecoin.
Ethereum
Ethereum es una plataforma Turing-completa de procesamiento y ejecución de contratos basado en un libro contable de cadena de bloques. No es un clon de Bitcoin, sino un diseño e implementación completamente independiente. Ethereum tiene una moneda incorporada, llamada ether, que se requiere para pagar por la ejecución de contratos. La cadena de bloques de Ethereum registra los contratos, que se expresan en un nivel bajo, en un lenguaje Turing-completo, similar a un código de bytes. En esencia, un contrato es un programa que se ejecuta en cada nodo del sistema Ethereum. Los contratos Ethereum pueden almacenar datos, enviar y recibir pagos de ether, almacenar ether, y ejecutar una gama infinita (de ahí Turing-completo) de las acciones computables, actuando como agentes de software autónomos descentralizados.
Ethereum puede implementar sistemas bastante complejos que en otro caso se implementarían como cadenas alternativas. Por ejemplo, el siguiente caso es un contrato de registro de nombres similar a Namecoin escrito en Ethereum (o más exactamente, escrito en un lenguaje de alto nivel que puede ser compilado a código Ethereum):
if !contract.storage[msg.data[0]]: # ¿Ya está tomada la clave?
# ¡Entonces la tomamos!
contract.storage[msg.data[0]] = msg.data[1]
return(1)
else:
return(0) // De lo contrario no hacer nada