Übergeben von Token an eine Vertragsmethode

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, terminatewas soll er als Parameter übergeben tokens? Ich würde gerne ein konkretes Beispiel sehen, es würde mir helfen, mich darum zu kümmern

Antworten (1)

ERC20-Token sind nur Verträge, die Salden verfolgen. Um also Token zu übertragen, rufen Sie die transferMethode 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 IERC20BasicSchnittstelle implementieren, die vermutlich so definiert ist, dass sie balanceOfund enthält transfer, zwei ERC20-Standardfunktionen.

Nur um sicherzugehen, dass ich das verstehe, diese Token-Adressen sind die Adressen von Token-Verträgen, richtig?
Ja, das ist richtig.