@ exodus/ 地址提供者
本模块从不同的钱包账户获取资产地址 。 软件钱包账户的地址是使用 Keychain 种子生成的编码公钥,而硬件钱包账户则使用存储在其中的公共钥 公钥存储器。 。 。 .
flowchart LR
A[AddressProvider] --> B[PublicKeyProvider]
B -->|software| D[Keychain]
B -->|hardware| E[PublicKeyStore]
在某些平台(*咳嗽,可移动*)上,地址衍生可能相当昂贵. 因此这个软件包还包括一个简单的钱包账户和基于bip32路径的缓存.
安装
pnpm add @exodus/address-provider
使用量
此特性设计为与 @exodus/headless。见 使用 sdk。 。 。 .
来玩吧
- 打开游乐场 https://exodus-hydra.pages.dev/features/地址-提供商
- 尝试一些方法通过UI。 这些对应于1:1
exodus.addressProviderAPI (英语). - 运行
await exodus.addressProvider.getReceiveAddress({ walletAccount: 'exodus_0', assetName: 'bitcoin' })在 Dev 工具控制台中.
API 边
见 使用 sdk 关于特性插入 SDK 和 API 接口的更多细节 类型声明。 。 。 .
const address = await exodus.addressProvider.getAddress({
purpose: 44,
assetName: 'bitcoin',
walletAccount: 'exodus_0',
chainIndex: 0,
addressIndex: 0,
})
const receiveAddress = await exodus.addressProvider.getReceiveAddress({
assetName: 'bitcoin',
walletAccount: 'exodus_0',
})
const unusedReceiveAddress = await exodus.addressProvider.getReceiveAddress({
assetName: 'bitcoin',
walletAccount: 'exodus_0',
multiAddressMode: true,
})
如果您正在构建一个需要钱包地址的特性,请添加对 addressProvider 模块,它提供与外部几乎相同的 API exodus.addressProvider API 密码 (caveat:模块预期) WalletAccount 实例,而 API 则期望钱包账户名称像 'exodus_0') (中文(简体) ).
外部钱包地址
对于不从种子中获取地址的钱包账户(例如智能合同钱包),地址提供商会从种子中解析地址 externalWalletAddressesAtom登记册地址: walletAccounts 模块 :
await exodus.walletAccounts.setExternalAddress({
walletAccount: 'polymarket_0',
assetName: 'matic',
address: '0x1234...abcd',
})
// The address provider now returns this address for the external wallet account
const address = await exodus.addressProvider.getReceiveAddress({
assetName: 'matic',
walletAccount: 'polymarket_0',
})
// To remove
await exodus.walletAccounts.removeExternalAddress({
walletAccount: 'polymarket_0',
assetName: 'matic',
})
这仅适用于钱包账户 isExternal 实值 true。对于所有其他账户,则使用普通密钥衍生.
UI 侧
见 使用 sdk 关于基本UI侧设置的更多细节.
import exodus from '~/ui/exodus'
const MyComponent = () => {
const { loading, value: receiveAddress } = useAsync(
exodus.addressProvider.getReceiveAddress({ walletAccount: 'exodus_0', assetName: 'bitcoin' })
)
return loading ? <Text>Loading...</Text> : <Text>Your address: {receiveAddress}</Text>
}
模拟地址
有时你可能会想模拟另一个钱包,你没有种子或私钥。 您可以在此处的地址层或xpub/ pub 公钥层中进行嘲笑 公用钥匙提供者
提供通常用来获取地址的所有参数,从而模拟地址:
exodus.debug.addressProvider.mockAddress({
walletAccount: 'exodus_0',
assetName: 'ethereum',
address: '<address>',
purpose: 44,
chainIndex: 0,
addressIndex: 0,
})
仅用一个参数子集来模拟多个地址 :
exodus.debug.addressProvider.mockAddress({
walletAccount: 'exodus_0',
assetName: 'bitcoin',
purpose: 44,
address: '<address>',
})
这将导致嘲弄所有使用同一地址的更改/接收链地址.
要清除所有被嘲笑的地址,打电话 exodus.debug.addressProvider.clear()。 。 。 .