Lektion 4

Implementierung eines synthetischen Asset-Vertrags in der Remix-IDE

In dieser Lektion erweitern wir unseren SyntheticAsset.sol-Vertrag um Funktionen zum Prägen und Einlösen synthetischer Vermögenswerte. Diese Vorgänge sind für das Funktionieren synthetischer Vermögenswerte in einem realen Szenario von entscheidender Bedeutung. Lassen Sie uns den Code analysieren, um zu verstehen, wie diese Funktionen implementiert werden.

Vertragsverlängerung

Solidity 
 // Fügen Sie diese Zustandsvariablen zu Ihrem Vertrag 
 hinzu. Mapping(address => uint256) public SyntheticBalance; 
 uint256 public totalSyntheticSupply;

Im Ausschnitt oben:

  • syntheticBalance ist eine Zuordnung, die den Saldo der synthetischen Vermögenswerte für jede Adresse verfolgt.
  • totalSyntheticSupply ist eine Variable, die das Gesamtangebot an im Umlauf befindlichen synthetischen Vermögenswerten verfolgt.
Solidität 
 // Aktualisieren Sie die mintSyntheticAsset-Funktion 
 function mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

In der mintSyntheticAsset -Funktion:

  • Eine require prüft, ob genügend Sicherheiten vorhanden sind, um die angeforderte Menge an synthetischen Vermögenswerten zu prägen.
  • Der syntheticBalance des Anrufers (msg.sender) wird um _amount erhöht.
  • Das totalSyntheticSupply wird ebenfalls um _amount erhöht.
  • Die collateral wird um _amount verringert, da sie zur Absicherung der neu geprägten synthetischen Vermögenswerte verwendet wird.
Solidität 
 // Aktualisieren Sie die Funktion redeemSyntheticAsset 
 function redeemSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

In der Funktion redeemSyntheticAsset :

  • Eine require -Anweisung prüft, ob der Anrufer über einen ausreichenden Saldo an synthetischen Vermögenswerten zum Einlösen verfügt.
  • Der syntheticBalance des Anrufers wird um _amount verringert.
  • Das totalSyntheticSupply wird um _amount verringert.
  • Die collateral erhöht sich um _amount , da sie bei der Rücknahme synthetischer Vermögenswerte wieder freigegeben wird.

Der vollständige Code

