Gần đây, nền tảng FMZ đã thêm hỗ trợ cho Hyperliquid DEX, một sàn giao dịch phi tập trung hiệu suất cao, cung cấp cho người dùng nhiều tùy chọn hơn để tham gia giao dịch phi tập trung.
Tổng quan nền tảng Hyperliquid
Hyperliquid là một blockchain L1 hiệu suất cao được tối ưu hóa từ đầu, với tầm nhìn xây dựng một hệ thống tài chính mở hoàn toàn trên chuỗi. Người dùng có thể tự tạo ứng dụng bằng cách tương tác với các thành phần gốc hiệu quả trong khi đảm bảo trải nghiệm người dùng cuối trơn tru.
Hiệu suất của Hyperliquid L1
đủ để hỗ trợ một hệ sinh thái ứng dụng tài chính không cần giấy phép. Tất cả các đơn đặt hàng, rút tiền, giao dịch và thanh lý được hoàn thành trên chuỗi một cách hoàn toàn minh bạch, với độ trễ khối dưới 1 giây. Hyperliquid L1 sử dụng thuật toán đồng thuận tùy chỉnh được gọi là HyperBFT, lấy cảm hứng từ Hotstuff và các thuật toán tiếp theo của nó.
Thông qua hướng dẫn này, chúng tôi hy vọng sẽ giúp bạn bắt đầu giao dịch theo chương trình và định lượng nhanh chóng trên Hyperliquid DEX trên nền tảng FMZ và khám phá thêm các cơ hội giao dịch.
Giao thức REST
Giao thức Websocket
Trên trang Thêm nền tảng của nền tảng FMZ, bạn có thể cấu hình các đối tượng trao đổi giao dịch hiện tại và tương lai Hyperliquid:
Địa chỉ APP mạng chính:
Trong sử dụng thực tế, mạng chính tương đối ổn định và có tốc độ tốt.
Địa chỉ nút giao diện API giao thức REST tương ứng là:https://api.hyperliquid.xyz
.
Thông tin liên quan đến chữ ký tin nhắn cũng khác nhau:source == "a",chainId = 42161
.
Địa chỉ APP mạng thử nghiệm:
Mạng thử nghiệm thường bị sập, nhưng nó chỉ được sử dụng như một giao diện thử nghiệm và để làm quen với các chức năng giao dịch trên DEX.
Địa chỉ nút giao diện API giao thức REST tương ứng là:https://api.hyperliquid-testnet.xyz
.
Thông tin liên quan đến chữ ký tin nhắn cũng khác nhau:source == "b",chainId = 421614
.
Cũng giống như phương pháp kết nối ví của hầu hết các sàn giao dịch DEX, bạn có thể sử dụng APP ví để quét mã QR để kết nối với Hyperliquid (chuyển ví sang Arbitrum và quét mã để đăng nhập, mạng thử nghiệm và mạng chính giống nhau).
Bạn có thể yêu cầu tài sản thử nghiệm. Sau khi nhận USDC để thử nghiệm, bấm nút
Nhấp vào nút
Khi thực hiện giao dịch thủ công trên trang Hyperliquid APP, trang sẽ tự động tạo ra địa chỉ ví proxy và khóa riêng, được ghi lại trong trình duyệt và được sử dụng cho các hoạt động như đặt hàng trên trang trình duyệt.
Bạn có thể tạo địa chỉ ví proxy cần thiết và khóa riêng tương ứng trên trang API Hyperliquid:
Sau đó, bạn có thể cấu hình thông tin này trên nền tảng FMZ (cổng giao diện cấu hình được đề cập ở trên).
Địa chỉ ví: Địa chỉ ví được kết nối với Hyperliquid (lưu ý, không phải địa chỉ ví proxy). Wallet PrivateKey: Chìa khóa riêng của ví được kết nối với Hyperliquid (tùy chọn, chỉ cần khi gọi API như chuyển tiền, nó có thể được để trống). Chìa khóa bí mật: Chìa khóa riêng của ví proxy (được tạo trong bước trước, khóa riêng được hiển thị sau khi ủy quyền).
Thông tin cần thiết để cấu hình đối tượng trao đổi:
Một khi cấu hình hoàn tất, chúng ta có thể kiểm tra nó trên nền tảng FMZ. Chúng ta trực tiếp sử dụng công cụ gỡ lỗi của nền tảng FMZ để thực hành kiểm tra.
Nếu bạn đang sử dụng một đối tượng trao đổi Hyperliquid được cấu hình với thông tin testnet, bạn sẽ cần thực hiện một số hoạt động chuyển đổi khi sử dụng nó, ví dụ:
function main() {
// REST protocol API address switched to testnet
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a Mainnet, b Testnet
exchange.IO("source", "b")
return exchange.GetAccount()
}
Các giao diện API liên quan đến các sản phẩm giao ngay và tương lai trong sàn giao dịch Hyperliquid DEX gần như giống nhau, chỉ có những khác biệt nhỏ trong chi tiết.Các hợp đồng tương lai siêu lỏngĐối tượng trao đổi củathông tin cấu hình mainnetvàThông tin cấu hình testnetđể thử nghiệm.
function main() {
var markets = exchange.GetMarkets()
if (!markets) {
throw "get markets error"
}
var tbl = {
type: "table",
title: "test markets",
cols: [
"key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty",
"MaxQty", "MinNotional", "MaxNotional", "CtVal", "CtValCcy"
],
rows: []
}
for (var symbol in markets) {
var market = markets[symbol]
tbl.rows.push([
symbol, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize,
market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal, market.CtValCcy
])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
var depth = exchange.GetDepth("ETH_USD.swap")
var asks = depth.Asks
var bids = depth.Bids
Log("asks 3", bids[2])
Log("asks 2", bids[1])
Log("asks 1", bids[0])
Log("bids 1", asks[0])
Log("bids 2", asks[1])
Log("bids 3", asks[2])
}
function main() {
var account = exchange.GetAccount()
return account
}
Kết quả chức năng:
function main() {
var symbols = ["ETH_USD.swap", "XRP_USD.swap", "HYPE_USD.swap"]
var arrDir = ["market_buy", "sell", "buy"]
var markets = exchange.GetMarkets()
var ids = []
for (var i in symbols) {
var symbol = symbols[i]
var side = arrDir[i]
var ticker = exchange.GetTicker(symbol)
var info = markets[symbol]
exchange.SetPrecision(info.PricePrecision, info.AmountPrecision)
// USDC
var qty = 15
var price = null
var amount = null
if (side == "market_buy") {
price = -1
side = "buy"
amount = qty / ticker.Last
} else {
price = side == "buy" ? ticker.Last * 0.9 : ticker.Last * 1.1
amount = qty / price
}
var id = exchange.CreateOrder(symbol, side, price, amount)
ids.push(id)
}
var tbl = {type: "table", title: "test", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var id of ids) {
var order = exchange.GetOrder(id)
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
Sleep(500)
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
var orders = exchange.GetOrders("USD.swap")
for (var order of orders) {
exchange.CancelOrder(order.Id, order)
Sleep(1000)
}
var tbl = {type: "table", title: "test", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
// Set the current position to cross position
exchange.IO("cross", true)
// Set leverage
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}
Kết quả chức năng:
exchange.GetRawJSON() trả về thông tin phản hồi của yêu cầu thiết lập đòn bẩy:
{
status : ok , response : { type : default }}
Vì các thông số giao diện của trao đổi tương đối phức tạp và không thể được truyền bằng cách sử dụng phương pháp mã hóa URL, khi sử dụngexchange.IOfunction
Sau đây là những ví dụ về các cuộc gọi giao diện khác nhau.
tài liệu tham chiếu siêu lỏng:https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order
var params = {"type": "scheduleCancel", "time": new Date().getTime()}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
{
status Đổi đổi:174.57424.”}: err , response : Không thể thiết lập thời gian hủy lịch trình cho đến khi đủ khối lượng giao dịch.
Chức năng này có những hạn chế: tài khoản phải đạt đến mức giao dịch để sử dụng chức năng này.
Tạo lệnh TWAP.
function main() {
var params = {
"type": "twapOrder",
"twap": {
"a": 0,
"b": true,
"s": "1",
"r": false,
"m": 10,
"t": false
}
}
// SOL_USDT.swap , Order Quantity: 1 , twapOrder order has position requirement, minimum value of 100 USD
// a: 0, i.e. SOL_USDT.swap
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Hủy lệnh TWAP.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Testnet, cho phép một ví proxy mới.
function main() {
var params = {
"type": "approveAgent",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"agentAddress": "0xAAAA",
"agentName": "test02",
"nonce": new Date().getTime()
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Quyền truy cập thành công, trả về:
{
status : ok , response : { type : default }}
https://app.hyperliquid-testnet.xyz/API
.Lấy tài sản ra khỏi hầm an toàn.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Testnet, rút tài sản vào ví.
function main() {
var params = {
"type": "withdraw3",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"amount": "5",
"time": new Date().getTime(),
"destination": "0xAAA"
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Chuyển đổi tài sản giữa giao dịch tại chỗ/thương mại tương lai (hợp đồng vĩnh viễn).
function main() {
var params = {
"type": "usdClassTransfer",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"amount": "5",
"toPerp": false,
"nonce": new Date().getTime()
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
false
, chỉ định hướng xoay: tương lai -> giao ngay.true
, chỉ định hướng xoay: spot -> tương lai.Địa chỉ giao diện WS mạng chính:
Mainnet: wss://api.hyperliquid.xyz/ws
Vì giao diện API giao thức REST không có giao diện để lấy dữ liệu giao dịch gần đây, giao diện Websocket có kênh này có thể đăng ký.
Cấu trúc tin nhắn đăng ký
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Ví dụ về thử nghiệm được thực hiện trong các công cụ gỡ lỗi:
function main() {
var loopCount = 20
var subMsg = {
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
var conn = Dial("wss://api.hyperliquid.xyz/ws")
conn.write(JSON.stringify(subMsg))
if (conn) {
for (var i = 0; i < loopCount; i++) {
var msg = conn.read(1000)
if (msg) {
Log(msg)
}
}
}
conn.close()
Log("End of test")
}
Các bài kiểm tra trên dựa trên docker mới nhất. Bạn cần tải xuống docker mới nhất để hỗ trợ trao đổi Hyperliquid DEX.
Cảm ơn sự ủng hộ của các bạn và cảm ơn đã đọc.