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:
require
prüft, ob genügend Sicherheiten vorhanden sind, um die angeforderte Menge an synthetischen Vermögenswerten zu prägen.syntheticBalance
des Anrufers (msg.sender
) wird um _amount
erhöht.totalSyntheticSupply
wird ebenfalls um _amount
erhöht.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
:
require
-Anweisung prüft, ob der Anrufer über einen ausreichenden Saldo an synthetischen Vermögenswerten zum Einlösen verfügt.syntheticBalance
des Anrufers wird um _amount
verringert.totalSyntheticSupply
wird um _amount
verringert.collateral
erhöht sich um _amount
, da sie bei der Rücknahme synthetischer Vermögenswerte wieder freigegeben wird.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;
}
}
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.
Metamask: Stellen Sie sicher, dass Ihre Metamask auf das Goerli-Testnetzwerk umgestellt ist.
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.
Navigieren Sie in Remix zur Registerkarte Deploy & Run Transactions
.
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.
Stellen Sie sicher, dass Ihr Vertrag, OracleIntegratedContract
, im Dropdown-Menü Contract
ausgewählt ist.
Im Dropdown- Account
“ sollten Sie Ihre Goerli Testnet Ethereum-Adresse sehen.
Da nun die aktualisierten Funktionen vorhanden sind, kompilieren und implementieren Sie Ihren Vertrag gemäß den Schritten aus Lektion 3.
Mit dem verlängerten Vertrag:
Rufen Sie die Funktionen mintSyntheticAsset
und redeemSyntheticAsset
mit unterschiedlichen Beträgen auf, um synthetische Vermögenswerte zu prägen bzw. einzulösen.
Beobachten Sie die Änderungen in syntheticBalance
, totalSyntheticSupply
und collateral
über die Remix-IDE-Schnittstelle.
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!
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:
require
prüft, ob genügend Sicherheiten vorhanden sind, um die angeforderte Menge an synthetischen Vermögenswerten zu prägen.syntheticBalance
des Anrufers (msg.sender
) wird um _amount
erhöht.totalSyntheticSupply
wird ebenfalls um _amount
erhöht.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
:
require
-Anweisung prüft, ob der Anrufer über einen ausreichenden Saldo an synthetischen Vermögenswerten zum Einlösen verfügt.syntheticBalance
des Anrufers wird um _amount
verringert.totalSyntheticSupply
wird um _amount
verringert.collateral
erhöht sich um _amount
, da sie bei der Rücknahme synthetischer Vermögenswerte wieder freigegeben wird.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;
}
}
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.
Metamask: Stellen Sie sicher, dass Ihre Metamask auf das Goerli-Testnetzwerk umgestellt ist.
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.
Navigieren Sie in Remix zur Registerkarte Deploy & Run Transactions
.
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.
Stellen Sie sicher, dass Ihr Vertrag, OracleIntegratedContract
, im Dropdown-Menü Contract
ausgewählt ist.
Im Dropdown- Account
“ sollten Sie Ihre Goerli Testnet Ethereum-Adresse sehen.
Da nun die aktualisierten Funktionen vorhanden sind, kompilieren und implementieren Sie Ihren Vertrag gemäß den Schritten aus Lektion 3.
Mit dem verlängerten Vertrag:
Rufen Sie die Funktionen mintSyntheticAsset
und redeemSyntheticAsset
mit unterschiedlichen Beträgen auf, um synthetische Vermögenswerte zu prägen bzw. einzulösen.
Beobachten Sie die Änderungen in syntheticBalance
, totalSyntheticSupply
und collateral
über die Remix-IDE-Schnittstelle.
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!