TypeScript 
 // SPDX-License-Identifier: MIT 
 Pragma Solidity ^0.8.0; 

 Vertrag SyntheticAsset { 
 uint256 public basedAssetPrice; 
 uint256 öffentliche Sicherheiten; 
 Adresse öffentlicher Eigentümer; 
 Mapping(address => uint256) public SyntheticBalance; 
 uint256 public totalSyntheticSupply; 

 Konstruktor() {
        owner = msg.sender;
    }

    Modifikator onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    Funktion updatePrice(uint256 _price) öffentlich onlyOwner {
        underlyingAssetPrice = _price;
    }

    Funktion DepositCollateral(uint256 _amount) öffentlich {
        collateral += _amount;
    }

    Funktion unlockCollateral(uint256 _amount) öffentlich {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    Funktion getSyntheticAssetPrice() öffentliche Ansicht gibt (uint256) {
        return underlyingAssetPrice;
    }

    Funktion mintSyntheticAsset(uint256 _amount) öffentlich {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    Funktion redeemSyntheticAsset(uint256 _amount) öffentlich {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Vorbereitung: Erwerb von Testnet Ether und Einrichten Ihrer Umgebung

Erwerb von Testnet Ether

Um Verträge im Goerli Testnet bereitzustellen, benötigen Sie Goerli ETH (GoerliETH). Obwohl es keinen wirklichen Wert hat, ist es für die Zahlung der Gasgebühren im Testnetz unerlässlich.

  1. Metamask: Stellen Sie sicher, dass Ihre Metamask auf das Goerli-Testnetzwerk umgestellt ist.

  2. Gehen Sie zum Goerli-Wasserhahn , um etwas GoerliETH anzufordern. Geben Sie einfach Ihre Goerli Testnet Ethereum-Adresse ein und Sie sollten die Test-ETH in Kürze erhalten.

Konfigurieren von Remix für die Goerli Testnet-Bereitstellung

  1. Navigieren Sie in Remix zur Registerkarte Deploy & Run Transactions .

  2. Wählen Sie für die Option Environment die Injected Provider aus. Mit dieser Option kann Remix eine Verbindung zu jedem Netzwerk herstellen, auf das Ihre Metamask derzeit eingestellt ist. Dies sollte Goerli Testnet sein.

  3. Stellen Sie sicher, dass Ihr Vertrag, OracleIntegratedContract, im Dropdown-Menü Contract ausgewählt ist.

  4. Im Dropdown- Account “ sollten Sie Ihre Goerli Testnet Ethereum-Adresse sehen.

Kompilieren und Bereitstellen des erweiterten Vertrags

Da nun die aktualisierten Funktionen vorhanden sind, kompilieren und implementieren Sie Ihren Vertrag gemäß den Schritten aus Lektion 3.

Interaktion mit dem erweiterten Vertrag

Mit dem verlängerten Vertrag:

  1. Rufen Sie die Funktionen mintSyntheticAsset und redeemSyntheticAsset mit unterschiedlichen Beträgen auf, um synthetische Vermögenswerte zu prägen bzw. einzulösen.

  2. Beobachten Sie die Änderungen in syntheticBalance, totalSyntheticSupply und collateral über die Remix-IDE-Schnittstelle.

Vertragsverhalten beobachten

Beschäftigen Sie sich mit dem Vertrag und beobachten Sie, wie sich die Zustandsvariablen und der Gesamtvertragsstatus durch Ihre Interaktionen entwickeln. Diese praktische Erfahrung wird die Konzepte und Abläufe synthetischer Vermögenswerte festigen.

Indem wir unseren Vertrag um wesentliche Funktionalitäten erweitern, kommen wir einem realistischen Vertrag über synthetische Vermögenswerte näher. In der nächsten Lektion konzentrieren wir uns auf das Testen dieses Vertrags, um sicherzustellen, dass er in verschiedenen Szenarios wie vorgesehen funktioniert. Das praktische Verständnis synthetischer Vermögenswerte vertieft sich im Laufe der Zeit immer weiter. Seien Sie gespannt auf mehr praktisches Lernen in der kommenden Lektion!

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.
Katalog
Lektion 4

Implementierung eines synthetischen Asset-Vertrags in der Remix-IDE

In dieser Lektion erweitern wir unseren SyntheticAsset.sol-Vertrag um Funktionen zum Prägen und Einlösen synthetischer Vermögenswerte. Diese Vorgänge sind für das Funktionieren synthetischer Vermögenswerte in einem realen Szenario von entscheidender Bedeutung. Lassen Sie uns den Code analysieren, um zu verstehen, wie diese Funktionen implementiert werden.

Vertragsverlängerung

Solidity 
 // Fügen Sie diese Zustandsvariablen zu Ihrem Vertrag 
 hinzu. Mapping(address => uint256) public SyntheticBalance; 
 uint256 public totalSyntheticSupply;

Im Ausschnitt oben:

  • syntheticBalance ist eine Zuordnung, die den Saldo der synthetischen Vermögenswerte für jede Adresse verfolgt.
  • totalSyntheticSupply ist eine Variable, die das Gesamtangebot an im Umlauf befindlichen synthetischen Vermögenswerten verfolgt.
Solidität 
 // Aktualisieren Sie die mintSyntheticAsset-Funktion 
 function mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

In der mintSyntheticAsset -Funktion:

  • Eine require prüft, ob genügend Sicherheiten vorhanden sind, um die angeforderte Menge an synthetischen Vermögenswerten zu prägen.
  • Der syntheticBalance des Anrufers (msg.sender) wird um _amount erhöht.
  • Das totalSyntheticSupply wird ebenfalls um _amount erhöht.
  • Die collateral wird um _amount verringert, da sie zur Absicherung der neu geprägten synthetischen Vermögenswerte verwendet wird.
Solidität 
 // Aktualisieren Sie die Funktion redeemSyntheticAsset 
 function redeemSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

In der Funktion redeemSyntheticAsset :

  • Eine require -Anweisung prüft, ob der Anrufer über einen ausreichenden Saldo an synthetischen Vermögenswerten zum Einlösen verfügt.
  • Der syntheticBalance des Anrufers wird um _amount verringert.
  • Das totalSyntheticSupply wird um _amount verringert.
  • Die collateral erhöht sich um _amount , da sie bei der Rücknahme synthetischer Vermögenswerte wieder freigegeben wird.

Der vollständige Code

TypeScript 
 // SPDX-License-Identifier: MIT 
 Pragma Solidity ^0.8.0; 

 Vertrag SyntheticAsset { 
 uint256 public basedAssetPrice; 
 uint256 öffentliche Sicherheiten; 
 Adresse öffentlicher Eigentümer; 
 Mapping(address => uint256) public SyntheticBalance; 
 uint256 public totalSyntheticSupply; 

 Konstruktor() {
        owner = msg.sender;
    }

    Modifikator onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    Funktion updatePrice(uint256 _price) öffentlich onlyOwner {
        underlyingAssetPrice = _price;
    }

    Funktion DepositCollateral(uint256 _amount) öffentlich {
        collateral += _amount;
    }

    Funktion unlockCollateral(uint256 _amount) öffentlich {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    Funktion getSyntheticAssetPrice() öffentliche Ansicht gibt (uint256) {
        return underlyingAssetPrice;
    }

    Funktion mintSyntheticAsset(uint256 _amount) öffentlich {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    Funktion redeemSyntheticAsset(uint256 _amount) öffentlich {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Vorbereitung: Erwerb von Testnet Ether und Einrichten Ihrer Umgebung

Erwerb von Testnet Ether

Um Verträge im Goerli Testnet bereitzustellen, benötigen Sie Goerli ETH (GoerliETH). Obwohl es keinen wirklichen Wert hat, ist es für die Zahlung der Gasgebühren im Testnetz unerlässlich.

  1. Metamask: Stellen Sie sicher, dass Ihre Metamask auf das Goerli-Testnetzwerk umgestellt ist.

  2. Gehen Sie zum Goerli-Wasserhahn , um etwas GoerliETH anzufordern. Geben Sie einfach Ihre Goerli Testnet Ethereum-Adresse ein und Sie sollten die Test-ETH in Kürze erhalten.

Konfigurieren von Remix für die Goerli Testnet-Bereitstellung

  1. Navigieren Sie in Remix zur Registerkarte Deploy & Run Transactions .

  2. Wählen Sie für die Option Environment die Injected Provider aus. Mit dieser Option kann Remix eine Verbindung zu jedem Netzwerk herstellen, auf das Ihre Metamask derzeit eingestellt ist. Dies sollte Goerli Testnet sein.

  3. Stellen Sie sicher, dass Ihr Vertrag, OracleIntegratedContract, im Dropdown-Menü Contract ausgewählt ist.

  4. Im Dropdown- Account “ sollten Sie Ihre Goerli Testnet Ethereum-Adresse sehen.

Kompilieren und Bereitstellen des erweiterten Vertrags

Da nun die aktualisierten Funktionen vorhanden sind, kompilieren und implementieren Sie Ihren Vertrag gemäß den Schritten aus Lektion 3.

Interaktion mit dem erweiterten Vertrag

Mit dem verlängerten Vertrag:

  1. Rufen Sie die Funktionen mintSyntheticAsset und redeemSyntheticAsset mit unterschiedlichen Beträgen auf, um synthetische Vermögenswerte zu prägen bzw. einzulösen.

  2. Beobachten Sie die Änderungen in syntheticBalance, totalSyntheticSupply und collateral über die Remix-IDE-Schnittstelle.

Vertragsverhalten beobachten

Beschäftigen Sie sich mit dem Vertrag und beobachten Sie, wie sich die Zustandsvariablen und der Gesamtvertragsstatus durch Ihre Interaktionen entwickeln. Diese praktische Erfahrung wird die Konzepte und Abläufe synthetischer Vermögenswerte festigen.

Indem wir unseren Vertrag um wesentliche Funktionalitäten erweitern, kommen wir einem realistischen Vertrag über synthetische Vermögenswerte näher. In der nächsten Lektion konzentrieren wir uns auf das Testen dieses Vertrags, um sicherzustellen, dass er in verschiedenen Szenarios wie vorgesehen funktioniert. Das praktische Verständnis synthetischer Vermögenswerte vertieft sich im Laufe der Zeit immer weiter. Seien Sie gespannt auf mehr praktisches Lernen in der kommenden Lektion!

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.