Konfiguratsiya muammolarini hal qilish
Ushbu boʻlimda muammolarni hal qilish uchun maslahatlar mavjud Iroha 3 Konfiguratsiya. kalitlarni tekshirgan . birinchidan, bu muammolarning eng keng tarqalgan manbai bo'lganligi sababli Iroha.
Agar siz boshdan kechirayotgan muammo bu erda tasvirlanmagan bo'lsa, Telegram orqali biz bilan bog'laning.
Docker Compose sozlash usulidagi eskirgan genesis
Agar siz Docker Compose tahririda Iroha, siz tengdoshlari konteynerlaridan biri bilan muvaffaqiyatsizlikka uchrashishingiz mumkin Failed to deserialize raw genesis block xato. Bu odatda tengdosh, imzolangan genesis tranzaksiyasi va hosil qilingan konfiguratsiya turli xil Iroha qayta ko'rib chiqish yoki profillar.
Muvaffaqiyatni quyidagi qadamlar bilan tekshirish:
Joriy konteynerlarni tekshirish uchun
docker psdan foydalaning. Yaratilgan profilga qarab, siz odatdahyperledger/iroha:devkonteynerlarini ko'rasiz. Andoza Docker Compose profilida to'rtta tengdosh konteyner mavjud, garchi sizning yaratilgandocker-compose.ymltarkibingiz farq qilishi mumkin.Loglarni tekshiring va
Failed to deserialize raw genesis blockxatosi uchun qidiring. Agar siz Iroha ni daemon rejimidadocker compose up -dbilan boshlagan bo'lsangiz,docker compose logsbuyruqidan foydalaning.
Bunday muammoni hal qilish usuli Iroha dan foydalanishga bog'liq. Agar bu asosiy demo bo'lsa va siz tengdoshlar ma'lumotlarini saqlab qolishingiz shart emas bo'lsa, Kagami bilan mos localnet yoki Docker Compose paketini qayta tiklang:
cargo run --bin kagami -- localnet --build-line iroha3 --peers 4 --out-dir ./localnet
cargo run --bin kagami -- docker --peers 4 --config-dir ./localnet --image hyperledger/iroha:dev --out-file ./docker-compose.ymlSo'ngra eski konteyner holatini olib tashlang va qayta tiklangan genesis.signed.nrt, config.toml va client.toml fayllaridan qaytadan ishga tushiring.
Agar Iroha instansiyasi ma'lumotlarini tiklash kerak bo'lsa, quyidagilarni bajaring:
- Ikkinchi Iroha tenglamasini u birinchi (maslahatli) tenglamadan olingan ma'lumotlarni nusxa ko'rsatadi.
- Yangi tengdosh ma'lumotlarni birinchi tengdosh bilan sinxronizatsiya qilishini kuting.
- Yangi tengdoshni faol qoldiring.
- Birinchi tengdoshning genesis va konfiguratsiya fayllarini faqat muvofiqlashtirilgan migratsiya qismi sifatida yangilang.
INFO
To'g'ridan-to'g'ri tarmoqda genesisni almashtirish uchun umumiy avtomatik qayta yozish yo'li mavjud emas. Buni muvofiqlashtirilgan migratsiya sifatida ko'rib chiqing: eski holatni saqlab qoling, moslashuvchan tengdoshlarni keltiring va validatorlarni faqat operatorlar migratsiya rejasi haqida kelishib olgach yangi konfiguratsiyaga o'tkazish kerak.
Maxfiy va ommaviy kalitlarning ko'p hash formatlari
Agar siz mijoz konfiguratsiyasini ko'rsangiz, u erda kalitlar ko'p hash formatida berilganligini ko'rasiz .
Agar siz ilgari ko'p hash bilan ishlamagan bo'lsangiz, o'ng tomon kalit bytlarning (baytga ikkita ramz) hexadecimal ifoda emasligini (yoki ASCII yoki UTF-8 sifatida kodlangan bytlar) tasavvur qilish tabiiydir; public_key va private_key nusxalari bo'yicha har ikki qatorda from_hex chaqirib qo'ying.
Bundan tashqari, PrivateKey::try_from_str so'rash faqat to'g'ri kalitni beradi deb taxmin qilish tabiiy. Shunday qilib, agar siz kalitdagi bitlar sonini noto'g'ridan ko'rsangiz, masalan, 32 bytes vs 64.
Ikkala tasavvur ham noto'g'ri. Afsuski, xato xabarlari bunday xatolarni bartaraf etishda yordam bermaydi.
Qanday tuzatish kerak: hex_literal dan foydalaning. Bu, shuningdek, chiroyli belgilar qatorini oltita o'nlik raqamlardan iborat yaxshi kichik jadvalga aylantiradi.
WARNING
Hatto try_from_str implementatsiyasi ham ma'lum bir satrning haqiqiy PrivateKey bo'lishini tekshirib ko'ra olmaydi va agar yo'q bo'lsa ogohlantirmaydi.
U ba'zi aniq xatolarni topadi, masalan, agar satrda haqiqiy bo'lmagan ramz mavjud bo'lsa. Biroq, biz ko'plab kalit formatlarini qo'llab-quvvatlashni maqsad qilganimiz sababli, u boshqa ko'p narsani qila olmaydi. Agar siz ko'rsatma taqdim etmasangiz, ma'lum hisob uchun kalit to'g'ri xususiy kalitmi yoki yo'qmi bilmaydi.
Bunday nozik xatolarga yo'l qo'ymaslik mumkin, masalan, to'g'ridan-to'g'ri simli literallardan deseriallashtirish yoki ma'noga ega bo'lgan joylarda yangi kalitlar juftligini yaratish.