创建自己的Ergo钱包:使用ErgoTool管理Ergo币

This page is machine-translated.
Alexander Slesarenko

2019年12月31日

介绍

ErgoTool 是一个命令行界面 (CLI) 用于
Ergo区块链。您可以在不运行自己的Ergo节点的情况下使用ErgoTool。尽管运行节点是与Ergo区块链网络通信的最安全方式,但ErgoTool旨在提供更多基础工具供您使用。当然,您仍然可以与自己运行的节点一起使用它。

在这篇文章中,我们将通过简单的步骤生成助记词,创建本地秘密存储,并使用它在地址之间发送ERGs,所有这些都借助于ErgoTool命令。

开始使用

首先,我们需要按照安装说明 从源代码在系统上安装ErgoTool。在我们克隆ErgoTool的目录中,有一个ergo-tool.sh脚本,我们将使用它来运行命令。运行以下命令以检查ErgoTool是否正确安装。

$ ./ergo-tool.sh help     
命令名称未指定(运行不带参数的ergo-tool以列出命令)

命令名称:	help
用法语法:	ergo-tool help <commandName>
描述:	打印命令的使用帮助
文档页面:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/HelpCmd.html

让我们看看我们在这里得到了什么。ErgoTool输出了错误消息,包含有关help命令的信息。这是ErgoTool在指定已知命令但使用不当时的典型输出。从消息中我们可以了解到,help命令要求我们指定额外的<commandName>参数。此外,每个命令都有一个API文档页面,包含有关命令执行的所有详细信息,因此其URL在此处显示。

创建新的助记词

助记词是一串随机字符,用于根据分层确定性钱包规范生成主密钥。为了方便,使用随机的英语单词序列,但这并不是必需的。运行以下命令以生成新的助记词:

$ ./ergo-tool.sh mnemonic          
bird harbor wheat innocent business disease busy quick yellow trust time oil enter situate moon

将其写在纸上并保存在安全和秘密的地方。
作为额外的安全措施,您可以创建一个任意的助记密码。
在某种意义上,它可以作为助记词中的额外非词汇单词。
助记密码是可选的,用于额外的安全性。
如果您决定使用助记密码,您还应该将其写下并保存在一个秘密的地方,可能与助记词不同。

重要的是,恢复秘密密钥需要助记词和助记密码,如果您丢失其中任何一个,您将无法再次生成主密钥。

接下来,让我们使用生成的助记词创建一个带有主秘密密钥的存储。

创建新的加密存储

为了更好的安全性,ErgoTool在执行交易签名时不要求助记词或密码。相反,签署支出交易需要来自加密存储的秘密密钥。我们可以使用createStorage命令生成一个秘密密钥并将其存储在加密存储中。

$ ./ergo-tool.sh help createStorage

命令名称:	createStorage
用法语法:	ergo-tool createStorage [<storageDir>="storage"] [<storageFileName>="secret.json"]
描述:	为用户输入的助记词创建一个加密存储文件
文档页面:       https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/CreateStorageCmd.html

$ ./ergo-tool.sh createStorage 
输入助记词> bird harbor wheat innocent business disease busy quick yellow trust time oil enter situate moon
助记密码> 
重复助记密码> 
存储密码> 
重复存储密码> 
存储文件:storage/secret.json

从(助记词,助记密码)对生成主秘密密钥,并加密保存在storage/secret.json文件中。助记词本身不存储在文件中,即使您知道密码,也无法从文件中恢复它。

请注意输入正确的助记密码,即您之前选择并保存的那个。
由于助记密码是可选的,您可以通过按回车键将其留空。

如果您忘记存储密码(即加密密码),您将无法再使用该存储文件,但是,您可以始终从(助记词,助记密码)对恢复您的秘密密钥,从而创建一个带有新密码的新存储文件。

将您的存储文件和存储密码保密,任何获得您存储文件和存储密码的人都将能够解密它并访问秘密密钥。

从存储中提取数据

秘密存储包含主秘密密钥,因此可以用于计算与该秘密密钥对应的公钥和支付到公钥地址。extractStorage命令正是这样做的。

$ ./ergo-tool.sh help extractStorage

命令名称:	extractStorage
用法语法:	ergo-tool extractStorage <storage file> address|masterKey|publicKey|secretKey mainnet|testnet
描述:	读取文件,使用密码解锁并从给定存储文件中提取请求的属性。
文档页面:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/ExtractStorageCmd.html 

