简介

快速入门

Umi 安装

要使用 Umi,您需要安装 Umi 和所有您想使用的外部插件。或者,如果您不需要特定插件,可以安装包含适合大多数用例的插件集的默认捆绑包。

注意:由于默认捆绑包依赖 web3.js 来实现某些接口,您还需要安装该包。

必需的包

要安装它们,请使用以下命令:

npm i @metaplex-foundation/umi
npm i @metaplex-foundation/umi-bundle-defaults
npm i @solana/web3.js@1

库作者须知

想要使用 Umi 接口来大幅减少依赖项的库作者只需要安装主 Umi 库。强烈建议将其作为对等依赖项安装,以确保最终用户不会使用多个版本的 Umi 库,使用以下命令:

npm i @metaplex-foundation/umi --save-peer

然后,您可以使用 Umi 的 Context 对象或其子集在函数中注入您需要的任何接口。

用于测试

另请注意,Umi 附带了一个测试捆绑包,可以帮助最终用户和库作者测试他们的代码。例如,它包含一个用于 UploaderInterfaceDownloaderInterfaceMockStorage 实现,因此您可以可靠地测试代码,而无需依赖真实的存储提供商。

npm i @metaplex-foundation/umi
npm i @metaplex-foundation/umi-bundle-tests

Umi 基础

在本节中,我们将介绍开始使用 Umi 的基本步骤:

连接到 RPC

Solana 有不同的集群(例如 Mainnet-beta、Devnet、Testnet 等),服务于各种目的,每个集群都有专用的 API 节点来处理 RPC 请求。

将 Umi 连接到所选集群就像创建 umi 实例一样简单,因为 RPC 端点作为第一个参数传递。

注意:如果您连接到 Mainnet,建议使用来自 Solana RPC 提供商的专用 RPC 端点,而不是公共端点(https://api.mainnet-beta.solana.com),因为它有限制。

要创建 Umi 实例,导入 createUmi 函数并提供您的 RPC 端点。可选地,您还可以将确认级别指定为第二个参数。

import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
const umi = createUmi('<RPC-Endpoint>', '<Commitment-Level>')

连接钱包

设置 Umi 时,您需要使用或生成钱包才能发送交易。为此,您可以创建新钱包进行测试,从文件系统导入现有钱包,或为基于 Web 的 dApp 使用 walletAdapter

注意walletAdapter 部分仅提供将其连接到 Umi 所需的代码,假设您已经安装并设置了 walletAdapter。有关完整指南,请参阅此处

注意Umi 接口存储两个 Signer 实例:使用应用程序的 identity 和支付交易和存储费用的 payer。默认情况下,signerIdentity 方法也会更新 payer 属性,因为在大多数情况下,identity 也是 payer。

如果您想了解更多,请访问 Umi 上下文接口段落

注册程序和客户端

在某些情况下,Umi 要求您指定要使用的程序或客户端(例如,铸造 Core 资产时,您需要告诉 Umi 使用 Core 程序)。您可以通过在 Umi 实例上调用 .use() 方法并传入客户端来完成此操作。

以下是如何向 Umi 注册 mpl-token-metadata 客户端:

import { mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'
const umi = createUmi('https://api.mainnet-beta.solana.com')
.use(mplTokenMetadata())

注意:您还可以链接 .use() 调用来注册多个客户端,如下所示:

import { mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'
import { mplCandyMachine } from '@metaplex-foundation/mpl-candy-machine'
const umi = createUmi('https://api.mainnet-beta.solana.com')
.use(mplTokenMetadata())
.use(mplCandyMachine())
Previous
概述