Ist es möglich, Ethash PoW in einem Vertrag zu verifizieren?

Als ich auf EtHash las, dachte ich, ob es möglich ist, den aktuellen Ethereum Proof Of Work durch einen Smart Contract zu verifizieren. Es gibt eine Anweisung SHA3, die 256-Bit-Hash berechnet, aber EtHash verwendet 512-Bit-Hash. War diese Diskrepanz beabsichtigt oder nur ein Versehen? Kann man das irgendwie ausrechnen?

Ich weiß, dass die Überprüfung von PoW im Vertrag teuer sein kann, aber es könnte nur als Antwort auf eine Herausforderung verwendet werden.

Antworten (3)

Dies scheint unmöglich zu sein, da Ethash einen pseudozufälligen Cache von 16 MB benötigt. Dies wäre teuer in der Blockchain zu speichern, da jede Ethereum-Transaktion nur maximal 89 kB (3 Millionen Gas) enthält .

Der Cache müsste nicht in der Blockchain gespeichert werden; es könnte (teuer) im Instanzspeicher konstruiert werden.

Ich denke, es ist schwierig, weil die Zeit, in der RAM (Random Access Memory) erstellt wurde, den größten Teil von Ethash ausmacht.

Du denkst? Haben Sie Statistiken oder Beweise, die dies belegen?

Sie können neuen Opcode in EVM hinzufügen, um diese Funktion zu implementieren, aber ich habe ein Problem beim korrekten Kompilieren in Solidität. Ich würde es begrüßen, wenn Sie Ihre Methode zeigen, um zu beweisen, dass Ihr Ethash nicht im Vertrag steht. https://stackoverflow.com/questions/52422805/how-verified-the-nonce-produced-by-ethash-through-contract-add-new-opcode-in