Kendi Ergo Cüzdanınızı Yapın: ErgoTool ile Ergo Coin'leri Yönetme

This page is machine-translated.
Alexander Slesarenko

31 Aralık 2019

Giriş

ErgoTool, Ergo blockchain için bir komut satırı arayüzüdür (CLI). Kendi Ergo düğümünüzü çalıştırmadan ErgoTool'u kullanabilirsiniz. Bir düğüm çalıştırmak, Ergo blockchain ağı ile iletişim kurmanın en güvenli yoludur, ancak ErgoTool, elinizde daha temel araçlar sağlamayı amaçlamaktadır. Elbette, kendi çalışan düğümünüzle de kullanabilirsiniz.

Bu yazıda, bir mnemonik ifade oluşturmak, yerel bir gizli depolama oluşturmak ve bunu adresler arasında ERG göndermek için ErgoTool komutlarının yardımıyla basit adımları takip edeceğiz.

Başlarken

Öncelikle, kurulum talimatlarını takip ederek sistemimize ErgoTool'u kaynaklardan kurmamız gerekiyor. ErgoTool'u klonladığımız dizinde, komutları çalıştırmak için kullanacağımız ergo-tool.sh betiği bulunmaktadır. ErgoTool'un doğru bir şekilde kurulduğunu kontrol etmek için aşağıdaki komutu çalıştırın.

