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
:
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
:
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.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;
}
}
Để 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.
Metamask: Đảm bảo Metamask của bạn được chuyển sang Mạng thử nghiệm Goerli.
Đ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.
Trong Remix, điều hướng đến tab Deploy & Run Transactions
.
Đố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.
Đảm bảo hợp đồng của bạn, OracleIntegratedContract
, được chọn trong danh sách Contract
thả xuống.
Đối với menu thả xuống Account
, bạn sẽ thấy địa chỉ Goerli Testnet Ethereum của mình.
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.
Với hợp đồng mở rộng được triển khai:
Gọi các hàm mintSyntheticAsset
và redeemSyntheticAsset
với số tiền khác nhau để đúc và đổi các tài sản tổng hợp tương ứng.
Quan sát những thay đổi trong syntheticBalance
, totalSyntheticSupply
và collateral
thông qua giao diện Remix IDE.
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!
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
:
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
:
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.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;
}
}
Để 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.
Metamask: Đảm bảo Metamask của bạn được chuyển sang Mạng thử nghiệm Goerli.
Đ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.
Trong Remix, điều hướng đến tab Deploy & Run Transactions
.
Đố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.
Đảm bảo hợp đồng của bạn, OracleIntegratedContract
, được chọn trong danh sách Contract
thả xuống.
Đối với menu thả xuống Account
, bạn sẽ thấy địa chỉ Goerli Testnet Ethereum của mình.
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.
Với hợp đồng mở rộng được triển khai:
Gọi các hàm mintSyntheticAsset
và redeemSyntheticAsset
với số tiền khác nhau để đúc và đổi các tài sản tổng hợp tương ứng.
Quan sát những thay đổi trong syntheticBalance
, totalSyntheticSupply
và collateral
thông qua giao diện Remix IDE.
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!