Pelajaran 4

Triển khai Hợp đồng tài sản tổng hợp trong Remix IDE

Trong bài học này, chúng tôi sẽ mở rộng hợp đồng SyntheticAsset.sol bằng cách thêm các chức năng khai thác và mua lại tài sản tổng hợp. Những hoạt động này rất quan trọng đối với hoạt động của tài sản tổng hợp trong kịch bản thế giới thực. Hãy mổ xẻ mã để hiểu cách các chức năng này được triển khai.

Gia hạn hợp đồng

Solidity 
 // Thêm các biến trạng thái này vào hợp đồng của bạn 
 ánh xạ(địa chỉ => uint256) public tổng hợpBalance; 
 uint256 công cộng Tổng nguồn cung tổng hợp;

Trong đoạn trích trên:

  • syntheticBalance là một ánh xạ theo dõi số dư tài sản tổng hợp cho từng địa chỉ.
  • totalSyntheticSupply là một biến số theo dõi tổng nguồn cung tài sản tổng hợp đang lưu hành.
Solidity 
 // Cập nhật hàm mintSyntheticAsset 
 hàm mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

Trong hàm mintSyntheticAsset :

  • Tuyên bố require kiểm tra xem có đủ tài sản thế chấp để đúc số lượng tài sản tổng hợp được yêu cầu hay không.
  • syntheticBalance của người gọi (msg.sender) được tăng thêm _amount.
  • totalSyntheticSupply cũng tăng thêm _amount.
  • collateral giảm đi _amount vì nó được sử dụng để hỗ trợ cho các tài sản tổng hợp mới được tạo ra.
Solidity 
 // Cập nhật hàm RedSyntheticAsset 
 RedSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

Trong hàm redeemSyntheticAsset :

  • Câu lệnh require kiểm tra xem người gọi có đủ số dư tài sản tổng hợp để đổi hay không.
  • syntheticBalance của người gọi giảm _amount.
  • totalSyntheticSupply giảm đi _amount.
  • collateral được tăng lên _amount khi nó được giải phóng trở lại khi mua lại tài sản tổng hợp.

Mã đầy đủ

