第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.

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

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

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

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第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.

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

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

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

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。