$ ./ergo-tool.sh help     
komut adı belirtilmemiş (komutları listelemek için argüman olmadan ergo-tool'u çalıştırın)

Komut Adı:	help
Kullanım Söz Dizimi:	ergo-tool help <commandName>
Açıklama:	bir komut için kullanım yardımını yazdırır
Doküman sayfası:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/HelpCmd.html

Burada ne elde ettiğimize bakalım. ErgoTool, help komutu hakkında bilgi veren hata mesajını çıkartıyor. Bu, bilinen komutlardan biri belirtildiğinde ancak yanlış kullanıldığında ErgoTool'un tipik bir çıktısıdır. Mesajdan öğrenebileceğimiz gibi, help komutu, ek bir <commandName> argümanını belirtmemizi gerektiriyor. Ayrıca, her komutun, komut yürütmesi hakkında tüm detayları içeren bir API doküman sayfası vardır, bu nedenle URL burada gösterilmektedir.

Yeni Bir Mnemonik İfade Oluşturun

Mnemonik, Hiyerarşik Belirleyici Cüzdanlar spesifikasyonuna göre bir anahtar oluşturmak için kullanılan rastgele bir karakter dizisidir. Kolaylık olması açısından rastgele bir İngilizce kelime dizisi kullanılır, ancak bu zorunlu değildir. Yeni bir mnemonik ifade oluşturmak için aşağıdaki komutu çalıştırın:

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

Bunu bir kağıda yazın ve güvenli ve gizli bir yerde saklayın. Ek bir güvenlik önlemi olarak, keyfi bir mnemonik şifre oluşturabilirsiniz. Bu, mnemonikte ek bir kelime gibi işlev görebilir. Mnemonik şifre isteğe bağlıdır ve ek güvenlik için kullanılır. Mnemonik şifre kullanmaya karar verirseniz, bunu da yazmalı ve gizli ve muhtemelen mnemonikten farklı bir yerde saklamalısınız.

Önemli, hem mnemonik ifade hem de mnemonik şifre, gizli anahtarları geri yüklemek için gereklidir, eğer bunlardan herhangi birini kaybederseniz, anahtarınızı yeniden üretemezsiniz.

Şimdi, oluşturulan mnemonik ifadeyi kullanarak bir anahtar gizli depolama oluşturalım.

Yeni Bir Şifreli Depolama Oluşturun

Daha iyi güvenlik için, ErgoTool'un işlem imzalamak için ne mnemonik ifade ne de şifre gereklidir. Bunun yerine, harcama işlemini imzalamak için şifreli depolamadan gizli anahtar gereklidir. createStorage komutunu kullanarak bir gizli anahtar oluşturabilir ve bunu şifreli bir depolamada saklayabiliriz.

$ ./ergo-tool.sh help createStorage

Komut Adı:	createStorage
Kullanım Söz Dizimi:	ergo-tool createStorage [<storageDir>="storage"] [<storageFileName>="secret.json"]
Açıklama:	Kullanıcı tarafından girilen mnemonik için şifreli bir depolama dosyası oluşturur
Doküman sayfası:       https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/CreateStorageCmd.html

$ ./ergo-tool.sh createStorage 
Mnemonik ifade girin> bird harbor wheat innocent business disease busy quick yellow trust time oil enter situate moon
Mnemonik şifre> 
Mnemonik şifreyi tekrar edin> 
Depolama şifresi> 
Depolama şifresini tekrar edin> 
Depolama Dosyası: storage/secret.json

Bir anahtar gizli anahtarı (mnemonik ifade, mnemonik şifre) çiftinden oluşturulur ve storage/secret.json dosyasında şifreli olarak saklanır. Mnemonik kendisi dosyada saklanmaz ve dosyadan geri yüklenemez, şifreleri bilseniz bile.

Doğru mnemonik şifresini girdiğinizden emin olun, daha önce seçtiğiniz ve kaydettiğiniz şifre. Mnemonik şifre isteğe bağlı olduğundan, boş bırakmak için enter tuşuna basabilirsiniz.

Eğer depolama şifresini (yani şifreleme şifresi) unutursanız, o depolama dosyasını bir daha kullanamazsınız, ancak her zaman (mnemonik ifade, mnemonik şifre) çiftinden gizli anahtarlarınızı geri yükleyebilir ve böylece yeni bir şifre ile yeni bir depolama dosyası oluşturabilirsiniz.

Depolama dosyanızı ve depolama şifrenizi gizli tutun, depolama dosyanızı ve depolama şifrenizi elde eden herkes, onu çözebilir ve gizli anahtarlara erişebilir.

Depolamadan Veri Çıkartma

Gizli depolama, anahtar gizli anahtarını içerir ve sonuç olarak, bu gizli anahtara karşılık gelen hem genel anahtarı hem de pay-to-public-key adresini hesaplamak için kullanılabilir. extractStorage komutu tam olarak bunu yapar.

$ ./ergo-tool.sh help extractStorage

Komut Adı:	extractStorage
Kullanım Söz Dizimi:	ergo-tool extractStorage <storage file> address|masterKey|publicKey|secretKey mainnet|testnet
Açıklama:	Dosyayı okur, şifre ile açar ve verilen depolama dosyasından istenen özelliği çıkartır.
Doküman sayfası:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/ExtractStorageCmd.html 

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

Burada komut, gizli anahtarı karşılık gelen genel anahtara dönüştürür ve ardından ana ağda pay-to-public-key adresini oluşturur.

Aynı şekilde, depolamadan genel anahtar, özel anahtar ve diğer verileri elde edebiliriz.

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

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

Harcanmamış Kutuları Listeleme

ErgoTool, belirli bir adres için tüm mevcut (yani harcanmamış) kutuları listelemek için özel bir komuta sahiptir.

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

Eğer --print-json seçeneğini belirtirsek, ErgoTool tüm kutuları JSON formatında çıkartacaktır.

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

Coin Transferi

Artık, gizli anahtarımızı şifreli depolama dosyasında güvenli bir şekilde sakladığımıza göre, ErgoTool'u kullanarak coin'leri adresimizden başka bir alıcı adresine transfer edebiliriz. Bunu yapmak için komut send'dir.

./ergo-tool.sh help send                                     

Komut Adı:	send
Kullanım Söz Dizimi:	ergo-tool send <storageFile> <recipientAddr> <amountToSend>
Açıklama:	verilen <amountToSend> miktarını verilen <recipientAddr> adresine gönderir 
 verilen <storageFile> kullanarak işlemi imzalar (depolama şifresi ister)
Doküman sayfası:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/SendCmd.html

Depolama dosyası, gizli anahtara erişmek ve bir imza oluşturmak için gereklidir. Depolama şifresi, ErgoTool tarafından dosya içeriğini açmak ve çözmek için istenecektir. send komutu, ErgoTool'un imzalı işlemi oluşturmasını zorlayan --dry-run seçeneğini destekler, ancak bunu blockchain'e göndermek yerine, ErgoTool işlemi konsolda yazdırır.

$ ./ergo-tool.sh send --dry-run storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000
Depolama şifresi>
Prover oluşturuluyor... Tamam
9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v adresinden harcanmamış kutular yükleniyor... Tamam
İşlem imzalanıyor... Tamam
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
    }
  ]
}

Not edin ki "ergoTree" betikleri, soyut sözdizim ağaçları olarak ayrıştırılır ve yazdırılır. Bu yazdırma formatı, betiklerin insan tarafından okunabilir ErgoScript olarak yazdırılabilmesi için ek seçeneklerle düzenlenebilir. (Henüz uygulanmadı, ancak bir yerde yol haritasında.)

--dry-run seçeneğini hariç tutarsak, işlem gönderilecek ve blockchain'e dahil edilecektir.

$ ./ergo-tool.sh send storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000          
Depolama şifresi>
Prover oluşturuluyor... Tamam
9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v adresinden harcanmamış kutular yükleniyor... Tamam
İşlem imzalanıyor... Tamam
İşlem gönderiliyor... Tamam
Sunucu tx id'sini döndürdü: "c5710af17f5124a232a5ef731fdf94a493025334c2a7d5a79e9923210972b962"

