您可以使用您的 Ledger Nano S 硬件钱包安全存储您的 Mina 私钥。
我们正在研究对 Ledger Nano X 的支持,但还没有完成。
支持的操作包括:
-
密钥对生成
-
签署付款交易
-
签署委托交易
该应用程序还不能通过实时用户界面进行安装,但如果您有一个 Nano S,您可以按照下面的说明把它侧载到您的 Ledger 设备上。
警告 |
|||
目前,我们还在进行一个独立且尚未发现漏洞的安全审核评估,否则开发工作已接近完成。 使用时请自负风险。并确保您备份了您的分类 Ledger 的 BIP39 私密助记词,或者使用一个单独的 Ledger 设备来测试这个应用程序。 永远不要在主网的测试网中重复使用相同的密钥对! |
内容
-
在 Ubuntu 上安装
-
在 Mac 上安装
-
在 Windows 上安装
-
生成一个密钥对
-
验证您的私钥
-
离线模式
-
Mina Ledger 的审计
在 Ubuntu 上安装
在安装之前,请确保您的 Ledger 设备已更新到最新的固件并已完全配置。特别是,确保 Ledger 的 udev 规则已经安装。
如果安装了 udev 规则,则会存在 /etc/udev/rules.d/20-hw1.rules 。如果这个文件不存在,那么您需要访问 Ledger 的网站,并按照 Linux 说明修复连接问题,或者,对于高级用户来说,您可以在 LedgerHQ Github 上找到 udev 规则。
1) 安装 Python 3
$ sudo apt-get install python3
2) 安装 pip3
$ sudo apt-get install python3-pip
3) 安装必备库
sudo apt-get install libudev-dev libusb-1.0-0-dev python-dev virtualenv
4) 为 Ledger Blue,Nano S 和 Nano X 安装 Python 工具
$ sudo pip3 install ledgerblue
5) 下载 ledger-app-mina
从 Github 下载最新的 ledger 应用程序 Mina 版本。我们目前已经测试了 1.0.0-beta.4 版本。
6) 验证 checksum
sha256sum ledger-app-mina-1.0.2-0-g843e809c.tar.gz
将上述命令的输出与发布在下载页面上的 SHA256 哈希值进行比较。如果它们匹配,则继续下一步。
7) 提取存档
$ tar xvzf ledger-app-mina-1.0.2-0-g843e809c.tar.gz
ledger-app-mina-1.0.2-0-g843e809c/README
ledger-app-mina-1.0.2-0-g843e809c/install.sh
ledger-app-mina-1.0.2-0-g843e809c/uninstall.sh
ledger-app-mina-1.0.2-0-g843e809c/mina_ledger_wallet
ledger-app-mina-1.0.2-0-g843e809c/bin/app.hex
8) 启动安装脚本
注意:如果您已经安装了以前的版本,您可以通过 uninstall.sh 卸载。
$ cd ledger-app-mina-1.0.2-0-g843e809c
$ ./install.sh
Please unlock your Ledger device and exit any apps (press any key to continue)
Generated random root public key : b'04e95715d4813ab98c92833da9b169d3ff6ee11a4f94a465503cc91e77aaea688d45a0449f41bfaa2a1a789730e72d0ace759ca7c2b8a12e82c94cda61530cc363'
Using test master key b'04e95715d4813ab98c92833da9b169d3ff6ee11a4f94a465503cc91e77aaea688d45a0449f41bfaa2a1a789730e72d0ace759ca7c2b8a12e82c94cda61530cc363'
这将开始应用程序的安装(在接下来的步骤中继续进行操作)。
重要提示:如果您已经在步骤 6) 中验证了 checksum,那么您可以在后续步骤中忽略上面的公钥以及“应用程序标识符”和“应用程序完整哈希值”。这些警告是因为 ledger -app-mina 还不是一个公认的的 Ledger 应用。
9) 允许“不安全管理器”
您的 Ledger 设备会警告您安装脚本是一个不安全的管理器。
< X Deny unsafe manager >
点击左键直到您看见脚本。
< ✓ Allow unsafe manager >
选择这个选项。
10) 安装 Mina 应用
您的 Ledger 设备会询问您是否想安装 Mina 应用程序。
< M Install app Mina >
点击左键直到您看见脚本。
< ✓ Perform installation >
选择此选项并输入您的帐户 PIN 码。
如果安装成功,安装脚本将成功终止,您将在已安装的应用程序列表中看到 Mina 徽标。
11) 安装命令行钱包
$ sudo cp ./mina_ledger_wallet /usr/local/bin/
在 Mac 上安装
在安装之前,请确保您的 Ledger 设备已更新到最新的固件并已完全配置。
1) 安装 Homebrew
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
欲了解更多信息,请访问Homebrew 网站
2) 安装 python3
brew install python3
3) 为 Ledger Blue,Nano S 和 Nano X 安装 Python 工具
$ pip3 install ledgerblue
4) 下载 ledger-app-mina
从 Github 下载最新 Mina 版本的 Ledger 应用程序。
5) 验证 checksum
shasum -a 256 ledger-app-mina-1.0.2-0-g843e809c.tar.gz
将上述命令的输出与发布在下载页面上的 SHA256 哈希值进行比较。如果它们匹配,则继续下一步。
6) 提取存档
$ tar xvzf ledger-app-mina-1.0.2-0-g843e809c.tar.gz
ledger-app-mina-1.0.2-0-g843e809c/README
ledger-app-mina-1.0.2-0-g843e809c/install.sh
ledger-app-mina-1.0.2-0-g843e809c/uninstall.sh
ledger-app-mina-1.0.2-0-g843e809c/mina_ledger_wallet
ledger-app-mina-1.0.2-0-g843e809c/bin/app.hex
7) 启动安装脚本
注意:如果您已经安装了以前的版本,您可以通过 uninstall.sh 卸载。
$ cd ledger-app-mina-1.0.2-0-g843e809c
$ ./install.sh
Please unlock your Ledger device and exit any apps (press any key to continue)
Generated random root public key : b'04e95715d4813ab98c92833da9b169d3ff6ee11a4f94a465503cc91e77aaea688d45a0449f41bfaa2a1a789730e72d0ace759ca7c2b8a12e82c94cda61530cc363'
Using test master key b'04e95715d4813ab98c92833da9b169d3ff6ee11a4f94a465503cc91e77aaea688d45a0449f41bfaa2a1a789730e72d0ace759ca7c2b8a12e82c94cda61530cc363'
这将开始应用程序的安装(在接下来的步骤中继续)
重要提示:如果您已经在步骤 5) 中验证了 checksum,那么您可以在后续步骤中忽略关于上面的公钥以及“应用程序标识符”和“应用程序完整哈希值”的消息。这些警告是因为 Ledger -app-mina 还不是一个被批准的 Ledger 应用。
8) 允许“不安全管理者”
您的 Ledger 设备会警告您安装脚本是一个不安全的管理器。
< X Deny unsafe manager >
点击左键直到您看见脚本。
< ✓ Allow unsafe manager >
选择这个选项。
9) 安装 app Mina
您的 Ledger 设备会询问您是否想安装 Mina 应用程序。
< M Install app Mina >
点击左键直到您看见脚本。
< ✓ Perform installation >
选择此选项并输入您的帐户 PIN 码。
如果安装成功,安装脚本将成功终止,您将在已安装的应用程序列表中看到 Mina 徽标。
10) 安装命令行钱包
您的 Ledger 设备会询问您是否想安装 Mina 应用程序。
$ sudo cp ./mina_ledger_wallet /usr/local/bin/
在 Windows 上安装
在安装之前,请确保您的 Ledger 设备已更新到最新的固件并已完全配置。
1) 安装 Python 3.9.1
下载并运行 python 安装程序。
2) 打开 Powershell
按 Windows + R 打开运行菜单,键入“Powershell .exe”,按 Enter 启动 Powershell
3) 为 Ledger Blue,Nano S 和 Nano X 安装 Python 工具
在 powershell 终端中,执行如下命令:
$ pip3 install ledgerblue
4) 下载 ledger-app-mina
从 Github 下载最新 Mina 版本的 Ledger 应用程序。
5) 验证 checksum
在 powershell 终端中,执行如下命令:
Get-FileHash -Path ledger-app-mina-1.0.2-0-g843e809c.zip
将上述命令的输出与发布下载页面上的 SHA256 哈希值进行比较。如果它们匹配,则继续下一步。
6) 提取存档
右键单击 Downloads 文件夹中的 .zip 文件,并选择 Extract All... 在生成的窗口中,只需按下“Extract”就可以解压缩存档。
7) 更改目录到新提取的存档
PS > cd ledger-app-mina-1.0.2-0-g843e809c
8) (可选)卸载以前版本的 mina 应用程序
注意:如果您已经安装了以前的版本,您可以通过 uninstall.sh 卸载。
PS ...ledger-app-mina-1.0.2-0-g843e809c> python3 -m ledgerblue.deleteApp "--targetId" "0x31100004" "--appName" "Mina"
确保批准 Ledger 设备本身上的任何提示。
9) 开始安装新版本
PS ...ledger-app-mina-1.0.2-0-g843e809c> python3 -m ledgerblue.loadApp "--path" "44'/12586'" "--appFlags" "0x240" "--tlv" "--targetId" "0x31100004" "--targetVersion=1.6.0" "--delete" "--fileName" "bin/app.hex" "--appName" "Mina" "--appVersion" "1.0.0" "--dataSize" "64" "--icon" "010000000000ffffffffffffffffffeff7c7e393c9b3cdb3cdb3cdb3cdb3cd33cc799effffffffffff"
Please unlock your Ledger device and exit any apps (press any key to continue)
Generated random root public key : b'04e95715d4813ab98c92833da9b169d3ff6ee11a4f94a465503cc91e77aaea688d45a0449f41bfaa2a1a789730e72d0ace759ca7c2b8a12e82c94cda61530cc363'
Using test master key b'04e95715d4813ab98c92833da9b169d3ff6ee11a4f94a465503cc91e77aaea688d45a0449f41bfaa2a1a789730e72d0ace759ca7c2b8a12e82c94cda61530cc363'
这将开始应用程序的安装(在接下来的步骤中继续)
重要提示:如果您已经在步骤 5)中验证了 checksum,那么您可以在后续步骤中忽略关于上面的公钥以及“应用程序标识符”和“应用程序的完整哈希值”的消息。这些警告是因为 Ledger -app-mina 还不是一个被批准的 Ledger 应用。
10) 允许“不安全的管理者”
您的 Ledger 设备会警告您安装脚本是一个不安全的管理器。
< X Deny unsafe manager >
点击左键直到您看见脚本。
< ✓ Allow unsafe manager >
选择这个选项。
11) 安装 app Mina
您的 Ledger 设备会询问您是否想安装 Mina 应用程序。
< M Install app Mina >
点击左键直到您看到脚本。
< ✓ Perform installation >
选择此选项并输入您的帐户 PIN 码。
如果安装成功,安装脚本将成功终止,您将在已安装的应用程序列表中看到 Mina 徽标。
12) 使用命令行钱包
稍后当命令在这些文档中引用 mina_ledger_wallet 时,从同一个 powershell 提示符中执行如下命令 ./mina_ledger_wallet ...
生成一个密钥对
注意,在 Ledger 设备上,生成的密钥对实际上并不存储任何东西!Ledger 每次运行时都会重新获得密钥。这意味着在卸载/重新安装此应用程序时,您不需要担心丢失密钥。
要获得一个密钥对并获得关联的 Mina 地址,请在您的 Ledger 设备上打开 Mina 应用程序,然后在您的终端上使用 mina_ledger_wallet 命令。
例如,要获得硬件钱包帐户 42 (BIP44 account 44'/12586'/42'/0/0 ) 对应的 Mina 地址,可以发出以下命令。
$ mina_ledger_wallet get-address 42
系统将提示您确认。
Get address for account 42 (path 44'/12586'/42'/0/0)
Continue? (y/N) y
一旦确认,您会看到:
Generating address (please confirm on Ledger device)...
当 Ledger 设备将显示在您的终端上时,这告诉您所请求的操作类型。
👁 Get Address >
跟随箭头指示,按下并松开您 Ledger 上的右键。
Ledger 现在将显示您所请求的地址的 BIP44 路径。
Path (1/2)
44'/12586'/42'/0 >
注意,上面路径中的 42' 对应于帐号。检查路径的帐号与您提供给 get-address 命令的帐号参数是否匹配。
选择此选项并输入您的帐户 PIN 码。
✓
< Generate >
现在同时按下左和右按钮来选择这个选项并生成地址。
Ledger 将显示:
Processing...
同时生成密钥对。
由于 Mina 使用了硬件还不支持的新椭圆曲线,所以这个过程可能需要 47 秒。
一旦完成,Ledger 将显示地址,供您仔细核对和确认。
Address (1/4)
B62qnh5DZeX6eYFv >
通过审批后, mina_ledger_wallet 命令将输出结果,您可以使用它。
Received address: B62qnh5DZeX6eYFvtBn4nBTniXbN7R6cgKo6gYqQ7E2bKwLD3PTYZ4b
您的地址 42 将不同于以上结果。
请注意 |
|||
在生成地址时,如果可能的话,应该从帐户 0 开始,并在每次需要新地址时按顺序增加帐户号。 |
验证您的私钥
为了验证您的私钥,请确保您已经更新到 mina 后台程序的最新版本。安装说明可以在连接页面上找到。
现在您已经创建了密钥 —— 您需要验证它是否有效。对于这个密钥对,它足以验证来自 Ledger 的签名交易是否被正确解析,以及签名是否在 Mina 上验证。
执行如下命令:
mina_ledger_wallet test-transaction --network mainnet 42 B62qnzbXmRNo9q32n4SNu2mpB8e7FYYLH8NmaX6oFCBYjjQ8SbD7uzV | mina advanced validate-transaction
用您的公钥代替 “B62q…”,用您的 BIP44 账号代替 42。警告:请确认您的 account_address 与 account_number 相对应!
您需要查看您的 Ledger,检查交易细节,选择“接受”或“拒绝”。
如果您拒绝,将不会生成任何测试交易,并且此命令将退出并显示错误。
如果您接受,将生成一个测试交易,您应该看到以下输出:
Transaction was valid
All transactions were valid
离线模式
发送交易的另一种方法便是使用 ledger 工具的离线模式。此模式允许您在不将 ledger 设备连接到现行守护进程的情况下签署交易。您可以使用 mina_ledger_wallet 工具将 --offline 标志附加到任何命令中,但是我们将提供一个示例,说明如何使用离线模式发送交易。
签署离线交易
第一步是使用 ledger 的离线模式签署交易:
1. 使用以下命令生成一个已签名的交易:
mina_ledger_wallet send-payment --offline
在离线模式下,必须指定 --nonce 和 --fee 参数。为了对测试网交易进行签名,您必须指定 —— --network testnet 参数(默认为 mainnet )。
注意 |
|||
如果您不在主网上,请确保包含了 --network testnet 参数,以便 ledger 知道为 testnet 签署交易。为主网签署的交易可以在主网上重播。 |
2. 复制该命令的输出。
输出将是下一节需要的 JSON 助记词。它应该是这样的:
{
"signature": "389ac7d4077f3d485c1494782870979faa222cd906b25b2687333a92f41e40b925adb08705eddf2a7098e5ac9938498e8a0ce7c70b25ea392f4846b854086d43",
"payment": {
"to": "B62qnzbXmRNo9q32n4SNu2mpB8e7FYYLH8NmaX6oFCBYjjQ8SbD7uzV",
"from": "B62qnzbXmRNo9q32n4SNu2mpB8e7FYYLH8NmaX6oFCBYjjQ8SbD7uzV",
"fee": "10000000",
"token": "1",
"nonce": "0",
"memo": null,
"amount": "1000000000",
"valid_until": "4294967295"
},
"stake_delegation": null,
"create_token": null,
"create_token_account": null,
"mint_tokens": null
}
提交交易
目前这个步骤需要一个连接到网络的并且运行的守护进程,但是您也可以将这个交易提交到任何第三方网关。
1. 在 Devnet 上运行一个守护进程。
2. 执行以下 send-rosetta-transactions 命令。
mina advanced send-rosetta-transactions
3. 粘贴上一节中 mina_ledger_wallet 的输出,然后按 Ctrl-D 提交交易。
这将在网络上发送签名的交易。如果成功发送了交易,应看到以下输出
Dispatched command with TRANSACTION_ID 4Rs6xMHVyo1J1TTQDCzynYvWPdBr9QRY23fuqvnHFvQiM2B4YD14dtWY2sDccbgx7eh5FYAsPSNrZ2M3AqEPfXoXjNxuWTgiwkL3nwaTaGhSoPA7LcfqiWT6uN9oookDeR6ZSMfd2bs9QSPRit8gPt3FSrDo8i3qM383AEG6g5pEm2i1m1cTTwrUe7y4Z2eB6DdWKhFhoYnx5ndQRtZt3D3o7gojdwwdpRzrWZgT9KcJfbXdZNTfXxr3G1VCVqgqmNJ6iGzn4uTGqpqCmJf6zRn196SWUyZ4DYrphvGF8GhJZYyPTwA2BMTBkF9xWC9zzJP8ZrAeyV1qV8k94dZaiyVt7Fac3r6BcDaMonMcpvnGy8fHF9Q25L2tjzHzwKMePkJztB5r
审计
Least Authority 对 Mina Ledger 应用程序及其与 Nano S/X 硬件钱包的集成进行了安全审计。
阅读报告,请点击这里 |
全球最轻量区块链 人人皆可参与
公众号|Mina Protocol Official
微 博|Mina_Protocol
Website
Medium
Discord
Telegram
GitHub
评论