[TOC]
Recentemente, a plataforma FMZ acrescentou o suporte ao Hyperliquid DEX, uma plataforma descentralizada de alto desempenho, oferecendo mais opções para os usuários participarem de transações descentralizadas. Atualmente, a função de administrador da plataforma FMZ foi totalmente atualizada para suportar as transações em tempo real e permanentes do Hyperliquid e cobrir todas as funções da API do DEX.
O Hyperliquid é uma plataforma de conteúdo
O Hyperliquid é um blockchain L1 de alto desempenho, otimizado a partir do zero, cuja visão é construir um sistema financeiro aberto totalmente em cadeia. Os usuários podem criar aplicativos independentemente, interagindo com componentes nativos eficientes, garantindo a fluidez da experiência do usuário final.
O Hyperliquid L1 tem performance suficiente para suportar um ecossistema de aplicativos financeiros sem licença. Todos os pedidos, retiradas, transações e liquidações são realizados na cadeia de forma totalmente transparente, com um atraso de bloco inferior a 1 segundo. Atualmente, a cadeia suporta a capacidade de processamento de até 100.000 pedidos por segundo.
O Hyperliquid L1 usa um algoritmo de consenso personalizado chamado HyperBFT, inspirado no Hotstuff e em seus sucessores. Tanto o mecanismo de consenso quanto a arquitetura da rede são otimizados a partir do fundo para atender às necessidades de uma cadeia de blocos de alta performance.
Com este guia, esperamos ajudá-lo a dominar rapidamente os negócios programados e quantificados do Hyperliquid DEX na plataforma FMZ e explorar mais oportunidades de negociação.
Protocolo REST - Interface de negócio prática. - Interface de transação (PROCESSOS) - Práticas de consulta de transações (contas, pedidos) - Outras funções (cash, transferência de contrato, acesso ao cofre, transferência de ativos para carteira, etc.)
Protocolo Websocket - Práticas de subscrição de informações de intercâmbio (não há uma interface Trades na interface REST, sendo complementada por uma interface Websocket)
Na página de adição de bolsas da plataforma FMZ, é possível configurar os objetos do Hyperliquid Spot e Futures Exchange:
Divisão ambiental Como a maioria das bolsas, o Hyperliquid tem um ambiente de teste.
O que é mais importante é que você tenha uma boa experiência de uso e que a rede principal seja mais estável e rápida.
O endereço do ponto de interface API do protocolo REST correspondente:https://api.hyperliquid.xyz
Não, não.
A informação sobre as assinaturas também é diferente:source == "a"
,chainId = 42161
A rede de testes é frequentemente desativada, mas é usada apenas como interface de teste e como função de transação familiar no DEX.
O endereço do ponto de interface API do protocolo REST correspondente:https://api.hyperliquid-testnet.xyz
Não, não.
A informação sobre as assinaturas também é diferente:source == "b"
,chainId = 421614
Como a maioria das transações DEX, o portfólio pode ser conectado ao Hyperliquid usando o aplicativo de digitalização de carteiras (o portfólio é transferido para o Arbitrum, o login de digitalização, a rede de testes e a rede principal são os mesmos).
Se você quiser que os alunos conheçam a rede de testes primeiro, você pode encontrar a torneira diretamente na página Hyperliquid depois de conectar a carteira ao Hyperliquid.
Para obter os ativos de teste e USDC para o teste, basta clicar no botão "Depositar" e depositar no Hyperliquid (Arbitrum Testing Net, preferencialmente um pouco de ETH).
Clique no botão "Depositar" para fazer o depósito, o qual requer a verificação da carteira e consome um pouco do ETH no Arbitrum.
Quando uma transação é feita manualmente na página do Hyperliquid APP, a página gerará automaticamente um endereço de carteira e uma chave privada, que são registrados no navegador para serem usados na página do navegador.
O endereço de carteira de agente e a chave privada correspondente podem ser criados na página API do Hyperliquid:
1, dar um nome para a carteira de agente que está prestes a ser criada.
2, gerar endereços e chaves privadas.
3. Autorizar carteiras de corretores usando carteiras conectadas ao Hyperliquid.
Configurar endereços de carteiras e chaves privadas no FMZ
A informação pode ser configurada na plataforma FMZ (ver interface de configuração acima).
Informações necessárias para configurar o objeto da bolsa:
Quando a configuração é concluída, podemos testar a plataforma FMZ e testar diretamente a plataforma FMZ com o "Debug Tool".
Se você estiver usando um objeto Hyperliquid Exchange configurado para testar a informação da rede, algumas operações de comutação serão necessárias, como:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
A configuração da rede principal não requer nenhuma operação de comutação acima, e a interface API relacionada com a variedade de produtos e futuros da Hyperliquid DEX é quase a mesma, com apenas pequenas diferenças de detalhes.Configuração da rede principaleInformações de configuração da rede de testeNão.Hyperliquid futurosO objeto da troca foi testado.
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 () retorna a resposta para a solicitação de leveragem:
O que é que se passa?
Como os parâmetros de interface das bolsas são mais complexos e não podem ser transmitidos usando o código de url, o uso de um código de código de url não é recomendado.exchange.IO
Quando as funções são chamadas, apenas as strings JSON podem ser usadas como parâmetros de entrada.
O hyperliquid é um sistema de informação baseado em dados de computador.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 Comércio:174.57424.”}: err , resposta : Não é possível definir o tempo de cancelamento programado até que o volume suficiente seja negociado.
A função tem limitações: a conta pode ser usada somente se atingir o nível de transação.
Criar um pedido 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))
}
O TWAP foi cancelado.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
A rede de testes, autorizando uma nova carteira de agente.
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))
}
A autorização retornou com sucesso:
O que é que se passa?
https://app.hyperliquid-testnet.xyz/API
O que você está fazendo?O que é que isso significa para mim?
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
A rede de testes, a propriedade para a carteira.
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))
}
A divisão de ativos entre ações/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 a direção de desvio: Futures -> spot.true
Indica a direção de desvio: spot -> futures.O endereço da interface do WS da rede principal é:
Mainnet: wss://api.hyperliquid.xyz/ws
Como a interface API do protocolo REST não recebe dados de transações recentes, a interface Websocket tem este canal para assinar.
Estrutura de mensagens
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Exemplos de testes executados em ferramentas de depósito:
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("测试结束")
}
Os testes acima, baseados nos mais recentes administradores, exigem o download dos mais recentes administradores para suportar o Hyperliquid DEX.
Obrigado pelo apoio, obrigado por ler.