Wenn jemand einen Smart Contract erstellt (und Eigentümer dieses Vertrags ist), kann diese Person dann ETH und andere Token sammeln, die an die Adresse des Smart Contract gesendet werden?
Dies ist nur möglich, wenn der Ersteller eines Smart Contracts dies ermöglicht . Wenn ein Vertrag keine Auszahlungsfunktion () implementiert, kann das Geld vom Eigentümer unwiederbringlich sein.
Dies ist ein Feature, kein Fehler. Möchten Sie, dass der Ether-Delta-Smart-Contract-Ersteller alle Ether und Token aus dem Vertrag nach Lust und Laune abzieht? Nein.
Ein Smart Contract hat keine Eigentümer- oder Auszahlungsmechanismen, es sei denn, sie wurden im Vertrag kodiert. Dies verleiht Smart Contracts die Fähigkeit, vertrauenswürdig zu sein: Es ist möglich, Verträge zu verwenden, ohne dem Eigentümer zu vertrauen, indem man den Code des Vertrags sorgfältig versteht.
Wenn Sie ein Smart-Contract-Autor sind und ERC-20-Token abheben möchten, müssen Sie zwei Schritte ausführen.
Schritt 1: Fügen Sie diese Schnittstelle (Teilmenge von ERC-20) über Ihrem Vertrag hinzu
contract Token {
function transfer(address _to, uint _value) returns (bool success);
function balanceOf(address _owner) constant returns (uint balance);
}
Schritt 2: Hier ist eine Funktion, die Sie Ihrem Vertrag hinzufügen können
function withdrawTokens(address tokenContract) external onlyOwner {
Token tc = Token(tokenContract);
tc.transfer(owner, tc.balanceOf(this));
}
Dies setzt voraus, dass Sie sich selbst als owner
. Da Ihr Vertrag viele verschiedene Arten von Token erhalten kann, müssen Sie withdrawTokens
von jedem tokenContract
. Wenn owner
es sich um einen anderen Vertrag handelt, muss dieser auch eine withdrawTokens
Funktion haben, um zu verhindern, dass Token im owner
Vertrag hängen bleiben.
Der Code ist einfacher:
function withdrawEther() external onlyOwner {
owner.transfer(this.balance);
}
Wenn owner
es sich um einen anderen Vertrag handelt, muss er auch eine withdrawEther
Funktion haben, um zu verhindern, dass Ether im owner
Vertrag hängen bleibt.
Eine weitere Referenz: Wie man Ether von einem Vertrag zurückzieht
Richard Horrocks
eth