Ich bin ziemlich neu in der Entwicklung intelligenter Verträge und versuche immer noch, das ganze Senden von ETH/Token an eine Vertragssache herauszufinden. In einem Artikel habe ich das folgende Beispiel für die Kündigungsmethode eines Vertrags gesehen, die alle Token im Vertrag an den Eigentümer zurückerstatten würde:
function terminate(IERC20Basic[] tokens) external onlyOwner {
// Transfer tokens to owner
for(uint i = 0; i < tokens.length; i++) {
uint256 balance = tokens[i].balanceOf(this);
tokens[i].transfer(owner, balance);
}
// Transfer Ether to owner and terminate contract
selfdestruct(owner);
}
Was ich nicht verstehe ist - wenn der Besitzer anruft, terminate
was soll er als Parameter übergeben tokens
? Ich würde gerne ein konkretes Beispiel sehen, es würde mir helfen, mich darum zu kümmern
ERC20-Token sind nur Verträge, die Salden verfolgen. Um also Token zu übertragen, rufen Sie die transfer
Methode für einen dieser Verträge auf.
Diese Funktion kann gelesen werden als:
"Finden Sie für jeden Token-Smart-Vertrag das Guthaben dieses Vertrags und senden Sie dann das volle Guthaben an die owner
."
Um Ihre Frage zu beantworten, was übergeben wird, ist ein Array von Adressen . Solidity wandelt diese Adressen implizit um und behandelt sie als Smart Contracts, die die IERC20Basic
Schnittstelle implementieren, die vermutlich so definiert ist, dass sie balanceOf
und enthält transfer
, zwei ERC20-Standardfunktionen.
Andrej
Benutzer19510