Nach meinem Verständnis von Smart Contracts scheint es keine Möglichkeit zu geben, eine bestimmte Funktion oder Aktion so einzustellen, dass sie sich nach einer bestimmten Zeit selbst auslöst, ist dies der Fall?
Ist die einzige Möglichkeit, nicht verkaufte Token zuzuweisen, eine Funktion festzulegen, die dies tut, und diese Funktion dann nach Ablauf des ICO-Enddatums manuell aufzurufen?
Ich kann keine Implementierung dieser Art finden, aber es ist sicherlich eine gängige Methode innerhalb von ICOs? Der „FinalizeAgent“-Vertrag von OpenZeppelins ist nicht hilfreich, da er nicht erklärt, wie er ausgelöst wird.
Danke schön.
Haben Sie darüber nachgedacht, einen [mintable] Token ( https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/ERC20/MintableToken.sol ) zu verwenden? Dann gäbe es keine unverkauften Token, um deren Verbrennung man sich Sorgen machen müsste 😉
Aber wenn du das nicht kannst.
Dann ja, Sie haben Recht, dass ein intelligenter Vertrag sich nicht selbst auslösen kann, um etwas zu tun, da dies eine Art Schleife erfordern würde. Und könnten Sie sich vorstellen, wie vermasselt das EVM wäre, wenn alle Smart Contracts in einer Schleife auf das Eintreten eines zeitbasierten Ereignisses warten würden? Nein bueno. Nicht nur das, Smart Contracts können keine Gaskosten bezahlen (IIRC, das in Arbeit ist oder ein EIP ist)
Direkte Antwort:
function burnTokens() public onlyOwner onlyCrowdsaleOver {
address(0).transfer(remainingTokens);
}
Sie sagen zu Recht, dass es keine Möglichkeit gibt, eine Aktion so einzustellen, dass sie nach einem bestimmten Zeitrahmen von selbst ausgelöst wird. Es muss eine Transaktion geben, die das tut.
Die Transaktion könnte eine solche Funktion auslösen
function burnTokensAfterSale() {
if (finalized && (block.number > 6000000)) {
_transfer(0, remainingTokens)
}
}
Es gibt das now
Schlüsselwort in Ethereum, das einem Zeitstempel entspricht.
Warum verwendest du nicht so etwas wie:
if(now > 1500000)
{
sendTo(0x123456789213456789123456789);
}
John Murphy
Betscheg