Pelajaran 4

Реалізація контракту синтетичного активу в Remix IDE

У цьому уроці ми розширимо наш контракт SyntheticAsset.sol, додавши функції для карбування та викупу синтетичних активів. Ці операції мають вирішальне значення для функціонування синтетичних активів у реальному сценарії. Давайте розберемо код, щоб зрозуміти, як реалізовані ці функції.

Продовження Контракту

Solidity 
 // Додайте ці змінні стану до свого контракту 
 mapping(address => uint256) public syntheticBalance; 
 uint256 public totalSyntheticSupply;

У наведеному вище фрагменті:

  • syntheticBalance — це відображення, яке відстежує баланс синтетичних активів для кожної адреси.
  • totalSyntheticSupply — це змінна, яка відстежує загальну пропозицію синтетичних активів в обігу.
Solidity 
 // Оновлення функції mintSyntheticAsset 
 функція mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

У функції mintSyntheticAsset :

  • Заява require перевіряє наявність достатньої застави для карбування запитаної кількості синтетичних активів.
  • syntheticBalance абонента (msg.sender) збільшується на _amount.
  • totalSyntheticSupply також збільшується на _amount.
  • collateral зменшується на _amount , оскільки вона використовується для забезпечення новостворених синтетичних активів.
Solidity 
 // Оновлення функції redeemSyntheticAsset 
 redeemSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

У функції redeemSyntheticAsset :

  • Оператор require перевіряє, чи має абонент достатній баланс синтетичних активів для викупу.
  • syntheticBalance абонента зменшується на _amount.
  • totalSyntheticSupply зменшено на _amount.
  • collateral збільшується на _amount , оскільки вона повертається після викупу синтетичних активів.

Повний код

