Vertragsadresse ohne Transaktion

In der Dokumentation für die PoA-Kette von Parity wird erwähnt, dass Sie die Adresse des Vertrags, der die Validatoren bestimmt, zur Genesis-Datei hinzufügen sollten.

Die Funktion getValidators wird auf jedem Block aufgerufen, um die aktuelle Liste zu ermitteln. Die Umschaltregeln werden dann durch den Vertrag bestimmt, der diese Methode umsetzt. Die Spezifikation sollte die Vertragsadresse enthalten:

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

Ist es möglich, einen Vertrag mit einer beliebigen Adresse zu erstellen? Oder um die Adresse eines Vertrags zu erhalten, ohne ihn bereitzustellen?

Antworten (1)

Im Genesis-Block gibt es ein Feld für vorab zugewiesene Konten, in dem Sie den Kontostand, die Speicherung und den Code eines Kontos vorab festlegen können. Daher setzen Sie den Vertrag nicht wirklich ein, er existiert nur im Genesis-Block.

Sie können die Ethereum Chain Spec für Details und Beispiele einsehen, aber das allgemeine Format für ein vorab zugewiesenes Konto ist

  • balance: Ganzzahl zur Angabe des Kontostands bei Genesis in wei.
  • Nonce: Ganzzahl zur Angabe der Nonce des Kontos bei Genesis.
  • Code: Hex mit 0x-Präfix, das den Code des Kontos bei Genesis angibt.
  • storage: Objektzuordnung hexadezimal codierter Ganzzahlen für die Speicherung des Kontos bei Genesis.
  • builtin: Alternative zu code, wird verwendet, um anzugeben, dass der Code des Kontos nativ implementiert ist. Value ist ein Objekt mit weiteren Feldern:
    • "name": Der Name des eingebauten Codes, der als Zeichenfolge ausgeführt werden soll. zB "identität", "ecrecover".
    • "pricing": Enum, um die Kosten für den Aufruf dieses Vertrags anzugeben.
    • „linear“: Geben Sie lineare Kosten für den Aufruf dieses Vertrags an. Wert ist ein Objekt mit zwei Feldern: Basis, das sind die Grundkosten in Wei und werden immer bezahlt; und Wort, was die Kosten pro eingegebenem Wort sind, aufgerundet.

Hoffentlich verwirrt dies das Problem nicht, aber um die Frage zu beantworten, die Sie tatsächlich gestellt haben, ja, es ist möglich, die Adresse eines Vertrags zu ermitteln, bevor Sie ihn bereitstellen. Wie wird die Adresse eines Ethereum-Kontrakts berechnet?