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.
Du verstehst nicht richtig.
Transaktionen enthalten data
und value
auf Protokollebene. data
ist für eine mögliche Interpretation durch einen Smart Contract. value
kann 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 data
und mögliche Zustandsänderungen im Vertrag gespeichert werden. Die Ausführungskosten (rechnerisches Gewicht) werden in allen Fällen in Einheiten von ausgedrückt gas
und gas
mit 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.
Benutzer19510
value
, aber der Wert kann nur sein0
.Niak3
Rob Hitchens