Erstellen Sie Ihre eigene Ergo-Wallet: Verwaltung von Ergo-Coins mit ErgoTool

This page is machine-translated.
Alexander Slesarenko

31. Dezember 2019

Einführung

ErgoTool ist eine Befehlszeilenschnittstelle (CLI) für
Ergo-Blockchain. Sie können ErgoTool verwenden, ohne Ihren
eigenen Ergo-Knoten auszuführen. Obwohl das Ausführen eines Knotens der sicherste Weg ist, um mit dem
Ergo-Blockchain-Netzwerk zu kommunizieren, zielt ErgoTool jedoch darauf ab, Ihnen mehr grundlegende Werkzeuge
zur Verfügung zu stellen. Sicherlich können Sie es auch mit Ihrem eigenen laufenden Knoten verwenden.

In diesem Beitrag werden wir einfache Schritte durchgehen, um eine mnemonische Phrase zu generieren, einen
lokalen geheimen Speicher zu erstellen und ihn zu verwenden, um ERGs zwischen Adressen zu senden, alles mit
der Hilfe von ErgoTool-Befehlen.

Erste Schritte

Zunächst müssen wir ErgoTool auf unserem System aus den Quellen installieren, indem wir den
Installationsanweisungen folgen. Im
directory, in dem wir ErgoTool geklont haben, gibt es das Skript ergo-tool.sh, das wir verwenden werden,
um Befehle auszuführen. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob ErgoTool korrekt installiert ist.

$ ./ergo-tool.sh help     
Befehlsname ist nicht angegeben (führen Sie ergo-tool ohne Argumente aus, um Befehle aufzulisten)

Befehlsname:	help
Verwendungssyntax:	ergo-tool help <commandName>
Beschreibung:	zeigt die Verwendungshilfe für einen Befehl an
Dokumentseite:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/HelpCmd.html

Sehen wir uns an, was wir hier erhalten. ErgoTool gibt die Fehlermeldung mit Informationen über den
help-Befehl aus. Dies ist eine typische Ausgabe von ErgoTool, wenn einer der bekannten Befehle
angegeben wird, aber er wird falsch verwendet. Wie wir aus der Nachricht lernen können, erfordert der help
Befehl, dass wir ein zusätzliches <commandName>-Argument angeben. Außerdem hat jeder Befehl
eine API-Dokumentseite mit allen Details zur Befehlsausführung, sodass die URL hier angezeigt wird.

Erstellen Sie eine neue mnemonische Phrase

Eine mnemonische Phrase ist eine zufällige Zeichenfolge, die verwendet wird, um einen Master-Schlüssel
entsprechend der Spezifikation der Hierarchical Deterministic
Wallets
zu generieren.
Zur Bequemlichkeit wird eine zufällige Folge englischer Wörter verwendet, dies ist jedoch nicht erforderlich.
Führen Sie den folgenden Befehl aus, um eine neue mnemonische Phrase zu generieren:

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

Schreiben Sie es auf ein Blatt Papier und bewahren Sie es an einem sicheren und geheimen Ort auf.
Als zusätzliche Sicherheitsmaßnahme können Sie ein beliebiges mnemonisches Passwort erstellen.
In gewissem Sinne kann es wie ein zusätzliches nicht-vokabuläres Wort in der mnemonischen Phrase dienen.
Das mnemonische Passwort ist optional und wird zur zusätzlichen Sicherheit verwendet.
Wenn Sie sich entscheiden, ein mnemonisches Passwort zu verwenden, sollten Sie es ebenfalls aufschreiben und an einem geheimen und
wahrscheinlich anderen Ort als der mnemonischen Phrase aufbewahren.

Wichtig: Sowohl die mnemonische Phrase als auch das mnemonische Passwort sind erforderlich, um geheime Schlüssel wiederherzustellen.
Wenn Sie eines von beiden verlieren, können Sie Ihren Master-Schlüssel nicht erneut regenerieren.

Als Nächstes verwenden wir die generierte mnemonische Phrase, um einen Speicher mit einem Master-Geheimschlüssel zu erstellen.

Erstellen Sie einen neuen verschlüsselten Speicher

Zur besseren Sicherheit sind weder die mnemonische Phrase noch das Passwort erforderlich, um mit ErgoTool
Transaktionen zu signieren. Stattdessen ist der geheime Schlüssel aus dem verschlüsselten Speicher
erforderlich, um die Ausgaben zu signieren. Wir können einen geheimen Schlüssel generieren und ihn in einem
verschlüsselten Speicher mit dem Befehl createStorage speichern.

$ ./ergo-tool.sh help createStorage

