[TOC] ¿Qué quieres decir?
Recientemente, la plataforma de FMZ ha añadido soporte a Hyperliquid DEX, un intercambio descentralizado de alto rendimiento, ofreciendo a los usuarios más opciones para participar en transacciones descentralizadas. Actualmente, la función de administrador de la plataforma de FMZ ha sido completamente actualizada para soportar transacciones de contado y de contratos permanentes de Hyperliquid y cubrir todas las funciones de la API de la DEX.
La plataforma Hyperliquid es muy simple.
Hyperliquid es una cadena de bloques L1 de alto rendimiento optimizada desde cero, cuya visión es construir un sistema financiero abierto completamente en cadena. Los usuarios pueden crear aplicaciones independientemente mediante la interacción con componentes nativos eficientes, al tiempo que aseguran la fluidez de la experiencia del usuario final.
El rendimiento de Hyperliquid L1 es suficiente para soportar un ecosistema de aplicaciones financieras sin licencia. Todos los pedidos, retiros, transacciones y liquidaciones se completan en la cadena de una manera totalmente transparente, con una demora de bloque de menos de 1 segundo. Actualmente, la cadena soporta una capacidad de procesamiento de hasta 100,000 pedidos por segundo.
Hyperliquid L1 adopta un algoritmo de consenso personalizado llamado HyperBFT, inspirado en Hotstuff y sus sucesores. Tanto el mecanismo de consenso como la arquitectura de la red se optimizan desde abajo para satisfacer las necesidades de una cadena de bloques de alto rendimiento.
Con esta guía, esperamos ayudarle a manejar rápidamente las transacciones programadas y cuantificadas de Hyperliquid DEX en la plataforma FMZ y explorar más oportunidades de transacción.
Protocolo REST - Interfaz de trabajo práctica. - Las prácticas de interfaz de transacción (comprar, retirar) - Prácticas de consulta relacionadas con transacciones (cuentas, pedidos) - Otras funciones (contado, transferencia de contratos, acceso a fondos, transferencia de activos a carteras, etc.)
Protocolo de soporte web - Prácticas de suscripción de información de intercambio (no hay una interfaz de Trades en la interfaz REST y se complementa con una interfaz Websocket)
En la página de agregar intercambios de la plataforma FMZ, se puede configurar el objeto de Hyperliquid:
Distribución ambiental Como la mayoría de las bolsas, Hyperliquid también tiene un entorno de prueba.
La experiencia de uso real, la red principal es más estable y rápida.
La dirección de los nodos de la API del protocolo REST correspondiente:https://api.hyperliquid.xyz
¿Qué es esto?
La información relacionada con la firma del mensaje también es diferente:source == "a"
,chainId = 42161
Las redes de prueba se bloquean a menudo, pero solo se utilizan como interfaces de prueba y como funciones de transacción en el DEX.
La dirección de los nodos de la API del protocolo REST correspondiente:https://api.hyperliquid-testnet.xyz
¿Qué es esto?
La información relacionada con la firma del mensaje también es diferente:source == "b"
,chainId = 421614
Al igual que con la mayoría de los intercambios DEX, se puede conectar a Hyperliquid con la aplicación de monedero para escanear el código bidimensional (el monedero cambia a Arbitrum para escanear el inicio de sesión, la red de prueba y la red principal).
Si desean que sus compañeros de clase se familiaricen con la red de pruebas primero, pueden encontrar el grifo directamente en la página de Hyperliquid después de conectar la billetera a Hyperliquid.
Después de recibir los activos de prueba y USDC para la prueba, puede depositar en Hyperliquid con el botón "Depositar" (Arbitrum Testing Net prefiere un poco de ETH).
Al hacer clic en el botón "Depositar" para depositar, se requiere la verificación de la billetera y se consume un poco de ETH en Arbitrum.
Cuando se realiza una transacción manual en la página de Hyperliquid APP, la página genera automáticamente una dirección de billetera de agente y una clave privada, que se registran en el navegador para realizar operaciones en la página del navegador. ¿Cómo podemos obtener esta información de configuración si queremos realizar transacciones programáticas y cuantitativas?
Se puede crear la dirección de monedero proxy necesaria y la correspondiente clave privada en la página API de Hyperliquid:
En este sentido, el proyecto de la cartera de agentes de Facebook, que tiene como objetivo crear una cartera de agentes de Facebook, se ha convertido en una herramienta de intercambio de datos.
2, generación de direcciones y claves privadas.
3. Autorizar el monedero de un agente usando un monedero conectado a Hyperliquid.
Configurar una dirección de billetera de agente, una clave privada en FMZ
La información se puede configurar en la plataforma de FMZ (interfaz de configuración mencionada anteriormente).
Información necesaria para configurar el objeto de la bolsa:
Una vez que la configuración está terminada, podemos probar en la plataforma FMZ y practicar directamente con la "herramienta de depuración" de la plataforma FMZ.
Si está utilizando un objeto de intercambio Hyperliquid con la configuración de información de la red de prueba, es necesario realizar algunas operaciones de conmutación, por ejemplo:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
La configuración de la red principal no requiere la operación de conmutación anterior, y las interfaces de API relacionadas con el tipo de efectivo y de futuros en Hyperliquid DEX son casi las mismas, con solo pequeñas diferencias de detalle.Configuración de la redyInformación de configuración de la red de prueba¿Qué es esto?Los futuros de HyperliquidLos objetos de intercambio son probados.
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 (()) devuelve el mensaje de respuesta a la solicitud de apalancamiento:
¿Qué es lo que está pasando?
Debido a que los parámetros de la interfaz de los intercambios son más complejos y no se pueden transmitir con el código de url, se está utilizandoexchange.IO
Cuando se llama a una función, solo se puede usar una cadena JSON como entrada de parámetros. A continuación se muestran los ejemplos de cada llamada de interfaz.
En la actualidad, la mayoría de las personas que usan hiperlíquidos son de origen indígena.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 ¿Qué es lo que está pasando?174.57424.”}: err , respuesta : No se puede establecer el tiempo de cancelación programado hasta que se negocie suficiente volumen.
La función tiene limitaciones: las cuentas alcanzan el nivel de transacción para usarla.
Crear un pedido de 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))
}
Los usuarios de TWAP han sido rechazados.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
La red de pruebas, autorizando un nuevo monedero proxy.
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))
}
La autorización regresó con éxito:
¿Qué es lo que está pasando?
https://app.hyperliquid-testnet.xyz/API
En el centro.El gobierno de los Estados Unidos está tratando de hacerse cargo de los activos de los bancos.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
La red de pruebas, los activos presentados en el monedero.
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))
}
La división de los activos entre los activos actuales y futuros (contratos permanentes)
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
Indica la dirección de desviación: futuros -> spot.true
Indica la dirección de desviación: spot -> futuros.La dirección de la interfaz de WS de la red principal es:
En la red principal: wss://api.hyperliquid.xyz/ws
Debido a que la interfaz API del protocolo REST no obtiene datos de transacciones recientes, la interfaz Websocket tiene este canal para suscribirse.
Suscripción a la estructura del mensaje
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Los ejemplos de pruebas que se ejecutan en las herramientas de desactivación:
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("测试结束")
}
Las pruebas anteriores, basadas en los últimos custodios, requieren la descarga de los últimos custodios para que el intercambio Hyperliquid DEX sea compatible.
Gracias por su apoyo y gracias por leer.