Ethereum.
La intención de Ethereum es crear un protocolo alternativo para construir aplicaciones descentralizadas, proporcionando un conjunto diferente de las compensaciones(1) que creemos que va a ser muy útil para una gran variedad de aplicaciones descentralizadas, con especial énfasis en las situaciones donde, un desarrollo veloz, la seguridad para apliciones pequeñas e inusuales y la habilidad de diferentes aplicaciones de interactuar eficientemente entre si, son importantes.
Ethereum hace esto mediante la construcción de lo que es esencialmente la capa fundacional: un blockchain (cadena de bloques) con un lenguaje de programación integrado Turing-completo(2), permitiendo que cualquiera pueda escribir contratos inteligentes y aplicaciones descentralizadas donde pueden crear sus propias reglas arbitrarias para la propiedad, formatos de transacción y funciones de transición de estado.
Una versión básica de Namecoin se puede escribir en dos líneas de código, y otros protocolos como monedas y sistemas de reputación se puede construir en menos de veinte lineas. Contratos inteligentes, “cajas” criptográficos que contienen valor y sólo desbloquearlo si se cumplen ciertas condiciones, también puede ser incorporado en la parte superior de la plataforma, con mucho más poder que el que ofrece el Scripting de Bitcoin debido a las funcionalidades añadidas de Turing-completo, Valor consciencia(3), blockchain-conciencia(4) y estado.
(1) Se refiere a que, añadir funciones extras al blockchain, tiene pros y contras. A esto lo llama compensaciones, quitar simplicidad pero añadir funcionalidad, por ejemplo.
(2) Se explicará que es esto más adelante, simplemente es nombrarlo.
(3) Tener consciencia de que algo tiene un valor.
(4) Puede tener varios conceptos, tener consciencia de que algo está en el blockchain y no será cambiado creo que es la mas adecuada.
Cuentas Ethereum
En Ethereum, el estado se compone de objetos llamados “cuentas”, con cada cuenta se tiene una dirección de 20 bytes y las evoluciones del estado siendo las transferencias directas de valor e información entre cuentas el estado. Una cuenta Ethereum contiene cuatro campos:
- El valor de uso único, la evolución, un contador utilizado para asegurarse de que cada transacción sólo se puede procesar una vez
- El saldo de Ether de la cuenta
-
Codigos de contrato si el poseedor de la cuenta los tiene.
-
Almacenamiento de la cuenta (vacío por defecto)
“Ether” es el principal cripto-combustible interno de Ethereum, y se utiliza para pagar los honorarios/gastos/comisiones de transacción. En general, hay dos tipos de cuentas:
-
Cuentas de propiedad, controladas por las claves privadas
-
Cuentas de contrato, controlados por el código del contrato que la ha creado.
Las cuentas de propiedad, o mejor dicho, las cuentas de los usuarios no tiene ningún código, y uno puede enviar mensajes desde una cuenta propia mediante la creación y la firma de una transacción. En una cuenta de contrato, cada vez que la cuenta de contrato recibe un mensaje determinado en su código se activa, lo que le permite leer y escribir en la memoria interna y enviar otros mensajes o crear contratos, en turno(5).
Tenga en cuenta que los “contratos” en Ethereum no deben ser vistos como algo que debe ser “cumplido” o “cumplido con”; más bien, son más como “agentes autónomos” que viven dentro del entorno de ejecución Ethereum, siempre que ejecutan una pieza específica de código cuando “se le avisa/se le da la orden/ se cumple la condición” por un mensaje o transacción, y que tienen control directo sobre su propio equilibrio ether y su propia llave/valor para realizar un seguimiento de las variables persistentes en el código.
(5) Es decir, enviar mensajes o crear otros contraros en base a que se den unas condiciones específicas. Si se cumple X en la cuenta contrato, esta cuenta realizará Y como en su código pone.
Mensajes y Transacciones
El término “transacción” se utiliza en Ethereum para referirse al paquete de datos firmado que almacena un mensaje para ser enviado desde una cuenta propiedad. Las transacciones contienen:
- El destinatario del mensaje
- Una firma identificación del remitente
- La cantidad de éter para transferir desde el emisor al receptor
- Un campo de datos opcional
- Un valor STARTGAS, que representa el número máximo de pasos de cálculo de la ejecución de la transacción se le permite tomar
- Un valor GASPRICE, lo que representa la cuota del remitente paga por paso computacional (es decir, la comisión de la red por realizar ese envio, lanzamiento de contrato, lanzamiento de aplicación o lo que el dueño de la cuenta requiera.)
Los tres primeros son campos estándar que se esperan de cualquier Criptodivisa. El campo de datos no tiene ninguna función por defecto, pero la máquina virtual tiene un código de operación mediante la cual un contrato puede tener acceso a los datos; un ejemplo de uso sería: si un contrato está funcionando como un servicio de registro de dominios en blockchain, entonces se podría interpretar los datos que se pasan a ella como que contiene dos “campos”, el primer campo de ser un dominio a registrar y el segundo campo es la dirección IP para registrar ambos datos. El contrato leería estos valores a partir de los datos del mensaje y apropiadamente los colocaría en el almacenamiento.
Los campos STARTGAS y GASPRICE son cruciales para la lucha contra un ataque DDos (Ataque de denegación de servicio) a Ethereum. A fin de evitar bucles infinitos accidentales u hostiles u otro desperdicio computacional en el código, se requiere que cada transacción establezca un límite de número de pasos en el cálculo de la ejecución de código que se pueden llegar a utilizar. La unidad fundamental de la computación es gas; por lo general, un paso computacional cuesta 1 de gas, pero algunas operaciones de cuesta cantidades más altas de gas porque requieren más fuerza computacional, o aumentar la cantidad de datos que deben ser almacenados como parte del estado. También hay una tarifa de gas 5 para cada byte en los datos de la transacción, por poner otro ejemplo. La intención del sistema de tasas es exigir a un atacante que pague proporcionalmente para todos los recursos que consume, incluyendo computación, ancho de banda y almacenamiento (Un ataque solo es posible realizarlo desde dentro de la red Ethereum, no desde fuera); Por lo tanto, cualquier transacción en la red que consuma una mayor cantidad de recursos deberá tener una cuota de gas más o menos proporcional al sus propósitos u objetivos.