钱包集成
这篇文档将介绍如何将 Rooch 的钱包功能(查询、转账)集成到钱包、资产浏览器、聚合器等应用中,将向钱包开发者介绍 Rooch 提供的 TS SDK 方法。
客户端操作
useRoochClientQuery 提供了调用 RPC 方法的封装,传递 RPC 方法名和参数列表后对返回结果进行处理,具体可以传递哪些 RPC 方法、参数以及返回结果,请参考 Rooch JSON RPC (opens in a new tab)。
export declare function useRoochClientQuery<T extends keyof RpcMethods, TData = RpcMethods[T]['result']>(...args: undefined extends RpcMethods[T]['params'] ? [method: T, params?: RpcMethods[T]['params'], options?: UseRoochClientQueryOptions<T, TData>] : [method: T, params: RpcMethods[T]['params'], options?: UseRoochClientQueryOptions<T, TData>]): UseQueryResult<TData, Error>;接下来会举几个调用例子:
- 调用
rooch_getBlances方法的例子:
const {
data: assetsList,
isPending,
refetch: refetchAssetsList,
} = useRoochClientQuery(
'getBalances',
{
owner: BitcoinAddressToRoochAddress(address).toHexAddress(),
},
{ refetchInterval: 5000 }
);- 调用
btc_queryUTXOs方法的例子:
const { data: utxoList, isPending: isUTXOPending } = useRoochClientQuery(
'queryUTXO',
{
filter: {
owner: address,
},
cursor: queryOptions.cursor,
limit: queryOptions.pageSize,
},
{ enabled: !!address }
);账户相关
获取 Session Key
export declare function useCurrentSession(): import("@roochnetwork/rooch-sdk").Session | null;例子:
import { useCurrentSession } from '@roochnetwork/rooch-sdk-kit';
const sessionKey = useCurrentSession();获取当前地址
import { useCurrentAddress } from '@roochnetwork/rooch-sdk-kit';
const address = useCurrentAddress();网络切换
对于网络切换可以使用 useSwitchNetwork 方法,传递以下参数:
type UseSwitchNetworkArgs = string;如果已连接网路,可以使用 useCurrentNetwork 方法。
获取上下文
useRoochContext 方法用于获取上下文,上下文信息如下所示:
export interface ClientProviderContext {
client: RoochClient;
networks: NetworkConfigs;
network: NetworkType;
config: NetworkConfig | null;
selectNetwork: (network: string) => void;
}发送交易
UseSignAndExecuteTransaction 方法,执行签名交易,需要传递以下参数:
type UseSignAndExecuteTransactionArgs = {
transaction: Transaction;
signer?: Signer;
};转账
Coin
export declare function useTransferCoin({ mutationKey, ...mutationOptions }?: UseSwitchNetworkMutationOptions): UseMutationResult<UseTransferCoinResult, Error, UseTransferCoinArgs, unknown>;- 对于转账交易可以使用
useTransferCoin方法,传递以下参数:
type UseTransferCoinArgs = {
signer?: Signer;
recipient: address;
amount: number | bigint;
coinType: TypeArgs;
};Object
- 对于对象的转移可以使用
useTransferObject方法,传递以下参数:
type UseTransferObjectArgs = {
signer: Signer;
recipient: string;
objectId: string;
objectType: TypeArgs;
};将钱包功能集成到 Rooch SDK 中
Rooch 目前提供了一套 TypeScript 的 SDK,为 Rooch 开发者或应用开发者提供了便捷的开发体验。
介绍
rooch-sdk 提供了一些基础的封装,rooch-sdk-kit 则为应用开发提供了更实用的开发工具。而钱包集成就用到了这些工具,相关代码存放在 rooch 仓库中,详细路径为:
rooch/sdk/typescript/rooch-sdk-kit/src/wellet如何集成钱包到 Rooch 中
目前 Rooch 已经集成了 UniSat、OneKey 和 OKX,如果钱包厂商需要集成钱包到 Rooch 中,则需要使用 SDK 做一些相应的开发,并将实现钱包集成的代码,提交到上述目录中。
在 Rooch 上创建的资产只需要通过调用一个 getBalance 接口即可。
以 UniSat 为例,除去一些操作连接相关的代码开发外,最终要显示资产,最关键的是这段代码:
getBalance(): Promise<{ confirmed: number; unconfirmed: number; total: string }> {
return this.getTarget().getBalance()
}