$ ./ergo-tool.sh extractStorage storage/secret.json address mainnet     
存储密码> 
9iHiSAg3ko2ZGxR2vhc1Aem3tShqfzEPDAF7XK5cdtbZ3Ut2CCf

在这里,命令将秘密密钥转换为相应的公钥,然后在主网创建支付到公钥地址。

同样,我们可以从存储中获取公钥、私钥和其他数据。

$ ./ergo-tool.sh extractStorage storage/secret.json secretKey mainnet
存储密码> 
55dfde63c9b6b4f47683592e85ee997ba2e93507f38ba3f9c82933bcfbc677ca

$ ./ergo-tool.sh extractStorage storage/secret.json publicKey mainnet
存储密码> 
03f07aecb145a85920bf6e9be80efe5f1cd1a165b45ad3aa8e5c4ca3ba50856bb8

列出未花费的盒子

ErgoTool有一个特殊命令,用于列出给定地址的所有可用(即未花费)盒子。

$ ./ergo-tool.sh listAddressBoxes 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v                                                                
BoxId                                                             NanoERGs          
4840cb6facc20b765085db0ad24768ed0c5e7afd413e8e58e597c33a993f8119  4987000000

如果我们指定--print-json选项,则ErgoTool将以json格式输出所有盒子。

$ ./ergo-tool.sh listAddressBoxes --print-json 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v
[{"boxId":"4840cb6facc20b765085db0ad24768ed0c5e7afd413e8e58e597c33a993f8119","value":4987000000,"ergoTree":"0008cd02472963123ce32c057907c7a7268bc09f45d9ca57819d3327b9e7497d7b1cc347","creationHeight":125646,"assets":[],"additionalRegisters":{},"transactionId":"820c688f4b9d709924ba0186ee930a7df374d8852920bc769fc1f1d0b313e5ab","index":2}]

转移币

现在,秘密密钥安全地存储在加密存储文件中,我们可以使用ErgoTool将币从我们的地址转移到其他接收地址。执行此操作的命令是send

./ergo-tool.sh help send                                     

命令名称:	send
用法语法:	ergo-tool send <storageFile> <recipientAddr> <amountToSend>
描述:	使用给定的<storageFile>签署交易,将给定的<amountToSend>发送到给定的<recipientAddr>(请求存储密码)
文档页面:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/SendCmd.html

存储文件是访问秘密密钥和生成签名所必需的。ErgoTool将请求存储密码以解锁和解密文件内容。命令send支持--dry-run选项,该选项强制ErgoTool创建签名交易,但不将其发送到区块链,而是将交易打印在控制台上。

$ ./ergo-tool.sh send --dry-run storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000
存储密码>
创建证明者... 好
从地址9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v加载未花费的盒子... 好
签署交易... 好
Tx: {
  "id": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
  "inputs": [
    {
      "boxId": "4840cb6facc20b765085db0ad24768ed0c5e7afd413e8e58e597c33a993f8119",
      "spendingProof": {
        "proofBytes": "060e7c99c9c9cecf89ec5c3e7b692075e0b3415318f8064c64f7f01401ac29c6637b44535151e51d43d4cd25e05ad459dbe33718a99a22dd",
        "extension": {}
      }
    }
  ],
  "dataInputs": [],
  "outputs": [
    {
      "boxId": "4eaed414ae763158126859bbf912fa9ffb9ea67ac13d81d473b1c81ec65b06fd",
      "value": 5000000,
      "ergoTree": "ErgoTree(0,WrappedArray(),Right(ConstantNode(SigmaProp(ProveDlog(ECPoint(6ba5cf,8ae5ac,...))),SSigmaProp)),80,[B@1117fff48)",
      "creationHeight": 130508,
      "assets": [],
      "additionalRegisters": {},
      "transactionId": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
      "index": 0
    },
    {
      "boxId": "059b426fe2aaef10b6a9a618f0c5b4e97d4dd9931328bf4f52bcf92b0943a42c",
      "value": 1000000,
      "ergoTree": "ErgoTree(16,WrappedArray(IntConstant(0), IntConstant(0), ConstantNode(Coll(16,2,4,-96,11,8,-51,2,121,-66,102,126,-7,-36,-69,-84,85,-96,98,-107,-50,-121,11,7,2,-101,-4,-37,45,-50,40,-39,89,-14,-127,91,22,-8,23,-104,-22,2,-47,-110,-93,-102,-116,-57,-89,1,115,0,115,1),Coll[SByte$]), ConstantNode(Coll(1),Coll[SInt$]), IntConstant(1)),Right(BoolToSigmaProp(AND(ConcreteCollection(WrappedArray(EQ(Height$(163),SelectField(ExtractCreationInfo(ByIndex(Outputs$(165),ConstantPlaceholder(0,SInt$),None)),1)), EQ(ExtractScriptBytes(ByIndex(Outputs$(165),ConstantPlaceholder(1,SInt$),None)),SubstConstants(ConstantPlaceholder(2,Coll[SByte$]),ConstantPlaceholder(3,Coll[SInt$]),ConcreteCollection(WrappedArray(CreateProveDlog(DecodePoint(MinerPubkey$(172)))),SSigmaProp))), EQ(SizeOf(Outputs$(165)),ConstantPlaceholder(4,SInt$))),SBoolean)))),4836,[B@111805c40)",
      "creationHeight": 130508,
      "assets": [],
      "additionalRegisters": {},
      "transactionId": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
      "index": 1
    },
    {
      "boxId": "0638ddb0fe6a8cc6ca4f981f71777f4a6e8aad72d57fdf945b24e0ef4ca714e1",
      "value": 4981000000,
      "ergoTree": "ErgoTree(0,WrappedArray(),Right(ConstantNode(SigmaProp(ProveDlog(ECPoint(472963,7c85fd,...))),SSigmaProp)),80,[B@111816258)",
      "creationHeight": 130508,
      "assets": [],
      "additionalRegisters": {},
      "transactionId": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
      "index": 2
    }
  ]
}

