[TOC]

Baru-baru ini, platform FMZ telah menambahkan dukungan untuk Hyperliquid DEX, bursa terdesentralisasi berkinerja tinggi, yang menyediakan pengguna lebih banyak pilihan untuk berpartisipasi dalam transaksi terdesentralisasi. Saat ini, fungsi kustodian platform FMZ telah sepenuhnya diperbarui untuk mendukung transaksi kontrak spot dan perpetual Hyperliquid dan mencakup semua fungsi API DEX.
Tinjauan Umum Platform Hyperliquid
Hyperliquid adalah blockchain L1 berkinerja tinggi yang dioptimalkan dari awal dengan visi membangun sistem keuangan terbuka yang sepenuhnya on-chain. Pengguna dapat membuat aplikasi secara mandiri dengan berinteraksi dengan komponen asli yang efisien sambil memastikan pengalaman pengguna akhir yang lancar.
Kinerja Hyperliquid L1 cukup untuk mendukung ekosistem aplikasi keuangan tanpa izin. Semua pesanan, penarikan pesanan, transaksi dan likuidasi diselesaikan secara on-chain dengan cara yang sepenuhnya transparan, dengan penundaan blok kurang dari 1 detik. Saat ini, rantai tersebut mendukung kapasitas pemrosesan hingga 100.000 pesanan per detik.
Hyperliquid L1 menggunakan algoritma konsensus khusus yang disebut HyperBFT, yang terinspirasi oleh Hotstuff dan penerusnya. Baik mekanisme konsensus maupun arsitektur jaringan dioptimalkan dari bawah ke atas untuk memenuhi kebutuhan blockchain berkinerja tinggi.
Melalui panduan ini, kami berharap dapat membantu Anda dengan cepat memulai perdagangan terprogram dan kuantitatif Hyperliquid DEX pada platform FMZ dan menemukan lebih banyak peluang perdagangan.
Protokol REST
Protokol Websocket
Pada halaman Tambah Bursa di platform FMZ, Anda dapat mengonfigurasi objek bursa spot dan berjangka Hyperliquid:

Divisi Lingkungan Hidup Seperti kebanyakan bursa, Hyperliquid memiliki lingkungan pengujian.
Dari pengalaman penggunaan aktual, jaringan utama relatif stabil dan kecepatannya juga bagus.
Alamat node antarmuka API protokol REST yang sesuai:https://api.hyperliquid.xyz。
Informasi yang terkait dengan penandatanganan pesan juga berbeda:source == "a",chainId = 42161
Jaringan pengujian sering kali macet, tetapi hanya digunakan sebagai antarmuka pengujian dan untuk membiasakan diri dengan fungsi perdagangan di DEX.
Alamat node antarmuka API protokol REST yang sesuai:https://api.hyperliquid-testnet.xyz。
Informasi yang terkait dengan penandatanganan pesan juga berbeda:source == "b",chainId = 421614
Sama seperti metode koneksi dompet di sebagian besar bursa DEX, Anda dapat menggunakan aplikasi dompet untuk memindai kode QR untuk terhubung ke Hyperliquid (alihkan dompet ke Arbitrum dan pindai kode untuk masuk, jaringan uji dan jaringan utama sama) .

Jika Anda ingin mengenali testnet terlebih dahulu, Anda dapat menemukan faucet langsung di halaman Hyperliquid setelah menghubungkan dompet Anda ke Hyperliquid.

Anda dapat mengklaim aset uji. Setelah menerima USDC untuk pengujian, klik tombol “Deposit” untuk menyetorkannya ke Hyperliquid (sebaiknya Anda memiliki sejumlah ETH untuk jaringan uji Arbitrum).
Klik tombol “Deposit” untuk menyetor, yang memerlukan verifikasi dompet dan akan menghabiskan sedikit ETH di Arbitrum.
Saat melakukan transaksi manual di halaman Hyperliquid APP, halaman tersebut akan secara otomatis membuat alamat dompet proxy dan kunci pribadi, yang direkam di browser dan digunakan untuk operasi seperti melakukan pemesanan di halaman browser. Jika kita ingin melakukan transaksi terprogram dan kuantitatif Bagaimana transaksi perlu memperoleh informasi konfigurasi ini?
Anda dapat membuat alamat dompet proxy yang diperlukan dan kunci pribadi yang sesuai di halaman API Hyperliquid:


