Laut EVM-Dokumentation werden alle Werte initialisiert. Dieses Mittel to
enthält die 0
Adresse, da null
es sich nicht um einen anerkannten Staat handelt. Die 0
Adresse verweist auf ein externes Konto (von dem wir alle wissen, dass es eine Fülle von Ether und Token enthält). Wie unterscheidet Ethereum also eine Vertragserstellungsanfrage von einer Wertübertragungsanfrage, die vom Absender an die Adresse 0x0..0 stammt?
Bestimmt dann der Payload-Inhalt der Dateneigenschaft, ob es sich um eine Vertragserstellungsanfrage handelt, z. B. Parser sieht to == 0x0 && data == 0x0
und zu Wertübertragung auf Konto 0x0..0 führt.
Vielen Dank an @Ismael, der klargestellt hat, wie die RLP-Codierung Daten während der Vertragsinitialisierung behandelt. Es scheint, dass das Codierungsprotokoll zwischen leerem Byte-Array und Adresse unterscheiden kann. Die Regeln der EVM sind dann anders und hier irrelevant.
Implementierungen können Payloads unterschiedlich handhaben. Beispielsweise senden Javascript-Web3-Adresseinträge von 0
& 0x0
keinen Wert mehr über web3 an die Genesis-Adresse, sind aber aufgrund des Verhaltens von JS leider mit undefined austauschbar. Diese Änderung wurde vor kurzem an web3 vorgenommen ... https://github.com/ethereum/web3.js/blob/59aae306c1c31ef6a65b9196e7f03af74c69e059/lib/web3/formatters.js#L274
Dies beantwortet meine eigene Frage, dachte aber, es wäre nützlich zu posten, da Diskussionen über diese Feinheiten in Posts zu fehlen scheinen: versehentliche Zahlungen an die Genesis-Blockadresse.