Installation & Initialization
To integrate OKX Connect into your DApp, ensure you're using version 6.94.0 or later. Install via npm:
npm install okx-connect-sdkCreate a provider object for wallet connections and transactions:
Parameters
dappMetaData(object):name(string): Your application name (non-unique identifier)icon(string): URL to 180x180px PNG/ICO icon (SVG not supported)
Returns OKXUniversalProvider instance
// Example initialization
import { OKXUniversalProvider } from 'okx-connect-sdk';
const provider = new OKXUniversalProvider({
dappMetaData: {
name: "Your DApp Name",
icon: "https://yourdomain.com/icon.png"
}
});Wallet Connection
Establish connection to retrieve wallet addresses for signing transactions:
Parameters
connectParams(object):- Required
namespacesfor Cosmos chains (key:"cosmos") chains(string[]): Chain IDs (e.g.,["cosmos:cosmoshub-4"])- Optional
sessionConfig.redirectfor post-connection deeplinks (e.g.,"tg://resolve"for Telegram Mini Apps)
- Required
Returns
Promise containing:
- Session
topic - Connected
accountsand supportedmethods - Default chain preference
👉 Best practices for Web3 wallet integration
Connection Status Check
Verify active wallet connection:
const isConnected = provider.isConnected();
// Returns booleanTransaction Preparation
Initialize OKXCosmosProvider with your universal provider:
const cosmosProvider = new OKXCosmosProvider(provider);Account Information Retrieval
Parameters chainId (string): Target chain (e.g., "cosmos:osmosis-1")
Returns
Object containing:
- Wallet
addressandbech32Address - Public key details
Message Signing
Parameters
chainId: Target chainsignerAddress: Wallet addressmessage: Content to sign
Returns
Signature object with:
- Public key metadata
- Signature value
Transaction Signing (Amino)
Parameters
chainId: Target chainsignerAddress: Wallet addresssignDoc: Transaction object (CosmosJS-style format)
Returns
Signed transaction with signature
👉 Advanced Cosmos transaction examples
Transaction Signing (Direct)
Parameters
chainId: Target chainsignerAddress: Wallet addresssignDoc: Contains:bodyBytes(Uint8Array)authInfoBytes(Uint8Array)- Chain metadata
Disconnection
Terminate active session:
provider.disconnect();
// Required before switching walletsError Handling
| Error Code | Description |
|---|---|
| UNKNOWN_ERROR | Unexpected failure |
| ALREADY_CONNECTED | Existing active session |
| USER_REJECTS | Declined connection |
| CHAIN_NOT_SUPPORTED | Unavailable blockchain |
FAQ
Q: How do I handle unsupported chains?
A: Verify chain compatibility during initialization using the optionalNamespaces parameter.
Q: Can I customize the connection UI?
A: The SDK uses wallet-native interfaces, but you can pre-configure default chains.
Q: What's the difference between Amino and Direct signing?
A: Amino is human-readable but larger payloads; Direct is more efficient for programmatic use.
Q: How to test without real funds?
A: Use testnet chain IDs like "cosmos:theta-testnet-001".