Kata pengantar
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.
Konten praktik
Protokol REST
- Praktik antarmuka pasar.
- Praktik antarmuka perdagangan (menempatkan pesanan, membatalkan pesanan).
- Praktik kueri terkait transaksi (akun, pesanan).
- Fungsi lainnya (spot, transfer kontrak, penarikan brankas, transfer aset ke dompet, dll.).
Protokol Websocket
- Praktik berlangganan informasi pertukaran (tidak ada antarmuka Perdagangan di antarmuka REST, yang dilengkapi dengan antarmuka Websocket)
Hyperliquid
-
Jenis Perdagangan
Hyperliquid dibagi menjadi kontrak spot dan kontrak berjangka berdasarkan jenis perdagangannya. Berdasarkan arsitektur platform FMZ, Hyperliquid juga dibagi menjadi objek bursa spot Hyperliquid dan objek bursa berjangka Hyperliquid pada platform FMZ. Mereka masing-masing sesuai dengan varietas yang berbeda dalam Hyperliquid DEX.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.-
Alamat APP Mainnet:
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 -
Alamat APP jaringan uji:
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
-
Informasi koneksi dompet, login dan konfigurasi
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) .
-
Koneksi dompet ke Hyperliquid
-
Faucet Testnet (uji setoran aset USDC)
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).
-
Setor aset USDC di mainnet
Klik tombol "Deposit" untuk menyetor, yang memerlukan verifikasi dompet dan akan menghabiskan sedikit ETH di Arbitrum.
-
Buat konfigurasi dompet proxy
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:
-
- Berikan nama pada dompet proxy yang akan dibuat.
-
- Hasilkan alamat dan kunci pribadi.
-
- Otorisasi dompet proxy menggunakan dompet yang terhubung ke Hyperliquid.
-
-
Konfigurasikan alamat dompet proxy dan kunci pribadi di FMZ
Kemudian Anda dapat mengonfigurasi informasi ini pada platform FMZ (antarmuka konfigurasi disebutkan di atas).
- Alamat Dompet: Alamat dompet yang terhubung ke Hyperliquid (perhatikan, bukan alamat dompet proksi).
- Wallet PrivateKey: Kunci pribadi dompet yang terhubung ke Hyperliquid (opsional, hanya diperlukan saat memanggil API seperti transfer, dapat dikosongkan).
- Kunci Rahasia: Kunci pribadi dompet proksi (dibuat pada langkah sebelumnya, kunci pribadi ditampilkan setelah otorisasi).
Praktik Hyperliquid di FMZ
Informasi yang diperlukan untuk mengonfigurasi objek pertukaran:
- Alamat Dompet digunakan untuk menanyakan informasi transaksi pengguna
- Dompet PrivateKey digunakan untuk transfer, transfer, dan operasi lainnya
- Kunci Rahasia digunakan untuk operasi terkait transaksi
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:
javascript
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.
Informasi Varietas
javascript
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) + "`")
}
Data buku pesanan
javascript
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])
}
Aset akun
javascript
function main() {
var account = exchange.GetAccount()
return account
}
Pesan dan periksa
javascript
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) + "`")
}
Batalkan semua pesanan
javascript
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) + "`")
}
Ganti leverage, ganti margin silang/margin terisolasi
javascript
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"}}
Antarmuka lainnya
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
Schedule Cancel (dead man's switch)
javascript
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.
twapOrder
Buat pesanan TWAP.
javascript
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))
}
twapCancel
Batalkan pesanan TWAP.
javascript
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
approveAgent
Testnet, otorisasi dompet proksi baru.
javascript
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"}}
- Buat dompet proksi API. 0xAAAA adalah alamat dompet yang dihasilkan (hanya contoh). Simpan kunci privat terkait saat membuatnya.
- "test02" adalah nama dompet proxy API. Pasangan kunci yang dihasilkan akan ditampilkan pada halaman APP hyperliquid.
https://app.hyperliquid-testnet.xyz/APItengah.
vaultTransfer
Tarik aset dari brankas.
javascript
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
- "usd": 5000000 berarti 5 USDC.
- "0xAAA": adalah alamat brankas.
- "isDeposit": benar, mengontrol penyetoran dan deposit.
withdraw3
Testnet, menarik aset ke dompet.
javascript
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))
}
- Tarik uang ke alamat dompet Anda saat ini: "0xAAA".
usdClassTransfer
Transfer aset antar spot/future (kontrak abadi).
javascript
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))
}
- Parameter "toPerp" diatur ke
falseMenunjukkan arah rotasi: futures -> spot. - Parameter "toPerp" diatur ke
trueMenunjukkan arah transfer: spot -> futures.
Penggunaan antarmuka Websocket
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:
javascript
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
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.
- 1