Befehlsname:	createStorage
Verwendungssyntax:	ergo-tool createStorage [<storageDir>="storage"] [<storageFileName>="secret.json"]
Beschreibung:	Erstellt eine verschlüsselte Speicherdatei für die vom Benutzer eingegebene mnemonische Phrase
Dokumentseite:       https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/CreateStorageCmd.html

$ ./ergo-tool.sh createStorage 
Geben Sie die mnemonische Phrase ein> bird harbor wheat innocent business disease busy quick yellow trust time oil enter situate moon
Mnemonisches Passwort> 
Wiederholen Sie das mnemonische Passwort> 
Speicherpasswort> 
Wiederholen Sie das Speicherpasswort> 
Speicherdatei: storage/secret.json

Ein Master-Geheimschlüssel wird aus dem Paar (mnemonische Phrase, mnemonisches Passwort) generiert und
verschlüsselt in der Datei storage/secret.json gespeichert. Die mnemonische Phrase selbst wird nicht in der
Datei gespeichert und es gibt keine Möglichkeit, sie aus der Datei wiederherzustellen, selbst wenn Sie die Passwörter kennen.

Bitte achten Sie darauf, das korrekte mnemonische Passwort einzugeben, das Sie zuvor gewählt und gespeichert haben.
Da ein mnemonisches Passwort optional ist, können Sie es leer lassen, indem Sie die Eingabetaste drücken.

Wenn Sie das Speicherpasswort (auch bekannt als Verschlüsselungs-Passwort) vergessen, können Sie diese Speicherdatei nicht mehr verwenden,
Sie können jedoch immer Ihre geheimen Schlüssel aus dem Paar (mnemonische Phrase, mnemonisches Passwort) wiederherstellen und somit eine neue Speicherdatei mit einem neuen Passwort erstellen.

Bewahren Sie Ihre Speicherdatei und Ihr Speicherpasswort geheim, denn jeder, der sowohl Ihre Speicherdatei als auch Ihr Speicherpasswort erhält, kann sie entschlüsseln und auf die geheimen Schlüssel zugreifen.

Daten aus dem Speicher extrahieren

Der geheime Speicher enthält den Master-Geheimschlüssel und kann daher verwendet werden, um sowohl den
öffentlichen Schlüssel als auch die Pay-to-Public-Key-Adresse zu berechnen, die zu diesem geheimen Schlüssel gehören. Der
Befehl extractStorage macht genau das.

$ ./ergo-tool.sh help extractStorage

Befehlsname:	extractStorage
Verwendungssyntax:	ergo-tool extractStorage <storage file> address|masterKey|publicKey|secretKey mainnet|testnet
Beschreibung:	Liest die Datei, entsperrt sie mit dem Passwort und extrahiert die angeforderte Eigenschaft aus der angegebenen Speicherdatei.
Dokumentseite:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/ExtractStorageCmd.html 

$ ./ergo-tool.sh extractStorage storage/secret.json address mainnet     
Speicherpasswort> 
9iHiSAg3ko2ZGxR2vhc1Aem3tShqfzEPDAF7XK5cdtbZ3Ut2CCf

Hier transformiert der Befehl den geheimen Schlüssel in den entsprechenden öffentlichen Schlüssel und erstellt dann
die Pay-to-Public-Key-Adresse im Mainnet.

Auf die gleiche Weise können wir den öffentlichen Schlüssel, den privaten Schlüssel und andere Daten aus dem Speicher abrufen.

$ ./ergo-tool.sh extractStorage storage/secret.json secretKey mainnet
Speicherpasswort> 
55dfde63c9b6b4f47683592e85ee997ba2e93507f38ba3f9c82933bcfbc677ca

$ ./ergo-tool.sh extractStorage storage/secret.json publicKey mainnet
Speicherpasswort> 
03f07aecb145a85920bf6e9be80efe5f1cd1a165b45ad3aa8e5c4ca3ba50856bb8

Auflisten ungenutzter Boxen

ErgoTool hat den speziellen Befehl, um alle verfügbaren (d.h. ungenutzten) Boxen für eine gegebene Adresse aufzulisten.

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

Wenn wir die Option --print-json angeben, gibt ErgoTool alle Boxen im JSON-Format aus.

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

Coins übertragen

Jetzt, da der geheime Schlüssel sicher in der verschlüsselten Speicherdatei gespeichert ist, können wir ErgoTool verwenden, um
Coins von unserer Adresse an eine andere Empfängeradresse zu übertragen. Der Befehl dafür ist
send.

./ergo-tool.sh help send                                     

