Ethereum prueba de concepto de alquiler del estado cryptomeria japonica globosa nana

Por último, establecemos una cuenta de cuentas de propiedad del estado que se utiliza para configurar los valores predeterminados de las cuentas de nueva creación (post-fork). En este caso, establece el saldo del alquiler en cero y el bloque de alquiler en el número de bloque actual. Estos son dos nuevos campos agregados al estado de la cuenta en esta bifurcación. Esta es la primera vez que el nuevo proceso de cuenta ha variado en una bifurcación dura, por lo que hubo un montón de código de plomería requerido para agregar el concepto de una cuenta conectable pero ninguna de ellas fue difícil.

Sin embargo, también es la primera bifurcación difícil que agrega campos al estado de la cuenta, lo que hace que la serialización y la deserialización sean un poco más difíciles. Ese código está en accounterializer. Afortunadamente, en las monedas criptográficas principales de RLP es fácil invertir para verificar si se encuentra al final de la lista actual o no, por lo que al realizar la deserialización podemos saber si el saldo de la renta y el bloqueo de la renta se han agregado a este estado de cuenta al verificar si re al final de la lista (línea 51).

El cálculo de la renta adeudada es administrado por los propietarios de cuentas de un procesador de proceso con gran parte del código que puede reutilizarse con las bifurcaciones posteriores a través del procesador de abstractrent. El saldo de la renta es una de las pocas cosas en etéreo que pueden ser negativas, lo que hace que la vida sea un poco frustrante, ya que la clase wei existente utilizada para el saldo de la cuenta no se puede reutilizar y hay algunos puntos en los que las cosas deben ser convertidas entre wei y Biginteger pero es manejable.

La renta solo se recalcula cuando la cuenta se ha cambiado en el bloque. En el panteón, la forma más sencilla de lograrlo fue apostar por el concepto canadiense de sitios de comercio de criptomonedas de cuentas “tocadas” utilizadas en dragones espurios. Simplemente iteramos a través de las cuentas que hemos tocado y verificamos si la raíz de su estado de cuenta está sucia (lo que también se rastrea), si es que volvemos a calcular el alquiler a través del procesador de alquileres.

Esta bifurcación introduce un poco de cosas nuevas, pero lo más importante es que agrega un nuevo campo de almacenamiento al estado de cuenta que se ajusta como parte de cada llamada SSTORE. El almacenamiento existente no está incluido en el campo de almacenamiento almacenado en este punto, solo se ha agregado o eliminado un conteo del tamaño de almacenamiento desde que la bifurcación 3 se activó. El campo se agrega cuando se crean nuevas cuentas, cuando se recalcula la renta el procesador de criptografía universal eficiente en el área para tarjetas inteligentes para una cuenta existente o cuando una llamada SSTORE resulta en un cambio en el tamaño del almacenamiento de la cuenta.

