dYdX (Cosmos)
Overview
DYDX is the native asset of the dYdX Chain blockchain. It utilizes:
- Account model
- EcDSA signature algorithm
The dYdX Chain is a Cosmos SDK-based Layer 1 that powers the v4 dYdX decentralized exchange. It uses CometBFT (Tendermint) consensus with a delegated proof-of-stake (DPoS) model. DYDX is used to pay transaction fees, secure the network through staking, and participate in on-chain governance.
Explorer
https://www.mintscan.io/dydx/Wallets Types
BitGo enables holding DYDX in the following wallet types:
| Multisig Cold | Multisig Hot | MPC Cold | MPC Hot | |
|---|---|---|---|---|
| Custodial | ❌ | ❌ | ✅ | ❌ |
| Self Managed | ❌ | ❌ | ✅ | ✅ |
Ticker Symbols
| Mainnet | Testnet |
|---|---|
| dydxcosmos | tdydxcosmos |
Faucet
Testnet DYDX can be obtained programmatically from the dYdX v4 testnet faucet. See the dYdX Faucet documentation for instructions on using the FaucetClient from @dydxprotocol/v4-client-js.
Units
DYDX is divisible by 10-18 and the base unit is adydx (atto-dydx):
- 1 DYDX = 1,000,000,000,000,000,000 adydx
- 1 adydx = 0.000000000000000001 DYDX
DYDX balances can be in either integer or string format. However, BitGo recommends using string format to ensure values don't exceed the programmable number limit.
Tokens
The dYdX Chain blockchain doesn't natively support tokens.
Fees
dYdX Chain fees are dynamic - there are no minimum or default fee rates.
Address Format
dYdX Chain addresses follow the format: dydx1<38-character-bech32-body>. All addresses are exactly 43 characters in length and begin with the fixed prefix dydx1. This format adheres to the following regular expression:
1/^(dydx)1(['qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38})$/
Memo ID Support
- Optionally, a
?memoId=<n>query parameter can be appended to the address for use cases such as identifying transaction metadata. Here,<n>can be any integer. - Using
memoId-based addressing eliminates the need to generate multiple deposit addresses per user. A single static address can be reused safely across users and use cases, with thememoIdserving as the unique identifier. - Since the dYdX Chain uses
memoId-based receive addresses, manual consolidation is not required.
Create Wallet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="tdydxcosmos" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export LABEL="<DESIRED_WALLET_NAME>" export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" curl -X POST \ http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/generate \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "label": "'"$LABEL"'", "passphrase": "'"$PASSPHRASE"'", "enterprise": "'"$ENTERPRISE_ID"'", "disableTransactionNotifications": true, "disableKRSEmail": true }'
Create Address
1 2 3 4 5 6 7 8export COIN="tdydxcosmos" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ https://app.bitgo-test.com/api/v2/$COIN/wallet/$WALLET_ID/address \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN"
Estimate Fee
1 2 3 4 5 6 7export COIN="tdydxcosmos" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X GET \ https://app.bitgo-test.com/api/v2/$COIN/tx/fee \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN"
Transact
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="tdydxcosmos" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export ADDRESS="<DESTINATION_ADDRESS>" export AMOUNT="<AMOUNT_IN_BASE_UNITS>" export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>" curl -X POST \ http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendcoins \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "address": "'"$ADDRESS"'", "amount": "'"$AMOUNT"'", "walletPassphrase": "'"$WALLET_PASSPHRASE"'" }'