请注意,"ergoTree"脚本被反序列化并打印为抽象语法树。此打印格式可以通过附加选项进行调节,以便脚本可以以人类可读的ErgoScript形式打印。(尚未实现,但在路线图上。)

如果我们排除--dry-run选项,交易将被发送并包含在区块链中。

$ ./ergo-tool.sh send storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000          
存储密码>
创建证明者... 好
从地址9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v加载未花费的盒子... 好
签署交易... 好
发送交易... 好
服务器返回交易ID: "c5710af17f5124a232a5ef731fdf94a493025334c2a7d5a79e9923210972b962"

新创建的交易将被广播到整个区块链,矿工开始将其包含在新块中。一旦包含我们交易的新块被挖掘并被网络接受,我们的转账就会被确认,我们可以在Explorer中查看

我们还可以列出接收地址的盒子,并在其他盒子中看到我们创建的币(直到它被接收者花费)

$ ./ergo-tool.sh listAddressBoxes 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K                      
BoxId                                                             NanoERGs          
252c5ce38fc367001ea48fa6813e6252ebc169288d9b5392c572edb55380b3cd  5000000
6df9dbf08b4859b7e280afbd0822dcf20dba5bf8e3e33b78fe278df6597276f1  2000000
d47f958b201dc7162f641f7eb055e9fa7a9cb65cc24d4447a10f86675fc58328  1000000
e050a3af38241ce444c34eb25c0ab880674fc23a0e63632633ae14f547141c37  1000000
b50ed8c2953fd33b52af816c4caa63ec5b6d236a262a5a192534695c3478da78  1000000
26d6e08027e005270b38e5c5f4a73ffdb6d65a3289efb51ac37f98ad395d887c  10000000000

安全注意事项

ErgoTool的创建考虑了安全性,并尽力保护敏感信息的使用,如助记词(从不持久存储)、密码(从不在屏幕上显示)等。此外,秘密密钥从不以未加密的形式存储在本地磁盘上,当然也从不发送到任何地方。

结论

ErgoTool旨在看起来和感觉像一个典型的CLI实用程序:

  • 易于使用,快速从命令行运行
  • 可以通过shell脚本进行脚本化
  • 具有内置的使用帮助

同时,ErgoTool设计为易于扩展:

  • 用高级语言Scala实现
  • 重用在Ergo网络客户端中使用的核心库
  • 开源并且完全文档化

最后一点尤其重要,因为许多新命令可以轻松添加到ErgoTool,得益于其架构。如果您需要特定的功能或命令,请提交问题或甚至PR。

ErgoTool的可扩展性是下一个计划的博客文章的主题,敬请关注!

参考文献

  1. Ergo网站
  2. Ergo源代码
  3. Ergo Appkit
  4. Ergo工具

Share post

Ergo基础设施DAO:去中心化Ergo生态系统的支柱

