injectived(连接到 Injective 的命令行界面)可以执行的操作。你可以使用 injectived 与 Injective 区块链交互,包括上传智能合约、查询数据、管理质押活动、处理治理提案等。
前提条件
确保已安装 injectived
有关更多信息,请参阅安装 injectived。如果你已成功安装injectived,应该能够运行以下命令:
使用 Docker 化的 CLI
如果从 Docker 运行,你需要将 home 目录挂载到容器。- docker 运行镜像
injectivelabs/injective-core:v1.14.1 injectived是从容器内运行 CLI 的命令keys add是添加密钥的命令my_key是密钥的名称--home /root/.injective是容器内 CLI 的 home 目录-v ~/.injective:/root/.injective简单地将主机的~/.injective目录挂载到容器的/root/.injective目录。
/root/.injective/keyring-file 目录,这与你主机的 ~/.injective/keyring-file 目录相同。
你可以通过运行以下命令列出所有密钥:
使用 RPC 端点
在访问 Injective 区块链之前,你需要有一个正在运行的节点。你可以运行自己的全节点或连接到其他人的节点。 要查询状态和发送交易,你必须连接到一个节点,该节点是整个对等连接网络的访问点。你可以运行自己的全节点或连接到其他人的节点。 运行自己的节点仅适用于高级用户。对于大多数用户,建议连接到公共节点。 要设置 RPC 端点,你可以使用以下命令:仅对于测试网,你可以使用:
https://k8s.testnet.tm.injective.network:443(chain-id injective-888)通用帮助
有关injectived 的更多通用信息,运行:
injectived 命令的更多信息,在命令后附加 -h 或 --help 标志。例如:
配置 injectived 客户端
要配置更多 injectived 选项,编辑 ~/.injective/config/ 目录中的 config.toml 文件。当 keyring-backend 设置为 file 时,Keyring 文件位于 ~/.injective/keyring-file 目录。也可以将 keyring-backend 设置为 test 或 os。如果是 test,它也将作为文件存储在 ~/.injective/keyring-test,但不受密码保护。
文件中的所有选项都可以使用 CLI 设置:injectived config set client <option> <value>。
生成、签名和广播交易
运行以下命令将 INJ 代币从发送者账户发送到接收者账户。1000inj 是要发送的 INJ 代币数量,其中 1 INJ = 10^18 inj,所以 1000inj 是一个非常小的数量。
- 生成一个包含一个
Msg(x/bank的MsgSend)的交易,并将生成的交易打印到控制台。 - 要求用户确认从
$MY_WALLET账户发送交易。 - 从 keyring 获取
$MY_WALLET。这是可能的,因为我们在之前的步骤中设置了 CLI 的 keyring。 - 使用 keyring 的账户签名生成的交易。
- 将签名的交易广播到网络。这是可能的,因为 CLI 连接到公共 Injective 节点的 RPC 端点。
(仅)生成交易
生成交易可以通过在任何tx 命令上附加 --generate-only 标志来完成,例如:
> unsigned_tx.json 将未签名的交易保存到文件(以便在签名者之间更容易传递)。
签名预生成的交易
使用 CLI 签名交易需要将未签名的交易保存在文件中。假设未签名的交易在当前目录中名为unsigned_tx.json 的文件中(参见上一段了解如何操作)。然后,只需运行以下命令:
SIGN_MODE_DIRECT 和 MY_WALLET 的密钥签名,我们已经在 keyring 中设置了该密钥。签名的交易将以 JSON 格式输出到控制台,如上所述,我们可以通过在命令行后附加 > signed_tx.json 将其保存到文件。
tx sign 命令中一些有用的标志:
--sign-mode:你可以使用amino-json使用SIGN_MODE_LEGACY_AMINO_JSON签名交易,--offline:离线模式签名。这意味着tx sign命令不会连接到节点来检索签名者的账户号和序列号,这两者都是签名所需的。在这种情况下,你必须手动提供--account-number和--sequence标志。这对于离线签名很有用,即在没有互联网访问的安全环境中签名。
多签名者签名(Multi Sig)
多签名者签名使用tx multi-sign 命令完成。此命令假设所有签名者使用 SIGN_MODE_LEGACY_AMINO_JSON。流程类似于 tx sign 命令流程,但不是签名未签名的交易文件,而是每个签名者签名前一个签名者签名的文件。tx multi-sign 命令将签名附加到现有交易。重要的是签名者按照交易给出的相同顺序签名交易,可以使用 GetSigners() 方法检索该顺序。
例如,从 unsigned_tx.json 开始,假设交易有 4 个签名者,我们将运行:
广播交易
广播交易使用以下命令完成:--broadcast-mode 标志来指定从节点接收哪种响应:
block:CLI 等待 tx 被包含在区块中。sync:CLI 仅等待 CheckTx 执行响应,手动查询交易结果以确保它被包含。async:CLI 立即返回(交易可能失败)- 不要使用。