Los proveedores de protocolos estáticos públicos staterentnewstoragedefinition (final int chainid, final long rentenabledblocknumber) {return staterentowned -responde countes DEfinition (chainid, rentenabledblocknumber). GasCalculator cryptomeria japonica variedades (staterentnewstoragegascalculator:: nuevo). EvmBuilder (mainnetevmregistries:: staterentnewstorage). RentCost (wei. FromGwei (1)). RentProcessor (

También suministramos un nuevo procesador de alquileres, el almacenamiento y el procesador del material, que se aplica a todas las cuentas, ya sea que tengan código o no. También cobra el alquiler según el valor del nuevo campo de almacenamiento. Si aún no se ha establecido el tamaño de almacenamiento, se establece en un valor fijo para representar el tamaño de una cuenta vacía (73, que es la longitud de un RLP de cuenta vacía en bytes).

TODO: la poc utiliza deliberadamente el valor de almacenamiento desde el inicio del bloque, ignorando cualquier cambio aplicado en el bloque actual. De lo contrario, si una cuenta permanece sin tocar por 100 bloques, luego aumenta su tamaño de almacenamiento, se le cobrará el alquiler al aumento del tamaño de almacenamiento de los 100 bloques completos que no se tocaron. Es posible que esta regla deba modificarse ligeramente para usar el nuevo valor de almacenamiento para el bloque actual y el anterior para los bloques intactos, pero parece razonable diferir los cambios de renta hasta que el bloque después de que surta efecto: un mayor almacenamiento habría costado gas en el el bloqueo actual y el almacenamiento reducido realmente no brindan un beneficio hasta que el bloqueo esté completo y comprometido de todos modos.

Las cuentas con código no se eliminan cuando no pueden pagar su alquiler, en lugar de eso, se “desalojan” y se reemplazan con un límite máximo de mercado de criptografía de código de hash para que puedan restaurarse a través de la nueva operación RESTORETO (ver más abajo). Este es uno de los cambios más complicados para trabajar a través del código, en primer lugar solo en términos de seguimiento de las cuentas desalojadas a través del código de confirmación / reversión de la transacción, pero también en términos de detectarlos en el estado de cuenta. Talones de hash

Al observar nuevamente el accounterializer en el método serializehashstub, podemos ver que un código auxiliar de hash es una lista de RLP que contiene el código hash y el hash de la raíz de almacenamiento. RLP no proporciona ninguna información de escritura, pero para detectar un talón de hash, verificamos si el primer elemento es un nonce o un hash. Si se trata de un código auxiliar de hash, el tamaño del elemento RLP debe ser de 32 bytes. Teóricamente, un nonce es un número escalar arbitrario sin firma, por lo que podría llegar a ser de 32 bytes (un número de 256 bits), pero al menos en el panteón ya no admitimos nones tan grandes y la comparación de los tipos de cambio de criptomoneda en el que tendría que gastar mucho de eth en gas para obtener un nonce para hacer un nonce tan grande. Por lo tanto, la longitud del elemento parece ser una forma adecuada de distinguir entre el estado de la cuenta y los talones de hash.

TODO: aclare las interacciones para cualquier operación que busque un estado de cuenta si el estado de la cuenta ha sido reemplazado por un talón de hash. Actualmente, el panteón trata los talones de hash como si no existieran, excepto en la operación RESTORETO. Esto es correcto en su mayoría, excepto que la creación del contrato debería considerarlo un conflicto de dirección si un talón de hash está en la dirección de destino (no se implementa actualmente, pero es bastante sencillo). Nuevas operaciones de EVM

• la cuenta C se crea con un código que configura el almacenamiento en la cuenta C para que coincida exactamente con la cuenta de almacenamiento A que tenía antes de ser desalojada. Puede hacer esto en su constructor o exponer la mejor criptomoneda para invertir en las funciones de octubre de 2017 que pueden ser llamadas a lo largo del tiempo para crear el estado correcto desde múltiples fuentes (posiblemente compartiendo el costo del gas de la reconstrucción del estado entre varias personas).

• La cuenta C llama a RESTORETO. El EVM verifica que el hash del código de la cuenta B coincida con los registros de apéndice de la cuenta A y que el hash de la raíz de almacenamiento de la cuenta C coincida con los registros de apéndice de la cuenta A. Si es así, crea un nuevo contrato en la dirección A, que reemplaza el talón de hash, con el código de la cuenta B y el almacenamiento de la cuenta C. También transfiere cualquier saldo de la cuenta C a la cuenta A y el mercado de criptomonedas en la India destruye la cuenta C ( tal como lo haría SELFDESTRUCT).

En general, esto es bastante sencillo de implementar como se ve en restoretooperation.Java. El problema oculto es que la mayoría de los clientes de ethereum, incluido el panteón, no actualizan la prueba de almacenamiento hasta que la transacción realmente se comprometa: los cambios realizados en la mitad de la transacción se almacenan en un hashmap simple que es mucho más rápido. Como tal, obtener el hash de la raíz de almacenamiento para la cuenta C no es sencillo. De hecho, en la poc no lo he implementado en absoluto. Ciertamente, es posible crear una copia de la versión no modificada, actualizarla con los cambios pendientes y calcular la raíz de almacenamiento, pero es una operación costosa y ese código solo lo ejercerá RESTORETO, lo que aumentará significativamente las pruebas necesarias para cubrir completamente a RESTORETO.

Una opción aquí sería hacer que la ejecución se detenga inmediatamente cuando se llame a RESTORETO, y luego realizar la restauración real del robot de comercio de criptomonedas al final de la transacción, de forma muy parecida a como SELFDESTRUCT solo se aplica al final de la transacción. Geth y Pantheon actualizan el paquete de almacenamiento después de cada transacción (no necesariamente calculan el hash de la raíz, pero eso es simple una vez que se tiene el trie), pero turbogeth retrasa la actualización del trie hasta el final del bloque, mejorando el rendimiento si la misma cuenta Se utiliza de múltiples transacciones en un bloque. También se planea implementar esa mejora para el panteón. Sin embargo, retrasar la aplicación de RESTORETO hasta el final del bloque parece un poco extraño.

La poc no incluye nada de esta bifurcación actualmente, pero es bastante simple. Cuando el campo de bloque de renta de una cuenta se actualiza por primera vez a un bloque después de que la bifurcación 4 esté en vigencia, el campo de almacenamiento de la cuenta aumenta por el tamaño de su almacenamiento inmediatamente antes de que la bifurcación 3 entre en vigencia. Básicamente, agregamos el histórico en el que se encuentra el tamaño del estado cryptocurrency y blockchain.

TODO: no se indica explícitamente en ningún lugar en este momento, pero al calcular el alquiler adeudado por primera vez después de la bifurcación 4, el alquiler se debe calcular hasta el bloque de la bifurcación 4 utilizando el nuevo valor de solo almacenamiento, luego agregue el almacenamiento existente Tamaño y cálculo del alquiler desde la horquilla 4 hasta el bloque actual. De lo contrario, las cuentas comienzan a cobrar el alquiler por el almacenamiento existente en diferentes horarios de cursos de criptografía aplicada, lo que es demasiado difícil de entender (e injusto). Otro trabajo requerido

• actualmente, si implementa un contrato con remix, no obtiene ningún equilibrio de ética, por lo que se desaloja inmediatamente cuando interactúa con él. Esto es bastante confuso y frustrante como usuario. Tendremos que actualizar las herramientas para permitir el envío de un saldo de alquiler inicial, proporcionar algún alquiler gratuito en la creación del contrato o permitir un período de gracia después de la creación del contrato antes de que se cobre el alquiler.

banner