Giải phóng khả năng truy cập dữ liệu trên mạng Conflux

Sử dụng chuyển tiếp/rơle để đưa truy vấn phi tập trung vào mạng Conflux

Các giao thức truy vấn đơn giản hóa quá trình truy xuất dữ liệu blockchain bằng cách lập chỉ mục thông tin trên chuỗi để làm cho nó có thể truy cập được bằng cách sử dụng các giao diện phổ biến như GraphQL, đây là cách Graph hoạt động. Nói một cách dễ hiểu, các nút Đồ thị giám sát một mạng lưới blockchain và lưu trữ thông tin để các nhà phát triển có thể dễ dàng truy xuất.

Tại Conflux Network, chúng tôi tin rằng các giao thức truy vấn như biểu đồ rất quan trọng đối với sự phát triển của không gian Web3. Các công cụ đơn giản hóa việc phát triển các ứng dụng phi tập trung là điều cần thiết để có không gian tiếp tục phát triển và thay thế các hệ thống thiếu sót dựa trên Web2. Những công cụ này sẽ cho phép các nhà phát triển nhanh chóng tạo ra thế hệ tiếp theo của các ứng dụng Web3 phức tạp

Tuy nhiên, nhiều giao thức lần đầu tiên được xây dựng cho Ethereum và sẽ sử dụng các lệnh gọi Ethereum tiêu chuẩn. Để đưa các khả năng của Graph vào Mạng Conflux, cần có một giao diện chuyển đổi các cuộc gọi Ethereum sang các cuộc gọi tương thích với Mạng Conflux. Một chuyển tiếp Ethereum-to-Conflux có thể giúp việc phát triển và triển khai các ứng dụng trên Mạng Conflux trở nên dễ dàng hơn bằng cách tự động điều chỉnh các lệnh gọi và phản hồi API cho các cấu trúc dự kiến

Kết nối Đồ thị với Mạng Conflux

Trong phần trình diễn này, công nghệ chuyển tiếp kết nối truy vấn phi tập trung từ Graph và hợp đồng mã thông báo FanCoin (FC) trên Mạng Conflux. Để tạo điều kiện giao tiếp giữa Graph và Conflux Network, một API JSON-RPC được sử dụng như một sự chuyển tiếp giữa một Graph node và các điểm cuối của Conflux Network.

Chuyển tiếp chuyển đổi các lệnh gọi API Ethereum từ nút Đồ thị thành các lệnh gọi Mạng Conflux và trả về phản hồi Mạng Conflux dưới dạng phản hồi Ethereum. Mạng Conflux và Ethereum có các lệnh gọi API rất giống nhau nhưng có một số khác biệt về số khối và kỷ nguyên cũng như cấu trúc phản hồi do rơle xử lý.

Image for post

Rơle hoạt động như một giao diện giữa nút Đồ thị và điểm cuối Mạng Conflux để chuyển các lệnh gọi chính xác đến mỗi bên.

Trong khi phần trình diễn này khám phá việc kết nối Graph và Conflux Network, bất kỳ giao thức nào dựa trên Ethereum đều có thể sử dụng relay để hoạt động như một kết nối cho các tương tác chưa được ký kết với Conflux Network. Các ứng dụng di chuyển có thể hoạt động trên Mạng Conflux nhanh hơn nữa vì chức năng off-chain không cần phải sửa đổi – chỉ cần thêm lớp chuyển tiếp. Ngoài ra, quá trình chuyển tiếp mở ra tiềm năng cho một SDK / gói duy nhất tương tác với cả Mạng Conflux và Ethereum. Ví dụ: một ứng dụng phi tập trung (DApp) với giao diện người dùng được xây dựng cho Ethereum có thể lấy thông tin từ Mạng Conflux thông qua chuyển tiếp. Ở cấp độ cơ bản hơn, gói web3.js để tương tác với Ethereum có thể được sử dụng để gửi các tương tác chưa được đánh dấu với Mạng Conflux vì chuyển tiếp dịch các cuộc gọi.

Thiết lập kết nối

Có ba phần chính để kết nối một nút Đồ thị với Mạng Conflux – cuộc trình diễn này sẽ sử dụng chuyển tiếp từ Ethereum-to-Conflux, một nút Đồ thị với một chút sửa đổi để hoạt động với dữ liệu mạng Conflux và một Đồ thị con để giám sát việc chuyển token FC.

Chuyển tiếp là một API JSON-RPC được viết bằng Javascript sẽ xử lý trước và sau bất kỳ lệnh gọi API nào đã nhận. API đang sử dụng gói Jayson để xử lý chuyển tiếp cần thiết và sử dụng hàm tiền xử lý () để chuyển đổi các cuộc gọi Ethereum thành các cuộc gọi Mạng Conflux. Sau khi phản hồi được trả lại từ điểm cuối của Mạng Conflux, bộ chuyển tiếp sẽ sử dụng postprocess () để chuyển đổi phản hồi thành phản hồi Ethereum. Chuyển tiếp cũng có các phương thức được xác định tùy chỉnh trong customMethods () cho net_version và eth_getTransactionByHash để xử lý các cuộc gọi Ethereum không có tương đương trực tiếp trên Mạng Conflux.

const router = {
router: (method, params) => {
//pre-process to convert
console.log(“INCOMING:”, method, params);
let matchedMethod;
[matchedMethod, params] = preprocess(method, params);
//return a method, one for no method found
//the other for a method that queries the CFX endpoint based on the original data
return !matchedMethod
? customMethods(method, params)
: new jayson.Method((args, callback) => {
console.log(“TO CFX:”, matchedMethod, params);
client.request(matchedMethod, params, (err, response) => {
//post-processing
response = err || response.error
? response
: postprocess(method, params, response);
console.log(“RETURN:”, matchedMethod, params, err, response);
err ? callback(err) : callback(response.error, response.result);
});
});
}
};