TypeScript 
 // SPDX-Giấy phép-Mã định danh: MIT 
 độ vững chắc pragma ^0.8.0; 

 hợp đồng SyntheticAsset { 
 uint256 public FundamentalAssetPrice; 
 tài sản thế chấp công khai uint256; 
 địa chỉ công hữu; 
 ánh xạ(địa chỉ => uint256) tổng hợp công cộngBalance; 
 uint256 công cộng Tổng nguồn cung tổng hợp; 

 hàm tạo() {
        owner = msg.sender;
    }

    công cụ sửa đổi onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    hàm cập nhậtPrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    hàm DepositColonymous(uint256 _amount) public {
        collateral += _amount;
    }

    hàm pullColonymous(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    hàm getSyntheticAssetprice() chế độ xem công khai trả về (uint256) {
        return underlyingAssetPrice;
    }

    hàm mintSyntheticAsset(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    hàm RedSyntheticAsset(uint256 _amount) public {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Chuẩn bị: Nhận Ether Testnet và thiết lập môi trường của bạn

Mua Ether Testnet

Để triển khai các hợp đồng trên Goerli Testnet, bạn sẽ cần Goerli ETH (GoerliETH). Mặc dù nó không có bất kỳ giá trị thực nào nhưng nó rất cần thiết để thanh toán phí gas trên mạng thử nghiệm.

  1. Metamask: Đảm bảo Metamask của bạn được chuyển sang Mạng thử nghiệm Goerli.

  2. Đi tới vòi Goerli để yêu cầu một số GoerliETH. Chỉ cần dán địa chỉ Goerli Testnet Ethereum của bạn và bạn sẽ sớm nhận được ETH thử nghiệm.

Định cấu hình Remix để triển khai Goerli Testnet

  1. Trong Remix, điều hướng đến tab Deploy & Run Transactions .

  2. Đối với tùy chọn Environment , chọn Injected Provider. Tùy chọn này cho phép Remix kết nối với bất kỳ mạng nào mà Metamask của bạn hiện được đặt, đó phải là Goerli Testnet.

  3. Đảm bảo hợp đồng của bạn, OracleIntegratedContract, được chọn trong danh sách Contract thả xuống.

  4. Đối với menu thả xuống Account , bạn sẽ thấy địa chỉ Goerli Testnet Ethereum của mình.

Biên soạn và triển khai hợp đồng mở rộng

Bây giờ với các chức năng cập nhật đã sẵn sàng, hãy biên dịch và triển khai hợp đồng của bạn theo các bước từ Bài học 3.

Tương tác với hợp đồng mở rộng

Với hợp đồng mở rộng được triển khai:

  1. Gọi các hàm mintSyntheticAssetredeemSyntheticAsset với số tiền khác nhau để đúc và đổi các tài sản tổng hợp tương ứng.

  2. Quan sát những thay đổi trong syntheticBalance, totalSyntheticSupplycollateral thông qua giao diện Remix IDE.

Quan sát hành vi hợp đồng

Tham gia vào hợp đồng và quan sát các biến trạng thái và trạng thái hợp đồng tổng thể phát triển như thế nào với các tương tác của bạn. Trải nghiệm thực tế này sẽ củng cố các khái niệm và hoạt động của tài sản tổng hợp.

Khi chúng tôi làm phong phú hợp đồng của mình bằng các chức năng thiết yếu, chúng tôi tiến gần hơn đến hợp đồng tài sản tổng hợp thực tế. Trong bài học tiếp theo, chúng ta sẽ tập trung vào việc thử nghiệm hợp đồng này để đảm bảo nó hoạt động như dự định trong nhiều tình huống khác nhau. Sự hiểu biết thực tế về tài sản tổng hợp tiếp tục sâu sắc hơn khi chúng ta tiến bộ. Hãy theo dõi để biết thêm thông tin thực hành trong bài học sắp tới!

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

Triển khai Hợp đồng tài sản tổng hợp trong Remix IDE

Trong bài học này, chúng tôi sẽ mở rộng hợp đồng SyntheticAsset.sol bằng cách thêm các chức năng khai thác và mua lại tài sản tổng hợp. Những hoạt động này rất quan trọng đối với hoạt động của tài sản tổng hợp trong kịch bản thế giới thực. Hãy mổ xẻ mã để hiểu cách các chức năng này được triển khai.

Gia hạn hợp đồng

Solidity 
 // Thêm các biến trạng thái này vào hợp đồng của bạn 
 ánh xạ(địa chỉ => uint256) public tổng hợpBalance; 
 uint256 công cộng Tổng nguồn cung tổng hợp;

Trong đoạn trích trên:

  • syntheticBalance là một ánh xạ theo dõi số dư tài sản tổng hợp cho từng địa chỉ.
  • totalSyntheticSupply là một biến số theo dõi tổng nguồn cung tài sản tổng hợp đang lưu hành.
Solidity 
 // Cập nhật hàm mintSyntheticAsset 
 hàm mintSyntheticAsset(uint256 _amount) public {
    require(collateral >= _amount, "Insufficient collateral");
    syntheticBalance[msg.sender] += _amount;
    totalSyntheticSupply += _amount;
    collateral -= _amount;
}

Trong hàm mintSyntheticAsset :

  • Tuyên bố require kiểm tra xem có đủ tài sản thế chấp để đúc số lượng tài sản tổng hợp được yêu cầu hay không.
  • syntheticBalance của người gọi (msg.sender) được tăng thêm _amount.
  • totalSyntheticSupply cũng tăng thêm _amount.
  • collateral giảm đi _amount vì nó được sử dụng để hỗ trợ cho các tài sản tổng hợp mới được tạo ra.
Solidity 
 // Cập nhật hàm RedSyntheticAsset 
 RedSyntheticAsset(uint256 _amount) public {
    require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
    syntheticBalance[msg.sender] -= _amount;
    totalSyntheticSupply -= _amount;
    collateral += _amount;
}

Trong hàm redeemSyntheticAsset :

  • Câu lệnh require kiểm tra xem người gọi có đủ số dư tài sản tổng hợp để đổi hay không.
  • syntheticBalance của người gọi giảm _amount.
  • totalSyntheticSupply giảm đi _amount.
  • collateral được tăng lên _amount khi nó được giải phóng trở lại khi mua lại tài sản tổng hợp.

Mã đầy đủ

TypeScript 
 // SPDX-Giấy phép-Mã định danh: MIT 
 độ vững chắc pragma ^0.8.0; 

 hợp đồng SyntheticAsset { 
 uint256 public FundamentalAssetPrice; 
 tài sản thế chấp công khai uint256; 
 địa chỉ công hữu; 
 ánh xạ(địa chỉ => uint256) tổng hợp công cộngBalance; 
 uint256 công cộng Tổng nguồn cung tổng hợp; 

 hàm tạo() {
        owner = msg.sender;
    }

    công cụ sửa đổi onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }

    hàm cập nhậtPrice(uint256 _price) public onlyOwner {
        underlyingAssetPrice = _price;
    }

    hàm DepositColonymous(uint256 _amount) public {
        collateral += _amount;
    }

    hàm pullColonymous(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        collateral -= _amount;
    }

    hàm getSyntheticAssetprice() chế độ xem công khai trả về (uint256) {
        return underlyingAssetPrice;
    }

    hàm mintSyntheticAsset(uint256 _amount) public {
        require(collateral >= _amount, "Insufficient collateral");
        syntheticBalance[msg.sender] += _amount;
        totalSyntheticSupply += _amount;
        collateral -= _amount;
    }

    hàm RedSyntheticAsset(uint256 _amount) public {
        require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
        syntheticBalance[msg.sender] -= _amount;
        totalSyntheticSupply -= _amount;
        collateral += _amount;
    }
}

Chuẩn bị: Nhận Ether Testnet và thiết lập môi trường của bạn

Mua Ether Testnet

Để triển khai các hợp đồng trên Goerli Testnet, bạn sẽ cần Goerli ETH (GoerliETH). Mặc dù nó không có bất kỳ giá trị thực nào nhưng nó rất cần thiết để thanh toán phí gas trên mạng thử nghiệm.

  1. Metamask: Đảm bảo Metamask của bạn được chuyển sang Mạng thử nghiệm Goerli.

  2. Đi tới vòi Goerli để yêu cầu một số GoerliETH. Chỉ cần dán địa chỉ Goerli Testnet Ethereum của bạn và bạn sẽ sớm nhận được ETH thử nghiệm.

Định cấu hình Remix để triển khai Goerli Testnet

  1. Trong Remix, điều hướng đến tab Deploy & Run Transactions .

  2. Đối với tùy chọn Environment , chọn Injected Provider. Tùy chọn này cho phép Remix kết nối với bất kỳ mạng nào mà Metamask của bạn hiện được đặt, đó phải là Goerli Testnet.

  3. Đảm bảo hợp đồng của bạn, OracleIntegratedContract, được chọn trong danh sách Contract thả xuống.

  4. Đối với menu thả xuống Account , bạn sẽ thấy địa chỉ Goerli Testnet Ethereum của mình.

Biên soạn và triển khai hợp đồng mở rộng

Bây giờ với các chức năng cập nhật đã sẵn sàng, hãy biên dịch và triển khai hợp đồng của bạn theo các bước từ Bài học 3.

Tương tác với hợp đồng mở rộng

Với hợp đồng mở rộng được triển khai:

  1. Gọi các hàm mintSyntheticAssetredeemSyntheticAsset với số tiền khác nhau để đúc và đổi các tài sản tổng hợp tương ứng.

  2. Quan sát những thay đổi trong syntheticBalance, totalSyntheticSupplycollateral thông qua giao diện Remix IDE.

Quan sát hành vi hợp đồng

Tham gia vào hợp đồng và quan sát các biến trạng thái và trạng thái hợp đồng tổng thể phát triển như thế nào với các tương tác của bạn. Trải nghiệm thực tế này sẽ củng cố các khái niệm và hoạt động của tài sản tổng hợp.

Khi chúng tôi làm phong phú hợp đồng của mình bằng các chức năng thiết yếu, chúng tôi tiến gần hơn đến hợp đồng tài sản tổng hợp thực tế. Trong bài học tiếp theo, chúng ta sẽ tập trung vào việc thử nghiệm hợp đồng này để đảm bảo nó hoạt động như dự định trong nhiều tình huống khác nhau. Sự hiểu biết thực tế về tài sản tổng hợp tiếp tục sâu sắc hơn khi chúng ta tiến bộ. Hãy theo dõi để biết thêm thông tin thực hành trong bài học sắp tới!

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.