Mukadimah
Baru-baru ini, platform FMZ telah menambah sokongan untuk Hyperliquid DEX, pertukaran terdesentralisasi berprestasi tinggi, memberikan pengguna lebih banyak pilihan untuk mengambil bahagian dalam transaksi terdesentralisasi. Pada masa ini, fungsi penjaga platform FMZ telah dikemas kini sepenuhnya untuk menyokong urus niaga kontrak segera dan kontrak kekal Hyperliquid dan meliputi semua fungsi API DEX.
Gambaran Keseluruhan Platform Hyperliquid
Hyperliquid ialah blok blok L1 berprestasi tinggi yang dioptimumkan dari awal dengan visi membina sistem kewangan terbuka dalam rantaian sepenuhnya. Pengguna boleh mencipta aplikasi secara bebas dengan berinteraksi dengan komponen asli yang cekap sambil memastikan pengalaman pengguna akhir yang lancar.
Prestasi Hyperliquid L1 mencukupi untuk menyokong ekosistem aplikasi kewangan tanpa kebenaran. Semua pesanan, pengeluaran pesanan, urus niaga dan pembubaran diselesaikan dalam rantaian dengan cara yang telus sepenuhnya, dengan kelewatan blok kurang daripada 1 saat. Pada masa ini, rantaian itu menyokong kapasiti pemprosesan sehingga 100,000 pesanan sesaat.
Hyperliquid L1 menggunakan algoritma konsensus tersuai yang dipanggil HyperBFT, yang diilhamkan oleh Hotstuff dan penggantinya. Kedua-dua mekanisme konsensus dan seni bina rangkaian dioptimumkan dari bawah ke atas untuk memenuhi keperluan blockchain berprestasi tinggi.
Melalui panduan ini, kami berharap dapat membantu anda memulakan dengan cepat dengan perdagangan terprogram dan kuantitatif Hyperliquid DEX pada platform FMZ dan menemui lebih banyak peluang perdagangan.
Mengamalkan kandungan
Protokol REST
- Amalan antara muka pasaran.
- Amalan antara muka dagangan (meletakkan pesanan, membatalkan pesanan).
- Amalan pertanyaan berkaitan transaksi (akaun, pesanan).
- Fungsi lain (spot, pemindahan kontrak, pengeluaran bilik kebal, pemindahan aset ke dompet, dll.).
Protokol Websocket
- Amalan langganan maklumat pertukaran (tiada antara muka Trades dalam antara muka REST, yang ditambah dengan antara muka Websocket)
Hyperliquid
-
Jenis Dagangan
Hyperliquid dibahagikan kepada kontrak spot dan perpetual berdasarkan jenis dagangan Berdasarkan seni bina platform FMZ, ia juga dibahagikan kepada objek pertukaran spot Hyperliquid dan objek pertukaran niaga hadapan Hyperliquid pada platform FMZ. Mereka sepadan dengan jenis yang berbeza dalam Hyperliquid DEX masing-masing.Pada halaman Add Exchange platform FMZ, anda boleh mengkonfigurasi objek pertukaran tempat dan niaga hadapan Hyperliquid:
-
Pembahagian alam sekitar
Seperti kebanyakan bursa, Hyperliquid mempunyai persekitaran ujian.-
Alamat APP Mainnet:
Dari pengalaman penggunaan sebenar, rangkaian utama adalah agak stabil dan kelajuannya juga baik.
Alamat nod antara muka API protokol REST yang sepadan:https://api.hyperliquid.xyz。
Maklumat yang berkaitan dengan menandatangani mesej juga berbeza:source == "a",chainId = 42161 -
Uji alamat APP rangkaian:
Rangkaian ujian sering ranap, tetapi ia hanya digunakan sebagai antara muka ujian dan untuk membiasakan diri anda dengan fungsi dagangan di DEX.
Alamat nod antara muka API protokol REST yang sepadan:https://api.hyperliquid-testnet.xyz。
Maklumat yang berkaitan dengan menandatangani mesej juga berbeza:source == "b",chainId = 421614
-
Maklumat sambungan dompet, log masuk dan konfigurasi
Sama seperti kaedah sambungan dompet kebanyakan pertukaran DEX, anda boleh menggunakan APP dompet untuk mengimbas kod QR untuk menyambung ke Hyperliquid (tukar dompet kepada Arbitrum dan imbas kod untuk log masuk, rangkaian ujian dan rangkaian utama adalah sama) .
-
Sambungan dompet ke Hyperliquid
-
Testnet Faucet (depositkan aset USDC ujian)
Jika anda ingin membiasakan diri dengan testnet terlebih dahulu, anda boleh mencari faucet terus pada halaman Hyperliquid selepas menyambungkan dompet anda ke Hyperliquid.
Anda boleh menuntut aset ujian Selepas menerima USDC untuk ujian, klik butang "Deposit" untuk mendepositkannya ke dalam Hyperliquid (sebaik-baiknya mempunyai beberapa ETH untuk rangkaian ujian Arbitrum).
-
Depositkan aset USDC pada mainnet
Klik butang "Deposit" untuk mendeposit, yang memerlukan pengesahan dompet dan akan menggunakan sedikit ETH pada Arbitrum.
-
Buat konfigurasi dompet proksi
Apabila melakukan transaksi manual pada halaman APP Hyperliquid, halaman tersebut akan menjana alamat dompet proksi dan kunci persendirian secara automatik, yang direkodkan dalam penyemak imbas dan digunakan untuk operasi seperti membuat pesanan pada halaman penyemak imbas Jika kita ingin melakukan pemprograman dan kuantitatif Bagaimanakah urus niaga perlu mendapatkan maklumat konfigurasi ini?
Anda boleh membuat alamat dompet proksi yang diperlukan dan kunci peribadi yang sepadan pada halaman API Hyperliquid:
-
- Berikan nama kepada dompet proksi yang akan dibuat.
-
- Jana alamat dan kunci peribadi.
-
- Benarkan dompet proksi menggunakan dompet yang disambungkan kepada Hyperliquid.
-
-
Konfigurasikan alamat dompet proksi dan kunci peribadi di FMZ
Kemudian anda boleh mengkonfigurasi maklumat ini pada platform FMZ (antara muka konfigurasi disebutkan di atas).
- Alamat Dompet: Alamat dompet disambungkan ke Hyperliquid (nota, bukan alamat dompet proksi).
- Wallet PrivateKey: Kunci persendirian dompet yang disambungkan kepada Hyperliquid (pilihan, hanya diperlukan apabila memanggil API seperti pemindahan, boleh dibiarkan kosong).
- Kunci Rahsia: Kunci persendirian dompet proksi (dijana dalam langkah sebelumnya, kunci persendirian dipaparkan selepas kebenaran).
Amalan Hipercecair pada FMZ
Maklumat yang diperlukan untuk mengkonfigurasi objek pertukaran:
- Alamat Wallet digunakan untuk menanyakan maklumat transaksi pengguna
- Wallet PrivateKey digunakan untuk pemindahan, pemindahan dan operasi lain
- Kunci Rahsia digunakan untuk operasi berkaitan transaksi
Setelah konfigurasi selesai, kami boleh mengujinya pada platform FMZ Kami terus menggunakan "alat nyahpepijat" platform FMZ untuk latihan ujian.
Jika anda menggunakan objek pertukaran Hyperliquid yang dikonfigurasikan dengan maklumat testnet, anda perlu melakukan beberapa operasi penukaran apabila menggunakannya, contohnya:
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 pensuisan di atas Antara muka API yang berkaitan dengan produk spot dan niaga hadapan dalam pertukaran Hyperliquid DEX adalah hampir sama, dengan hanya sedikit perbezaan dalam butiran Seterusnya, kami gunakanMaklumat konfigurasi mainnetdanMaklumat konfigurasi TestnetdaripadaNiaga Hadapan HipercecairTukar objek untuk diuji.
Pelbagai Maklumat
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 akaun
javascript
function main() {
var account = exchange.GetAccount()
return account
}
Pesan dan semak
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) + "`")
}
Tukar leverage, tukar margin silang/margin terpencil
javascript
function main() {
// 设置当前为全仓
exchange.IO("cross", true)
// 设置杠杆
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}
exchange.GetRawJSON() mengembalikan maklumat respons permintaan tetapan leverage:
{"status":"ok","response":{"type":"default"}}
Antara muka lain
Memandangkan parameter antara muka pertukaran adalah kompleks, kaedah pengekodan URL tidak boleh digunakan untuk lulus parameter.exchange.IOApabila memanggil fungsi, hanya rentetan JSON boleh dihantar sebagai parameter Berikut ialah contoh panggilan setiap antara muka.
Dokumentasi rujukan 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 mempunyai sekatan: akaun mesti mencapai tahap dagangan 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, benarkan dompet proksi baharu.
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))
}
Keizinan berjaya dikembalikan:
{"status":"ok","response":{"type":"default"}}
- Buat dompet proksi API 0xAAAA ialah alamat dompet yang dijana (sekadar contoh Simpan kunci peribadi yang sepadan semasa menjananya.
- "test02" ialah nama dompet proksi API Pasangan kunci yang dijana akan dipaparkan pada halaman APP hipercecair.
https://app.hyperliquid-testnet.xyz/APItengah.
vaultTransfer
Tarik balik aset dari bilik kebal.
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 bermaksud 5 USDC.
- "0xAAA": ialah alamat peti besi.
- "isDeposit": benar, mengawal deposit dan deposit.
withdraw3
Testnet, keluarkan 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))
}
- Keluarkan wang ke alamat dompet semasa anda: "0xAAA".
usdClassTransfer
Pemindahan aset antara spot/futures (kontrak kekal).
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" ditetapkan kepada
falseMenunjukkan arah putaran: niaga hadapan -> spot. - Parameter "toPerp" ditetapkan kepada
trueMenunjukkan arah pemindahan: spot -> futures .
Penggunaan antara muka websocket
Alamat antara muka WS rangkaian utama:
Mainnet: wss://api.hyperliquid.xyz/ws
Memandangkan antara muka API protokol REST tidak mempunyai antara muka untuk mendapatkan data transaksi terkini, antara muka Websocket mempunyai saluran ini yang boleh dilanggan.
Struktur mesej langganan
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Contoh ujian yang dilaksanakan dalam penyahpepijat:
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
Ujian di atas adalah berdasarkan kustodian terkini Anda perlu memuat turun kustodian terkini untuk menyokong pertukaran Hyperliquid DEX.
Terima kasih atas sokongan anda dan terima kasih kerana membaca.
- 1













