Mina 开发者中文文档
您可以使用您的Ledger Nano S硬件钱包安全存储您的Mina私钥。
我们正在研究对Ledger Nano X的支持,但还没有完成。
支持的操作包括
● 密钥对生成
● 签署付款交易
● 签署委托交易
目前,我们还在进行一个独立的安全审核评估,尚未发现漏洞,不然开发工作早就接近完成了。在接下来的一周左右,我们将调整一个与签名相关的常量,这样的话交易就不能从测试网重放到主网。请注意,这并不影响密钥的生成。
该应用程序还不能通过实时用户界面进行安装,但如果您有一个Nano S,您可以按照下面的说明把它侧载到您的ledger设备上。
目前,我们还在进行一个独立且尚未发现漏洞的安全审核评估,不然的话开发工作已快接近完成了。
使用时请自负风险。并确保您备份了您的分类ledger的BIP39私密助记语,或者使用一个单独的ledger设备来测试这个应用程序。
永远不要在主网的测试网中重复使用相同的密钥对!
● 安装在Mac
● 生成一个密钥对
● 验证您的私钥
● 离线模式
在安装之前,请确保您的ledger设备已更新到最新的固件并已完全配置。特别是,确保Ledger的udev规则已经安装。
如果安装了udev规则,则会存在/etc/udev/rules.d/20-hw1.rules。如果这个文件不存在,那么您需要访问Ledger的网站,并按照Linux说明修复连接问题,或者,对于高级用户来说,您可以在LedgerHQ Github上找到udev规则。
$ sudo apt-get install python3
$ sudo apt-get install python3-pip
sudo apt-get install libudev-dev libusb-1.0-0-dev python-dev virtualenv
$ sudo pip3 install ledgerblue
从Github下载最新的ledger应用程序Mina版本。我们目前已经测试了1.0.0-beta.4版本。
sha256sum ledger-app-mina-1.0.0-beta.4-0-gb92ffef9.tar.gz
将上述命令的输出与发布在下载页面上的SHA256哈希值进行比较。如果它们匹配,则继续下一步。
$ tar xvzf ledger-app-mina-1.0.0-beta.4-0-gb92ffef9.tar.gz
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/README
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/install.sh
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/uninstall.sh
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/mina_ledger_wallet
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/bin/app.hex
注意:如果您已经安装了以前的版本,您可以通过uninstall.sh
卸载。
$ cd ledger-app-mina-1.0.0-beta.4-0-gb92ffef9
$ ./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)中验证了校验和,那么您可以在后续步骤中忽略上面的公钥以及“应用程序标识符”和“应用程序完整哈希值”。这些警告是因为Ledger -app-mina还不是一个公认的的ledger应用。
您的ledger设备会警告您安装脚本是一个不安全的管理器。
< X Deny unsafe manager >
点击左键直到您看见脚本
< ✓ Allow unsafe manager >
选择这个选项
您的ledger设备会询问您是否想安装Mina应用程序。
< M Install app Mina >
点击左键直到您看见脚本
< ✓ Perform installation >
选择此选项并输入您的帐户PIN码。
如果安装成功,安装脚本将成功终止,您将在已安装的应用程序列表中看到Mina徽标。
$ sudo cp ./mina_ledger_wallet /usr/local/bin/
在安装之前,请确保您的ledger设备已更新到最新的固件并已完全配置。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
欲了解更多信息,请访问Homebrew网站
brew install python3
$ pip3 install ledgerblue
从Github下载最新Mina版本的ledger应用程序。
shasum -a 256 ledger-app-mina-1.0.0-beta.4-0-gb92ffef9.tar.gz
将上述命令的输出与发布在下载页面上的SHA256哈希值进行比较。如果它们匹配,则继续下一步。
$ tar xvzf ledger-app-mina-1.0.0-beta.4-0-gb92ffef9.tar.gz
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/README
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/install.sh
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/uninstall.sh
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/mina_ledger_wallet
ledger-app-mina-1.0.0-beta.4-0-gb92ffef9/bin/app.hex
注意:如果您已经安装了以前的版本,您可以通过uninstall.sh
卸载。
$ cd ledger-app-mina-1.0.0-beta.4-0-gb92ffef9
$ ./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)中验证了校验和,那么您可以在后续步骤中忽略关于上面的公钥以及“应用程序标识符”和“应用程序完整哈希值”的消息。这些警告是因为Ledger -app-mina还不是一个被批准的ledger应用。
您的ledger设备会警告您安装脚本是一个不安全的管理器。
< X Deny unsafe manager >
点击左键直到您看见脚本
< ✓ Allow unsafe manager >
选择这个选项。
您的ledger设备会询问您是否想安装Mina应用程序。
< M Install app Mina >
点击左键直到您看见脚本
< ✓ Perform installation >
选择此选项并输入您的帐户PIN码。
如果安装成功,安装脚本将成功终止,您将在已安装的应用程序列表中看到Mina徽标。
$ sudo cp ./mina_ledger_wallet /usr/local/bin/
在安装之前,请确保您的ledger设备已更新到最新的固件并已完全配置。
下载并运行python安装程序:(https://www.python.org/ftp/python/3.9.1/python-3.9.1-amd64.exe)
按Windows + R打开运行菜单,键入“Powershell .exe”,按Enter启动Powershell
在powershell终端中,执行如下命令:
$ pip3 install ledgerblue
从Github下载最新Mina版本的ledger应用程序。
在powershell终端中,执行如下命令:
Get-FileHash -Path ledger-app-mina-1.0.0-beta.4-0-gb92ffef9.zip
将上述命令的输出与发布下载页面上的SHA256哈希值进行比较。如果它们匹配,则继续下一步。
右键单击Downloads文件夹中的.zip文件,并选择Extract All...
在生成的窗口中,只需按下“Extract”就可以解压缩存档。
PS > cd ledger-app-mina-1.0.0-beta.4-0-gb92ffef9
如果您之前已经安装了mina应用程序,用下面的命令卸载旧版本:
PS ...\ledger-app-mina-1.0.0-beta.4-0-gb92ffef9> python3 -m ledgerblue.deleteApp "--targetId" "0x31100004" "--appName" "Mina"
确保批准账簿设备本身上的任何提示。
PS ...\ledger-app-mina-1.0.0-beta.4-0-gb92ffef9> 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)中验证了校验和,那么您可以在后续步骤中忽略关于上面的公钥以及“应用程序标识符”和“应用程序的完整哈希值”的消息。这些警告是因为Ledger -app-mina还不是一个被批准的ledger应用。
您的账簿设备会警告您安装脚本是一个不安全的管理器。
< X Deny unsafe manager >
点击左键直到您看到脚本
< ✓ Allow unsafe manager >
选择这个选项。
您的ledger设备会询问您是否想安装Mina应用程序。
< M Install app Mina >
点击左键直到您看到脚本
< ✓ Perform installation >
选择此选项并输入您的帐户PIN码。
如果安装成功,安装脚本将成功终止,您将在已安装的应用程序列表中看到Mina徽标。
稍后当命令在这些文档中引用mina_ledger_wallet
时,从同一个powershell提示符中执行如下命令./mina_ledger_wallet ...
注意,在ledger设备上,生成的密钥对实际上并不存储任何东西!ledger每次运行时都会重新获得密钥。这意味着在卸载/重新安装此应用程序时,您不需要担心丢失密钥。
要获得一个密钥对并获得关联的Mina地址,请在您的Ledger设备上打开Mina应用程序,然后在您的终端上使用mina_ledger_wallet命令。
例如,要获得硬件钱包帐户42 (BIP44'/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上的右键。
ledger现在将显示您所请求的地址的BIP44路径。
Path (1/2)
44'/12586'/42'/0 >
注意,上面路径中的42'对应于帐号。检查路径的帐号与您提供给get-address
命令的帐号参数是否匹配。
再次按下右键,直到显示总账
✓
< Generate >
现在同时按下左和右按钮来选择这个选项并生成地址。
现在将显示ledger
Processing...
同时生成密钥对。
由于Mina使用了硬件还不支持的新椭圆曲线,所以这个过程可能需要47秒。
一旦完成,总账将显示地址,供您仔细核对和确认。
Address (1/4)
B62qnh5DZeX6eYFv >
通过审批后,mina_ledger_wallet
命令将输出结果,您可以使用它。
Received address: B62qnh5DZeX6eYFvtBn4nBTniXbN7R6cgKo6gYqQ7E2bKwLD3PTYZ4b
您的地址42将不同于以上结果。
在生成地址时,如果可能的话,应该从帐户0开始,并在每次需要新地址时按顺序增加帐户号。
为了验证您的私钥,请确保您已经更新到mina
后台程序的最新版本。安装说明可以在连接页面上找到。
现在您已经创建了密钥——您需要验证它是否有效。对于这个密钥对,它足以验证来自ledger的签名交易是否被正确解析,以及签名是否在Mina上验证。
执行如下命令:
mina_ledger_wallet test-transaction 42 B62qnzbXmRNo9q32n4SNu2mpB8e7FYYLH8NmaX6oFCBYjjQ8SbD7uzV | mina advanced validate-transaction
用您的公钥代替“B62q…,用您的BIP44账号代替42。警告:请确认您的account_address与account_number相对应!
您需要查看您的总账,检查交易细节,选择“接受”或“拒绝”。
如果您拒绝,将不会生成任何测试交易,并且此命令将退出并显示错误。
如果您接受,将生成一个测试交易,您应该看到以下输出:
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签署交易。为主网签署的交易可以在主网上重播。
输出将是下一节需要的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
}
目前这个步骤需要一个连接到网络的并且运行的守护进程,但是您也可以将这个交易提交到任何第三方网关。
send-rosetta-transactions
命令。mina advanced send-rosetta-transactions
mina_ledger_wallet
的输出,然后按Ctrl-D提交交易。这将在网络上发送签名的交易。如果成功发送了交易,您应该会看到以下输出:
Dispatched command with TRANSACTION_ID 4Rs6xMHVyo1J1TTQDCzynYvWPdBr9
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!