createWallet
createWallet 函数用于初始化嵌入式钱包,并将 web3 provider 暴露给网页。
示例
import { createWallet } from '@money-sdk/core'
const wallet = createWallet({
appId: '<YOUR_APP_ID>',
providers: {
bitcoin: true,
ethereum: true,
solana: true,
},
})
const ethereumProvider = await wallet.getProvider('ethereum')
ethereumProvider.request(/* ... */)参考
appId
应用的标识符。它让你的集成拥有独立的配置 —— 允许的父 origin、特性开关 以及每个 dApp 的分析作用域。
INFO
仅在生产环境中才需要。注册流程请参阅 App ID 指南。在本地 开发时可以省略;钱包会以仅允许 localhost 的允许列表加载。
walletUrl
Drop 钱包 iframe 的 origin。默认为 https://dropwallet.app。
只在需要指向预览部署或本地钱包实例时才覆盖此值 —— 生产环境的 dApp 应始终保留默认值。
signerUrl
用于 passkey 流程的 Drop signer 弹窗的 origin。默认指向规范的 signer。 适用规则与 walletUrl 相同。
providers
你希望向 dApp 暴露的 web3 provider 列表,以及它们的可选配置。
Ethereum 与 EVM 兼容链
默认情况下,会返回一个 EIP-1193 provider。
示例
const wallet = createWallet({
providers: {
ethereum: true,
},
})
const ethereumProvider = await wallet.getProvider('ethereum')
ethereumProvider.request(/* ... */)此外,该 provider 会按照 EIP-6963 向网页宣告。如果 你想禁用这种行为,请传入 eip6963 选项。
示例
const wallet = createWallet({
providers: {
ethereum: {
eip6963: false,
},
},
})如果你的 dApp 期望 provider 可在 window.ethereum 处获取,你也可以 通过传入 dangerouslyInjectWindow 选项将其注入到那里。
示例
const wallet = createWallet({
providers: {
ethereum: {
dangerouslyInjectWindow: true,
},
},
})
window.ethereum.request(/* ... */)Solana
默认情况下,会返回一个 类 Phantom 的 provider。
示例
const wallet = createWallet({
providers: {
solana: true,
},
})
const solanaProvider = await wallet.getProvider('solana')
solanaProvider.connect()此外,该 provider 会按照 Wallet Standard 向网页宣告。如果你想禁用这种行为,请传入 walletStandard 选项。
示例
const wallet = createWallet({
providers: {
solana: {
walletStandard: false,
},
},
})如果你的 dApp 期望 provider 可在 window.solana 处获取,你也可以 通过传入 dangerouslyInjectWindow 选项将其注入到那里。
示例
const wallet = createWallet({
providers: {
solana: {
dangerouslyInjectWindow: true,
},
},
})
window.solana.connect()Bitcoin
默认情况下,会返回一个 Sats Connect v1 provider。
示例
const wallet = createWallet({
providers: {
bitcoin: true,
},
})
const bitcoinProvider = await wallet.getProvider('bitcoin')
bitcoinProvider.connect(/* ... */)此外,该 provider 会按照 Wallet Standard 向网页宣告。如果你想禁用这种行为,请传入 walletStandard 选项。
示例
const wallet = createWallet({
providers: {
bitcoin: {
walletStandard: false,
},
},
})Universal
Drop 附带了一个通用 provider,让你可以为多链 dApp 使用单一的连接流程。 建议通过 Wallet Standard 与该 provider 交互。通用 provider 会以 Drop Universal 的名称注册自身。
示例
import { createWallet } from '@money-sdk/core'
const wallet = createWallet({
providers: {
ethereum: true,
solana: true,
universal: true,
},
})import { useWallets, useConnect } from '@wallet-standard/react'
import { useMemo } from 'react'
const wallets = useWallets()
const universalWallet = useMemo(
() => wallets.find(({ name }) => name === 'Drop Universal'),
[wallets],
)
const [connecting, connect] = useConnect(universalWallet)
/** Connect Ethereum and Solana at the same time. */
const accounts = connect()通用 provider 连接之后,你就可以像往常一样使用其他 provider。
INFO
通用 provider 只会连接那些同样在配置中启用的其他 provider。
此外,通用 provider 也可以从钱包实例上获取。
示例
import { createWallet } from '@money-sdk/core'
const wallet = createWallet({
providers: {
bitcoin: true,
ethereum: true,
solana: true,
universal: true,
},
})
const provider = await wallet.getProvider('universal')
/** Connect Bitcoin, Ethereum and Solana at the same time. */
const accounts = provider.connect()返回值
createWallet 返回一个 Wallet 实例,具有以下方法:
getProvider(chain)
返回一个 promise,解析为给定链('bitcoin'、'ethereum'、'solana' 或 'universal')的 web3 provider。如果该 provider 未在 providers 配置中启用,则解析为 null。
renderWidget(element)
将钱包 iframe 挂载到特定的 DOM 元素上,以便用户看到钱包 UI。传入 null 可将 iframe 重新挂回到 document.body。React 绑定已通过 <WalletWidget> 为你处理好这一切。
setWidgetConfig(config)
将组件配置(theme、size、shape、compact)转发给嵌入式钱包。React 绑定已通过 <WalletWidget> 为你处理好这一切。
disconnect()
向 iframe 转发一条 wallet:disconnect 消息。如果你希望以编程方式让 用户登出而不必等待他们点击组件内的断开按钮,这会非常有用。