Smart Contracts ohne ETH-Transaktionen

Vielleicht irre ich mich, aber ich verstehe, dass Smart Contract Transactions immer ein „VALUE“-Feld enthalten müssen, das heißt, die Menge an Ether, die Alice an Bob überweisen wird, falls eine bestimmte Bedingung erfüllt wird.

Bedeutet dies in Anbetracht dessen, dass Ethereum Smart Contracts nicht verwendet werden können, um Klauseln festzulegen, die Ether nicht betreffen? Wie zum Beispiel:

a) WENN Alice den Eigentumstitel eines Hauses an Bob überträgt, DANN überträgt Bob ihr im Gegenzug einen anderen Eigentumstitel;

Oder zum Beispiel: b) WENN der Temperaturwert für Januar unter X liegt, DANN senkt die Versicherung die Versicherungsprämie für den nächsten Monat;

c) WENN Verbraucher A etwas kauft, aber es ist kaputt, DANN bekommt der Verkäufer eine (nicht monetäre) Entschädigung.

Falls dies möglich ist, erhalten die Nodes je nach verbrauchtem Gas eine Vergütung, auch wenn zwischen den Parteien keine Ether-Transaktion stattfindet. Ist es nicht?

Vielen Dank im Voraus.

Antworten (1)

Du verstehst nicht richtig.

Transaktionen enthalten dataund valueauf Protokollebene. dataist für eine mögliche Interpretation durch einen Smart Contract. valuekann einen Wert ungleich Null enthalten und das Protokoll selbst erzwingt Regeln, wie z. B. keine ETH auszugeben, die der Absender nicht hat.

Eine Transaktion kann streng über dataund mögliche Zustandsänderungen im Vertrag gespeichert werden. Die Ausführungskosten (rechnerisches Gewicht) werden in allen Fällen in Einheiten von ausgedrückt gasund gasmit ETH bezahlt.

Hier ist ein einfacher Vertrag, der sich nicht um Wertübertragungen kümmert. Es würde einen kleinen ETH-Betrag kosten, um das Gas zum Aufrufen zu bezahlen set().

pragma solidity 0.4.25; 

contract Simple {

    uint public number;

    function set(uint _number) public {
        number = _number;
    }
}

Ich hoffe es hilft.

Zur weiteren Verdeutlichung: Wenn Sie eine Transaktion senden, um den Smart Contract aufzurufen, ja, die Transaktion wird ein Feld haben value, aber der Wert kann nur sein 0.
Danke für deine Antworten. Es bleibt nur noch ein Zweifel: Bei der Überweisung von ETH überprüfen die Miner die Transaktion, um zu prüfen, ob kein Betrug vorliegt (Vorhandensein von Geldern und keine doppelten Ausgaben). Aber in Fällen wie diesen, in denen kein Geld ("Wert") übertragen wird, sondern nur "Daten", gibt es etwas, das sie überprüfen, um die Transaktion zu genehmigen?
Das ist etwas missverstanden. Jeder verifiziert. Bergleute konkurrieren nur darum, die Reihenfolge der Transaktionen eindeutig zu machen. Die Verwirrung liegt teilweise an der Verwendung von Begriffen, da der durchschnittliche Benutzer auf eine Transaktion wartet, um sie zu „verifizieren“, aber sie bedeuten wirklich „in einem Block erscheinen“. Sobald es in einem Block erscheint, wird jeder einen Blick darauf werfen, was es tut. Falls es nicht klar ist, ziehen Sie eine ungültige Transaktion in Betracht. Es wird immer noch in einem Block enthalten sein, sodass jeder zustimmen kann, dass es in einer bestimmten Zeile in einem bestimmten Block abgebaut wurde und es nicht erlaubt war, den Status zu aktualisieren.