Ergo基础设施DAO:去中心化Ergo生态系统的支柱

Ergo的使命一直根植于去中心化,不仅在共识层面,而是在整个技术栈中。随着Ergo基础设施DAO (InfraDAO)的推出,这一愿景正在扩展到每天为生态系统提供动力的服务和基础设施。 InfraDAO现在在Paideia上正式上线,经过成功的治理投票。最初.

Ergo Platform

2025年8月13日

Mew Finance:一个为Ergo生态系统提供的有趣DeFi工具包

Mew Finance:一个为Ergo生态系统提供的有趣DeFi工具包

Mew Finance是一个基于Ergo区块链的去中心化应用套件。该项目于2024年10月启动,将DeFi、数字资产和跨链功能整合到一个统一的平台中。长期社区开发者HQΣr和Aco Šmrkas领导该项目。设计上偏向模块化、易用性和深度生态系统集成。 本文是.

Ergo Platform

2025年8月12日

Lithos:通过链上矿池实现去中心化挖矿

Lithos:通过链上矿池实现去中心化挖矿

Lithos是一个新协议,旨在通过将矿池转移到链上来彻底改革矿池的运作方式,使矿工完全控制,并消除对中心化矿池运营商的需求。与之前大多数去中心化挖矿的尝试不同,Lithos旨在高效、可扩展和安全。 什么是Lithos? Lithos是一个去中心化的矿池协议.

Ergo Platform

2025年7月24日

Sigma 6.0:更智能、更灵活的Ergo

Sigma 6.0:更智能、更灵活的Ergo

Sigma 6.

Ergo Platform

2025年7月23日

塑造Rosen的未来:关于五项关键财政提案的社区呼吁

塑造Rosen的未来:关于五项关键财政提案的社区呼吁

Rosen的联合创始人Armeanio已向Rosen财政提交了五项新提案。这些提案概述了Rosen Bridge的增长、实用性和可扩展性的战略愿景,这是Ergo互操作性基础设施的核心组成部分。 这是Ergo社区审查和讨论这一重要跨链服务未来方向的关键时刻。以.

Ergo Platform

2025年7月9日

Ergo的扩展UTXO与人工经济智能的崛起

Ergo的扩展UTXO与人工经济智能的崛起

自主经济代理的实用愿景 Ergo区块链上的自主经济代理在真实的数字经济中执行有用的工作。它们通过创建内容和提供数据分析、模式识别等服务来产生收入。它们利用收入支付运营费用,如托管费和服务器成本,并使用现代工具,如SSH和加密友好的托管服务提供商。当有额外资金.

Ergo Platform

2025年5月12日

ErgoHACK X:在Ergo区块链上的人工智能

ErgoHACK X:在Ergo区块链上的人工智能

庆祝去中心化创新的十年 加入第十届ErgoHACK,站在Ergo区块链AI革命的最前沿!释放你的创造力,与其他创新者合作,共同构建去中心化AI的未来。 关于ErgoHack ErgoHACK,旗舰社区黑客马拉松,庆祝其十周年!这一里程碑事件是Ergo生态系统.

Ergo Platform

2025年4月10日

ERG正式上线Kucoin(库币)交易所

ERG正式上线Kucoin(库币)交易所

据Kucoin官方通告,Ergo平台原生代币ERG于8月3日正式上线Kucoin(库币)交易所。目前支持的交易对是ERG/USDT。现已开放充值;2021年8月5日UTC时间上午10:00开放交易;2021年8月6日UTC时间上午10:00开放提币。 .

Ergo Foundation

2021年8月3日

Ergo两周年纪念——早期采用者应了解的核心知识

Ergo两周年纪念——早期采用者应了解的核心知识

Normal 0 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.

root7Z

2021年7月5日

关于Ergo启用官方QQ频道的公告

关于Ergo启用官方QQ频道的公告

由于Ergo官方微信号暂无法使用,Ergo官方现新增Ergo官方QQ频道:796039547。全球中文用户可通过扫描下面的二维码加入Ergo中文社区,及时了解Ergo最新官方动态. .

Eva Qing

2021年6月30日

Ergo首届黑客松大赛ERGOHACK圆满结束

Ergo首届黑客松大赛ERGOHACK圆满结束

