@ exodus/ 无头
平台-不可知的Exodus钱包 SDK,包括种子短语管理,交易签名,块链元数据,余额等核心功能.
目录
快速启动
import createExodus from '@exodus/headless'
import referrals from '@exodus/headless/src/modules/referrals'
import Emitter from '@exodus/wild-emitter'
// 1. Create port. Acts as an event bus between headless wallet and client
const port = new Emitter()
// 2. Instantiate client-specific adapters and config. More details below
const adapters = {}
const config = {}
// 3. Create Exodus container
const exodusContainer = createExodus({ port, adapters, config })
// 4. Register external modules. Does not support overriding modules at the moment.
exodusContainer.register({
definition: {
id: 'remoteConfig',
factory: createRemoteConfig,
dependencies: ['config', 'fetch', 'logger'],
},
})
// see an example feature definition:
// ../../features/geolocation/index.js
exodusContainer.use(referrals())
exodusContainer.use(myCustomFeature({ id: 'myCustomFeature', ... }))
// 5. Resolve exodus instance
const exodus = exodusContainer.resolve()
// 6. Start exodus instance
await exodus.wallet.start()
// 7. Use it!
await exodus.wallet.create({ passphrase: 'my-super-secure-passphrase' })
// 8. Use your custom feature API, if any
exodus.myCustomFeature.doThatThingYouDo()
生命周期
无头钱包实例在一生中通过不同的状态过渡. 相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相去相相去相相去相相去相去相去相去相去相去相相去相相相相相相相相相去相去相相去相去相相相相相相相相相相相相
- Fires hook call:允许模块订阅并停止过渡,直到收听者解决.
- Fires event call:所有钩子被执行并解决后发回.
关于生命周期钩子的更多信息,请参见: 应用程序特性文档。 。 。 .
端口
无头钱包和客户端之间的事件总线
| 方法 | 类型 | 说明 |
|---|---|---|
| 订阅 | ({ type: string, payload: any }) => void | 订阅受事. |
| 未订阅 | ({ type: string, payload: any }) => void | 不订阅接收事件的处理器 . |
| 发射 | (type: string, payload: any) => void | 释出一事. |
适配器
适配器是针对客户对钱包功能所需的定义API的特定执行.
这个模块需要新的适配器,因为我们将更多的模块迁移到它。 下文解释了本单元当时需要哪些内容.
模块
AssetsModule 执行。 目前正在注入,因为我们的每个客户都有不同的执行方式.
创建标记器
返回带有指定命名空间的 Logger 类实例的函数 .
| 参数 | 类型 | 说明 |
|---|---|---|
| 命名空间 | string | 日志的命名空间 . |
返回的 Logger 实例有以下方法:
| 方法 | 类型 | 说明 |
|---|---|---|
| 追踪 | (...args: any[]) => void | 登录带有跟踪级别的信件 . |
| 调试 | (...args: any[]) => void | 用调试级别登录信件 . |
| 日志 | (...args: any[]) => void | 用日志级别登录信件 . |
| 资讯 | (...args: any[]) => void | 用信息级别登录信件 . |
| 警告( e) | (...args: any[]) => void | 以警告级别登录信件 . |
| 错误 | (...args: any[]) => void | 以错误级别登录信件 . |
每种方法都采用任意数量的参数,这些参数将作为带有相应日志级的信件被记录. 信件会被前缀为日志的命名空间 .
遗产PrivTopub
私自到公钥转换功能.
每个键为资产名称且值为函数的对象 Buffer 返回 a Buffer。 。 。 .
不安全storage 中
不安全( raw text) 存储实例 。 内部被模块用来将数据粘入客户端下层存储层.
在多数情况下, 您可能想要使用加密存储( 尚未迁移) .
检查 存储光谱 关于存储 API 的更详细信息
可迁移的垃圾堆
复制 storage 但仅用于移民。 这样我们就可以解锁存储,但应用程序的其他部分仍然无法访问.
种子集
存储实例被钱包模块用来不稳地存储种子和自动生成的密码句(如果有的话).
检查 存储光谱 关于存储 API 的更详细信息
说明: 因为浏览器扩展需要密码句来加密/解密种子,所以它作为第3个参数被传递来获取/设定
密码句缓存
密码卡切类的例子 .
| 方法 | 类型 | 说明 |
|---|---|---|
| 设定 | (passphrase: string) => void | 用给定的值设置密码句 . |
| 起来 | () => string | 获取当前密码句值 . |
| 更改Ttl | (ttl: number) => void | 更改密码句缓存的活取时间值( TTL) . |
| 清除 | () => void | 清除密码句缓存 . |
| 排程清除 | () => void |
配置
Exodus 实例附加配置选项的对象.
目前没有使用.
调试
一些功能暴露出API用于易被调试,故障排除和PR测试. 您可以访问这些 API 在外流。 调试 。 要启用它们, 只需通过调试: 真实到无头工厂函数 :
import createExodus from '@exodus/headless'
const exodusContainer = createExodus({ port, adapters, config, debug: true })
exodusContainer.debug.geolocation.merge({ countryCode: 'US' })
无头 API
钱包
类型:对象
| 方法 | 类型 | 说明 |
|---|---|---|
| 已存在 | async () => boolean | 检查设备上是否存在钱包 . |
| 创建 | async ({ passphrase?: string }) => void | 创建新钱包 |
| 导入 | async ({ mnemonic: string, passphrase?: string, forceRestart?: boolean }) => void | 导入已存在的钱包 |
| 删除 | async ({ passphrase?: string }) => void | 删除钱包。 如果创建了钱包, 密码句是强制的 |
| 锁定 | async () => void | 锁定钱包 |
| 解锁 | async ({ passphrase?: string }) => void | 解锁钱包。 如果创建了钱包, 密码句是强制的 |
| 已锁定 | async () => boolean | 检查钱包是否锁定 |
| 获得磁性 | async () => void | 将钱包设置为备份 |
| 更改密码 | async ({ currentPassphrase?: string. newPassphrase: string }) => void | 更改密码句 。 如果创建了钱包, 当前密码句是强制的 |
| 从当前措辞恢复 | async ({ passphrase?: string }) => void | 恢复当前钱包 。 如果创建了钱包, 密码句是强制的 |
| 装入 | async () => void | 通过端口补水数据装载 UI(BE Only(中文(简体) ) |
| 卸货 | async () => void | 通过端口重新加水数据来卸载 UI(BE Only(中文(简体) ) |
| 更改锁定时器 | async ({ ttl: number }) => void | 更改自动解锁 ttl (BE Only(中文(简体) ) |
钱包账户
类型:对象
| 方法 | 类型 | 说明 |
|---|---|---|
| 创建 | async (walletAccountFields) => void | 创建一个带有所提供字段的新钱包账户. |
| 更新 | async (name, walletAccountFields) => void | 以提供的字段更新现有的钱包账户. |
| 启用 | async (name) => void | 启用已存在的钱包账户. |
| 禁用 | async (name) => void | 禁用现有的钱包账户. |
| 获取可启用 | async () => object | 返回已启用的钱包账户为 { [name]: WalletAccount }。 。 。 . |
块链元数据
类型:对象
| 方法 | 类型 | 说明 |
|---|---|---|
| 获取 TxLog | async ({ assetName, walletAccount }) => TxSet | 获取提供的 TxSet assetName编号 :walletAccount 组合( 资产来源) |
| 获取已登录的 TxLogs | async () => object | 全部装入 TxSets 作为 { [walletAccount]: { [assetName]: TxSet } } object |
| 更新 Txs | async ({ assetName: string, walletAccount: string, txs: object[] }) => void | 添加或更新 txs,其中提供更新 txs |
| 覆盖Txs | async ({ assetName: string, walletAccount: string, txs: object[], notifyReceivedTxs: ?boolean }) => void | 覆盖指定的 txs . |
| 清除 Txs | async ({ assetName: string, walletAccount: string }) => void | 删除资产源的 txs . |
| 删除 Txs | async ({ assetName: string, walletAccount: string, txs: object[] }) => void | 删除已提供的 txs . |
| 获取账户状态 | async ({ assetName, walletAccount }) => AccountState | 获取提供的资产来源的账户状态 |
| 获取账户状态 | async () => object | 全部装入 AccountStates 作为 { [walletAccount]: { [assetName]: AccountState } } object |
| 更新账户状态 | async ({ assetName: string, walletAccount: string, newData: object }) => void | 更新资产来源账户状态 . |
| 删除账户状态 | async ({ assetName: string, walletAccount: string }) => void | 删除资产来源的账户状态 . |
| 批次 | () => Batch | 创建批次更新 。 见 块链元数据 详细批量读取. |
资产
类型:对象
| 方法 | 类型 | 说明 |
|---|---|---|
| 启用 | async (assetNames: string[]) => void | 启用资产 . |
| 禁用 | async (assetNames: string[]) => void | 禁用资产. |
| 添加可启用的键 | async (assetId: string, baseAssetName: string) => string | 添加并启用自定义符号。 返回创建的 asset是因为 .name |
语言
类型:对象
| 方法 | 类型 | 说明 |
|---|---|---|
| 时间 | async (currency: string) => void | 更改当前货币. |
| 设置语言 | async (language: string) => void | 更改当前语言 . |
订阅
类型:函数
| 参数 | 类型 | 说明 |
|---|---|---|
| 订阅 | ({ type: string, payload: any }) => void | 订阅受事. |
| 未订阅 | ({ type: string, payload: any }) => void | 不订阅接收事件的处理器 . |
特性标记
类型:对象
| 方法 | 类型 | 说明 |
|---|---|---|
| 启用 | async (featureName: string) => void | 启用特性旗门特性. |
| 禁用 | async (featureName: string) => void | 禁用特性旗门特性. |
见 更多细节。 。 。 .