Befehlsname:	send
Verwendungssyntax:	ergo-tool send <storageFile> <recipientAddr> <amountToSend>
Beschreibung:	senden Sie den angegebenen <amountToSend> an die angegebene <recipientAddr> unter Verwendung der
given <storageFile> zur Signierung der Transaktion (fordert das Speicherpasswort an)
Dokumentseite:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/SendCmd.html

Die Speicherdatei ist notwendig, um auf den geheimen Schlüssel zuzugreifen und eine Signatur zu generieren. Das
Speicherpasswort wird von ErgoTool angefordert, um den Inhalt der Datei zu entsperren und zu entschlüsseln.
Der Befehl send unterstützt die Option --dry-run, die ErgoTool zwingt, die
signierte Transaktion zu erstellen, aber anstatt sie an die Blockchain zu senden, gibt ErgoTool die
Transaktion auf der Konsole aus.

$ ./ergo-tool.sh send --dry-run storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000
Speicherpasswort>
Erstellen des Beweises... Ok
Laden ungenutzter Boxen von der Adresse 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v... Ok
Signieren der Transaktion... Ok
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
    }
  ]
}

Beachten Sie, dass die "ergoTree"-Skripte deserialisiert und als abstrakte Syntaxbäume ausgegeben werden. Dieses
Ausgabeformat kann durch zusätzliche Optionen geregelt werden, sodass die Skripte als menschenlesbares ErgoScript ausgegeben werden können. (Noch nicht implementiert, aber irgendwo auf der Roadmap.)

Wenn wir die Option --dry-run ausschließen, wird die Transaktion gesendet und in die
Blockchain aufgenommen.

$ ./ergo-tool.sh send storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000          
Speicherpasswort>
Erstellen des Beweises... Ok
Laden ungenutzter Boxen von der Adresse 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v... Ok
Signieren der Transaktion... Ok
Senden der Transaktion... Ok
Server gab tx id zurück: "c5710af17f5124a232a5ef731fdf94a493025334c2a7d5a79e9923210972b962"

Die neu erstellte Transaktion wird über die gesamte Blockchain gesendet und die Miner beginnen,
sie in einen neuen Block aufzunehmen. Sobald der neue Block mit unserer Transaktion abgebaut und
vom Netzwerk akzeptiert wird, ist unsere Übertragung bestätigt und wir können es im Explorer sehen.

Wir können auch die Boxen der Empfängeradresse auflisten und die von uns erstellte Münze unter anderen sehen
(bis sie vom Empfänger ausgegeben wird).

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

Sicherheitsnotizen

ErgoTool wurde mit Sicherheit im Hinterkopf erstellt und versucht sein Bestes, um die Verwendung von
sensiblen Informationen wie mnemonischen Phrasen (die niemals dauerhaft gespeichert werden),
Passwörtern (die niemals auf dem Bildschirm angezeigt werden) usw. zu schützen. Darüber hinaus werden geheime Schlüssel niemals
unverschlüsselt auf der lokalen Festplatte gespeichert und sicherlich niemals irgendwohin gesendet.

Fazit

ErgoTool ist so konzipiert, dass es wie ein typisches CLI-Dienstprogramm aussieht und sich anfühlt:

  • das einfach zu bedienen und schnell von der Befehlszeile auszuführen ist
  • über Shell-Skripte skriptfähig ist
  • eine integrierte Verwendungshilfe hat

Gleichzeitig ist ErgoTool so konzipiert, dass es leicht erweiterbar ist:

  • in der Hochsprache Scala implementiert
  • wiederverwendet die Kernbibliotheken, die im Ergo-Netzwerk-Client verwendet werden
  • quelloffen und vollständig dokumentiert

Dieser letzte Punkt ist besonders wichtig, da viele neue Befehle dank seiner Architektur leicht zu ErgoTool hinzugefügt werden können. Wenn Sie eine bestimmte Funktion oder einen Befehl benötigen,
bitte erstellen Sie ein Issue oder vielleicht sogar einen PR.

Die Erweiterbarkeit von ErgoTool ist das Thema des nächsten geplanten Blogbeitrags, bleiben Sie dran!

Referenzen

  1. Ergo-Website
  2. Ergo-Quellen
  3. Ergo-Appkit
  4. Ergo-Tool

Share post

Ergo Infrastructure DAO: Dezentralisierung des Rückgrats des Ergo-Ökosystems

Ergo Infrastructure DAO: Dezentralisierung des Rückgrats des Ergo-Ökosystems

Die Mission von Ergo war schon immer in der Dezentralisierung verwurzelt, nicht nur auf der Konsensschicht, sondern über den gesam.

Ergo Platform

13. August 2025

