최근, FMZ 플랫폼은 고성능 분산 거래소인 하이퍼 리퀴드 DEX에 대한 지원을 추가하여 사용자에게 분산 거래에 참여할 수있는 더 많은 옵션을 제공합니다. 현재, FMZ 플랫폼의 도커 기능은 하이퍼 리퀴드
하이퍼 액체 플랫폼 개요
하이퍼 리퀴드는 처음부터 최적화된 고성능 L1 블록체인으로, 완전히 온 체인 오픈 금융 시스템을 구축한다는 비전을 가지고 있다. 사용자는 효율적인 네이티브 컴포넌트와 상호 작용하면서 원활한 최종 사용자 경험을 보장함으로써 독립적으로 애플리케이션을 만들 수 있다.
하이퍼 리퀴드 L1
의 성능은 허가 없는 금융 애플리케이션 생태계를 지원하기에 충분하다. 모든 주문, 인출, 거래 및 청산은 블록 지연시간이 1초 미만인 완전히 투명한 방식으로 체인에 완료된다. 현재 체인은 초당 최대 10만 개의 주문 처리 용량을 지원한다. 하이퍼 리퀴드 L1는 Hotstuff와 그 후의 알고리즘에서 영감을 얻은 하이퍼 BFT라는 사용자 정의 합의 알고리즘을 사용합니다. 합의 메커니즘과 네트워크 아키텍처 모두 고성능 블록체인의 요구를 충족시키기 위해 아래에서 최적화되었습니다.
이 가이드를 통해 FMZ 플랫폼의 Hyperliquid DEX에서 프로그래밍 및 양적 거래에 빠르게 시작할 수 있도록 돕고 더 많은 거래 기회를 발견 할 수 있기를 바랍니다.
REST 프로토콜
웹소켓 프로토콜
FMZ 플랫폼의 플랫폼 추가 페이지에서, 당신은 Hyperliquid 스팟과 선물 교환 객체를 구성할 수 있습니다:
메인넷 APP 주소:
실제 사용에서는 주요 네트워크가 비교적 안정적이며 좋은 속도를 가지고 있습니다.
대응하는 REST 프로토콜 API 인터페이스 노드 주소는:https://api.hyperliquid.xyz
...
메시지 서명 관련 정보도 다릅니다.source == "a",chainId = 42161
.
테스트 네트워크 APP 주소:
테스트 네트워크는 종종 충돌하지만 테스트 인터페이스로 사용되고 DEX의 거래 기능에 익숙해질 수 있습니다.
대응하는 REST 프로토콜 API 인터페이스 노드 주소는:https://api.hyperliquid-testnet.xyz
...
메시지 서명 관련 정보도 다릅니다.source == "b",chainId = 421614
.
대부분의 DEX 거래소의 지갑 연결 방법과 마찬가지로 지갑 APP를 사용하여 Hyperliquid에 연결하기 위해 QR 코드를 스캔 할 수 있습니다. (지갑을 Arbitrum로 전환하고 로그인 코드를 스캔하십시오. 테스트 네트워크와 메인 네트워크는 동일합니다.)
테스트 자산을 청구 할 수 있습니다. 테스트를 위해 USDC를 받은 후 Hyperliquid에 예금하기 위해
지갑 검증을 필요로 하는
하이퍼 리퀴드 APP 페이지에서 수동 거래를 수행 할 때 페이지는 자동으로 프록시 지갑 주소와 개인 키를 생성하여 브라우저에 기록하고 브라우저 페이지에서 주문을하는 것과 같은 작업을 위해 사용됩니다.
Hyperliquid API 페이지에서 필요한 프록시 지갑 주소와 대응하는 개인 키를 만들 수 있습니다:
그러면 FMZ 플랫폼에서 이 정보를 구성할 수 있습니다.
지갑 주소: Hyperliquid에 연결된 지갑 주소 (비록 프록시 지갑 주소가 아닙니다). Wallet PrivateKey: Hyperliquid에 연결된 지갑의 개인 키 (선택 사항이며, 전송과 같은 API를 호출할 때만 필요합니다. 비어있을 수 있습니다.) 비밀 키: 프록시 지갑 개인 키 (전 단계에서 생성, 승인 후 표시되는 개인 키).
교환 객체를 구성하는 데 필요한 정보:
구성이 완료되면 FMZ 플랫폼에서 테스트 할 수 있습니다. 테스트 연습을 위해 FMZ 플랫폼의
만약 당신이 testnet 정보로 구성된 Hyperliquid 교환 객체를 사용하고 있다면, 예를 들어, 그것을 사용할 때 몇 가지 전환 작업을 수행해야 합니다.
function main() {
// REST protocol API address switched to testnet
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a Mainnet, b Testnet
exchange.IO("source", "b")
return exchange.GetAccount()
}
메인 네트워크 구성은 위의 전환 작업을 필요로 하지 않습니다. 하이퍼 액체 DEX 거래소에서 스팟 및 선물 제품과 관련된 API 인터페이스는 세부 사항에 약간의 차이만 가지고 거의 동일합니다. 다음으로 우리는초액성 선물교환 대상메인 네트워크 구성 정보그리고테스트 네트워크 구성 정보테스트를 위해
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("asks 3", bids[2])
Log("asks 2", bids[1])
Log("asks 1", bids[0])
Log("bids 1", asks[0])
Log("bids 2", asks[1])
Log("bids 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() {
// Set the current position to cross position
exchange.IO("cross", true)
// Set leverage
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}
함수 결과:
exchange.GetRawJSON() 는 레버리지 설정 요청의 응답 정보를 반환합니다.
{
status : ok , response : { type : default }}
교환의 인터페이스 매개 변수는 상대적으로 복잡하고 URL 암호화 방법을 사용하여 전달 할 수 없기 때문에exchange.IOfunction
호출, JSON 문자열만 매개 변수로 전달할 수 있습니다. 다음은 다양한 인터페이스 호출의 예입니다.
하이퍼 액체 참조 문서: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 100만원 거래:174.57424.”}: err , response : 충분한 거래량까지 예정된 취소 시간을 설정할 수 없습니다.
이 기능에는 제한이 있습니다. 이 기능을 사용하려면 거래 수준에 도달해야 합니다.
TWAP 명령을 만들어
function main() {
var params = {
"type": "twapOrder",
"twap": {
"a": 0,
"b": true,
"s": "1",
"r": false,
"m": 10,
"t": false
}
}
// SOL_USDT.swap , Order Quantity: 1 , twapOrder order has position requirement, minimum value of 100 USD
// a: 0, i.e. SOL_USDT.swap
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
TWAP 명령을 취소해
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
테스트넷, 새로운 프록시 지갑을 승인해
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))
}
승인 성공, 반환:
{
status : ok , response : { type : default }}
https://app.hyperliquid-testnet.xyz/API
.금고에서 자산을 꺼내
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
테스트넷, 지갑으로 자산을 가져와
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))
}
재래소/후기 계약 (영원계약) 사이의 자산 이전
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
, 회전 방향을 나타냅니다: 선물 -> 스팟.true
, 회전 방향을 나타냅니다: 스팟 -> 선물.주요 네트워크 WS 인터페이스 주소:
메인넷: wss://api.hyperliquid.xyz/ws
REST 프로토콜 API 인터페이스는 최근 트랜잭션 데이터를 얻기 위한 인터페이스를 가지고 있지 않기 때문에, 웹소켓 인터페이스는 이 채널을 구독할 수 있습니다.
구독 메시지 구조
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
디버깅 도구에서 실행된 테스트의 예:
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 of test")
}
위의 테스트는 최신 도커를 기반으로 합니다. Hyperliquid DEX 교환을 지원하려면 최신 도커를 다운로드 해야 합니다.
지원해주셔서 감사합니다. 읽고 주셔서 감사합니다.