[TOC]
Baru-baru ini, FMZ platform telah menambah sokongan untuk pertukaran terdesentralisasi berprestasi tinggi Hyperliquid DEX, yang memberikan lebih banyak pilihan kepada pengguna untuk terlibat dalam dagangan terdesentralisasi. Pada masa ini, fungsi pengurus FMZ platform telah diperbaharui sepenuhnya untuk menyokong dagangan langsung dan kontrak kekal Hyperliquid dan merangkumi semua fungsi API DEX.
Hyperliquid platform ringkasan
Hyperliquid adalah blockchain L1 berprestasi tinggi yang dioptimumkan dari awal, dengan visi untuk membina sistem kewangan terbuka yang berantai sepenuhnya. Pengguna boleh mencipta aplikasi secara bebas dengan berinteraksi dengan komponen asli yang cekap, sambil memastikan kelancaran pengalaman pengguna akhir.
Hyperliquid L1 mempunyai keupayaan yang mencukupi untuk menyokong ekosistem aplikasi kewangan tanpa izin. Semua pesanan, pengeluaran, transaksi dan penyelesaian dilakukan di rantaian dengan cara yang sepenuhnya telus, dengan kelewatan blok kurang daripada 1 saat. Pada masa ini, rantaian ini menyokong pemprosesan sehingga 100,000 pesanan sesaat.
Hyperliquid L1 menggunakan algoritma konsensus khusus yang dikenali sebagai HyperBFT, yang diilhamkan oleh Hotstuff dan algoritma berikutnya. Kedua-dua mekanisme konsensus dan seni bina rangkaian dioptimumkan dari bawah untuk memenuhi keperluan blockchain berprestasi tinggi.
Dengan panduan ini, kami berharap dapat membantu anda dengan cepat menguasai perdagangan terprogram dan kuantitatif Hyperliquid DEX di platform FMZ dan mengeksplorasi lebih banyak peluang dagangan.
Protokol REST - Latihan antarmuka komunikasi. - Latihan antarmuka transaksi (memesan, menarik) - Praktik pertanyaan berkaitan transaksi (akaun, pesanan) - Fungsi lain ((Kadar tunai, pemindahan kontrak, pemindahan dana, pemindahan aset ke dompet dan lain-lain)).
Protokol Websocket - Latihan langganan maklumat pertukaran (tidak ada antarmuka Trades dalam antara muka REST, ditambah dengan antara muka Websocket)
Pada halaman tambah bursa di platform FMZ, anda boleh mengkonfigurasi objek bursa tunai dan niaga hadapan Hyperliquid:
Perbezaan alam sekitar Seperti kebanyakan bursa, Hyperliquid juga mempunyai persekitaran ujian.
Di samping itu, ia juga mempunyai ciri-ciri yang berbeza, seperti penggunaan mudah alih, penggunaan mudah alih, dan sebagainya.
Alamat nod API REST yang sepadan:https://api.hyperliquid.xyz
Saya tidak tahu apa yang berlaku.
Maklumat yang berkaitan dengan tandatangan mesej juga berbeza:source == "a"
,chainId = 42161
Rangkaian ujian sering dipadamkan, tetapi hanya digunakan sebagai antara muka ujian, yang biasa digunakan untuk fungsi dagangan di DEX.
Alamat nod API REST yang sepadan:https://api.hyperliquid-testnet.xyz
Saya tidak tahu apa yang berlaku.
Maklumat yang berkaitan dengan tandatangan mesej juga berbeza:source == "b"
,chainId = 421614
Seperti kebanyakan pertukaran DEX, anda boleh menggunakan aplikasi wallet untuk menyekat kod dua dimensi untuk menyambung ke Hyperliquid (wallet beralih ke Arbitrum untuk menyekat log masuk, uji, dan web utama).
Jika anda ingin mendapatkan faucet yang anda kenal terlebih dahulu dari laman web ujian, anda boleh mendapatkan faucet langsung di laman Hyperliquid selepas anda menyambung dompet anda ke Hyperliquid.
Untuk mendapatkan aset ujian, selepas mendapatkan USDC untuk ujian, anda boleh mengklik butang "Deposit" untuk menyimpan ke Hyperliquid (Arbitrum Testing Net lebih baik mempunyai sedikit ETH).
Klik butang "Deposit" untuk menyimpan, memerlukan pengesahan dompet, dan akan menghabiskan sedikit ETH di Arbitrum.
Apabila transaksi dilakukan secara manual di halaman Hyperliquid APP, halaman akan secara automatik menjana alamat dompet wakil dan kunci peribadi, yang direkodkan di dalam penyemak imbas, digunakan untuk membuat pesanan di halaman penyemak imbas, dan sebagainya.
Alamat dompet proxy yang diperlukan dan kunci peribadi yang sesuai boleh dicipta di halaman API Hyperliquid:
1, Sebutkan nama dompet ejen yang akan diwujudkan.
2. Menghasilkan alamat dan kunci peribadi.
3. Menggunakan dompet yang disambungkan ke Hyperliquid untuk membenarkan dompet ejen.
Mengatur alamat dompet ejen, kunci peribadi di FMZ
Kemudian, maklumat ini boleh dikonfigurasikan di platform FMZ (lihat antara muka konfigurasi di atas).
Maklumat yang diperlukan untuk mengkonfigurasi objek bursa:
Apabila persediaan selesai, kami boleh menguji penggunaannya di platform FMZ, dan kami menggunakan "alat debugging" platform FMZ secara langsung untuk latihan ujian.
Jika anda menggunakan objek pertukaran Hyperliquid dengan konfigurasi maklumat web ujian, beberapa operasi beralih perlu dilakukan semasa penggunaannya, seperti:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
Perisian utama tidak memerlukan pemindahan seperti di atas, dan API yang berkaitan dengan barangan semasa dan masa hadapan di bursa Hyperliquid DEX hampir sama, hanya sedikit perbezaan butiran.Maklumat konfigurasi rangkaian utamadanMaklumat konfigurasi rangkaian ujianPerbezaanMasa hadapan HyperliquidDi sini, kita akan melihat apa yang berlaku.
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 jawapan kepada permintaan untuk menetapkan tumpuan:
{
status : ok , response :{ type : default }}
Oleh kerana parameter antara muka pertukaran agak rumit dan tidak dapat digunakan untuk mengenkode url,exchange.IO
Apabila panggilan fungsi, hanya boleh menggunakan tali JSON sebagai parameter yang dihantar, berikut adalah contoh panggilan antara muka yang berbeza.
hyperliquid Sumber: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 Perdagangan:174.57424.”}: err , response : Tidak boleh menetapkan masa pembatalan yang dijadualkan sehingga jumlah yang mencukupi didagangkan.
Fungsi ini adalah terhad: akaun mencapai tahap urus niaga 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))
}
Perintah TWAP dibatalkan.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Perkhidmatan ini juga menyediakan kemudahan untuk pengguna yang ingin menggunakan laman web ini.
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))
}
Permit berjaya dikembalikan:
{
status : ok , response :{ type : default }}
https://app.hyperliquid-testnet.xyz/API
Antara lain:Perdagangan emas adalah satu perkara yang amat penting.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Di sini, saya akan cuba untuk mengesan bagaimana mereka boleh menggunakan laman web ini untuk mendapatkan maklumat mengenai mereka.
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))
}
Pembagian aset antara barangan tunai / niaga hadapan (kontrak kekal).
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
Tunjukkan arah pengalihan: futures -> spot.true
Tunjukkan arah pengalihan: spot -> futures.Alamat antara muka WS untuk laman web utama:
Mainnet: wss://api.hyperliquid.xyz/ws
Oleh kerana REST protokol API tidak mendapatkan data transaksi terkini, Websocket mempunyai saluran yang boleh ditandatangani.
Struktur mesej langganan
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Contoh percubaan yang dijalankan dalam alat debugging:
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("测试结束")
}
Ujian di atas, berdasarkan pengurus terkini, memerlukan pengurus terkini dimuat turun untuk menyokong pertukaran Hyperliquid DEX.
Terima kasih atas sokongan dan terima kasih kerana membaca.