Table of Contents
Tổng quan
Exchange rate canister (XRC) là một canister (smart contracts) chạy trên mạng con uzr34 cung cấp tỷ giá hối đoái cho các canister yêu cầu. Một yêu cầu bao gồm tài sản cơ sở, tài sản báo giá và một timestamp tùy chọn (UNIX epoch).
Tài sản cơ sở và tài sản báo giá có thể là bất kỳ sự kết hợp nào của tài sản tiền điện tử và tiền tệ fiat, ví dụ, BTC/ICP, ICP/USD, hoặc USD/EUR. Tham số timestamp cho phép yêu cầu tỷ giá lịch sử. Nếu không cung cấp timestamp trong yêu cầu, tỷ giá cho thời điểm hiện tại sẽ được trả về.
XRC tạo thành một oracles on-chain cho tỷ giá cặp giao dịch, đặc biệt hữu ích cho các ứng dụng DeFi và cũng có thể cung cấp giá trị cho bất kỳ ứng dụng nào cần thông tin tỷ giá.
Canister minting chu kỳ của NNS sẽ sử dụng XRC để có tỷ giá ICP/XDR cập nhật, điều này cần thiết cho việc chuyển đổi ICP thành chu kỳ.
Sử dụng
ID canister của XRC là uf6dk-hyaaa-aaaaq-qaaaq-cai. Một yêu cầu theo dạng:
type GetExchangeRateRequest = record { base_asset: Asset; quote_asset: Asset; timestamp: opt nat64; };
có thể được gửi đến XRC, và XRC sẽ trả lời kết quả sau:
type GetExchangeRateResult = variant { Ok: ExchangeRate; Err: ExchangeRateError; };
Một tài sản là một bản ghi gồm biểu tượng (ví dụ, “ICP”) và lớp (hoặc Cryptocurrency hoặc FiatCurrency). Tệp candid đầy đủ có thể được tìm thấy ở đây. Timestamp tùy chọn trong yêu cầu phải là một timestamp UNIX theo giây khi được cung cấp. Nếu không có timestamp nào được cung cấp, timestamp tương ứng với thời điểm bắt đầu của phút hiện tại sẽ được sử dụng. Lưu ý rằng độ chia của yêu cầu là 1 phút, vì vậy giây trong timestamp sẽ bị bỏ qua.
Đáng chú ý hơn nữa, một số sàn giao dịch có thể không có sẵn tỷ giá cặp giao dịch cho phút hiện tại. Tùy thuộc vào trường hợp sử dụng, khuyến nghị sử dụng đầu phút trước để tăng khả năng nhận được phản hồi dựa trên tỷ giá được thu thập từ tất cả các sàn đã truy vấn.
Đối với mỗi yêu cầu, cần gửi kèm 1B chu kỳ, nếu không, lỗi ExchangeRateError::NotEnoughCycles sẽ được trả về. Chi phí thực tế của cuộc gọi phụ thuộc vào hai yếu tố, các loại tài sản yêu cầu và trạng thái bộ đệm tỷ giá cặp giao dịch nội bộ, như sau:
- Nếu yêu cầu có thể được phục vụ từ bộ đệm, chi phí thực tế là 20 triệu chu kỳ.
- Nếu cả hai tài sản đều là tiền tệ fiat, chi phí cũng là 20 triệu chu kỳ.
- Nếu một trong các tài sản là tiền tệ fiat hoặc tiền điện tử USDT, chi phí là 260 triệu chu kỳ.
- Nếu cả hai tài sản đều là tiền điện tử, chi phí là 500 triệu chu kỳ.
Số chu kỳ còn lại được trả lại cho canister yêu cầu. Lưu ý rằng ít nhất 1 triệu chu kỳ sẽ được tính phí ngay cả khi có lỗi để làm giảm nguy cơ tấn công từ chối dịch vụ.
Chi tiết kỹ thuật
Hình sau mô tả luồng làm việc khi nhận một yêu cầu.

