Ich versuche, ein POE-Modell basierend auf der Ethereum-Blockchain zu implementieren. Grundsätzlich erhalte ich sha-256-Hash von einem Dokument, dann sende ich eine 0-Ether-Transaktion an mich selbst und füge den Hash des Dokuments zum Feld "Daten" hinzu. Die Transaktion wird validiert und ich kann sie sehen: https://ropsten.etherscan.io/tx/0x1f4d3136b16de5ca56e04edfbb5139e902d624a200846374f7cba8b598f6dd82 (derzeit mache ich das im Testnet)
Meine Eingabedaten waren jedoch 15e2b0d3c3 ..... und in Empfangsdaten ist 0x53369b73 15e2b0 ...... Alles in Ordnung, außer dass ich nicht verstehe, warum diese 8 Ziffern eingefügt wurden, wofür stehen sie? Und was soll dieses 0x vor allem?
Wenn mir das jemand mit einfachen Worten erklären könnte, wäre ich sehr dankbar.
Das 0x
zeigt nur an, dass die Daten hexadezimal sind. Es ist nur eine Darstellungskonvention und nicht Teil der Daten.
Der 53369b73
Teil ist interessanter. Das sieht aus wie die Signatur eines Funktionsaufrufs in der Ethereum ABI . Als Sie die Transaktion erstellt haben, sieht es so aus, als hätten Sie eine Methode für einen Vertrag aufgerufen. Die "Signatur" dieser Methode bildet immer die ersten vier Bytes der Anrufdaten gemäß der ABI-Spezifikation - so kann ein Vertrag herausfinden, welche seiner Methoden Sie aufrufen. (Wenn Sie weitere Informationen darüber geben, wie Sie die Transaktion überhaupt erstellt haben, kann ich dies wahrscheinlich erweitern.)
Sie können Daten als Transaktion senden, ohne eine Methode aufzurufen. Beispielsweise web3.js
können Sie sendTransaction
mit dem Parameter genau angeben, welche Daten Sie senden möchten data
. Wenn Sie jedoch mit in Solidity geschriebenen Verträgen arbeiten, möchten Sie dies wahrscheinlich nicht direkt tun.
EtherPaul
Benjaminion
EtherPaul
Benjaminion
EtherPaul
Benjaminion