orderly-sdk-wallet-connection

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Orderly Network: SDK Wallet Connection

Orderly Network: SDK Wallet Connection

A comprehensive guide to integrating wallet connection in Orderly Network DEX applications, supporting both EVM (Ethereum, Arbitrum, etc.) and Solana wallets.
Orderly Network DEX应用钱包连接集成完整指南,支持EVM(以太坊、Arbitrum等)和Solana钱包。

When to Use

适用场景

  • Setting up wallet connection for a new DEX
  • Supporting multiple wallet types (MetaMask, Phantom, etc.)
  • Implementing chain switching
  • Managing authentication state
  • 为新的DEX搭建钱包连接功能
  • 支持多种钱包类型(MetaMask、Phantom等)
  • 实现链切换功能
  • 管理认证状态

Prerequisites

前置条件

  • Orderly SDK packages installed
  • Providers configured (see
    orderly-sdk-dex-architecture
    )
  • Wallet packages installed (
    @web3-onboard/*
    ,
    @solana/wallet-adapter-*
    )
  • 已安装Orderly SDK包
  • 已配置Providers(参考
    orderly-sdk-dex-architecture
  • 已安装钱包包(
    @web3-onboard/*
    @solana/wallet-adapter-*

Overview

概述

Orderly Network supports omnichain trading, meaning users can connect wallets from multiple blockchain ecosystems:
  • EVM Chains: Ethereum, Arbitrum, Optimism, Base, Polygon, BSC, Avalanche, etc.
  • Solana: Mainnet and Devnet
The SDK provides a unified wallet connection layer that abstracts the differences between these ecosystems.
Orderly Network支持跨链交易,用户可连接来自多个区块链生态的钱包:
  • EVM链:以太坊、Arbitrum、Optimism、Base、Polygon、BSC、Avalanche等
  • Solana:主网和测试网
SDK提供统一的钱包连接层,抽象了不同生态系统之间的差异。

Wallet Connector Package

钱包连接器包

Note: The
@orderly.network/wallet-connector
package works out of the box with sensible defaults. Both
solanaInitial
and
evmInitial
props are optional.
bash
undefined
注意
@orderly.network/wallet-connector
包默认配置即可直接使用,
solanaInitial
evmInitial
属性均为可选
bash
undefined

Main connector package

核心连接器包

npm install @orderly.network/wallet-connector
npm install @orderly.network/wallet-connector

Optional: EVM wallet packages (for custom wallet config like WalletConnect)

可选:EVM钱包包(用于自定义钱包配置,如WalletConnect)

npm install @web3-onboard/injected-wallets @web3-onboard/walletconnect
npm install @web3-onboard/injected-wallets @web3-onboard/walletconnect

Optional: Solana wallet packages (for custom Solana wallet config)

可选:Solana钱包包(用于自定义Solana钱包配置)

npm install @solana/wallet-adapter-base @solana/wallet-adapter-wallets
undefined
npm install @solana/wallet-adapter-base @solana/wallet-adapter-wallets
undefined

Required Dependencies Summary

依赖包汇总

PackagePurposeRequired For
@web3-onboard/injected-wallets
MetaMask, Coinbase Wallet, Rabby, etc.EVM wallet connection
@web3-onboard/walletconnect
WalletConnect protocolMobile & multi-platform wallets
@solana/wallet-adapter-base
Solana wallet adapter baseAll Solana wallets
@solana/wallet-adapter-wallets
Phantom, Solflare, Ledger adaptersSolana wallet connection
Package用途适用场景
@web3-onboard/injected-wallets
支持MetaMask、Coinbase Wallet、Rabby等EVM钱包连接
@web3-onboard/walletconnect
提供WalletConnect协议支持移动端及跨平台钱包连接
@solana/wallet-adapter-base
Solana钱包适配器基础组件所有Solana钱包连接
@solana/wallet-adapter-wallets
提供Phantom、Solflare、Ledger适配器Solana钱包连接

Architecture

架构

┌──────────────────────────────────────────────────────────────┐
│                    WalletConnectorProvider                   │
│  ┌───────────────────────────────────────────────────────┐   │
│  │                   SolanaProvider                      │   │
│  │  (ConnectionProvider + WalletProvider + ModalProvider)│   │
│  │  ┌───────────────────────────────────────────────┐    │   │
│  │  │                   InitEvm                     │    │   │
│  │  │  (Web3OnboardProvider for EVM wallets)        │    │   │
│  │  │  ┌─────────────────────────────────────────┐  │    │   │
│  │  │  │                  Main                   │  │    │   │
│  │  │  │  (WalletConnectorContext - unified API) │  │    │   │
│  │  │  │  ┌─────────────────────────────────┐    │  │    │   │
│  │  │  │  │         Your App                │    │  │    │   │
│  │  │  │  └─────────────────────────────────┘    │  │    │   │
│  │  │  └─────────────────────────────────────────┘  │    │   │
│  │  └───────────────────────────────────────────────┘    │   │
│  └───────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│                    WalletConnectorProvider                   │
│  ┌───────────────────────────────────────────────────────┐   │
│  │                   SolanaProvider                      │   │
│  │  (ConnectionProvider + WalletProvider + ModalProvider)│   │
│  │  ┌───────────────────────────────────────────────┐    │   │
│  │  │                   InitEvm                     │    │   │
│  │  │  (Web3OnboardProvider for EVM wallets)        │    │   │
│  │  │  ┌─────────────────────────────────────────┐  │    │   │
│  │  │  │                  Main                   │  │    │   │
│  │  │  │  (WalletConnectorContext - unified API) │  │    │   │
│  │  │  │  ┌─────────────────────────────────┐    │  │    │   │
│  │  │  │  │         Your App                │    │  │    │   │
│  │  │  │  └─────────────────────────────────┘    │  │    │   │
│  │  │  └─────────────────────────────────────────┘  │    │   │
│  │  └───────────────────────────────────────────────┘    │   │
│  └───────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────┘

Basic Setup

基础配置

IMPORTANT: The
networkId
must be consistent between
WalletConnectorProvider
(Solana network) and
OrderlyAppProvider
.
重要提示
WalletConnectorProvider
(Solana网络)和
OrderlyAppProvider
networkId
必须保持一致。

1. WalletConnectorProvider

1. WalletConnectorProvider

Wrap your app with the
WalletConnectorProvider
.
Minimal Setup (uses defaults):
tsx
import { WalletConnectorProvider } from '@orderly.network/wallet-connector';
import { OrderlyAppProvider } from '@orderly.network/react-app';
import type { NetworkId } from '@orderly.network/types';

function App() {
  const networkId: NetworkId = 'mainnet';

  return (
    <WalletConnectorProvider>
      <OrderlyAppProvider
        brokerId="your_broker_id"
        brokerName="Your DEX Name"
        networkId={networkId}
      >
        <YourApp />
      </OrderlyAppProvider>
    </WalletConnectorProvider>
  );
}
Custom Setup (explicit wallet configuration):
tsx
import { WalletConnectorProvider } from '@orderly.network/wallet-connector';
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import { OrderlyAppProvider } from '@orderly.network/react-app';
import type { NetworkId } from '@orderly.network/types';

function App() {
  const networkId: NetworkId = 'mainnet';

  return (
    <WalletConnectorProvider
      solanaInitial={{
        network:
          networkId === 'mainnet' ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet,
        wallets: getSolanaWallets(),
      }}
      evmInitial={{
        options: {
          wallets: getEvmWallets(),
          appMetadata: {
            name: 'My DEX',
            description: 'Decentralized Exchange',
          },
        },
      }}
    >
      <OrderlyAppProvider
        brokerId="your_broker_id"
        brokerName="Your DEX Name"
        networkId={networkId}
      >
        <YourApp />
      </OrderlyAppProvider>
    </WalletConnectorProvider>
  );
}
使用
WalletConnectorProvider
包裹你的应用。
极简配置(使用默认值):
tsx
import { WalletConnectorProvider } from '@orderly.network/wallet-connector';
import { OrderlyAppProvider } from '@orderly.network/react-app';
import type { NetworkId } from '@orderly.network/types';

function App() {
  const networkId: NetworkId = 'mainnet';

  return (
    <WalletConnectorProvider>
      <OrderlyAppProvider
        brokerId="your_broker_id"
        brokerName="Your DEX Name"
        networkId={networkId}
      >
        <YourApp />
      </OrderlyAppProvider>
    </WalletConnectorProvider>
  );
}
自定义配置(显式钱包配置):
tsx
import { WalletConnectorProvider } from '@orderly.network/wallet-connector';
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import { OrderlyAppProvider } from '@orderly.network/react-app';
import type { NetworkId } from '@orderly.network/types';

function App() {
  const networkId: NetworkId = 'mainnet';

  return (
    <WalletConnectorProvider
      solanaInitial={{
        network:
          networkId === 'mainnet' ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet,
        wallets: getSolanaWallets(),
      }}
      evmInitial={{
        options: {
          wallets: getEvmWallets(),
          appMetadata: {
            name: 'My DEX',
            description: 'Decentralized Exchange',
          },
        },
      }}
    >
      <OrderlyAppProvider
        brokerId="your_broker_id"
        brokerName="Your DEX Name"
        networkId={networkId}
      >
        <YourApp />
      </OrderlyAppProvider>
    </WalletConnectorProvider>
  );
}

2. Configure EVM Wallets

2. 配置EVM钱包

tsx
import injectedOnboard from '@web3-onboard/injected-wallets';
import walletConnectOnboard from '@web3-onboard/walletconnect';
import binanceWallet from '@binance/w3w-blocknative-connector';

export function getEvmWallets() {
  const walletConnectProjectId = 'YOUR_WALLETCONNECT_PROJECT_ID';

  return [
    // Injected wallets (MetaMask, Rabby, Coinbase, etc.)
    injectedOnboard(),

    // Binance Web3 Wallet
    binanceWallet({ options: { lng: 'en' } }),

    // WalletConnect (for mobile wallets)
    walletConnectOnboard({
      projectId: walletConnectProjectId,
      qrModalOptions: { themeMode: 'dark' },
      dappUrl: window.location.origin,
    }),
  ];
}
tsx
import injectedOnboard from '@web3-onboard/injected-wallets';
import walletConnectOnboard from '@web3-onboard/walletconnect';
import binanceWallet from '@binance/w3w-blocknative-connector';

export function getEvmWallets() {
  const walletConnectProjectId = 'YOUR_WALLETCONNECT_PROJECT_ID';

  return [
    // 注入式钱包(MetaMask、Rabby、Coinbase等)
    injectedOnboard(),

    // Binance Web3 Wallet
    binanceWallet({ options: { lng: 'en' } }),

    // WalletConnect(支持移动端钱包)
    walletConnectOnboard({
      projectId: walletConnectProjectId,
      qrModalOptions: { themeMode: 'dark' },
      dappUrl: window.location.origin,
    }),
  ];
}

3. Configure Solana Wallets

3. 配置Solana钱包

tsx
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import {
  PhantomWalletAdapter,
  SolflareWalletAdapter,
  LedgerWalletAdapter,
} from '@solana/wallet-adapter-wallets';

export function getSolanaWallets(networkId: 'mainnet' | 'testnet') {
  return [new PhantomWalletAdapter(), new SolflareWalletAdapter(), new LedgerWalletAdapter()];
}
tsx
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import {
  PhantomWalletAdapter,
  SolflareWalletAdapter,
  LedgerWalletAdapter,
} from '@solana/wallet-adapter-wallets';

export function getSolanaWallets(networkId: 'mainnet' | 'testnet') {
  return [new PhantomWalletAdapter(), new SolflareWalletAdapter(), new LedgerWalletAdapter()];
}

Using Wallet Connection

使用钱包连接

Access Wallet Context

访问钱包上下文

The SDK provides a unified
WalletConnectorContext
:
tsx
import { useContext } from 'react';
import { WalletConnectorContext } from '@orderly.network/hooks';

function WalletStatus() {
  const {
    connect, // Connect wallet function
    disconnect, // Disconnect wallet function
    connecting, // Boolean: connection in progress
    wallet, // Connected wallet info
    connectedChain, // Current chain info
    setChain, // Switch chain function
    namespace, // "evm" | "solana" | null
  } = useContext(WalletConnectorContext);

  return (
    <div>
      {wallet ? (
        <>
          <p>Connected: {wallet.accounts[0].address}</p>
          <p>Chain: {connectedChain?.id}</p>
          <button onClick={disconnect}>Disconnect</button>
        </>
      ) : (
        <button onClick={() => connect({ chainId: 42161 })}>Connect Wallet</button>
      )}
    </div>
  );
}
SDK提供统一的
WalletConnectorContext
tsx
import { useContext } from 'react';
import { WalletConnectorContext } from '@orderly.network/hooks';

function WalletStatus() {
  const {
    connect, // 连接钱包函数
    disconnect, // 断开钱包函数
    connecting, // 连接状态:是否正在连接
    wallet, // 已连接钱包信息
    connectedChain, // 当前链信息
    setChain, // 切换链函数
    namespace, // "evm" | "solana" | null
  } = useContext(WalletConnectorContext);

  return (
    <div>
      {wallet ? (
        <>
          <p>已连接:{wallet.accounts[0].address}</p>
          <p>当前链:{connectedChain?.id}</p>
          <button onClick={disconnect}>断开连接</button>
        </>
      ) : (
        <button onClick={() => connect({ chainId: 42161 })}>连接钱包</button>
      )}
    </div>
  );
}

Connect to Specific Chain

连接指定链

tsx
const { connect } = useContext(WalletConnectorContext);

// Connect to EVM chain (Arbitrum)
await connect({ chainId: 42161 });

// Connect to Solana
await connect({ chainId: 900900900 }); // Solana mainnet
tsx
const { connect } = useContext(WalletConnectorContext);

// 连接EVM链(Arbitrum)
await connect({ chainId: 42161 });

// 连接Solana
await connect({ chainId: 900900900 }); // Solana主网

Switch Chains

切换链

tsx
const { setChain, connectedChain } = useContext(WalletConnectorContext);

// Switch to Optimism
await setChain({ chainId: '0xa' }); // Hex format for EVM

// Switch to Base
await setChain({ chainId: '0x2105' });
tsx
const { setChain, connectedChain } = useContext(WalletConnectorContext);

// 切换到Optimism
await setChain({ chainId: '0xa' }); // EVM使用十六进制格式

// 切换到Base
await setChain({ chainId: '0x2105' });

Account State Machine

账户状态机

After wallet connection, users need to complete Orderly account setup:
NotConnected (0) → Connected (1) → NotSignedIn (2) → SignedIn (3)
                                        EnableTrading (5)
钱包连接后,用户需要完成Orderly账户设置:
NotConnected (0) → Connected (1) → NotSignedIn (2) → SignedIn (3)
                                        EnableTrading (5)

Using useAccount Hook

使用useAccount Hook

tsx
import { useAccount, AccountStatusEnum } from '@orderly.network/hooks';

function AccountStatus() {
  const { account, state, createOrderlyKey, createAccount, disconnect } = useAccount();

  switch (state.status) {
    case AccountStatusEnum.NotConnected:
      return <ConnectWalletButton />;

    case AccountStatusEnum.Connected:
      return <button onClick={() => createAccount()}>Create Orderly Account</button>;

    case AccountStatusEnum.NotSignedIn:
      return <button onClick={() => createOrderlyKey()}>Enable Trading</button>;

    case AccountStatusEnum.SignedIn:
      return <TradingInterface />;
  }
}
tsx
import { useAccount, AccountStatusEnum } from '@orderly.network/hooks';

function AccountStatus() {
  const { account, state, createOrderlyKey, createAccount, disconnect } = useAccount();

  switch (state.status) {
    case AccountStatusEnum.NotConnected:
      return <ConnectWalletButton />;

    case AccountStatusEnum.Connected:
      return <button onClick={() => createAccount()}>创建Orderly账户</button>;

    case AccountStatusEnum.NotSignedIn:
      return <button onClick={() => createOrderlyKey()}>启用交易</button>;

    case AccountStatusEnum.SignedIn:
      return <TradingInterface />;
  }
}

UI Components for Wallet Connection

钱包连接UI组件

WalletConnectorWidget

WalletConnectorWidget

Pre-built wallet connection UI:
tsx
import { WalletConnectorWidget, WalletConnectorModalId } from '@orderly.network/ui-connector';
import { modal } from '@orderly.network/ui';

// Show wallet connect modal
function ConnectButton() {
  return <button onClick={() => modal.show(WalletConnectorModalId)}>Connect Wallet</button>;
}
预构建的钱包连接UI:
tsx
import { WalletConnectorWidget, WalletConnectorModalId } from '@orderly.network/ui-connector';
import { modal } from '@orderly.network/ui';

// 显示钱包连接弹窗
function ConnectButton() {
  return <button onClick={() => modal.show(WalletConnectorModalId)}>连接钱包</button>;
}

AuthGuard

AuthGuard

Wrap content that requires authentication:
tsx
import { AuthGuard } from '@orderly.network/ui-connector';

function TradingPage() {
  return (
    <AuthGuard fallback={<ConnectPrompt />}>
      <OrderEntry symbol="PERP_ETH_USDC" />
    </AuthGuard>
  );
}
包裹需要认证的内容:
tsx
import { AuthGuard } from '@orderly.network/ui-connector';

function TradingPage() {
  return (
    <AuthGuard fallback={<ConnectPrompt />}>
      <OrderEntry symbol="PERP_ETH_USDC" />
    </AuthGuard>
  );
}

useAuthGuard Hook

useAuthGuard Hook

tsx
import { useAuthGuard } from '@orderly.network/ui-connector';

function TradeButton() {
  const { isAuthenticated, triggerAuth } = useAuthGuard();

  const handleClick = () => {
    if (!isAuthenticated) {
      triggerAuth();
      return;
    }
    // Proceed with trade
  };

  return <button onClick={handleClick}>Trade</button>;
}
tsx
import { useAuthGuard } from '@orderly.network/ui-connector';

function TradeButton() {
  const { isAuthenticated, triggerAuth } = useAuthGuard();

  const handleClick = () => {
    if (!isAuthenticated) {
      triggerAuth();
      return;
    }
    // 继续交易流程
  };

  return <button onClick={handleClick}>交易</button>;
}

Supported Chains

支持的链

EVM Mainnet Chains

EVM主网链

ChainChain IDNetwork
Ethereum1mainnet
Arbitrum42161mainnet
Optimism10mainnet
Base8453mainnet
Polygon137mainnet
BSC56mainnet
Avalanche43114mainnet
Mantle5000mainnet
SEI1329mainnet
链名称链ID网络
Ethereum1mainnet
Arbitrum42161mainnet
Optimism10mainnet
Base8453mainnet
Polygon137mainnet
BSC56mainnet
Avalanche43114mainnet
Mantle5000mainnet
SEI1329mainnet

EVM Testnet Chains

EVM测试网链

ChainChain IDNetwork
Arbitrum Sepolia421614testnet
BSC Testnet97testnet
Monad Testnet10143testnet
链名称链ID网络
Arbitrum Sepolia421614testnet
BSC Testnet97testnet
Monad Testnet10143testnet

Solana

Solana

NetworkChain ID (Internal)
Mainnet900900900
Devnet901901901
网络内部链ID
Mainnet900900900
Devnet901901901

Chain Filtering

链过滤

Restrict which chains users can connect to:
tsx
<OrderlyAppProvider
  brokerId="your_broker_id"
  networkId="mainnet"
  chainFilter={{
    mainnet: [
      { id: 42161 }, // Arbitrum only
      { id: 10 },    // Optimism
    ],
    testnet: [
      { id: 421614 }, // Arbitrum Sepolia
    ],
  }}
>
限制用户可连接的链:
tsx
<OrderlyAppProvider
  brokerId="your_broker_id"
  networkId="mainnet"
  chainFilter={{
    mainnet: [
      { id: 42161 }, // 仅支持Arbitrum
      { id: 10 },    // 支持Optimism
    ],
    testnet: [
      { id: 421614 }, // 支持Arbitrum Sepolia
    ],
  }}
>

Handling Chain Changes

处理链变更

tsx
<OrderlyAppProvider
  brokerId="your_broker_id"
  networkId="mainnet"
  onChainChanged={(chainId, { isTestnet }) => {
    console.log(`Switched to chain ${chainId}`);

    // Reload if switching between mainnet/testnet
    if (isTestnet && networkId === "mainnet") {
      localStorage.setItem("network", "testnet");
      window.location.reload();
    }
  }}
>
tsx
<OrderlyAppProvider
  brokerId="your_broker_id"
  networkId="mainnet"
  onChainChanged={(chainId, { isTestnet }) => {
    console.log(`切换到链 ${chainId}`);

    // 若在主网和测试网之间切换则重载页面
    if (isTestnet && networkId === "mainnet") {
      localStorage.setItem("network", "testnet");
      window.location.reload();
    }
  }}
>

Privy Integration (Alternative)

Privy集成(替代方案)

For social login support, use Privy:
bash
npm install @orderly.network/wallet-connector-privy
tsx
import { WalletConnectorPrivy } from "@orderly.network/wallet-connector-privy";

<WalletConnectorPrivy
  appId="YOUR_PRIVY_APP_ID"
  loginMethods={["email", "google", "twitter"]}
>
  <OrderlyAppProvider ...>
    <App />
  </OrderlyAppProvider>
</WalletConnectorPrivy>
如需支持社交登录,可使用Privy:
bash
npm install @orderly.network/wallet-connector-privy
tsx
import { WalletConnectorPrivy } from "@orderly.network/wallet-connector-privy";

<WalletConnectorPrivy
  appId="YOUR_PRIVY_APP_ID"
  loginMethods={["email", "google", "twitter"]}
>
  <OrderlyAppProvider ...>
    <App />
  </OrderlyAppProvider>
</WalletConnectorPrivy>

Error Handling

错误处理

tsx
import { useEventEmitter } from '@orderly.network/hooks';

function WalletErrorHandler() {
  const ee = useEventEmitter();

  useEffect(() => {
    const handleError = (error: { message: string }) => {
      toast.error(error.message);
    };

    ee.on('wallet:connect-error', handleError);

    return () => {
      ee.off('wallet:connect-error', handleError);
    };
  }, [ee]);

  return null;
}
tsx
import { useEventEmitter } from '@orderly.network/hooks';

function WalletErrorHandler() {
  const ee = useEventEmitter();

  useEffect(() => {
    const handleError = (error: { message: string }) => {
      toast.error(error.message);
    };

    ee.on('wallet:connect-error', handleError);

    return () => {
      ee.off('wallet:connect-error', handleError);
    };
  }, [ee]);

  return null;
}

Best Practices

最佳实践

1. Check Wallet Connection Before Actions

1. 操作前检查钱包连接状态

tsx
const { wallet } = useContext(WalletConnectorContext);
if (!wallet) {
  modal.show(WalletConnectorModalId);
  return;
}
tsx
const { wallet } = useContext(WalletConnectorContext);
if (!wallet) {
  modal.show(WalletConnectorModalId);
  return;
}

2. Use AuthGuard for Protected Content

2. 使用AuthGuard保护内容

tsx
<AuthGuard>
  <ProtectedTradingUI />
</AuthGuard>
tsx
<AuthGuard>
  <ProtectedTradingUI />
</AuthGuard>

3. Handle Network Mismatches

3. 处理网络不匹配

tsx
const { connectedChain } = useContext(WalletConnectorContext);
const expectedChainId = networkId === 'mainnet' ? 42161 : 421614;

if (connectedChain?.id !== expectedChainId) {
  return <SwitchNetworkPrompt />;
}
tsx
const { connectedChain } = useContext(WalletConnectorContext);
const expectedChainId = networkId === 'mainnet' ? 42161 : 421614;

if (connectedChain?.id !== expectedChainId) {
  return <SwitchNetworkPrompt />;
}

4. Persist Network Selection

4. 持久化网络选择

tsx
const NETWORK_KEY = 'orderly_network_id';

function getNetworkId(): NetworkId {
  return (localStorage.getItem(NETWORK_KEY) as NetworkId) || 'mainnet';
}
tsx
const NETWORK_KEY = 'orderly_network_id';

function getNetworkId(): NetworkId {
  return (localStorage.getItem(NETWORK_KEY) as NetworkId) || 'mainnet';
}

Related Skills

相关技能

  • orderly-sdk-dex-architecture - Provider setup and configuration
  • orderly-sdk-install-dependency - Installing wallet packages
  • orderly-sdk-trading-workflows - Trading implementation
  • orderly-sdk-debugging - Troubleshooting wallet issues
  • orderly-api-authentication - Understanding the auth flow
  • orderly-sdk-dex-architecture - Provider配置与设置
  • orderly-sdk-install-dependency - 钱包包安装
  • orderly-sdk-trading-workflows - 交易流程实现
  • orderly-sdk-debugging - 钱包问题排查
  • orderly-api-authentication - 认证流程理解