کریپٹوکرنسی ٹریڈنگ کے میدان میں غیر مرکزی تبادلے (ڈی ای ایکس) کے تیزی سے عروج کے ساتھ ، مقداری تاجروں نے موثر خودکار تجارت کے لئے آہستہ آہستہ ان پلیٹ فارمز کا رخ کیا۔ سب سے مشہور غیر مرکزی تجارتی پلیٹ فارمز میں سے ایک کے طور پر ، ڈی وائی ڈی ایکس طاقتور تجارتی افعال فراہم کرتا ہے اور مستقبل کے دائمی معاہدے کی تجارت کی حمایت کرتا ہے۔ اس کا تازہ ترین ورژن وی 4 کارکردگی اور صارف کے تجربے کو بہتر بناتا ہے ، جس سے یہ بہت سے مقداری تاجروں کے لئے پہلا انتخاب بن جاتا ہے۔
اس مضمون میں متعارف کرایا جائے گا کہ ڈی وائی ڈی ایکس وی 4 پر مقداری تجارت کیسے کی جائے ، بشمول تجارت ، مارکیٹ کے اعداد و شمار حاصل کرنے اور اکاؤنٹس کا انتظام کرنے کے لئے اس کی API کا استعمال کیسے کریں۔
dYdX v3
ایتھرئم کے ساتھ، ٹریڈنگ انعامات پیدا کرتی ہے، جو انعامات ہیںdYdX
tokens.پچھلا dYdX v3 پروٹوکول DEX تبادلہ آف لائن تھا۔ موجودہ dYdX v4 ایپ ایڈریس یہ ہے:
ایپ کا صفحہ کھولنے کے بعد ، بالائی دائیں کونے میں بٹوے سے رابطہ قائم کرنے کا بٹن ہے۔ بٹوے سے رابطہ قائم کرنے کے لئے کیو آر کوڈ کو اسکین کریں۔
اگر آپ ٹیسٹ کرنا چاہتے ہیں اور پہلے اپنے آپ کو ٹیسٹ نیٹ ورک کے ماحول سے واقف کرنا چاہتے ہیں تو ، آپ ٹیسٹ نیٹ ورک استعمال کرسکتے ہیں:
اس کے علاوہ ، بالائی دائیں کونے میں بٹوے کو مربوط کرنے کے بٹن پر کلک کریں ، بٹوے کو مربوط کرنے کے لئے کوڈ کو اسکین کریں ، اور دستخط کی توثیق کریں۔ بٹوے کو کامیابی کے ساتھ مربوط کرنے کے بعد ، ایک dydx v4 پتہ خود بخود تیار ہوجائے گا۔ یہ پتہ ایپ پیج کے اوپری دائیں کونے میں ظاہر ہوگا۔ اس پر کلک کریں اور ایک مینو پاپ اپ ہوجائے گا۔ ریچارج ، انخلا ، اور منتقلی جیسے آپریشن ہیں۔ dYdX مین نیٹ (پیداوار کا ماحول) اور ٹیسٹ نیٹ کے مابین ایک فرق یہ ہے کہ جب آپ ٹیسٹ نیٹ پر ریچارج پر کلک کرتے ہیں تو ، ٹیسٹ کے لئے نل کا استعمال کرتے ہوئے 300 USDC اثاثے خود بخود چارج ہوجائیں گے۔ اگر آپ dYdX پر حقیقی لین دین کرنا چاہتے ہیں تو ، آپ کو USDC اثاثے چارج کرنے کی ضرورت ہے۔ ریچارج بہت آسان اور ریچارج کے لئے متعدد اثاثوں اور زنجیروں کے ساتھ بھی مطابقت رکھتا ہے۔
dYdX v4 اکاؤنٹ ایڈریس
dYdX v4 اکاؤنٹ ایڈریس بٹوے کے ایڈریس سے ماخوذ ہے۔ dYdX v4 اکاؤنٹ ایڈریس اس طرح لگتا ہے:dydx1xxxxxxxxxxxxxxxxxxxxq2ge5jr4nzfeljxxxx
، جو کہ dydx1 سے شروع ہونے والا ایک پتہ ہے۔ اس ایڈریس کو بلاکچین ایکسپلوررز میں پوچھا جاسکتا ہے۔
یاد دہانی
آپ موجودہ ڈی وائی ڈی ایکس ایڈریس اکاؤنٹ کی یاد دہانیوں کو برآمد کرنے کے لئے اوپری دائیں کونے کے مینو میں
میمونکس کو براہ راست ایف ایم زیڈ پلیٹ فارم پر تشکیل دیا جاسکتا ہے یا ڈوکر پر مقامی طور پر محفوظ کیا جاسکتا ہے۔ جب dydx v4 ایکسچینج آبجیکٹ کا استعمال کرتے ہو تو ، میمونکس کو ریکارڈ کرنے والی فائل کا مواد پڑھا جائے گا ، جو اس مضمون کے عملی حصے میں دکھایا جائے گا۔
ٹیسٹ نیٹ ماحول کچھ پہلوؤں میں مین نیٹ ماحول سے مختلف ہے۔ یہاں کچھ آسان اختلافات ہیں۔
subAccountNumber >= 128
، اگر آئی ڈی کے ذیلی اکاؤنٹ میں کوئی پوزیشن نہیں ہے تو ، اثاثوں کو خود بخود اس ذیلی اکاؤنٹ میں صاف کیا جائے گا جس کا ذیلی اکاؤنٹ نمبر 0 ہے۔
ٹیسٹنگ کے دوران، یہ پتہ چلا کہ ٹیسٹ نیٹ ورک میں یہ طریقہ کار نہیں ہے (یا ٹرگرنگ کے حالات مختلف ہیں اور یہ ٹیسٹ نیٹ ورک میں ٹرگر نہیں کیا گیا ہے).DYDX
، ٹیسٹ نیٹDv4TNT
مین نیٹ:
انڈیکسر کا پتہ:https://indexer.dydx.trade
چین آئی ڈی:dydx-mainnet-1
REST نوڈ:https://dydx-dao-api.polkachu.com:443
ٹیسٹ نیٹ:
انڈیکسر کا پتہ:https://indexer.v4testnet.dydx.exchange
چین آئی ڈی:dydx-testnet-4
REST نوڈ:https://dydx-testnet-api.polkachu.com
ڈی وائی ایکس وی 4 پروٹوکول کو کاسموس ماحولیاتی نظام کی بنیاد پر تیار کیا گیا ہے۔ ڈی وائی ایکس وی 4 ڈی ای ایکس سسٹم ٹرانزیکشن سے متعلق مواد بنیادی طور پر دو حصوں پر مشتمل ہے:
انڈیکسر سروس REST اور ویب ساکٹ پروٹوکول فراہم کرتی ہے۔
REST پروٹوکول REST پروٹوکول انٹرفیس مارکیٹ انفارمیشن استفسار ، اکاؤنٹ کی معلومات ، پوزیشن کی معلومات ، آرڈر کی معلومات اور دیگر سوالات کی حمایت کرتا ہے ، اور FMZ پلیٹ فارم پر ایک متحد API انٹرفیس کے طور پر احاطہ کیا گیا ہے۔
ویب ساکٹ پروٹوکول ایف ایم زیڈ پلیٹ فارم پر ، آپ ڈائل فنکشن کا استعمال کرکے ویب ساکٹ کنکشن تشکیل دے سکتے ہیں اور مارکیٹ کی معلومات کو سبسکرائب کرسکتے ہیں۔
یہ نوٹ کیا جانا چاہئے کہ dydx v4 کے انڈیکسر میں مرکزی تبادلے کی طرح ہی مسئلہ ہے ، یعنی ڈیٹا کی تازہ کاری اتنی بروقت نہیں ہوتی ہے۔ مثال کے طور پر ، بعض اوقات آپ آرڈر دینے کے فورا بعد ہی اگر آپ اس سے استفسار کرتے ہیں تو آپ آرڈر نہیں ڈھونڈ سکتے ہیں۔ اس کے بعد کچھ سیکنڈ انتظار کرنے کی سفارش کی جاتی ہے (Sleep(n)
) کچھ کارروائیوں سے پہلے پوچھ گچھ.
یہاں ایک ویب ساکٹ API کنکشن بنانے اور آرڈر بک کے اعداد و شمار کو سبسکرائب کرنے کے لئے ڈائل فنکشن کا استعمال کرتے ہوئے کی ایک مثال ہے:
function dYdXIndexerWSconnManager(streamingPoint) {
var self = {}
self.base = streamingPoint
self.wsThread = null
// subscription
self.CreateWsThread = function (msgSubscribe) {
self.wsThread = threading.Thread(function (streamingPoint, msgSubscribe) {
// Order book
var orderBook = null
// Update order book
var updateOrderbook = function(orderbook, update) {
// Update bids
if (update.bids) {
update.bids.forEach(([price, size]) => {
const priceFloat = parseFloat(price)
const sizeFloat = parseFloat(size)
if (sizeFloat === 0) {
// Delete the buy order with price
orderbook.bids = orderbook.bids.filter(bid => parseFloat(bid.price) !== priceFloat)
} else {
// Update or add a buy order
orderbook.bids = orderbook.bids.filter(bid => parseFloat(bid.price) !== priceFloat)
orderbook.bids.push({price: price, size: size})
// Sort by price descending
orderbook.bids.sort((a, b) => parseFloat(b.price) - parseFloat(a.price))
}
})
}
// Update asks
if (update.asks) {
update.asks.forEach(([price, size]) => {
const priceFloat = parseFloat(price)
const sizeFloat = parseFloat(size)
if (sizeFloat === 0) {
// Delete the sell order with price
orderbook.asks = orderbook.asks.filter(ask => parseFloat(ask.price) !== priceFloat)
} else {
// Update or add a sell order
orderbook.asks = orderbook.asks.filter(ask => parseFloat(ask.price) !== priceFloat)
orderbook.asks.push({price: price, size: size})
// Sort by price ascending
orderbook.asks.sort((a, b) => parseFloat(a.price) - parseFloat(b.price))
}
})
}
return orderbook
}
var conn = Dial(`${streamingPoint}|reconnect=true&payload=${JSON.stringify(msgSubscribe)}`)
if (!conn) {
Log("createWsThread failed.")
return
}
while (true) {
var data = conn.read()
if (data) {
var msg = null
try {
msg = JSON.parse(data)
if (msg["type"] == "subscribed") {
orderBook = msg["contents"]
threading.currentThread().postMessage(orderBook)
} else if (msg["type"] == "channel_data") {
orderBook = updateOrderbook(orderBook, msg["contents"])
threading.currentThread().postMessage(orderBook)
}
} catch (e) {
Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
}
}
}
}, streamingPoint, msgSubscribe)
}
// monitor
self.Peek = function () {
return self.wsThread.peekMessage()
}
return self
}
function main() {
// real : wss://indexer.dydx.trade/v4/ws
// simulate : wss://indexer.v4testnet.dydx.exchange/v4/ws
var symbol = "ETH-USD"
var manager = dYdXIndexerWSconnManager("wss://indexer.dydx.trade/v4/ws")
manager.CreateWsThread({"type": "subscribe", "channel": "v4_orderbook", "id": symbol})
var redCode = "#FF0000"
var greenCode = "#006400"
while (true) {
var depthTbl = {type: "table", title: symbol + " / depth", cols: ["level", "price", "amount"], rows: []}
var depth = manager.Peek()
if (depth) {
for (var i = 0; i < depth.asks.length; i++) {
if (i > 9) {
break
}
var ask = depth.asks[i]
depthTbl.rows.push(["asks " + (i + 1) + greenCode, ask.price + greenCode, ask.size + greenCode])
}
depthTbl.rows.reverse()
for (var i = 0; i < depth.bids.length; i++) {
if (i > 9) {
break
}
var bid = depth.bids[i]
depthTbl.rows.push(["bids " + (i + 1) + redCode, bid.price + redCode, bid.size + redCode])
}
}
LogStatus(_D(), "\n`" + JSON.stringify(depthTbl) + "`")
}
}
لین دین میں سب سے زیادہ استعمال ہونے والے پیغامات آرڈر پیغامات ، آرڈر منسوخی کے پیغامات ، اور منتقلی کے پیغامات ہیں۔
{
"@type": "/dydxprotocol.clob.MsgPlaceOrder",
"order": {
"orderId": {
"subaccountId": {
"owner": "xxx"
},
"clientId": xxx,
"orderFlags": 64,
"clobPairId": 1
},
"side": "SIDE_BUY",
"quantums": "2000000",
"subticks": "3500000000",
"goodTilBlockTime": 1742295981
}
}
حد آرڈر:
ایف ایم زیڈ پلیٹ فارم پر شامل آرڈر فنکشن میں ، حد کے احکامات کے لئے استعمال ہونے والا آرڈر فلیگ کی قدر یہ ہے:ORDER_FLAGS_LONG_TERM = 64 # Long-term order
ڈی ڈی ایکس وی 4 پروٹوکول کی حدود کے مطابق ، آرڈر کی سب سے طویل مدت کی مدت استعمال کی جاتی ہے ، جو 90 دن ہے (ڈی ڈی ایکس وی 4 پر تمام قسم کے آرڈرز کی مدت ہوتی ہے) ۔
مارکیٹ آرڈر:
ایف ایم زیڈ پلیٹ فارم پر شامل آرڈر فنکشن میں ، مارکیٹ آرڈرز کے لئے استعمال ہونے والا آرڈر فلیگ ویلیو:ORDER_FLAGS_SHORT_TERM = 0 # Short-term order
، dydx v4 پروٹوکول کی سفارشات کے مطابق:
// تجویز مقرر کرنے کے لئے اوریکل قیمت - فروخت کے لئے 5٪ یا اس سے کم، اوریکل قیمت + 5٪ خریدنے کے لئے
چونکہ یہ ایک حقیقی مارکیٹ آرڈر نہیں ہے ، لہذا مارکیٹ آرڈر کے طور پر اوریکل کی قیمت ، پلس یا مائنس 5٪ سلائپج کا استعمال کیا جاتا ہے۔ قلیل مدتی احکامات کی مدت بھی طویل مدتی احکامات سے مختلف ہے۔ قلیل مدتی احکامات بلاک اونچائی کی مدت کا استعمال کرتے ہیں ، جو موجودہ بلاک + 10 بلاک اونچائی پر قائم ہے dydx v4 کی سفارش کے مطابق۔
تجارتی جوڑے dydx کرنٹ اکاؤنٹ کا پتہ سباکاؤنٹ نمبر (سباکاؤنٹ نمبر) کلائنٹ آئی ڈی (بے ترتیب پیدا) clobPairId (ٹرانزیکشن علامت ID) حکمپرچم goodTilData (ملسیکنڈ)
{
"@type": "/dydxprotocol.clob.MsgCancelOrder",
"orderId": {
"subaccountId": {
"owner": "xxx"
},
"clientId": 2585872024,
"orderFlags": 64,
"clobPairId": 1
},
"goodTilBlockTime": 1742295981
}
ایف ایم زیڈ پلیٹ فارم آرڈر انٹرفیس کی طرف سے واپس آرڈر ID میں منتقل کرنے کی ضرورت ہے.
{
"@type": "/dydxprotocol.sending.MsgCreateTransfer",
"transfer": {
"sender": {
"owner": "xxx"
},
"recipient": {
"owner": "xxx",
"number": 128
},
"amount": "10000000"
}
}
موجودہ dydx v4 ایڈریس کے تحت بہت سے ذیلی اکاؤنٹس بنائے جاسکتے ہیں۔ ذیلی اکاؤنٹ نمبر 0 والا ذیلی اکاؤنٹ پہلا خود بخود تخلیق شدہ ذیلی اکاؤنٹ ہے۔ ذیلی اکاؤنٹ ID جس میں ذیلی اکاؤنٹ نمبر 128 سے زیادہ یا برابر ہے اسے الگ تھلگ پوزیشن ٹریڈنگ کے لئے استعمال کیا جاتا ہے ، جس میں کم از کم 20 USDC اثاثوں کی ضرورت ہوتی ہے۔ مثال کے طور پر، آپ ذیلی اکاؤنٹ نمبر 0 -> 128، یا ذیلی اکاؤنٹ نمبر 128 -> 0 سے جا سکتے ہیں۔ منتقلی کے لئے گیس فیس کی ضرورت ہوتی ہے۔ گیس فیس USDC یا dydx ٹوکن ہوسکتی ہے۔
مندرجہ بالا مواد میں کچھ پیکیجنگ کی تفصیلات مختصر طور پر بیان کی گئی ہیں۔ اگلا ، آئیے مخصوص استعمال کی مشق کریں۔ یہاں ہم مظاہرے کے لئے ڈی وائی ڈی ایکس وی 4 ٹیسٹ نیٹ ورک کا استعمال کرتے ہیں۔ ٹیسٹ نیٹ ورک بنیادی طور پر مرکزی نیٹ ورک کی طرح ہی ہے ، اور ٹیسٹ اثاثوں کو وصول کرنے کے لئے ایک خودکار نل ہے۔ ڈوکر تعیناتی کا عمل دہرا نہیں جائے گا۔ ایف ایم زیڈ پر براہ راست تجارتی ٹیسٹ بنائیں۔
کریپٹوکرنسی والیٹ (میں یہاں imToken والیٹ استعمال کرتا ہوں) کا استعمال کرتے ہوئے dYdX v4 ایپ سے کامیابی کے ساتھ مربوط ہونے کے بعد ، اپنے ٹیسٹ اثاثوں کا دعوی کریں اور پھر اپنے موجودہ dYdX v4 اکاؤنٹ (اپنے والیٹ سے ماخوذ) کے لئے یادگار کو برآمد کریں۔
ایف ایم زیڈ پلیٹ فارم پر میمونک کو تشکیل دیں۔ یہاں ہم اسے تشکیل دینے کے لئے مقامی فائل کا طریقہ استعمال کرتے ہیں (آپ اسے براہ راست بھی پُر کرسکتے ہیں اور اسے پلیٹ فارم پر تشکیل دے سکتے ہیں۔ میمونک کو خفیہ کاری کے بعد تشکیل دیا جاتا ہے ، سادہ متن میں نہیں) ۔
اسے ڈوکر ڈائرکٹری کے تحت لائیو ٹریڈنگ آئی ڈی فولڈر ڈائرکٹری میں رکھیں۔ یقینا ، اسے دوسری ڈائرکٹریوں میں بھی رکھا جاسکتا ہے (تخصیص کے دوران مخصوص راستہ لکھنے کی ضرورت ہے) ۔
یاد دہانی کا ترمیم خانہ بھریں:file:///mnemonic.txt
، اس کے مطابق اصل راستہ ہے:docker directory/logs/storage/594291
.
function main() {
// Switch the indexer address of the test chain
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// Switch the ChainId of the test chain
exchange.IO("chainId", "dydx-testnet-4")
// Switch the REST node address of the test chain
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
// Read account information test
Log(exchange.GetAccount())
}
ٹیسٹ نیٹ ورک اکاؤنٹ کی معلومات پڑھیں:
{
"Info": {
"subaccounts": [{
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"subaccountNumber": 0,
"equity": "300.386228",
"latestProcessedBlockHeight": "28193227",
"freeCollateral": "300.386228",
"openPerpetualPositions": {},
"assetPositions": {
"USDC": {
"subaccountNumber": 0,
"size": "300.386228",
"symbol": "USDC",
"side": "LONG",
"assetId": "0"
}
},
"marginEnabled": true,
"updatedAtHeight": "28063818"
}, {
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"equity": "0",
"freeCollateral": "0",
"openPerpetualPositions": {},
"marginEnabled": true,
"subaccountNumber": 1,
"assetPositions": {},
"updatedAtHeight": "27770289",
"latestProcessedBlockHeight": "28193227"
}, {
"equity": "0",
"openPerpetualPositions": {},
"marginEnabled": true,
"updatedAtHeight": "28063818",
"latestProcessedBlockHeight": "28193227",
"subaccountNumber": 128,
"freeCollateral": "0",
"assetPositions": {},
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez"
}],
"totalTradingRewards": "0.021744179376211564"
},
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 300.386228,
"FrozenBalance": 0,
"Equity": 300.386228,
"UPnL": 0
}
ٹیسٹ نیٹ ورک پر تبدیل نہیں کیا، مرکزی نیٹ ورک کے ساتھ تجربہ کیا
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"], 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])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
// Switch the indexer address of the test chain
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// Switch the ChainId of the test chain
exchange.IO("chainId", "dydx-testnet-4")
// Switch the REST node address of the test chain
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
// Limit order, pending order
var idSell = exchange.CreateOrder("ETH_USD.swap", "sell", 4000, 0.002)
var idBuy = exchange.CreateOrder("ETH_USD.swap", "buy", 3000, 0.003)
// Market order
var idMarket = exchange.CreateOrder("ETH_USD.swap", "buy", -1, 0.01)
Log("idSell:", idSell)
Log("idBuy:", idBuy)
Log("idMarket:", idMarket)
}
dYdX v4 ایپ صفحہ:
ٹیسٹ نیٹ ورک پہلے سے دو آرڈر دیتا ہے، موجودہ زیر التواء آرڈرز حاصل کرنے کے ٹیسٹ کرتا ہے، اور آرڈرز کو منسوخ کرتا ہے۔
function main() {
// Switch the indexer address of the test chain
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// Switch the ChainId of the test chain
exchange.IO("chainId", "dydx-testnet-4")
// Switch the REST node address of the test chain
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
var orders = exchange.GetOrders()
Log("orders:", orders)
for (var order of orders) {
exchange.CancelOrder(order.Id, order)
Sleep(2000)
}
var tbl = {type: "table", title: "test GetOrders", cols: ["Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
// Switch the indexer address of the test chain
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// Switch the ChainId of the test chain
exchange.IO("chainId", "dydx-testnet-4")
// Switch the REST node address of the test chain
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
var p1 = exchange.GetPositions("USD.swap")
var p2 = exchange.GetPositions("ETH_USD.swap")
var p3 = exchange.GetPositions()
var p4 = exchange.GetPositions("SOL_USD.swap")
var tbls = []
for (var positions of [p1, p2, p3, p4]) {
var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
for (var p of positions) {
tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}
function main() {
// Switch the indexer address of the test chain
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// Switch the ChainId of the test chain
exchange.IO("chainId", "dydx-testnet-4")
// Switch the REST node address of the test chain
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
// subAccountNumber 0 -> 128 : 20 USDC, Gas Fee is adv4tnt, i.e. dydx token
// var ret = exchange.IO("transferUSDCToSubaccount", 0, 128, "adv4tnt", 20)
// Log("ret:", ret)
// Switch to subaccount subAccountNumber 128 and read account information to check
exchange.IO("subAccountNumber", 128)
var account = exchange.GetAccount()
Log("account:", account)
}
لاگ ان کی معلومات:
ذیلی اکاؤنٹ میں سوئچ کریں جس کا ذیلی اکاؤنٹ نمبر 128 ہے، اور GetAccount کی طرف سے واپس کردہ ڈیٹا ہے:
{
"Info": {
"subaccounts": [{
"subaccountNumber": 0,
"assetPositions": {
"USDC": {
"size": "245.696892",
"symbol": "USDC",
"side": "LONG",
"assetId": "0",
"subaccountNumber": 0
}
},
"updatedAtHeight": "28194977",
"latestProcessedBlockHeight": "28195008",
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"freeCollateral": "279.5022142346",
"openPerpetualPositions": {
"ETH-USD": {
"closedAt": null,
"size": "0.01",
"maxSize": "0.01",
"exitPrice": null,
"unrealizedPnl": "-0.17677323",
"subaccountNumber": 0,
"status": "OPEN",
"createdAt": "2024-12-26T03:36:09.264Z",
"createdAtHeight": "28194494",
"sumClose": "0",
"netFunding": "0",
"market": "ETH-USD",
"side": "LONG",
"entryPrice": "3467.2",
"realizedPnl": "0",
"sumOpen": "0.01"
}
},
"marginEnabled": true,
"equity": "280.19211877"
}, {
"openPerpetualPositions": {},
"assetPositions": {},
"marginEnabled": true,
"latestProcessedBlockHeight": "28195008",
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"subaccountNumber": 1,
"equity": "0",
"freeCollateral": "0",
"updatedAtHeight": "27770289"
}, {
"openPerpetualPositions": {},
"updatedAtHeight": "28194977",
"latestProcessedBlockHeight": "28195008",
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"subaccountNumber": 128,
"assetPositions": {
"USDC": {
"assetId": "0",
"subaccountNumber": 128,
"size": "20",
"symbol": "USDC",
"side": "LONG"
}
},
"marginEnabled": true,
"equity": "20",
"freeCollateral": "20"
}],
"totalTradingRewards": "0.021886899964446858"
},
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 20,
"FrozenBalance": 0,
"Equity": 20,
"UPnL": 0
}
یہ دیکھا جا سکتا ہے کہ ذیلی اکاؤنٹ نمبر 128 کے ساتھ ذیلی اکاؤنٹ نے 20 امریکی ڈالر منتقل کیے ہیں۔
حکم کے مطابق، TxHash حاصل کریں اور IO REST نوڈ بلا کے طریقہ کار کی جانچ
کسی آرڈر کا TxHash کیسے حاصل کیا جائے؟ تبادلہ آبجیکٹ dydx TxHash کو کیش کرے گا ، جسے آرڈر ID کا استعمال کرتے ہوئے سوال کیا جاسکتا ہے۔ تاہم ، حکمت عملی کو روکنے کے بعد ، کیچڈ آرڈر tx ہیش میپ کو صاف کردیا جائے گا۔
function main() {
// Switch the indexer address of the test chain
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// Switch the ChainId of the test chain
exchange.IO("chainId", "dydx-testnet-4")
// Switch the REST node address of the test chain
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
var id1 = exchange.CreateOrder("ETH_USD.swap", "buy", 3000, 0.002)
var hash1 = exchange.IO("getTxHash", id1)
Log("id1:", id1, "hash1:", hash1)
var id2 = exchange.CreateOrder("ETH_USD.swap", "buy", 2900, 0.003)
var hash2 = exchange.IO("getTxHash", id2)
Log("id2:", id2, "hash2:", hash2)
// To clear the mapping table, use: exchange.IO("getTxHash", "")
var arr = [hash1, hash2]
Sleep(10000)
for (var txHash of arr) {
// GET https://docs.cosmos.network /cosmos/tx/v1beta1/txs/{hash}
var ret = exchange.IO("api", "GET", "/cosmos/tx/v1beta1/txs/" + txHash)
Log("ret:", ret)
}
}
TxHash کے ذریعے دریافت کردہ پیغامات:
var ret =exchange.IO("api"،
GET ، /cosmos/tx/v1beta1/txs/ + txHash)
یہ مواد بہت لمبا ہے، لہذا یہاں کچھ اقتباسات ہیں:
{
"tx_response": {
"codespace": "",
"code": 0,
"logs": [],
"info": "",
"height": "28195603",
"data": "xxx",
"raw_log": "",
"gas_wanted": "-1",
"gas_used": "0",
"tx": {
"@type": "/cosmos.tx.v1beta1.Tx",
"body": {
"messages": [{
"@type": "/dydxprotocol.clob.MsgPlaceOrder",
"order": {
"good_til_block_time": 1742961542,
"condition_type": "CONDITION_TYPE_UNSPECIFIED",
"order_id": {
"clob_pair_id": 1,
"subaccount_id": {
"owner": "xxx",
"number": 0
},
"client_id": 2999181974,
"order_flags": 64
},
"side": "SIDE_BUY",
"quantums": "3000000",
"client_metadata": 0,
"conditional_order_trigger_subticks": "0",
"subticks": "2900000000",
"time_in_force": "TIME_IN_FORCE_UNSPECIFIED",
"reduce_only": false
}
}],
"memo": "FMZ",
"timeout_height": "0",
"extension_options": [],
"non_critical_extension_options": []
},
...
مذکورہ بالا ٹیسٹ تازہ ترین ڈوکر پر مبنی ہیں۔ آپ کو ڈی وائی ڈی ایکس وی 4 ڈی ای ایکس کی حمایت کرنے کے لئے تازہ ترین ڈوکر ڈاؤن لوڈ کرنے کی ضرورت ہے
آپ کی حمایت اور پڑھنے کے لئے شکریہ.