Was tun mit Smart Contracts, um Replay-Angriffe zu vermeiden?

Ich versuche, einen Smart Contract für Crowdsale zu schreiben. Welche zusätzlichen Maßnahmen sollte man bei der Entwicklung von Smart Contracts beachten, um Replay-Angriffe (nach dem Hard Fork von Block 1.920.000) zu vermeiden?

Welchen Vertrag schreiben Sie und was ist Ihr Anliegen?
Ich habe in meiner Frage hinzugefügt.
Es ist wahrscheinlich immer noch zu breit, aber ich werde es wieder öffnen (Sie können in Zukunft auch auf "erneut öffnen" klicken). Denken Sie daran, je besser die Frage, desto bessere Antworten werden Sie wahrscheinlich bekommen.
Vielen Dank. Eigentlich bin ich neu in dieser Technologie und arbeite mit Testnet, also ist das Stellen von Fragen der einzige Weg, um vollständig vorbereitet zu sein, bevor ich ins Livenet gehe.

Antworten (1)

Wenn ein Benutzer eine Transaktion mit Ethereum (ETH) an Ihren Vertrag sendet und dieser Benutzer auch ETC auf demselben Konto in der Ethereum Classic Blockchain (ETC) hat, dann könnte diese Transaktion unerwartet in der Ethereum Classic Blockchain (ETC) wiedergegeben werden Ergebnisse.

Um dies zu vermeiden, können Sie Ihren Vertrag mit einem Modifikator in Ihren Funktionen auf beide Blockchains hochladen, der eine Ausnahme auslöst, wenn er in der Ethereum Classic Blockchain (ETC) ausgeführt wird.

Beispiel:

contract AmIOnTheFork {
    function forked() constant returns(bool);
}

contract YOUR_CONTRACT{
    // Fork oracle to use
    AmIOnTheFork amIOnTheFork = AmIOnTheFork(0x2bd2326c993dfaef84f696526064ff22eba5b362);

    // Only allows execution in the forked chain (ETH)
    modifier only_eth_chain() {
        if (!amIOnTheFork.forked()) throw;
        _
    }

    function your_function()
        only_eth_chain()
    {
      // YOUR_FUNCTION_CODE
    }
}

Wenn Ihr Benutzer die Funktion ausführen möchte, your_functionsendet er auf diese Weise eine Transaktion in der Ethereum Blockchain (ETH). Diese Transaktion wird wie gewohnt ausgeführt, aber wenn die Transaktion in der Ethereum Classic Blockchain (ETC) wiederholt wird, wird die wiederholte Transaktion nicht akzeptiert und der gesendete ETC wird zurückgegeben.