Mina 开发者文档

4.4 客户端SDK

这是一个NodeJS的客户端SDK,它允许您生成Mina密钥对,并使用Mina的密钥对签署交易和字符串。该项目包含Typescript和ReasonML类型,但也可以在普通的NodeJS中使用。

警告

请注意,不建议使用这种方法生成密钥对,这种方式应由有经验的安全专业人员使用。请使用我们的mina-generate-keypair工具来代替创建密钥对。

永远不要在主网的测试网中重复使用相同的密钥对!

安装

我们的客户端SDK的源代码是开源的,并可以在这里看到。

要安装客户机SDK,系统上需要安装NodeJS。确保它在您的机器上可用,然后使用yarn或npm安装客户端SDK。

# yarn: yarn add @o1labs/client-sdk # npm: npm install --save @o1labs/client-sdk

使用

使用我们的客户端SDK创建密钥对很简单。请参阅下面的代码片段,了解如何创建密钥对。

NodeJS:

const MinaSDK = require("@o1labs/client-sdk"); let keys = MinaSDK.genKeys();console.log(`Public key: ${keys.publicKey}`);console.log(`Private key: ${keys.privateKey}`);

此操作将会显示出您的私钥,因此在使用此方法时,请确保您处于一个安全的环境中。

关于如何使用我们的SDK的更多信息,请参阅客户端SDK 自述文件。

警告

永远不要泄露您的私钥,并确保它们被妥善保存。如果您丢失了您的私钥,或者一个恶意参与者获得了对您的私钥的访问权,那么您将失去对您的帐户的访问权,并将失去您的帐户资金。请使用您的公钥,Mina永远不会问您要您的私钥。

将SDK生成的帐户导入

请注意,Mina客户端期望的密钥对格式和客户端SDK生成的密钥对格式是不同的。当使用客户机SDK生成密钥对时,返回的密钥对输出是不能直接导入到Mina客户机的字符串的。为此,我们必须使用mina advanced wrap-key工具将密钥对字符串格式化为可以直接导入到客户端的格式。

完成这些只需要几个小步骤。

1.首先,确保您的系统中有一个可以存储密钥文件的文件夹。我们建议使用~/keys文件夹。

mkdir ~/keys
  1. 接下来,确保在这个文件夹中正确地设置了权限,这将防止不需要的进程访问这些文件。
chmod 700 ~/keys
  1. 将私钥输出复制到~/keys文件夹中的文件中。
echo 'YOUR-PRIVATE_KEY' > ~/keys/my-wallet
  1. 确保为私钥文件正确设置了权限,防止不需要的进程访问它。
chmod 600 ~/keys/my-wallet
  1. 使用 mina advanced wrap-key工具将密钥对格式化为Mina客户端可导入的格式。请注意,使用 mina advanced wrap-key将迫使您重置您的私钥密码。
mina advanced wrap-key -privkey-path ~/keys/my-wallet

系统将提示您输入新密码,如下所示。

Private key: Password for new private key file: Again to confirm:

这将生成一个新的my-wallet.pubmy-wallet文件。

ls ~/keys/ my-wallet  my-wallet.pub
  1. 确保为最新创建的私钥文件正确设置了权限。

chmod 600 ~/keys/my-wallet

  1. 最后,我们可以将客户端SDK创建的帐户导入到客户端。
mina accounts import -privkey-path ~/keys/my-wallet

当使用mina advanced wrap-key创建帐户时,系统将提示您输入密码。

这个命令的响应如下所示:

Imported account! Public key:  B62qjaA4N9843FKM5FZk1HmeuDiojG42cbCDyZeUDQVjycULte9PFkC

验证您的私钥

现在您已经创建了密钥——您需要验证它是否有效。您可以通过对交易进行签名进行验证。您可以使用mina-validate-keypair工具验证这一点。

执行如下命令:

mina-validate-keypair -privkey-path ~/keys/my-wallet

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注