Yeni oluşturulan işlem, blockchain genelinde yayınlanacak ve madenciler bunu yeni bir bloğa dahil etmeye başlayacak. Yeni blok, işlemimizle birlikte madencilik yapıldığında ve ağ tarafından kabul edildiğinde, transferimiz onaylanır ve Explorer'da görebiliriz.

Ayrıca alıcı adresinin kutularını listeleyebilir ve oluşturduğumuz coin'i diğerleri arasında görebiliriz (alıcı tarafından harcanana kadar).

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

Güvenlik Notları

ErgoTool, güvenlik düşünülerek oluşturulmuştur ve mnemonik ifadeler (asla kalıcı olarak saklanmaz), şifreler (asla ekranda gösterilmez) gibi hassas bilgilerin kullanımını korumak için elinden geleni yapar. Ayrıca, gizli anahtarlar asla yerel diskte şifresiz saklanmaz ve kesinlikle hiçbir yere gönderilmez.

Sonuç

ErgoTool, tipik bir CLI aracına benzemek ve hissettirmek için tasarlanmıştır:

  • kullanımı kolay ve komut satırından hızlı çalıştırılabilir
  • kabuk betikleri aracılığıyla scriptlenebilir
  • yerleşik kullanım yardımı vardır

Aynı zamanda ErgoTool, kolayca genişletilebilir şekilde tasarlanmıştır:

  • yüksek seviyeli dil olan Scala'da uygulanmıştır
  • Ergo ağ istemcisinde kullanılan temel kütüphaneleri yeniden kullanır
  • açık kaynaklıdır ve tamamen belgelenmiştir

Bu son nokta özellikle önemlidir çünkü birçok yeni komut, ErgoTool'un mimarisi sayesinde kolayca eklenebilir. Eğer belirli bir özellik veya komut gerekiyorsa, lütfen bir sorun açın veya belki de bir PR gönderin.

ErgoTool'un genişletilebilirliği, bir sonraki planlanan blog yazısının konusudur, takipte kalın!

Referanslar

  1. Ergo Sitesi
  2. Ergo Kaynakları
  3. Ergo Appkit
  4. Ergo Aracı

Share post

Ergo Altyapı DAO: Ergo Ekosisteminin Omurgasını Merkeziyetsizleştirmek

Ergo Altyapı DAO: Ergo Ekosisteminin Omurgasını Merkeziyetsizleştirmek

Ergo’nun misyonu her zaman merkeziyetsizlikte kök salmıştır, sadece konsensüs katmanında değil, tüm yığın boyunca.

Ergo Platform

13 Ağustos 2025

Mew Finance: Ergo Ekosistemi için Eğlenceli Bir DeFi Araç Seti

Mew Finance: Ergo Ekosistemi için Eğlenceli Bir DeFi Araç Seti

Mew Finance, Ergo Blockchain üzerinde merkeziyetsiz bir uygulama setidir.

Ergo Platform

12 Ağustos 2025

Lithos: Madenciliği On-Chain Havuzlarla Merkeziyetsizleştirmek

Lithos: Madenciliği On-Chain Havuzlarla Merkeziyetsizleştirmek

Lithos, madencilik havuzlarının nasıl çalıştığını köklü bir şekilde değiştirmek için tasarlanmış yeni bir protokoldür; havuzları o.

Ergo Platform

24 Temmuz 2025

Sigma 6.0: Daha Akıllı, Daha Esnek Ergo

Sigma 6.0: Daha Akıllı, Daha Esnek Ergo

Sigma 6.0 Ergo blockchain için önerilen büyük bir güncellemedir.

Ergo Platform

23 Temmuz 2025

Rosen'ın Geleceğini Şekillendirmek: Beş Ana Hazine Teklifi Üzerine Topluluk Çağrısı

Rosen'ın Geleceğini Şekillendirmek: Beş Ana Hazine Teklifi Üzerine Topluluk Çağrısı

Rosen kurucu ortağı Armeanio, Rosen Hazine'sine beş yeni teklif sunmuştur.

Ergo Platform

9 Temmuz 2025

Ergo'nun Genişletilmiş UTXO'su ve Yapay Ekonomik Zekanın Yükselişi

Ergo'nun Genişletilmiş UTXO'su ve Yapay Ekonomik Zekanın Yükselişi

Otonom Ekonomik Ajanlar için Pratik Bir Vizyon Otonom ekonomik ajanlar, Ergo blok zincirinde gerçek bir dijital ekonomide faydalı.

Ergo Platform

12 Mayıs 2025

ErgoHACK X: Ergo Blok Zincirinde Yapay Zeka

ErgoHACK X: Ergo Blok Zincirinde Yapay Zeka

Dağıtık İnovasyonun Onuncu Yılı yıl dönümü ErgoHACK'e katılın ve Ergo blok zincirindeki AI devriminin ön saflarında yer alın! Yara.

Ergo Platform

10 Nisan 2025