Ergo首届黑客松大赛已经圆满结束,它正如计划那样:规模小而富有实验性,但依然收到了一些很棒的作品提交。Kushti以他的开场视频拉开了活动的序幕,然后我们总共有六个团队,其中来自anon_real(AuctionHouse、SigmaUSD UI等项目的创建.

Curia Regis Crypto

2021年6月29日

关于举办首届Ergo中国社区驱动践行活动的公告

关于举办首届Ergo中国社区驱动践行活动的公告

为了进一步提高Ergo公链平台在中国的知名度,让更多用户深入了解Ergo,同时为了践行Ergo社区驱动的理念,Ergo中国社区现特别举办“首届Ergo中国社区驱动践行活动”。活动参与者积极向新用户布道Ergo并将其引至Ergo官方指定社群,将有机会赢取ERG奖.

Eva Qing

2021年6月4日

比特币的前进之路是努力追赶Ergo ——Ergo率先实现扩展UTXO智能合约

比特币的前进之路是努力追赶Ergo ——Ergo率先实现扩展UTXO智能合约

比特币 比特币是一头野兽。是的,其底层软件需要认真升级。它真的太慢了。但是,您也必须承认它的优势,网络效应是非常强大的------比特币是加密货币之王。在全球范围内,比特币正成为一个常见、被理解和被采用的术语。大型信托、投资巨头和对冲基金经理,都被比特币的主.

Curia Regis Crypto

2021年5月23日

关于Ergo基金会任命谭声情先生担任中国区大使的公告

关于Ergo基金会任命谭声情先生担任中国区大使的公告

经Ergo基金会批准,现任命谭声情先生(英文名:Tango)担任Ergo中国区大使。 为了提升Ergo在中国的知名度与影响力,Ergo基金会现授权谭声情先生以Ergo中国区大使身份进行Ergo在中国的品牌宣传、商务洽谈、社区活动、主题推广等事宜。 此任命自.

Ergo Team

2021年5月16日

硬分叉事后说明

硬分叉事后说明

英文链接: 应@kushti的请求,我现在给大家说明一下今天在硬分叉升级期间发生的事情。有一些BUG导致矿工无法出块,现已修补好这些BUG,矿工可以出块。 version2ActivationDifficultyHex中出现往返编码失败(Round-T.

Eva Qing

2021年2月3日

硬分叉升级后Ergo挖矿须知

硬分叉升级后Ergo挖矿须知

Ergo将在区块#417,792上进行硬分叉协议升级。此次升级会引入重大更改,包括将关闭不可外包功能(Non-Outsourceability)。经过此次硬分叉之后,新的PoW(被称为Autolykos v2.

Eva Qing

2021年2月1日

如何设置和配置Ergo全节点

如何设置和配置Ergo全节点

如何设置和配置Ergo全节点 本教程说明了如何安装和运行Ergo全节点,不涵盖挖矿。  Windows用户还可以观看视频教程。 如何在Windows上设置和配置Ergo全节点 视频链接: 节点安全 这里是节点使用的一些重要方面,您的钱包及代币是否安全.

Eva Qing

2021年1月21日

既想享受乐趣,又想赚取利润? ——那就赶紧来挖ERG

既想享受乐趣,又想赚取利润? ——那就赶紧来挖ERG

Ergo GPU挖矿 本文将帮助您开始使用GPU挖矿Ergo原生代币ERG。 Ergo挖矿基于Autolykos,即一种工作量证明(PoW)算法,被设计为阻碍ASIC矿机和矿池。矿工须执行存储困难的计算(需要至少4 GB的内存,但是当前最有效的实现使用的是.

Eva Qing

2021年1月21日

适用于AMD GPU的Autolykos v2(Ergo)的OpenCL挖矿软件

适用于AMD GPU的Autolykos v2(Ergo)的OpenCL挖矿软件

适用于ergoplatform.

Eva Qing

2021年1月19日

适用于Nvidia GPU的Autolykos v2(Ergo)用Cuda挖矿软件

适用于Nvidia GPU的Autolykos v2(Ergo)用Cuda挖矿软件

用于ergoplatform.

Eva Qing

2021年1月19日

尔格基金会为主要去中心化应用(dApp)基础设施提供资助

尔格基金会为主要去中心化应用(dApp)基础设施提供资助

尔格基金会将考虑支持重大生态系统开发项目提供资助的建议。 尔格是一个面向社区的项目,该生态系统的方方面面都有许多贡献者。尔格基金会会拿出一部分资金资助此项工作,这对于构建用户所需的日常产品与服务以及更多样化的金融去中心化应用至关重要。该基金会正在积极寻求.

Guy Brandon

2020年11月17日