Mina Docs|Ledger 硬件钱包

admin 加密货币百科评论阅读模式

您可以使用您的 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.gzledger-app-mina-1.0.2-0-g843e809c/READMEledger-app-mina-1.0.2-0-g843e809c/install.shledger-app-mina-1.0.2-0-g843e809c/uninstall.shledger-app-mina-1.0.2-0-g843e809c/mina_ledger_walletledger-app-mina-1.0.2-0-g843e809c/bin/app.hex


8) 启动安装脚本

注意:如果您已经安装了以前的版本,您可以通过 uninstall.sh 卸载。

$ cd ledger-app-mina-1.0.2-0-g843e809c$ ./install.shPlease 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 BlueNano 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.gzledger-app-mina-1.0.2-0-g843e809c/READMEledger-app-mina-1.0.2-0-g843e809c/install.shledger-app-mina-1.0.2-0-g843e809c/uninstall.shledger-app-mina-1.0.2-0-g843e809c/mina_ledger_walletledger-app-mina-1.0.2-0-g843e809c/bin/app.hex


7) 启动安装脚本

注意:如果您已经安装了以前的版本,您可以通过 uninstall.sh 卸载。

$ cd ledger-app-mina-1.0.2-0-g843e809c$ ./install.shPlease 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 validAll 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

Twitter

Medium


Weibo

Discord

Telegram

GitHub




 
admin
  • 本文由 admin 发表于 2024年11月4日11:21:45
  • 转载请务必保留本文链接:https://feisijia.com/mina-docs%ef%bd%9cledger-%e7%a1%ac%e4%bb%b6%e9%92%b1%e5%8c%85.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证