dirección de contrato sin transacción

En la documentación para la cadena PoA de paridad se menciona que debe agregar la dirección del contrato que determina los validadores al archivo de génesis.

Se llamará a la función getValidators en cada bloque para determinar la lista actual. Las reglas de cambio son entonces determinadas por el contrato que implementa ese método. La especificación debe contener la dirección del contrato:

"validators": {
    "contract": "0x0000000000000000000000000000000000000005"
}

¿Es posible crear un contrato con una dirección arbitraria? ¿O para obtener la dirección de un contrato sin desplegarlo?

Respuestas (1)

En el bloque Génesis, hay un campo para cuentas preasignadas, donde puede especificar previamente el saldo, el almacenamiento y el código de una cuenta. Por lo tanto, en realidad no implementa el contrato, solo existe en el bloque de génesis.

Puede ver las especificaciones de la cadena Ethereum para obtener detalles y ejemplos, pero el formato general para una cuenta preasignada es

  • saldo: Entero para especificar el saldo de la cuenta en génesis en wei.
  • nonce: Entero para especificar el nonce de la cuenta en génesis.
  • código: hexadecimal con prefijo 0x que especifica el código de la cuenta en génesis.
  • almacenamiento: mapeo de objetos enteros con codificación hexadecimal para el almacenamiento de la cuenta en génesis.
  • incorporado: alternativa al código, que se utiliza para especificar que el código de la cuenta se implementa de forma nativa. El valor es un objeto con más campos:
    • "nombre": El nombre del código incorporado para ejecutar como una cadena. por ejemplo, "identidad", "ecrecover".
    • "precio": enumeración para especificar el costo de llamar a este contrato.
    • "lineal": especifique un costo lineal para llamar a este contrato. El valor es un objeto con dos campos: base, que es el costo básico en Wei y siempre se paga; y palabra, que es el costo por palabra de entrada, redondeado hacia arriba.

Esperemos que esto no confunda el problema, pero para abordar la pregunta que realmente hizo, sí, es posible determinar la dirección de un contrato antes de implementarlo. ¿Cómo se calcula la dirección de un contrato de Ethereum?