Ich bin neu bei Smart Contracts. Als ich ein Beispiel für Smart Contracts sah, wurde mir klar, dass es sich nur um ein Stück Code handelt, nicht genau um Verträge.
Zum Beispiel function sendCoin(address receiver, uint amount)
ist eine in Smart Contract definierte Methode, die die Empfängeradresse und den Betrag nimmt, um Coins an den Empfänger zu senden.
Aber im Vertrag geht es nicht darum, wie man Coins versendet, sondern wie viel man versendet. Wenn das Material beispielsweise pünktlich geliefert wird, leisten Sie die vollständige Zahlung, andernfalls berechnen Sie eine Strafe von 10 % für jede Woche Verspätung.
Nach meinem Verständnis befindet sich der Aufruf – wo diese Wenn-dann-Regeln geschrieben sind (Darstellung des Vertrags) – außerhalb des Smart Contract.
Ist mein Verständnis richtig? Ist der Begriff „Smart Contract“ irreführend?
Werden in der Anwendung, die diese Funktionen auslöst, immer noch echte Verträge außerhalb der Blockchain codiert? Wenn ja, warum Smart Contracts dann nicht manipuliert werden können, können die Anwendungen den Vertrag immer noch kompromittieren – zum Beispiel. durch nicht vertragsgemäße Zahlung.
Ich glaube, das Wort Vertrag kommt aus der Vertragsprogrammierung . Ist eine Möglichkeit, Software zu entwerfen, die die Anforderungen dieses Paradigmas erfüllt. In der Tat unterstützt Solidity die Vertragsprogrammierung nativ.
pragma solidity ^0.4.0;
contract Sharer {
function sendHalf(address addr) public payable returns (uint balance) {
require(msg.value % 2 == 0); // Only allow even numbers
uint balanceBeforeTransfer = this.balance;
addr.transfer(msg.value / 2);
// Since transfer throws an exception on failure and
// cannot call back here, there should be no way for us to
// still have half of the money.
assert(this.balance == balanceBeforeTransfer - msg.value / 2);
return this.balance;
}
}
Anhand dieses Beispiels können Sie sehen, dass requires
es sich um die Vorbedingungen handelt, während assets
es sich um Nachbedingungen handelt. Die Nebenwirkungen sind Ausnahmen, die den Status in der EVM zurücksetzen.
Ihr Verständnis ist genau richtig. Smart Contracts sind weder Smart noch Contracts. Es ist ein irreführendes Wort.
Es ist nur Software, die auf dem EVM läuft. Es gibt nichts, was sie durchsetzt, außer der Tatsache, dass der Code selbst niemals geändert werden kann.
Ich denke, es ist die Unveränderlichkeit des Codes und die Tatsache, dass der Code Open Source ist (und daher von allen Parteien vereinbart wurde), die die Leute dazu bringt, sie als Verträge zu betrachten. Sie können sie nach der Bereitstellung nicht mehr ändern.
Benutzer38075
Kumar