Chức năng bộ định tuyến chính trong index.js cho chuyển tiếp Ethereum-to-Conflux sẽ xử lý trước và xử lý sau các cuộc gọi và phản hồi để phù hợp với cấu trúc Mạng Conflux hoặc Ethereum dự kiến.

Thứ hai thành phần là Đồ thị thực hiện việc lập chỉ mục dựa trên các đặc điểm của Đồ thị con. Nút thị để giao tiếp với Conflux là một phiên bản đã được sửa đổi một chút của gốc thị đồ. Gốc nút được xây dựng cho Ethereum, có thể cho rằng không có lặp lại số khối là hợp lý. Tuy nhiên, đó là giả định không phù hợp với số khối mạng và số kỷ nguyên có thể xác định nhiều khối trong cây đồ hình cấu trúc. Khi sự kiện được thiết lập chỉ mục bởi Đồ thị nút, nó thường sẽ tạo ra một danh sách các khối số và xóa các khối số khi mỗi sự kiện hoàn thành. Tuy nhiên, khi giao tiếp với Mạng thông tin, khối danh sách có thể không có tất cả các giá trị duy nhất.

Để giải quyết giả định, nút Đồ thị được sửa đổi để xử lý các sự kiện bằng cách sử dụng hàm băm khối duy nhất thay vì số khối, cho phép nút xác định các khối ngay cả với cùng một khối và số kỷ nguyên.

Image for post

Hai sửa đổi nhỏ trong mã nút Đồ thị để thay đổi việc xử lý sự kiện để sử dụng hàm băm khối duy nhất thay vì số khối không duy nhất để kết nối với Mạng Conflux.

Thành phần cuối cùng là Biểu đồ con hướng dẫn nút Biểu đồ địa chỉ và các sự kiện cần theo dõi bằng cách sử dụng subgraph.yml. Tệp subgraph.yml chứa các đường dẫn đến các tệp khác như schema.graphql để tổ chức dữ liệu, ABI FanCoin (FC) để đọc các sự kiện và tệp mapping.ts để xử lý các sự kiện. Ngoài ra, một khối bắt đầu được bao gồm để tăng tốc độ đồng bộ hóa của nút Đồ thị.

specVersion: 0.0.2
description: FC demo for Conflux Network
schema:
file: ./schema.graphql
dataSources:
– kind: ethereum/contract
name: FCdemo
network: mainnet
source:
address: ‘0x87010faf5964d67ed070bc4b8dcafa1e1adc0997’
abi: FC
startBlock: 4512596
mapping:
kind: ethereum/events
apiVersion: 0.0.4
language: wasm/assemblyscript
entities:
– Transfer
abis:
– name: FC
file: ./abis/FC.json
eventHandlers:
– event: Transfer(indexed address,indexed address,uint256)
handler: handleTransfer
file: ./src/mapping.ts

Nội dung của subgraph.yml hướng dẫn nút giám sát các sự kiện chuyển đối với mã thông báo FanCoin (FC) trên Mạng Conflux.

Bạn có thể tìm thấy hướng dẫn chi tiết hơn để khởi động tất cả các thành phần trên Github hoặc tại trang web Graph Protocol. Khi mọi thứ đã được kết nối và triển khai, nút Graph có thể được truy vấn dữ liệu bằng cách sử dụng một lệnh đơn giản để truy xuất thông tin về tất cả các sự kiện truyền:

{
transferDatas {
from
to
value
id
}
}

Một lệnh đơn giản truy xuất tất cả các sự kiện chuyển giao cho hợp đồng FC sẽ phức tạp hơn đáng kể để truy xuất thông qua các cuộc gọi blockchain trực tiếp.

Image for post

Kết quả giao diện từ việc truy vấn nút Đồ thị cho tất cả các sự kiện chuyển được lập chỉ mục cho mã thông báo FC.

Tạo thế hệ ứng dụng tiếp theo

Các giao thức truy vấn phi tập trung là một bước tiến đáng kể trong việc làm cho dữ liệu blockchain có thể truy cập được thông qua các tương tác dựa trên SQL được chuẩn hóa và hiệu quả hơn đáng kể so với việc gọi trực tiếp blockchain. Trong một bài viết trước, chúng tôi đã chỉ ra rằng dữ liệu từ các giao thức truy vấn có thể cung cấp năng lượng cho các ứng dụng từ bảng điều khiển đến dữ liệu cho AI và thậm chí các ứng dụng khác như các công cụ bảo mật và mô phỏng như mô hình kinh tế được đào tạo trên dữ liệu blockchain.

Ngoài tiềm năng của các giao thức truy vấn, một chuyển tiếp(rơle) đơn giản có thể giảm đáng kể chi phí kết nối các ứng dụng từ các mạng khác với Mạng Conflux và mở ra cánh cửa cho nhiều loại tương tác xuyên chuỗi. Tại Conflux Network, chúng tôi xem các công cụ như rơle và giao thức truy vấn là chìa khóa để mở cánh cửa cho thế hệ tiếp theo của các ứng dụng DeFi và Web3 sẽ mang công nghệ phi tập trung đến với công chúng.

Bài viết của Kỹ sư nghiên cứu Aaron Lu từ Conflux Network

Để thảo luận về thêm về Mạng Conflux hãy tham gia các kênh cộng đồng chính thức của chúng tôi:

Youtube: Conflux Chain

Instagram: https://www.instagram.com/conflux_foundation/

Twitter: https://twitter.com/ConfluxChain
Telegram: http://t.me/Conflux_English

Telegram (vietnamese): http://t.me/Confluxvietnam

Leave a Reply

Your email address will not be published. Required fields are marked *