Tổng quan về luồng làm việc của Exchange rate canister (biểu tượng ngân hàng từ flaticon.com). Sau khi nhận yêu cầu (bước 1), tỷ giá cặp giao dịch cho mỗi tài sản tiền điện tử trong yêu cầu đối với tài sản báo giá USDT sẽ được truy vấn (cho timestamp trong yêu cầu) từ tất cả các sàn giao dịch được hỗ trợ bằng cách sử dụng cuộc gọi HTTPS nếu tỷ giá này chưa được lưu trữ (bước 2). Nếu có thể tính toán tỷ giá dựa trên kết quả truy vấn nhận được từ các sàn giao dịch, nó sẽ được chèn vào bộ đệm và trả lại cho canister yêu cầu (bước 3). Tỷ giá trung bình của tất cả các tỷ giá nhận được được trả lại vì nó không dễ bị ảnh hưởng bởi các giá trị ngoại lệ (không giống như tỷ giá trung bình).
Nếu đã được yêu cầu cặp cơ sở-tính giá tiền điện tử/cryptocurrency B/Q, tỷ giá B/Q được tạo ra từ tỷ giá B/USDT và Q/USDT đã truy vấn.
XRC tự động truy vấn tỷ giá ngoại hối (forex) hàng ngày từ các nhà cung cấp dữ liệu ngoại hối theo lịch trình cố định. Hơn nữa, XRC tự động truy vấn nhiều tỷ giá stablecoin để tạo ra tỷ giá USD/USDT như sau. Với tỷ giá SC1/USDT, SC2/USDT, … cho một tập hợp các stablecoin SC1, SC2, …, nó sử dụng trung vị của các tỷ giá này làm tỷ giá USD/USDT. Quy tắc này dựa trên giả định rằng ít nhất một nửa số stablecoin trong tập hợp luôn giữ nguyên giá trị peg của họ đối với USD vào bất kỳ thời điểm nào, trong trường hợp đó tỷ giá trung vị là một ước tính phù hợp cho tỷ giá USD/USDT. Dựa trên tỷ giá USD/USDT và tỷ giá ngoại tệ cho các loại tiền tệ fiat khác USD, tỷ giá yêu cầu có thể được tính toán cho trường hợp một hoặc nhiều tài sản trong yêu cầu là tiền tệ fiat.
Vì yêu cầu cặp cryptocurrency/cryptocurrency cần nhiều cuộc gọi tới sàn giao dịch hơn, nên sẽ tính thêm phí cho các yêu cầu như vậy.
Như đã chỉ ra trong hình ảnh trên, phản hồi cho một yêu cầu thành công chứa siêu dữ liệu ngoài tỷ giá. Siêu dữ liệu chứa các trường sau:
- decimals: Tỷ giá được trả về dưới dạng một số nguyên 64-bit được scale. Yếu tố scale là 10 mũ số của decimals.
- base_asset_num_received_rates: Số lượng tỷ giá nhận được cho tài sản cơ sở từ tất cả các sàn giao dịch được truy vấn.
- base_asset_num_queried_sources: Số lượng sàn giao dịch được truy vấn cho tài sản cơ sở.
- quote_asset_num_received_rates: Số lượng tỷ giá nhận được cho tài sản báo giá từ tất cả các sàn giao dịch được truy vấn.
- quote_asset_num_queried_sources: Số lượng sàn giao dịch được truy vấn cho tài sản báo giá.
- standard_deviation: Độ lệch chuẩn của tất cả tỷ giá nhận được cho yêu cầu này. Lưu ý rằng độ lệch chuẩn được scale bằng cùng yếu tố như tỷ giá chính nó.
- forex_timestamp: Timestamp của đầu ngày mà tỷ giá ngoại hối đã được truy xuất, nếu có.
Thông tin bổ sung này có thể được sử dụng để xác định tính tin cậy của tỷ giá nhận được, ví dụ bằng cách kiểm tra số lượng tỷ giá tham gia tính toán tỷ giá và độ lệch chuẩn. Nếu XRC nhận được tỷ giá không nhất quán từ các sàn giao dịch, nó sẽ trả lại lỗi ExchangeRateError::InconsistentRatesReceived một cách tự động.
Click Digital
- If you’d like to invest in blockchain advertising companies, just BUY token Saigon (SGN) at Pancakeswap: https://t.co/KJbk71cFe8 (do not worry about low liquidity)
- Backed by Click Digital Company
- Enhancing blockchain knowledge
- BSC address: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
- Twitter: https://twitter.com/SaigonSGN135
- Staking SGN: http://135web.net
Digital Marketing Specialist