Wie findet Etherscan.io Konstruktorargumente ohne Vertragsüberprüfung heraus?

Kürzlich habe ich gesehen, dass Etherscan in der Lage ist, übergebene Konstruktorargumente automatisch herauszufinden. wie konnten sie es herausfinden?

Kannst du ein Beispiel geben.

Antworten (2)

Dies wurde bereits in den Kommentaren zu Ihrer eigenen vorherigen Frage beantwortet

Zusammenfassen:

  • Die Transaktion, die den Vertrag erstellt hat, ist auf Etherscan sichtbar ( Beispiel hier )
  • Die Eingabedaten für diese Transaktion, bei denen es sich hauptsächlich um den kompilierten Bytecode des Vertrags selbst handelt, enthalten auch die Konstruktorparameterwerte in den letzten Bytes (32 Bytes pro Parameter).
  • Daher ist Etherscan in der Lage, die übergebenen Argumente auch ohne den Quellcode zu extrahieren und zu decodieren, und Sie können das auch
  • Obwohl es ohne Zugriff auf den Quellcode nicht möglich ist, die Namen der Parameter zu kennen, kann Ihnen das Dekompilieren des Bytecodes zumindest sagen, welche Anzahl und Datentyp / Größe der Argumente erwartet wird. Sie können dies verwenden, um diese 32 * n Bytes aus den Vertragserstellungsdaten zu verstehen (wobei n die Anzahl der Parameter ist).

Die Antwort von Daniel Hume ist falsch. Einige Konstruktoren benötigen mehr als 32 Bytes für die Speicherung. Hier ist ein Konstruktor, der 8*32 Bytes benötigt: https://etherscan.io/address/0x317dc3f08f7947f363dfc7cb008048a5a5ea1840#code

Die Frage ist also noch offen.

Vielen Dank für die Korrektur, ich habe die Antwort bearbeitet, um dies widerzuspiegeln.