Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Papel beige:
Una especificación técnica de Ethereum
Miqueas Dameron
Resumen
El Protocolo Ethereum es una máquina de estado determinista pero prácticamente ilimitada con dos funciones básicas; el primero
es un estado singleton accesible globalmente y el segundo es una máquina virtual que aplica cambios a ese estado. Este documento
explica las partes individuales que componen estos dos factores.
1. Imaginar Bitcoin como una pendimientos Esto se llama gas y se explica completamente en
§3. El gas se paga exclusivamente en éter. La unidad monetaria
computadora
más pequeña en Ethereum es el Wei, que es igual a ÿ10ÿ18,
Ethereum utiliza el modelo de libro mayor distribuido que se donde ÿ representa 1 éter. Todas las transacciones de divisas en
originó con Bitcoin y lo reutiliza para modelar una computadora Ethereum, a nivel de máquina, se cuentan en Wei. También está
el Szabo, que es ÿ10ÿ6
virtual, dando a los códigos de operación de nivel de máquina el
, y el Finney, que es ÿ10ÿ3 .
mismo nivel de certeza que las transacciones de Bitcoin. Tan
La red Ethereum está subordinada a otros en
seguro como que puede estar seguro de que el libro mayor de
Bitcoin es preciso y que las marcas de tiempo son correctas a términos de una sola cosa: ether, la moneda nativa de Ethereum.
través del mecanismo de consenso de Bitcoin, tan seguro es que Todo lo que el sistema puede hacer está ligado a su capacidad
las instrucciones de la máquina iniciadas en Ethereum se ejecutarán. de gastar éter a cambio de gas, lo que compra una determinada
En otras palabras, los programas ejecutados en Ethereum cantidad de rendimiento del sistema en alguna dirección deseada.
1
Machine Translated by Google
2. Memoria y Almacenamiento Papel beige – v0.8.5 2019-08-15
mapeo de bytearrays a bytearrays.bcComo un todo, el estado es la c) Nodo padre : la noción inversa de un hijo.
suma total de las relaciones de base de datos en la base de datos de
d) Nodos hermanos : un grupo de nodos con el mismo
estado.
padre.
2.1.1. Merkle Patricia Árboles e) Nodo descendiente : un nodo al que se puede acceder
mediante procedimientos repetidos de padre a hijo.
Merkle patricia árboles son merkletrees modificados donde los nodos
f) Nodo antecesor : un nodo al que se puede acceder mediante
representan caracteres individuales de hashes en lugar de que cada
procedimientos repetidos de hijo a padre.
nodo represente un hash completo.
Esto permite que la estructura de datos de estado en sí misma g) Nodo hoja : un nodo sin hijos.
497ff 4ac95
aLos usuarios acceden al backend de la base de datos a través de una aplicación externa, muy probablemente un cliente Ethereum; ver también: base de datos de estado bA bytearray es un conjunto específico de bytes [datos] que se pueden
cargar en la memoria. Es una estructura para almacenar datos binarios, por ejemplo, el contenido de un archivo. cEsta estructura de datos permanente permite recuperar fácilmente cualquier estado anterior con su hash de raíz, manteniendo los recursos
2
Machine Translated by Google
2. Memoria y Almacenamiento Papel beige – v0.8.5 2019-08-15
2.2.1. Codificación de prefijo de longitud recursiva 2. Ommers Hash : este es el hash Keccak-256 de
una determinada pieza de datos. Hay dos tipos de elementos nodo raíz del estado trie, después de un bloque y su
fundamentales que se pueden codificar en RLP:2 se finalizan las transacciones.
2. Listas de otros elementos hash del nodo raíz de la estructura trie poblada con cada
transacción de la transacción de un bloque
endian) y sin ceros a la izquierda. Como resultado, el valor entero RLP información indexable (dirección de registro y tema de registro)
para 0 se representa mediante una matriz de bytes vacía. Si un entero contenida en el recibo de cada transacción en la parte de la lista
como matrices de bytes, o como secuencias de otros valores, que 10. Límite de gas : esta es una cantidad igual al gasto máximo actual
11. Gas utilizado : esta es una cantidad igual al total de gas utilizado
en las transacciones de este bloque.
2.3. El bloque 12. Marca de tiempo : este es un registro del tiempo de Unix en el
inicio de este bloque.
Un bloque se compone de 17 elementos diferentes. Los primeros 15
13. Datos adicionales : esta matriz de bytes de tamaño 32 bytes o
elementos forman parte de lo que se denomina encabezado de bloque.
menos contiene datos adicionales relevantes para este bloque.
2.3.1. El encabezado del bloque 14. Mix Hash : este es un hash de 32 bytes que verifica que se haya
realizado una cantidad suficiente de cálculos en este bloque.
Descripción : La información contenida en un bloque además de la
lista de transacciones. Esto consiste en:
15. Nonce : este es un hash de 8 bytes que verifica que se haya
1. Hash principal: este es el hash Keccak-256 del realizado una cantidad suficiente de cálculos
encabezado del bloque principal. en este bloque.
3
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
Encabezados de bloque Ommer : estos son bloques Ommer El estado de la cuenta contiene detalles de cualquier cuenta en particular
Serie de transacciones : esta es una lista de transacciones en 1. nonce El número de transacciones enviadas desde
este bloque y el único contenido que no es de encabezado en el bloque. esta dirección, o el número de creaciones de contratos
2.3.3. Número de bloque y dificultad 2. saldo La cantidad de Wei que posee esta cuenta. Almacenado
símbolo de dificultad exponencial, hace que la dificultad 4. code_hash El hash del código EVM de este
aumentar lentamente (cada 100.000 bloques) a una tasa exponencial contrato de cuenta. Los hashes de código se almacenan en
y, por lo tanto, aumentar la diferencia de tiempo entre bloques, la base de datos estatal. Los hashes de código son permanentes
y poner presión de tiempo en la transición a la prueba de participación. y se ejecutan cuando la dirección perteneciente a esa cuenta
Este efecto, conocido como la “bomba de dificultad”, recibe una llamada de mensaje.
el denominador 9, para apuntar al bloque medio El filtro Bloom se compone de información indexable (dirección del
tiempo incluyendo tío bloques. Finalmente, en Bizancio registrador y temas de registro) contenida en cada
lanzamiento, con EIP-649, la edad de hielo se retrasó al crear un entrada de registro desde el recibo de cada transacción en el
número de bloque falso, que se obtiene restando tres millones del lista de transacciones
número de bloque real,
que en otras palabras redujo la diferencia horaria ser
2.3.7. Recibos de transacciones
interbloques, para permitir más tiempo para desarrollar
3.1. La transacción
2.3.4. Creación de cuenta El método básico para que las cuentas de Ethereum interactúen
La creación de la cuenta se produce definitivamente con la creación del firmada que se envía a la red Ethereum. Hay dos tipos de transacciones:
contrato. Está relacionado con: init. Por último, está el cuerpo . mensaje
que es el código EVM que se ejecuta si/cuando el ac convocatorias y creación de contratos. Las transacciones se encuentran en
count que lo contiene recibe una llamada de mensaje. el corazón de Ethereum, y son enteramente responsables de
aUna ruta particular desde la raíz hasta la hoja en la base de datos estatal
4
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
Descripción : El hash Keccak-256 del Una descripción que asigna transacciones a su remitente utilizando
nodo raíz que precede a las transacciones en el ECDSA de la curva SECP-256k1.
sección de lista de transacciones de un bloque.
6. v, r, s – Valores para la firma de la transacción de 256 bits. Esto fue elegido para facilitar el Keccak
del que se puede derivar la clave pública. 256 esquema hash y cálculo basado en curva elíptica. El modelo de
memoria es un simple dirigido por palabras
matriz de bytes. La pila de memoria tiene un tamaño máximo de
3.2. Función de transición de estado
1024 bits. La máquina también tiene un modelo de almacenamiento
Las Transiciones de Estado se dan a través de la Función de independiente; esto es similar en concepto a la memoria pero
Transición de Estado; esta es una abstracción de alto nivel de varios en lugar de una matriz de bytes, es una palabra direccionable por palabra
operaciones en Ethereum que comprenden el acto general formación. A diferencia de la memoria, que es volátil, el almacenamiento
de tomar cambios del estado de la máquina y agregar no es volátil y se mantiene como parte del estado del sistema.
ellos al estado mundial.
5
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
Todas las ubicaciones tanto en el almacenamiento como en la borra una entrada en el almacenamiento no sólo se renuncia, un
memoria están bien definidas inicialmente como cero. La máquina no sigue se otorga un reembolso calificado; de hecho, este reembolso se paga
la arquitectura estándar de von Neumann. Más bien que efectivamente por adelantado desde el uso inicial de un dispositivo de almacenamiento.
almacenar el código del programa en la memoria de acceso general la ubicación cuesta sustancialmente más que el uso normal.4
no deje los cambios de estado intactos. Más bien, la máquina función de posición: stf. Sin embargo, antes de cualquier transacción
se detiene inmediatamente e informa el problema al agente de ejecución se puede ejecutar necesita pasar por las pruebas iniciales
ejecución de una operación.4 La primera y más común es la tarifa • El nonce en la transacción es válido, es decir, es
intrínseca al cómputo de la operación. En segundo lugar, el gas puede equivalente al nonce actual de la cuenta del remitente.
memoria.
3.8.2. Recibo de la transacción
Durante la ejecución de una cuenta, la tarifa total por
el uso de memoria que se paga es proporcional al múltiplo más pequeño Si bien la cantidad de gas utilizada en la ejecución y
de 32 bytes que se requieren para que toda la memoria los elementos de registro acumulados pertenecientes a la transacción son
índices (ya sea para lectura o escritura) se incluyen en el almacenada, la información relativa al resultado de la ejecución de una
rango. Esto se paga justo a tiempo; como tal, transacción se almacena en el recibo de la transacción
hacer referencia a un área de memoria de al menos 32 bytes mayor recibo_tx. El conjunto de eventos de registro que se crean
que cualquier memoria previamente indexada sin duda resultará en una a través de la ejecución de la transacción, logs_set en
tarifa de uso de memoria adicional. Debido a esto además del filtro de floración que contiene el real
tarifa, es muy poco probable que las direcciones tengan una tendencia superior la información de esos eventos de registro logs_bloom se encuentra en
límites de 32 bits.4 el recibo de la transacción. Además, el estado posterior a la transacción
eventualidad. Las tarifas de almacenamiento tienen un comportamiento La cantidad de gas utilizada en el bloque que contiene el recibo de la
ligeramente matizado para incentivar la minimización del uso del almacenamiento. transacción (gas_used) se almacena en el recibo de la transacción.
(que corresponde directamente a una base de datos estatal más grande Como resultado, el recibo de la transacción es un
en todos los nodos), la tarifa de ejecución de una operación que registro de cualquier ejecución dada.
6
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
Una ejecución de transacción válida comienza con un de una computadora Esto es en realidad un tiempo de ejecución instantáneo
cambio permanente en el estado: el nonce del remitente que ejecuta varios subestados, como cálculo EVM
la cuenta se incrementa en uno y el saldo se reduce en instancias, antes de agregar el resultado final, después de haber
colateral_gasa , que es la cantidad completado todos los cálculos, al estado final a través del
de gas que una transacción debe pagar antes de su ejecución. función de finalización.
El transactor original diferirá del remitente Además del estado del sistema y la
si el mensaje de llamada o creación de contrato proviene de un gas restante para el cálculo hay varios
código de ejecución de la cuenta del contrato. piezas de información importante utilizadas en la ejecución
Después de que se ejecuta una transacción, viene un entorno que el agente de ejecución debe proporcionar:
estado provisional, que es un estado pre-final. Gas
utilizado para la ejecución de códigos de operación EVM individuales antes
• account_address, la dirección de la cuenta
a su posible adición a world_state crea:
que posee el código que se está ejecutando.
• Estado provisional.
• sender_address la dirección del remitente de la transacción
• gas intrínseco, y que originó esta ejecución.
• un subestado asociado.
• originator_price el precio del gas en la transacción que
• Las cuentas etiquetadas para la autodestrucción originó esta ejecución.
siguientes la finalización de la transacción.
• input_data, una matriz de bytes que son los datos de entrada para
self_destruct (cuentas) esta ejecución; si el agente de ejecución es una transacción,
• Logs_series, que crea puntos de control en estos serían los datos de la transacción.
Ejecución de código EVM para aplicaciones frontend para • account_address la dirección de la cuenta
explore, y se compone de thelogs_set y
lo que provocó que el código se ejecutara; si el agente de
logs_bloom del tx_receipt.
ejecución es una transacción, esta sería la
• El saldo de reembolso.b remitente de la transacción.
La ejecución del código siempre agota el gas. Si corre gasolina • newstate_value el valor, en Wei, pasado a este
out, se señala un error de falta de gas (oog) y el estado resultante cuenta si el agente de ejecución es una transacción,
se define como un conjunto vacío; no tiene efecto este sería el valor de transacción.4
sobre el estado mundial. Esto describe el na transaccional
• matriz de código la matriz de bytes que es la máquina
tura de Ethereum. Para afectar el estado mundial, código a ejecutar.4
una transacción debe realizarse por completo o no realizarse en absoluto.
• block_header el encabezado del bloque del presente
bloquear.
3.8.3. Depósito de código
• stack_ depth la profundidad de la llamada de mensaje
Si el código de inicialización se completa con éxito, un último actual o creación de contrato (es decir, el número de CALLs
se paga el costo de creación del contrato, el costo del depósito del código, c, o CREATE que se están ejecutando actualmente).4
proporcional al tamaño del código del contrato creado.
El modelo de ejecución define el state_transition
función, que puede calcular la resultante
3.8.4. Modelo de ejecución
estado, el gas_restante , el subestado_acumulado
Conceptos básicos : la máquina virtual basada en pilas que se encuentra y la salida_resultante , dadas estas definiciones. Para el presente
en el corazón del Ethereum y realiza las acciones contexto, lo definiremos
a Designado como “ gas_intrínseco ” en el Yellowpaper
bLa operación de almacenamiento aumenta la cantidad reembolsada al restablecer el almacenamiento del contrato a cero desde algún estado distinto de cero.
7
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
donde el subestado acumulado se define como el tu de dos instrucciones, que se evalúa según el
ejemplo del conjunto de autodestrucciones, la serie de registros, la valor: de lo contrario En general, asumimos la memoria,
4
touch_accounts y los reembolsos. el conjunto de autodestrucción y el estado del sistema no cambian: sin
embargo, las instrucciones suelen alterar uno o varios componentes
Los elementos de la pila se agregan o eliminan desde el extremo izquierdo, transacciones de llamadas de mensajes. Cálculo realizado,
parte de la serie con índice más bajo; todos los demás elementos si se trata de una creación de contrato o una llamada de mensaje,
permanecen sin cambios: el gas se reduce según el costo del gas de representa el estado de validez legal actual. Puede haber
la instrucción y para la mayoría de las instrucciones, el programa ninguna transacción inválida desde este punto.4 También hay una
incrementos de contador en cada ciclo, para las tres excepciones, pila de creación de llamadas/contratos de mensajes . Esta pila tiene
asumimos una función J, subíndice de uno una profundidad, dependiendo de cuántas transacciones hay en
aEl estado final se alcanza después de eliminar todas las cuentas que aparecen en la lista de autodestrucción o que están tocadas y vacías.
8
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
eso. Las creaciones de contratos y las llamadas de mensajes se han 3.9. Gas
diferentes formas de ejecución, y son completamente diferentes
El gas es la unidad fundamental de coste de la red convertida a
en sus roles en Ethereum. Los conceptos pueden combinarse. Las
y de ether según sea necesario para completar la transacción
llamadas de mensajes pueden resultar en cálculos que
mientras se envía. El gas se determina arbitrariamente en el
ocurre en el siguiente estado en lugar del actual. Si
momento en que se necesita, por bloque y de acuerdo con la
una cuenta que se está ejecutando actualmente recibe una llamada
la decisión de los mineros de la red total de cobrar ciertas tarifas.
de mensaje, no se ejecutará ningún código, porque la cuenta
Cada minero elige individualmente qué precios de gas quiere
podría existir pero aún no tiene código. Para ejecutar una llamada
quieren aceptar y cuáles quieren rechazar.
de mensaje se requieren transacciones:
• originador de la transacción
El precio del gas es un valor igual al límite actual de gas
• destinatario gasto por bloque, según los mineros. Ningún
• cuenta (normalmente la misma que la del destinatario) el gas no utilizado se reembolsa al remitente. el canónico
límite de gas de un bloque se expresa y se estabiliza por el
• gasolina disponible
time_stamp del bloque.
• valor
•
precio de la gasolina Estabilidad del precio del gas Donde new_header es el nuevo
• Una matriz de bytes de longitud arbitraria. matriz arbitraria encabezado del bloque, pero sin el nonce y mix-hash
El entorno de tiempo de ejecución de Ethereum es el entorno de lo contrario, sobrescribiría ("reescribiría") el historial. Porque
el nonce debe satisfacer este requisito, y debido a que
bajo el cual los Objetos Autónomos se ejecutan en el
su satisfacción depende del contenido del bloque
EVM: la EVM se ejecuta como parte de este entorno.
y a su vez sus transacciones compuestas, creando nuevas,
válidos, los bloques son difíciles y, con el tiempo, requieren
3.8.10. función endiana grande
aproximadamente el poder de cómputo total de la porción confiable
Esta función expande un valor entero positivo a una matriz de bytes de los pares mineros. Así podemos definir
big endian de longitud mínima. Cuando va acompañado de un la función de validez del encabezado del bloque.
9
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
self_destruct (cuentas)
3.9.3. Detención excepcional
• Logs_series, que crea puntos de control en la ejecución del
Una detención excepcional puede ser causada por cuatro condiciones código EVM para que las aplicaciones frontend los exploren,
existentes en la pila con respecto al siguiente código de operación en y se compone de thelogs_set y l ogs_bloom de tx_receipt.
línea para su ejecución:
• El saldo de reembolso.a
si
out_of_gas = verdadero
o 3.9.4. Código EVM
bad_instruction = verdadero
o El código de bytes que el EVM puede ejecutar de forma nativa. Se
utiliza para especificar explícitamente el significado de un mensaje
bad_stack_size = verdadero
o a una cuenta. Un contrato es un fragmento de Código EVM que
puede asociarse a una Cuenta o a un Ob autónomo.
bad_jumpdest = verdadero
proyecto EVM Assembly es la versión legible por humanos de EVM
luego lanza una excepción
Code.
más exec código de operación x
de operación que no se ejecutan. Nunca pueden ser causados por la La cadena de bloques canónica es un camino desde la raíz hasta
ejecución real de un código de operación. la hoja a través de todo el árbol de bloques. Para tener un consenso
sobre qué camino es, identificamos conceptualmente el camino que
• La cantidad de gas restante en cada transacción se extrae
ha tenido la mayor cantidad de cálculos, o el camino más pesado.
de la información contenida en el
Claramente, un factor que ayuda a determinar el camino más
estado_maquina
pesado es el número de bloque de la hoja, equivalente al número
• Un bucle iterativo recursivo simple4 con un valor booleano de bloques, sin contar el bloque de génesis no minado, en el
valor:
camino. Cuanto más largo sea el camino, mayor será el esfuerzo
– verdadero que indica que en la ejecución del cálculo, se minero total que se debe haber realizado para llegar a la hoja. Esto
señaló una excepción es
aLa operación de almacenamiento aumenta la cantidad reembolsada al restablecer el almacenamiento del contrato a cero desde algún estado distinto de cero.
10
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
similar a los esquemas existentes, como el empleado en los o un ommer con la misma dirección de beneficiario que el presente
protocolos derivados de Bitcoin. Dado que un encabezado de bloque, las adiciones se aplican de forma acumulativa. La
bloque incluye la dificultad, el encabezado por sí solo es suficiente recompensa del bloque es de tres ether por bloque.
para validar el cálculo realizado. Cualquier bloque contribuye al
cómputo total oa la dificultad total de una cadena.
Así, definimos la dificultad total de this_block recursivamente Validación de estado y nonce La función que mapea un bloque
por la dificultad de su bloque principal y el bloque mismo. Los B a su estado de iniciación, es decir, el hash del
trabajos de los mineros y validadores son los siguientes: Validar nodo raíz de un trie de estado x. Este valor se almacena en
(o, si se trata de minería, determinar) ommers; validar (o, si se la base de datos estatal es trivial y eficiente ya que el trie es
trata de minería, determinar) transacciones; aplicar por naturaleza una estructura de datos resistente. Y, por último,
recompensas; verificar (o, si se trata de minería, calcular un defina block_transition_function, que asigna un bloque completo
estado válido) y nonce. a un bloque completo con un conjunto de datos específico. Como
se especifica al comienzo del presente trabajo, la
función_de_transición_de_estado, que se define en términos de
3.11. Validación Ommer
la función_de_finalización_de_bloque y la
La validación de encabezados ommer no significa nada más que función_de_evaluación_de_transacción . Como se detalló
verificar que cada encabezado ommer sea un encabezado válido anteriormente, existe el enésimo código de estado correspondiente,
y satisfaga la relación de om mer de enésima generación con el registros y gas acumulado utilizado después de cada transacción,
bloque actual. El máximo de encabezados ommer es dos. el cuarto componente en la tupla, ya se ha definido en términos de
los registros).
de las cuentas del domicilio beneficiario del bloque y de cada bono función aplicada al estado resultante de la transacción final , por
en una cantidad determinada. Subimos la cuenta del beneficiario lo tanto, se define el mecanismo de transición de bloque completo,
del bloque; por cada ommer, elevamos al beneficiario del bloque menos PoW, la función de prueba de trabajo.
en 1 y 32 adicionales de la recompensa del bloque y el beneficiario
del ommer es recompensado dependiendo del número de bloque.
3.14. Prueba de trabajo de minería
Esto constituye la función_transición_estado_finalización_bloque.
Si hay colisiones de direcciones de beneficiarios entre ommers y el La prueba de que se ha realizado una cierta cantidad de minería
bloque de dos ommers con la misma dirección de beneficiario existe como una declaración de probabilidad criptográfica que
afirma más allá de toda duda razonable que se ha gastado una
cantidad particular de cómputo en el
11
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
determinación de algún valor de token pow_token. Se utiliza para que se puede calcular para cada bloque escaneando los encabezados
hacer cumplir la seguridad de la cadena de bloques. Dado que los de los bloques hasta ese punto. A partir de la semilla, se puede
bloques extraídos producen una recompensa, la prueba de trabajo también
calcular una memoria caché pseudoaleatoria, es decir, bytes
sirve como un mecanismo de distribución de la riqueza. Para esto cache_init en tamaño inicial. Los clientes ligeros almacenan el caché.
razón, la función de prueba de trabajo está diseñada para ser lo más A partir de la memoria caché, se genera un conjunto de datos, bytes
accesible posible para tantas personas como sea posible. dataset_size en tamaño inicial, con la propiedad de que cada
elemento del conjunto de datos depende solo de una pequeña
Una aplicación muy básica de este principio de accesibilidad cantidad de elementos de la memoria caché. Clientes completos y min.
se encuentra en la combinación de la función tradicional de prueba Los usuarios almacenan el conjunto de datos. El conjunto de datos
de trabajo con una función de dureza de memoria. Al obligar al crece linealmente con el tiempo. La minería implica tomar porciones
algoritmo hash a usar la memoria además de la CPU, es más aleatorias del conjunto de datos y mezclarlas. La verificación se
probable que los mineros usen computadoras que ASIC, lo que puede realizar con poca memoria utilizando la memoria caché para
significa que la eficiencia de ASIC no dejará obsoleta a la persona regenerar las partes específicas del conjunto de datos que necesita,
que quiere minar en la computadora de su hogar para que no participe por lo que solo necesita almacenar la memoria caché. El gran
en el proceso de minería. Para hacer que el Ethereum Blockchain conjunto de datos se actualiza una vez cada 1 época (10 000)
ASIC sea resistente, el mecanismo de prueba de trabajo ha sido bloques, por lo que la gran mayoría del esfuerzo de un minero se
diseñado para ser secuencial y difícil de memorizar. Esto significa dedica a leer el conjunto de datos, en lugar de realizar cambios en él.
3.14.1. Ethash: SemillaÿCachéÿConjunto de datosÿRebanada los bloques anteriores y luego sumando la dificultad del bloque actual.
Ethash es el algoritmo de prueba de trabajo que se utilizó para lanzar El Protocolo GHOST proporciona una solución alternativa a
la red Ethereum y llevarla a cabo en sus primeros lanzamientos. Está los ataques de doble gasto de la solución original en el Informe
en proceso de ser eliminado gradualmente y reemplazado por un técnico de Bitcoin de Satoshi Nakamoto. Nakamoto resolvió el
modelo de prueba de participación. problema del doble gasto al exigir que la red se pusiera de acuerdo
Por ahora es la última versión de Dagger-Hashimoto, presentada por en un solo bloque para poder funcionar.
Vitalik Buterin. La ruta general que toma el algoritmo es la siguiente: Por esa razón, en el protocolo Bitcoin, es imposible enviar un bloque
Existe una semilla de "doble gasto" sin tener al menos
12
Machine Translated by Google
3. Procesamiento y Cómputo Papel beige – v0.8.5 2019-08-15
menos el 50% de la potencia minera de la red para forzar la datos de estado. Esto sería una variación de un esquema de
cadena más larga. Esto se debe a que la red elige automáticamente la compresión.4
segundo porque ya no pertenece al más largo La escalabilidad es una preocupación constante. Porque el Ethereum
cadena (que ahora contiene el primer bloque que se envió) las transiciones de estado son tan amplias en términos de contenido
por lo que el aspirante a pirata informático debe enviar un nuevo bloque, posible, y debido a que sus aplicaciones y casos de uso son
ya que el primer bloque doble ya no es factible. tan numerosos en el número de transacciones potenciales requeridas,
El “Protocolo GHOST” (que significa Greedy la escalabilidad es inherentemente necesaria para aumentar
subárbol de objetos más pesados) requiere que los mineros rendimiento de transacciones y para un almacenamiento más eficiente
y recorrido de la cadena.
comenzar a minar cualquiera que sea la cadena de la mayoría de los otros mineros
de datos sobre qué mineros están extrayendo qué bloque, esto 3.17.1. fragmentación
3.17.3. Plasma
hash el resultado.
La base de datos estatal por lo general no almacenará todos y cada uno de los
13
Machine Translated by Google
A. Códigos de operación EVM5 Papel beige – v0.8.5 2019-08-15
14
Machine Translated by Google
A. Códigos de operación EVM5 Papel beige – v0.8.5 2019-08-15
0x35 CARGA DE DATOS DE LLAMADA 3 1 1 Obtener datos de entrada del entorno actual
mento
llamada de mensaje.
0x38 CÓDIGO TAMAÑO 2 0 1 Obtenga el tamaño del código que se ejecuta en el actual
ambiente.
entorno a la memoria.
0x3a PRECIO DEL GASOLINA 2 0 1 Obtenga el precio del gas en el entorno actual. Este
TALLA
COPIAR
por su hachís.
aSe deja un valor de 0 en la pila si el número de bloque está más de 256 detrás del actual, o si es un número mayor que el actual.
15
Machine Translated by Google
A. Códigos de operación EVM5 Papel beige – v0.8.5 2019-08-15
dieciséis
Machine Translated by Google
A. Códigos de operación EVM5 Papel beige – v0.8.5 2019-08-15
0x8f DUP16 - 17
dieciséis
Duplica el elemento número 16 de la pila.
17
Machine Translated by Google
A. Códigos de operación EVM5 Papel beige – v0.8.5 2019-08-15
tamaño de entrada
18
Machine Translated by Google
A. Códigos de operación EVM5 Papel beige – v0.8.5 2019-08-15
0xfd REVERTIR 0 2 0 -
19
Machine Translated by Google
A. Referencias Papel beige – v0.8.5 2019-08-15
Referencias
[1] W. contribuyentes, Árbol (estructura de datos) — wikipedia,
la enciclopedia libre, [En línea; accedido
15-diciembre-2017], 2017. [En línea]. Disponible:
https://es. wikipedia org/w/index. php?
título = Árbol _ (datos _ estructura ) %5C & idantiguo =
20
Machine Translated by Google
Glosario Papel beige – v0.8.5 2019-08-15
estado de cuenta El estado de una cuenta en particular, una sección serialización La serialización es el proceso de convertir un objeto en
del estado mundial total. Comprende: el nonce, el saldo, la un flujo de bytes para almacenar el objeto o transmitirlo a la
raíz de almacenamiento y el hash de código de la cuenta. 21 memoria, una base de datos o un archivo. Su objetivo principal
es guardar el estado de la máquina de un objeto para poder
el mapeo derivado de RLP que contiene el máquina de estado El término Máquina de Estado está reservado
la dirección del remitente y el nonce del bloque. 21 para cualquier proceso simple o complejo que se mueva de
manera determinista de un estado discreto al siguiente. 21
beneficiario La dirección de 20 caracteres (160 bits) para
que todas las tarifas recaudadas del min exitoso
base de datos de estado Una base de datos almacenada fuera de la
ing de un bloque se transfieren. 21
cadena, [es decir, en la computadora de algún usuario que
encabezado del bloque Toda la información en un bloque además ejecuta un cliente Ethereum] que contiene un árbol radix que
información de la transacción. 21 mapea rayos de bytes (porciones organizadas de datos
binarios) a otros rayos de bytes. Las relaciones entre cada nodo.
Contrato Una pieza de Código EVM que puede asociarse con una en este trie constituye un mapeo de Ethereum
Cuenta o un Objeto Autónomo.
estado. 1, 4, 13, 21
21
raíz de almacenamiento Un aspecto del estado de una cuenta: este
Funciones hash criptográficas Las funciones hash hacen posibles es el hash de la triea el que decide el almacenamiento
las cadenas de bloques seguras al establecer entradas contenido de la cuenta. 21
universales para las que hay una salida posible limitada,
Estado de almacenamiento La información particular de una cuenta
generalmente solo una, pero esa salida es única. 21
dada que se mantiene entre los momentos en que
se ejecuta el código EVM asociado a la cuenta. 21
aUna ruta particular desde la raíz hasta la hoja en la base de datos estatal
21
Machine Translated by Google
A. Índice Papel beige – v0.8.5 2019-08-15
Índice
dirección de cuenta, 7
BLOCKHASH, 13 cuerpo,
direcciones de cuenta, 2 saldo
9 nodo de rama, matriz
de cuenta, 4 cuerpo de cuenta,
de 2 bytes, 5 bizancio, 4
4 hash de código de cuenta, 4
matriz de código,
bitcóin, 1
22
Machine Translated by Google
Índice Papel beige – v0.8.5 2019-08-15
EIP 100, 4
EIP 2, 4
protocolo GHOST, 13 base
EIP 649, 4
de datos de estado global, 3
cálculo de curva , 5
edad de
8 de registro, 6 series de
registro, 8 floración de
bosque, 2 larga, 13
23
Machine Translated by Google
Índice Papel beige – v0.8.5 2019-08-15
9 declaración de probabilidad, 12
de trabajo, 12 pseudocódigo, 1
generación de números
pseudoaleatorios, 13
raíz de recibos, 3
minimizar el uso de
destinatario, 9
almacenamiento, 6 minería, 1
reembolsado, 9
esfuerzo de minería, 11 mezclar
reembolsos, 8 gas
hash, 3, 9, 12 merkletrees
restante, 7, 8 excepción
modificados, 2
de informe, 6 salida
computadora de operador de
Satoshi Nakamoto, 13
nodo, 3 entero deserializado no
escalabilidad, 13 semilla, 12
vacío, 3 arquitectura no estándar , 6 una vez,
conjunto de autodestrucción,
3, 9
8 remitente, 9 cuenta del
ommer, 11 9
24
Machine Translated by Google
Índice Papel beige – v0.8.5 2019-08-15
adelantado, 6
estado del sistema, 5, 7
Szabo, 1
encabezado válido,
11 estado válido, 9
etiquetado para autodestrucción, 10 sello
valor, 5, 9 verificación,
de tiempo, 9 sello de tiempo, 3 sello de
5 máquina virtual, 1,
tiempo, 1 para, 5 para ejecutar, 10
7 ROM virtual, 6
dificultad total, 12 tarifa total, 6 gas total
direccionable, 5
5 palabras, 5 tamaño de
25