接入钱包
Provider API

Provider API#

什么是 Injected provider API?#

欧易 Injected providers API 是一个 JavaScript API,欧易将其注入用户访问的网站。您的 DApp 可以使用此 API 请求用户帐户,从用户连接的区块链读取数据,帮助用户签署消息和交易。

获取注入的对象#

Dapp 可以通过两种方式访问注入的对象,分别是:

  • window.okxwallet.cardano
  • window.cardano.okxwallet

这两个属性都指向同一个对象,提供两个方式是为了方便 Dapp 使用。

注入对象的属性和方法#

  1. name - string: 钱包的名称,值为 'OKX Wallet'
  2. icon - string: 钱包的图标
  3. apiVersion - string: 版本号
  4. isEnabled - () => Promise<bool>: 返回当前钱包是否已经链接上 Dapp 。如果 Dapp 已经链接到用户的钱包,则返回 true ,否则返回 false 。如果此函数返回 true ,则后续调用 wallet.enable() 时都会成功并且返回 API 对象。
  5. enable - () => Promise<API>: 该用法用于链接钱包,如果用户同意了链接钱包,则会将 API 对象返回给 Dapp 。

连接钱包的简单示例#

try {
  const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
} catch (error) {
  console.log(error);
}

获取网络 Id#

api.getNetworkId(): Promise<number>

描述

返回当前连接的帐户的网络 Id 。

返回值

  • networkId - string: 当前连接的帐户的网络 Id 。
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const networkId = await okxwalletCardanoApi.getNetworkId();

获取 UTXO#

api.getUtxos(amount: cbor<value> = undefined): Promise<TransactionUnspentOutput[] | undefined>

描述

如果 amount 没有定义,则返回由钱包控制的所有 UTXO (未花费的交易输出)列表。 如果 amount 定义了,则返回达到 amount 中指定的 ADA /多资产价值目标所需的 UTXO ,如果无法达到,则返回 null 。

返回值

  • utxos - string[]: UTXO 列表。
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const utxos = await okxwalletCardanoApi.getUtxos();

获取资产#

api.getBalance(): Promise<cbor<value>>

描述

返回钱包可用的总余额。这与 api.getUtxos() 返回的结果相加是一样的。

返回值

  • balance - string: 钱包可用的总余额
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const utxos = await okxwalletCardanoApi.getBalance();

获取已使用的钱包地址#

api.getUsedAddresses(): Promise<cbor<address>[]>

描述

返回所有由钱包控制的已使用地址(包括在某些链上交易中)的列表。

返回值

  • addresses - string[]: 已使用的地址列表。
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const utxos = await okxwalletCardanoApi.getUsedAddresses();

获取未使用的钱包地址#

api.getUnusedAddresses(): Promise<cbor<address>[]>

描述

返回由钱包控制的未使用地址列表。

返回值

  • addresses - string[]: 未使用的地址列表。
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const utxos = await okxwalletCardanoApi.getUnusedAddresses();

获取找零地址#

api.getChangeAddress(): Promise<cbor<address>>

描述

返回钱包组装交易时,需要使用到的找零地址。

返回值

  • changeAddress - string: 找零地址.
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const utxos = await okxwalletCardanoApi.getChangeAddress();

签名交易#

api.signTx(tx: cbor<transaction>): Promise<cbor<transaction_witness_set>>

描述

请求用户对交易进行签名,如果用户同意,则尝试对交易进行签名,并返回签名的交易。

返回值

  • signedTx - string: 签名的交易。
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const rawTransaction = '';
const result = await okxwalletCardanoApi.signedTx(rawTransaction);

签名消息#

api.signData: (addr: Cbor<address>, payload: HexString) => Promise<DataSignature>

描述

签名消息。 阅读更多关于 CIP-0030 的消息签名规范。(https://github.com/cardano-foundation/CIPs/tree/master/CIP-0030).

返回值

  • dataSignature - object
    • signature - string
    • key - string
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const addresses = await okxwalletCardanoApi.getUsedAddresses();
const payload = '';
const result = await okxwalletCardanoApi.signedData(addresses[0], payload);

广播交易#

api.submitTx(tx: cbor<transaction>): Promise<hash32>

描述

广播交易,并返回给 Dapp 交易哈希以便 Dapp 追踪这笔交易。

返回值

  • txHash - string: 交易哈希。
const okxwalletCardanoApi = await window.okxwallet.cardano.enable();
const transaction = '';
const result = await okxwalletCardanoApi.submitTx(transaction);