Mew Finance: Ein verspieltes DeFi-Toolkit für das Ergo-Ökosystem

Mew Finance: Ein verspieltes DeFi-Toolkit für das Ergo-Ökosystem

Mew Finance ist eine dezentrale Anwendungs-Suite auf der Ergo-Blockchain.

Ergo Platform

12. August 2025

Lithos: Dezentralisierung des Minings mit On-Chain-Pools

Lithos: Dezentralisierung des Minings mit On-Chain-Pools

Lithos ist ein neues Protokoll, das darauf abzielt, die Funktionsweise von Mining-Pools zu revolutionieren, indem es sie on-chain .

Ergo Platform

24. Juli 2025

Sigma 6.0: Ein intelligenteres, flexibleres Ergo

Sigma 6.0: Ein intelligenteres, flexibleres Ergo

Sigma 6.0 ist ein bedeutendes vorgeschlagenes Upgrade für die Ergo-Blockchain.

Ergo Platform

23. Juli 2025

Die Zukunft von Rosen gestalten: Ein Gemeinschaftsaufruf zu fünf wichtigen Treasury-Vorschlägen

Die Zukunft von Rosen gestalten: Ein Gemeinschaftsaufruf zu fünf wichtigen Treasury-Vorschlägen

Der Mitbegründer von Rosen, Armeanio, hat fünf neue Vorschläge an die Rosen Treasury eingereicht.

Ergo Platform

9. Juli 2025

Ergos erweitertes UTXO und der Aufstieg der künstlichen wirtschaftlichen Intelligenz

Ergos erweitertes UTXO und der Aufstieg der künstlichen wirtschaftlichen Intelligenz

Eine praktische Vision für autonome wirtschaftliche Agenten Autonome wirtschaftliche Agenten auf der Ergo-Blockchain leisten nütz.

Ergo Platform

12. Mai 2025

ErgoHACK X: Künstliche Intelligenz auf der Ergo-Blockchain

ErgoHACK X: Künstliche Intelligenz auf der Ergo-Blockchain

Feier eines Jahrzehnts dezentraler Innovation Feiern Sie das 10-jährige Jubiläum von ErgoHACK und seien Sie an der Spitze der KI-R.

Ergo Platform

10. April 2025

Ergohack 9: Innovationen in UI/UX und Mining – Lernen Sie die visionären Gewinner kennen!

Ergohack 9: Innovationen in UI/UX und Mining – Lernen Sie die visionären Gewinner kennen!

Der letzte jährliche Ergo-Hackathon, ErgoHack IX, war eine sechstägige Veranstaltung, die Ende Oktober stattfand.

Ergo Platform

9. Dezember 2024

ErgoHack IX: Nächste Schritte zur erhöhten Akzeptanz

ErgoHack IX: Nächste Schritte zur erhöhten Akzeptanz

Wir haben einen langen Weg seit den frühen Tagen von Bitcoin zurückgelegt, und Kryptowährungen haben sich zu einer Branche mit Tau.

Ergo Platform

20. Oktober 2024

Ergo Vs Andere Blockchain-Plattformen: Was ist der Unterschied?

Ergo Vs Andere Blockchain-Plattformen: Was ist der Unterschied?

Ergo bietet eine Reihe einzigartiger Funktionen, die es von anderen Blockchain-Plattformen abheben.

Ergo Platform

19. August 2024

Verdienen Mit Der Rosen Brücke

Verdienen Mit Der Rosen Brücke

Bitcoin hat offiziell die Ergo-Ökosystem über die Rosen Brücke verbunden! Diese neu gebaute, dezentrale Infrastruktur ermöglicht v.

Ergo Platform

8. August 2024

Verdienen Mit Der Rosen Brücke

Verdienen Mit Der Rosen Brücke

Bitcoin hat offiziell die Ergo-Ökosystem über die Rosen Brücke verbunden! Diese neu gebaute, dezentrale Infrastruktur ermöglicht v.

Ergo Platform

8. August 2024

Wie Sigma Chains Bitcoin zu Ergo bringen werden

Wie Sigma Chains Bitcoin zu Ergo bringen werden

Ergos leistungsstarke, flexible und sichere Smart-Contract-Funktionalität öffnet die Tür zu einer ganzen Reihe neuer Anwendungsfäl.

Ergo Platform

15. Juli 2024

Wie Sigma Chains Bitcoin zu Ergo bringen werden

Wie Sigma Chains Bitcoin zu Ergo bringen werden

Die leistungsstarke, flexible und sichere Smart-Contract-Funktionalität von Ergo öffnet die Tür zu einer ganzen Reihe neuer Anwend.

Ergo Platform

15. Juli 2024