- 设置 API 客户端和环境,
- 连接到链和 Indexer API,
- 连接到用户钱包并获取其地址,
- 查询智能合约(在本例中获取智能合约的当前计数),
- 修改合约状态(在本例中将计数增加 1,或将其设置为特定值),
设置
首先,配置你想要的 UI 框架。你可以在这里找到有关配置的更多详细信息。 要开始使用 dex,我们需要设置 API 客户端和环境。要构建我们的 DEX,我们将从 Injective 链和 Indexer API 查询数据。在这个示例中,我们将使用现有的 Testnet 环境。 让我们首先设置一些我们需要查询数据的类。 对于与智能合约交互,我们将使用@injectivelabs/sdk-ts 中的 ChainGrpcWasmApi。我们还需要我们将使用的网络端点(Mainnet 或 Testnet),可以在 @injectivelabs/networks 中找到
示例:
@injectivelabs/wallet-strategy 包,它允许用户使用各种不同的钱包提供商连接并使用它们在 Injective 上签名交易。
@injectivelabs/wallet-strategy 的主要目的是为开发者提供一种在 Injective 上使用不同钱包实现的方式。所有这些钱包实现都暴露相同的 ConcreteStrategy 接口,这意味着用户可以直接使用这些方法,而无需了解特定钱包的底层实现,因为它们已被抽象化。
首先,你必须创建一个 WalletStrategy 类的实例,它使你能够开箱即用地使用不同的钱包。你可以通过在 walletStrategy 实例上使用 setWallet 方法来切换当前使用的钱包(注意:setWallet 是异步的,需要 await)。默认是 Metamask。
WalletStrategy 构造函数中省略 evmOptions。
最后,要在 Injective 上执行整个交易流程(准备 + 签名 + 广播),我们将使用 MsgBroadcaster 类。
连接到用户钱包
由于我们使用WalletStrategy 来处理与用户钱包的连接,我们可以使用其方法来处理一些用例,如获取用户地址、签名/广播交易等。要了解更多关于钱包策略的信息,你可以探索文档接口和 WalletStrategy 提供的方法。
注意:我们可以使用 setWallet 方法在 WalletStrategy 中切换”活动”钱包(这是异步的,需要 await)。
查询
初始设置完成后,让我们看看如何使用我们之前创建的 chainGrpcWasmApi 服务查询智能合约以获取当前计数,并在智能合约上调用 get_count。getCount 或我们创建的其他函数),我们可以在应用程序的任何地方调用它们(通常是集中式状态管理服务,如 Nuxt 中的 Pinia,或 React 中的 Context providers 等)。
修改状态
接下来我们将修改count 状态。我们可以通过使用我们之前创建的 Broadcast Client 和 @injectivelabs/sdk-ts 中的 MsgExecuteContractCompat 向链发送消息来实现。
我们在这个示例中使用的智能合约有 2 个修改状态的方法:
incrementreset
increment 将计数增加 1,reset 将计数设置为给定值。注意,reset 只能在你是智能合约的创建者时调用。
当我们调用这些函数时,我们的钱包会打开以签名消息/交易并广播它。
让我们首先看看如何增加计数。
