Tài liệu kỹ thuật này hướng dẫn các nhà phát triển quy trình chi tiết để tích hợp #RedStone Oracles vào một ứng dụng phi tập trung.

Tài liệu này sẽ bao gồm các giai đoạn thiết lập, tích hợp và thử nghiệm, đảm bảo các nhà phát triển có thể khai thác các khả năng này trong DApp của họ.

1. Giới thiệu

RedStone Oracles cung cấp giải pháp phi tập trung để truy cập dữ liệu thời gian thực trong các ứng dụng blockchain. Họ sử dụng mạng lưới các nhà cung cấp dữ liệu và chuỗi khối Arweave để lưu trữ dữ liệu, đảm bảo tính toàn vẹn và lâu dài. Hướng dẫn này sẽ trình bày chi tiết các bước cần thiết để tích hợp các oracle này, từ cài đặt ban đầu đến tùy chỉnh và thử nghiệm nâng cao.

Nguồn: RedStone Oracles

2. Yêu cầu thiết lập

Trước khi bắt đầu quá trình tích hợp, hãy đảm bảo đáp ứng các điều kiện tiên quyết sau:

  • Node.js và npm được cài đặt trên máy phát triển của bạn.

  • Hiểu biết cơ bản về Solidity và hợp đồng thông minh.

  • Làm quen với JavaScript và #Ethereum các công cụ phát triển như Hardhat hoặc Foundry.

3. Cài đặt

  • Cài đặt gói nút:

    cài đặt npm @redstone-finance/evm-connector

  • Thiết lập xưởng đúc:
    Người dùng Foundry cần cài đặt các phần phụ thuộc thông qua các mô-đun con git:

    giả mạo cài đặt redstone-finance/redstone-oracles-monorepo
    giả mạo cài đặt OpenZeppelin/openzeppelin-contracts@v4.9.5

  • Cập nhật ánh xạ lại trong Foundry:
    Thêm đường dẫn đến remappings.txt:

    echo "@redstone-finance/evm-connector/dist/contracts/=lib/redstone-oracles-monorepo/packages/evm-connector/contracts/
    @openzeppelin/contracts=lib/openzeppelin-contracts/contracts/" >> remappings.txt

4. Tích hợp hợp đồng thông minh

Nguồn: RedStone Oracles
  • Kế thừa từ Hợp đồng cơ sở:
    Hợp đồng của bạn phải mở rộng từ một trong các hợp đồng cơ sở của RedStone để sử dụng dữ liệu tiên tri:

    nhập "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";

    hợp đồng YourContractName mở rộng MainDemoConsumerBase {
    // Mã hợp đồng bổ sung tại đây
    }

  • Đang tìm nạp dữ liệu:
    Triển khai các chức năng để tìm nạp và xử lý dữ liệu oracle trong hợp đồng của bạn:

    hàm getOracleData(bytes32 dataIdentifier) ​​trả về công khai (uint256) {
    uint256 dataValue = getOracleNumericValueFromTxMsg(dataIdentifier);
    trả về giá trị dữ liệu;
    }

5. Tích hợp giao diện người dùng

  • Thiết lập Trình bao bọc Ethers.js:
    Tích hợp trình kết nối RedStone EVM với ethers.js để tương tác với hợp đồng thông minh:

    const { WrapperBuilder } = require("@redstone-finance/evm-connector");
    const ete = require("ete");

    hãy để nhà cung cấp = ethers.providers.JsonRpcProvider mới();
    hãy để hợp đồng = ethers mới. Hợp đồng (địa chỉ hợp đồng, hợp đồngABI, nhà cung cấp);

    let WrapContract = WrapperBuilder.wrap(contract).usingDataService({
    Nguồn cấp dữ liệu: ["ETH", "BTC"]
    });

Nguồn: RedStone Oracles
  • Tương tác với hợp đồng:
    Sử dụng hợp đồng được bao bọc để gọi các hàm như bình thường:

    hàm không đồng bộ callContractFunction() {
    hãy để kết quả = chờ đợi được bọcContract.fetchOracleData("ETH");
    console.log(`Dữ liệu Oracle: ${result}`);
    }

6. Thử nghiệm và triển khai

  • Kiểm tra mũ cứng:
    Sử dụng Hardhat để mô phỏng các tương tác và kiểm tra phản hồi của hợp đồng với dữ liệu oracle:

    const { mong đợi } = require("chai");

    mô tả ("Kiểm tra tích hợp Oracle", function () {
    it("phải tìm nạp dữ liệu oracle một cách chính xác", async function () {
    const data = đang chờ WrapContract.fetchOracleData("ETH");
    mong đợi(dữ liệu).to.be.a('number');
    });
    });

  • Triển khai:
    Triển khai hợp đồng của bạn vào mạng trực tiếp sau khi thử nghiệm kỹ lưỡng:

    truffle di chuyển --mạng chính

7. Kết luận

Việc tích hợp RedStone Oracles vào DApp của bạn sẽ nâng cao đáng kể khả năng tương tác với dữ liệu thời gian thực một cách hiệu quả và an toàn. Bằng cách làm theo hướng dẫn từng bước này, các nhà phát triển có thể đảm bảo sự tích hợp mạnh mẽ, tận dụng các giải pháp tiên tri dựa trên blockchain tiên tiến của RedStone để khởi động các ứng dụng phi tập trung.

$ETH