Gibt es eine Möglichkeit, Ether aus einem Smart Contract in die Wallet des Eigentümers abzuheben, wenn keine solche Methode darin enthalten ist?

Ich habe einen Vertrag mit der Funktion erstellt, Ether davon in die Brieftasche des Eigentümers abzuheben:

contract test {
   address owner;
   function test() {
      owner = msg.sender;
   }
   function sendEtherToOwner() {                       
      owner.send(this.balance);
   }
}

Und das Abziehen von Äther funktioniert mit dieser Funktion.

Wenn ich bereits einen anderen Smart Contract ohne eine solche Funktion erstellt habe, gibt es eine Möglichkeit, Ether davon in die Eigentümer-Wallet abzuheben?

Was Sie also sagen, ist, dass, wenn keine Kill- oder Auszahlungsfunktion speziell implementiert ist, der Ether für immer in der Brieftasche steckt und es keine Möglichkeit gibt, ihn herauszuholen?

Antworten (2)

Nein. Wenn Sie keine Selbstzerstörungs- / Selbstmordfunktion oder eine Möglichkeit zum Übertragen von Äther haben, gibt es keine Möglichkeit, Äther aus dem Vertrag herauszuholen. Dies ist so beabsichtigt: Wenn es eine automatische „Fluchtluke“ gäbe, könnte niemand einem intelligenten Vertrag vertrauen, den er nicht eingesetzt hat, um Äther für ihn zu halten.

Es ist auch erwähnenswert, dass die Idee eines "Eigentümers" nicht in Verträge eingebaut ist - wenn Sie keine solche Unterscheidung codieren, hat der Ersteller eines Vertrages nicht mehr Möglichkeiten, den Vertrag zu beeinflussen als jeder andere.

es sei denn, Sie haben eine Kill- Funktion wie diese, nein.

function kill() {
        if (msg.sender == owner)
        suicide(owner);
    }