1. Berikan nama pada dompet proxy yang akan dibuat.
2. Hasilkan alamat dan kunci pribadi.
Konfigurasikan alamat dompet proxy dan kunci pribadi di FMZ
Kemudian Anda dapat mengonfigurasi informasi ini pada platform FMZ (antarmuka konfigurasi disebutkan di atas).
Informasi yang diperlukan untuk mengonfigurasi objek pertukaran:
Setelah konfigurasi selesai, kita dapat mengujinya pada platform FMZ. Kita langsung menggunakan “alat debugging” dari platform FMZ untuk praktik pengujian.
Jika Anda menggunakan objek pertukaran Hyperliquid yang dikonfigurasi dengan informasi testnet, Anda perlu melakukan beberapa operasi peralihan saat menggunakannya, misalnya:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
Konfigurasi mainnet tidak memerlukan operasi pengalihan di atas. Antarmuka API yang terkait dengan produk spot dan futures di bursa DEX Hyperliquid hampir sama, hanya dengan sedikit perbedaan dalam detailnya. Selanjutnya, kami menggunakanInformasi konfigurasi mainnetDanInformasi konfigurasi testnetdari Kontrak Berjangka HiperlikuidTukar objek untuk diuji.
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("买3", bids[2])
Log("买2", bids[1])
Log("买1", bids[0])
Log("卖1", asks[0])
Log("卖2", asks[1])
Log("卖3", asks[2])
}

function main() {
var account = exchange.GetAccount()
return account
}

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() {
// 设置当前为全仓
exchange.IO("cross", true)
// 设置杠杆
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}

exchange.GetRawJSON() mengembalikan informasi respons dari permintaan pengaturan leverage:
{“status”:“ok”,“response”:{“type”:“default”}}
Karena parameter antarmuka pertukaran itu rumit, tidak mungkin menggunakan metode penyandian URL untuk meneruskan parameter.exchange.IOSaat memanggil suatu fungsi, hanya string JSON yang dapat dimasukkan sebagai parameter. Berikut ini adalah contoh pemanggilan setiap antarmuka.
Dokumentasi referensi Hyperliquid: 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”:“err”,“response”:“Cannot set scheduled cancel time until enough volume traded. Required: \(1000000. Traded: \)174.57424.”}
Fungsi ini memiliki batasan: akun harus mencapai level perdagangan untuk menggunakan fungsi ini.
Buat pesanan TWAP.
function main() {
var params = {
"type": "twapOrder",
"twap": {
"a": 0,
"b": true,
"s": "1",
"r": false,
"m": 10,
"t": false
}
}
// SOL_USDT.swap , 订单量 : 1 , twapOrder 订单有头寸要求,最少100美元价值
// a : 0 , 即 SOL_USDT.swap 这个品种
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Batalkan pesanan TWAP.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Testnet, otorisasi dompet proksi baru.
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))
}
Otorisasi berhasil mengembalikan:
{“status”:“ok”,“response”:{“type”:“default”}}
https://app.hyperliquid-testnet.xyz/APItengah.Tarik aset dari brankas.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Testnet, menarik aset ke dompet.
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))
}
Transfer aset antar spot/future (kontrak abadi).
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))
}
falseMenunjukkan arah rotasi: futures -> spot.trueMenunjukkan arah transfer: spot -> futures.Alamat antarmuka WS jaringan utama:
Mainnet: wss://api.hyperliquid.xyz/ws
Karena antarmuka API protokol REST tidak memiliki antarmuka untuk memperoleh data transaksi terkini, antarmuka Websocket memiliki saluran ini yang dapat berlangganan.
Struktur pesan berlangganan
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Contoh pengujian yang dijalankan dalam debugger:
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("测试结束")
}

Pengujian di atas didasarkan pada kustodian terbaru. Anda perlu mengunduh kustodian terbaru untuk mendukung bursa DEX Hyperliquid.
Terima kasih atas dukungan Anda dan terima kasih telah membaca.