Übung: Schreiben eines Smart Contract
In dieser Einheit fügen wir dem zuvor erstellten newSolidityProject einen neuen Smart Contract hinzu.
Erstellen eines Versandvertrags
Mit dem Smart Contract, den Sie erstellen, wird der Status der auf einem Onlinemarketplace erworbenen Artikel nachverfolgt. Wenn der Vertrag erstellt wird, wird der Versandstatus auf Pending
festgelegt. Wenn ein Artikel versandt wird, wird der Versandstatus auf Shipped
festgelegt und ein Ereignis ausgegeben. Bei der Lieferung wird der Versandstatus des Artikels auf Delivered
festgelegt und ein anderes Ereignis ausgegeben.
So starten Sie diese Übung:
Klicken Sie im Projekt, das Sie erstellt haben, im Verzeichnis contracts mit der rechten Maustaste auf den Ordner, und wählen Sie aus, dass eine neue Datei namens Shipping.sol erstellt werden soll.
Kopieren Sie den folgenden Vertragsinhalt, und fügen Sie ihn in der neuen Datei hinzu.
pragma solidity >=0.4.25 <0.9.0; contract Shipping { // Our predefined values for shipping listed as enums enum ShippingStatus { Pending, Shipped, Delivered } // Save enum ShippingStatus in variable status ShippingStatus private status; // Event to launch when package has arrived event LogNewAlert(string description); // This initializes our contract state (sets enum to Pending once the program starts) constructor() public { status = ShippingStatus.Pending; } // Function to change to Shipped function Shipped() public { status = ShippingStatus.Shipped; emit LogNewAlert("Your package has been shipped"); } // Function to change to Delivered function Delivered() public { status = ShippingStatus.Delivered; emit LogNewAlert("Your package has arrived"); } // Function to get the status of the shipping function getStatus(ShippingStatus _status) internal pure returns (string memory) { // Check the current status and return the correct name if (ShippingStatus.Pending == _status) return "Pending"; if (ShippingStatus.Shipped == _status) return "Shipped"; if (ShippingStatus.Delivered == _status) return "Delivered"; } // Get status of your shipped item function Status() public view returns (string memory) { ShippingStatus _status = status; return getStatus(_status); } }
Schauen Sie sich den Vertrag an, um zu sehen, was passiert. Vergewissern Sie sich, dass der Vertrag erfolgreich erstellt werden kann.
Klicken Sie im Explorer-Bereich mit der rechten Maustaste auf den Vertragsnamen, und wählen Sie Verträge erstellen aus, um den Smart Contract zu kompilieren.
Hinzufügen einer Migration
Nun fügen wir eine Migrationsdatei hinzu, damit wir den Vertrag im Ethereum-Netzwerk bereitstellen können.
Zeigen Sie im Explorer-Bereich auf den Ordner migrations, und wählen Sie Neue Datei aus. Geben Sie der Datei den Namen 2_Shipping.js.
Fügen Sie der Datei folgenden Code hinzu:
const Shipping = artifacts.require("Shipping"); module.exports = function (deployer) { deployer.deploy(Shipping); };
Bereitstellen
Stellen Sie als nächstes sicher, dass Sie den Vertrag erfolgreich bereitstellen können, bevor Sie fortfahren. Klicken Sie mit der rechten Maustaste auf den Vertragsnamen, und wählen Sie Verträge bereitstellen aus. Wählen Sie im angezeigten Fenster Entwicklung aus, und warten Sie, bis die Bereitstellung abgeschlossen ist.
Sehen Sie sich die Informationen im Ausgabefenster an. Suchen Sie nach einer Bereitstellung von 2_Shipping.js.