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钱包。
Orderly Network支持全链交易,意味着用户可以连接来自多个区块链生态系统的钱包:
SDK提供了一个统一的钱包连接层,抽象了这些生态系统之间的差异。
注意:@orderly.network/wallet-connector包开箱即用,带有合理的默认配置。solanaInitial和evmInitial属性都是可选的。
bash
| 包 | 用途 | 必需场景 |
|---|---|---|
| @web3-onboard/injected-wallets | MetaMask、Coinbase Wallet、Rabby等 | EVM钱包连接 |
| @web3-onboard/walletconnect |
┌──────────────────────────────────────────────────────────────┐
│ WalletConnectorProvider │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ SolanaProvider │ │
│ │ (ConnectionProvider + WalletProvider + ModalProvider)│ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ InitEvm │ │ │
│ │ │ (Web3OnboardProvider for EVM wallets) │ │ │
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
│ │ │ │ Main │ │ │ │
│ │ │ │ (WalletConnectorContext - unified API) │ │ │ │
│ │ │ │ ┌─────────────────────────────────┐ │ │ │ │
│ │ │ │ │ Your App │ │ │ │ │
│ │ │ │ └─────────────────────────────────┘ │ │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
重要:networkId必须在WalletConnectorProvider(Solana网络)和OrderlyAppProvider之间保持一致。
使用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 (
brokerName=Your DEX Name
networkId={networkId}
>
);
}
自定义设置(显式钱包配置):
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 (
network:
networkId === mainnet ? WalletAdapterNetwork.Mainnet : WalletAdapterNetwork.Devnet,
wallets: getSolanaWallets(),
}}
evmInitial={{
options: {
wallets: getEvmWallets(),
appMetadata: {
name: My DEX,
description: Decentralized Exchange,
},
},
}}
>
brokerName=Your DEX Name
networkId={networkId}
>
);
}
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 = YOURWALLETCONNECTPROJECT_ID;
return [
// 注入式钱包(MetaMask、Rabby、Coinbase等)
injectedOnboard(),
// Binance Web3钱包
binanceWallet({ options: { lng: en } }),
// WalletConnect(用于移动端钱包)
walletConnectOnboard({
projectId: walletConnectProjectId,
qrModalOptions: { themeMode: dark },
dappUrl: window.location.origin,
}),
];
}
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()];
}
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 (
已连接:{wallet.accounts[0].address}
链:{connectedChain?.id}
tsx
const { connect } = useContext(WalletConnectorContext);
// 连接到EVM链(Arbitrum)
await connect({ chainId: 42161 });
// 连接到Solana
await connect({ chainId: 900900900 }); // Solana主网
tsx
const { setChain, connectedChain } = useContext(WalletConnectorContext);
// 切换到Optimism
await setChain({ chainId: 0xa }); // EVM的十六进制格式
// 切换到Base
await setChain({ chainId: 0x2105 });
钱包连接后,用户
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 orderly-sdk-wallet-connection-1776193098 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 orderly-sdk-wallet-connection-1776193098 技能
skillhub install orderly-sdk-wallet-connection-1776193098
文件大小: 4.63 KB | 发布时间: 2026-4-15 12:36