TypeScript 
 // SPDX-License-Identifier: MIT 
 pragma solidity ^0.8.0; 

 контракт SyntheticAsset { 
 uint256 public underlyingAssetPrice; 
 uint256 державна застава; 
 адреса державного власника; 
 відображення (адреса => uint256) public syntheticBalance; 
 uint256 public totalSyntheticSupply; 

 constructor() {
        owner = msg.sender;
    }

    модифікатор onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    функція updatePrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    функція depositCollateral(uint256 _amount) public {
        collateral += _amount;
    }

    функція removeCollateral(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    функція getSyntheticAssetPrice() public view повертає (uint256) {
        return underlyingAssetPrice;
    }

    функція mintSyntheticAsset(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    функція redeemSyntheticAsset(uint256 _amount) public {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Підготовка: придбання Testnet Ether і налаштування вашого середовища

Придбання Testnet Ether

Щоб розгорнути контракти в Goerli Testnet, вам знадобиться Goerli ETH (GoerliETH). Хоча це не має реальної цінності, це важливо для сплати зборів за газ у тестовій мережі.

  1. Метамаска: переконайтеся, що ваша метамаска переключена на тестову мережу Goerli.

  2. Перейдіть до крана Goerli , щоб запросити GoerliETH. Просто вставте свою адресу Goerli Testnet Ethereum, і незабаром ви отримаєте тестовий ETH.

Налаштування Remix для розгортання Goerli Testnet

  1. У Remix перейдіть на вкладку Deploy & Run Transactions .

  2. Для опції Environment виберіть Injected Provider. Ця опція дозволяє Remix підключатися до будь-якої мережі, на яку зараз налаштовано ваш Metamask, якою має бути Goerli Testnet.

  3. Переконайтеся, що ваш контракт, OracleIntegratedContract, вибрано у розкривному списку Contract .

  4. У розкривному меню Account ви повинні побачити свою адресу Goerli Testnet Ethereum.

Компіляція та розгортання розширеного контракту

Тепер, маючи оновлені функції, скомпілюйте та розгорніть свій контракт, дотримуючись інструкцій з уроку 3.

Взаємодія з розширеним контрактом

З розгорнутим продовженим контрактом:

  1. Викликайте функції mintSyntheticAsset і redeemSyntheticAsset із різними сумами для карбування та викупу синтетичних активів відповідно.

  2. Спостерігайте за змінами в syntheticBalance, totalSyntheticSupply та collateral через інтерфейс Remix IDE.

Спостереження за поведінкою контракту

Займайтеся контрактом і спостерігайте, як змінні стану та загальний стан контракту розвиваються разом із вашою взаємодією. Цей практичний досвід закріпить концепції та операції синтетичних активів.

Збагачуючи наш контракт основними функціями, ми наближаємося до реалістичного контракту на синтетичні активи. У наступному уроці ми зосередимося на тестуванні цього контракту, щоб переконатися, що він працює належним чином у різних сценаріях. Практичне розуміння синтетичних активів продовжує поглиблюватися в міру нашого прогресу. Залишайтеся з нами, щоб отримати більше практичного навчання на наступному уроці!

Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.
Katalog
Pelajaran 4

Реалізація контракту синтетичного активу в Remix IDE

У цьому уроці ми розширимо наш контракт SyntheticAsset.sol, додавши функції для карбування та викупу синтетичних активів. Ці операції мають вирішальне значення для функціонування синтетичних активів у реальному сценарії. Давайте розберемо код, щоб зрозуміти, як реалізовані ці функції.

Продовження Контракту

Solidity 
 // Додайте ці змінні стану до свого контракту 
 mapping(address => uint256) public syntheticBalance; 
 uint256 public totalSyntheticSupply;

У наведеному вище фрагменті:

  • syntheticBalance — це відображення, яке відстежує баланс синтетичних активів для кожної адреси.
  • totalSyntheticSupply — це змінна, яка відстежує загальну пропозицію синтетичних активів в обігу.
Solidity 
 // Оновлення функції mintSyntheticAsset 
 функція mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

У функції mintSyntheticAsset :

  • Заява require перевіряє наявність достатньої застави для карбування запитаної кількості синтетичних активів.
  • syntheticBalance абонента (msg.sender) збільшується на _amount.
  • totalSyntheticSupply також збільшується на _amount.
  • collateral зменшується на _amount , оскільки вона використовується для забезпечення новостворених синтетичних активів.
Solidity 
 // Оновлення функції redeemSyntheticAsset 
 redeemSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

У функції redeemSyntheticAsset :

  • Оператор require перевіряє, чи має абонент достатній баланс синтетичних активів для викупу.
  • syntheticBalance абонента зменшується на _amount.
  • totalSyntheticSupply зменшено на _amount.
  • collateral збільшується на _amount , оскільки вона повертається після викупу синтетичних активів.

Повний код

TypeScript 
 // SPDX-License-Identifier: MIT 
 pragma solidity ^0.8.0; 

 контракт SyntheticAsset { 
 uint256 public underlyingAssetPrice; 
 uint256 державна застава; 
 адреса державного власника; 
 відображення (адреса => uint256) public syntheticBalance; 
 uint256 public totalSyntheticSupply; 

 constructor() {
        owner = msg.sender;
    }

    модифікатор onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    функція updatePrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    функція depositCollateral(uint256 _amount) public {
        collateral += _amount;
    }

    функція removeCollateral(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    функція getSyntheticAssetPrice() public view повертає (uint256) {
        return underlyingAssetPrice;
    }

    функція mintSyntheticAsset(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    функція redeemSyntheticAsset(uint256 _amount) public {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Підготовка: придбання Testnet Ether і налаштування вашого середовища

Придбання Testnet Ether

Щоб розгорнути контракти в Goerli Testnet, вам знадобиться Goerli ETH (GoerliETH). Хоча це не має реальної цінності, це важливо для сплати зборів за газ у тестовій мережі.

  1. Метамаска: переконайтеся, що ваша метамаска переключена на тестову мережу Goerli.

  2. Перейдіть до крана Goerli , щоб запросити GoerliETH. Просто вставте свою адресу Goerli Testnet Ethereum, і незабаром ви отримаєте тестовий ETH.

Налаштування Remix для розгортання Goerli Testnet

  1. У Remix перейдіть на вкладку Deploy & Run Transactions .

  2. Для опції Environment виберіть Injected Provider. Ця опція дозволяє Remix підключатися до будь-якої мережі, на яку зараз налаштовано ваш Metamask, якою має бути Goerli Testnet.

  3. Переконайтеся, що ваш контракт, OracleIntegratedContract, вибрано у розкривному списку Contract .

  4. У розкривному меню Account ви повинні побачити свою адресу Goerli Testnet Ethereum.

Компіляція та розгортання розширеного контракту

Тепер, маючи оновлені функції, скомпілюйте та розгорніть свій контракт, дотримуючись інструкцій з уроку 3.

Взаємодія з розширеним контрактом

З розгорнутим продовженим контрактом:

  1. Викликайте функції mintSyntheticAsset і redeemSyntheticAsset із різними сумами для карбування та викупу синтетичних активів відповідно.

  2. Спостерігайте за змінами в syntheticBalance, totalSyntheticSupply та collateral через інтерфейс Remix IDE.

Спостереження за поведінкою контракту

Займайтеся контрактом і спостерігайте, як змінні стану та загальний стан контракту розвиваються разом із вашою взаємодією. Цей практичний досвід закріпить концепції та операції синтетичних активів.

Збагачуючи наш контракт основними функціями, ми наближаємося до реалістичного контракту на синтетичні активи. У наступному уроці ми зосередимося на тестуванні цього контракту, щоб переконатися, що він працює належним чином у різних сценаріях. Практичне розуміння синтетичних активів продовжує поглиблюватися в міру нашого прогресу. Залишайтеся з нами, щоб отримати більше практичного навчання на наступному уроці!

Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.