钱包桥接的工作原理
当 iframe 内的 widget 需要执行钱包操作(发送交易、签名消息、切换链)时,它会通过postMessage 发送一条 RPC_REQUEST 消息。主机端的处理器使用你的钱包 provider 处理该请求,并将结果作为 RPC_RESPONSE 发送回来。
EVENT 消息自动从主机推送到 iframe。
IframeEcosystemHandler 接口
每个生态系统处理器都实现IframeEcosystemHandler 接口:
生态系统处理器
EVM — useEthereumIframeHandler()
支持的 RPC 方法:
任何无法识别的方法都会被转发到公共客户端(例如
eth_getBalance、eth_call)。
发出的钱包事件: accountsChanged、chainChanged、connect
Solana — useSolanaIframeHandler(params)
Wallet 实例的 Solana 钱包库配合使用。
参数:
支持的 RPC 方法:
发出的钱包事件:
accountsChanged、connect、disconnect
Bitcoin — useBitcoinIframeHandler()
@bigmi/react 上下文中读取钱包状态。无需任何参数。
支持的 RPC 方法:
发出的钱包事件:
accountsChanged、connect、disconnect
Sui — useSuiIframeHandler()
@mysten/dapp-kit-react 钩子中读取钱包状态。无需任何参数。
支持的 RPC 方法:
发出的钱包事件:
accountsChanged、connect、disconnect
Tron — useTronIframeHandler(params)
参数:
支持的 RPC 方法:
发出的钱包事件:
accountsChanged、connect、disconnect
子路径导入
每个生态系统处理器都通过子路径导入暴露,以支持 tree-shaking。如果你只使用 EVM,则 Solana、Bitcoin、Sui 和 Tron 处理器(及其对等依赖)永远不会包含在你的 bundle 中:组合多个处理器
将你的所有处理器作为数组传入。widget 会将每个 RPC 请求路由到与该请求chainType 匹配的处理器:
外部钱包管理
如果你的应用有自己的钱包连接 UI(连接按钮、弹窗等),请使用onConnect prop 来拦截来自 widget 的钱包连接请求。当提供了 onConnect 时,widget 会向主机发送 CONNECT_WALLET_REQUEST,而不是打开其内置的钱包菜单。
ConnectWalletArgs 类型包含:
当提供了
onConnect 时,主机会在发送到 iframe 的配置中自动设置 walletConfig.useExternalWalletManagement: true。你无需手动设置它。
