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?
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_function
sendet 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.
eth
Aniket
eth
Aniket