Ստեղծման խնդիրների լուծում
Այս բաժինը առաջարկում է խնդիրների լուծման խորհուրդներ Iroha 3 կոնֆիգուրացիայի համար: Համոզվեք, որ դուք նախ ստուգել եք բանալիները, քանի որ դա ամենատարածված խնդրի աղբյուրն է Iroha:
Եթե ձեր խնդիրն այստեղ չի նկարագրվել, կապվեք մեզ հետ Telegram միջոցով:
Docker Compose կարգավորման ժամանակակից գենեզը
Երբ դուք օգտագործում եք Docker Compose տարբերակը Iroha, դուք կարող եք հանդիպել խնդրի մի զուգահեռ կոնտեյներները ձախողում է Failed to deserialize raw genesis block սխալ. Սա սովորաբար նշանակում է, որ զուգընկերային, ստորագրված գենեզի գործարքը եւ ստեղծված կարգավորումը արտադրվել են տարբեր Iroha վերանայմաններ կամ պրոֆիլներ:
Ստուգեք ձախողումը հետեւյալ քայլերով.
Օգտագործեք
docker ps՝ ներկա պահեստները ստուգելու համար: Կախված ստեղծված պրոֆիլից, դուք սովորաբար կտեսնեքhyperledger/iroha:devպահեստներ: Սովորականը Docker Compose պարունակում է չորս զուգընկերային պահեստներ, չնայած ձեր ստեղծվածdocker-compose.ymlկարող է տարբերվել:Ստուգեք օրագրերը եւ փնտրեք
Failed to deserialize raw genesis blockսխալը: Եթե դուք սկսել եք ձեր Iroha դեյմոնային ռեժիմումdocker compose up -d, օգտագործեքdocker compose logsհրամանը:
Նման խնդրի լուծման միջոցը կախված է Iroha օգտագործելուց: Եթե սա հիմնական ցուցադրություն է, եւ ձեզ հարկավոր չէ պահպանել զուգընկերների տվյալները, վերականգնել համապատասխան տեղական ցանց կամ Docker Compose փաթեթ ՝ Kagami:
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.ymlԱյնուհետեւ հեռացրեք հին պահեստային վիճակը եւ վերագործարկեք վերականգնված genesis.signed.nrt, զուգընկերների config.toml եւ client.toml ֆայլերից:
Եթե դուք պետք է վերականգնել Iroha օրինակային տվյալները, ապա կատարեք հետեւյալը.
- Կապվեք երկրորդ Iroha զուգընկերոջը, որը կփոխանցի առաջին (խափանված) զուգընկերը:
- Սպասեք, որ նոր զուգընկերն առաջին զուգընկերի հետ տվյալները համաժամեցնի:
- Թող նոր զուգընկերն ակտիվ լինի:
- Թարմացրեք առաջին զուգընկերոջ գենեզի եւ կոնֆիգուրացիոն ֆայլերը միայն համակարգված միգրացիայի մաս կազմելով:
INFO
Հեռուստային ցանցում գենեզի փոխարինման համար չկա ընդհանուր ավտոմատ վերանորոգման ուղին: Սա դիտարկեք որպես համակարգված միգրացիա. պահպանեք հին վիճակը, բերեք համատեղելի զուգընկերներ եւ վավերացողները տեղափոխեք նոր կոնֆիգուրացիա միայն այն բանից հետո, երբ օպերատորը համաձայնվի միգրացիայի պլանի հետ:
Գլխավոր եւ հանրային բանալիների բազմակողմանի ձեւաչափ
Եթե նայեք հաճախորդի կազմավորմանը, դուք կտեսնեք, որ այնտեղ գտնվող բանալիները տրված են բազմազան ձեւաչափով :
Եթե դուք նախկինում երբեք չեք աշխատել բազմա-հիշի հետ, բնական է ենթադրել, որ աջ կողմը առանցքային բայթների (երկու խորհրդանիշ մեկ բայթի համար) վեցամյակային ներկայացումն չէ, այլ ավելի շուտ ASCII (կամ UTF-8) կոդավորված բայտները, եւ զանգահարեք from_hex շղթայական բառապաշարի վրա ինչպես public_key, այնպես էլ private_key օրինակով:
Բնական է նաեւ ենթադրել, որ PrivateKey::try_from_str զանգահարելը շղթայական բառարանում կստանա միայն ճիշտ բանալին: Այսպիսով, եթե դուք սխալ եք ստանում ստեղնաշարի բիթների թիվը, օրինակ, 32 բայթներ vs 64, դա կհանգեցնի սխալ հաղորդագրության:
Այս երկու ենթադրությունները սխալ են: Ցավոք, սխալների հաղորդագրությունները չեն օգնում լուծել այս հատուկ տեսակի ձախողումները:
Ինչպես շտկել. օգտագործեք hex_literal։ Դա նաեւ կվերածի աքաղաղ տառերի շարքը գեղեցիկ փոքր աղյուսակում, որը ակնհայտորեն վեց դեկամալ թվերով է:
WARNING
Նույնիսկ try_from_str իրականացումը չի կարող ստուգել, թե արդյոք տրված շղթան է վավերական PrivateKey եւ նախազգուշացնել ձեզ, եթե այն չէ.
Այն կբացահայտի որոշ ակնհայտ սխալներ, օրինակ, եթե շղթան պարունակում է անվավեր խորհրդանիշ: Այնուամենայնիվ, քանի որ մենք նպատակ ունենք աջակցել բազմաթիվ բանալիր ձեւաչափերին, այն շատ բան չի կարող անել: Այն չի կարող ասել, թե արդյոք բանալին ճիշտ մասնավոր բանալիր է տվյալ հաշիվի համար, քանի դեռ դուք չեք ներկայացրել հրահանգ:
Այս տեսակի մանր սխալները կարելի է խուսափել, օրինակ, ուղղակիորեն դեզերիալացնելով շղթայական բառերից կամ նոր բանալիների զույգը ստեղծելով այն վայրերում, որտեղ դա իմաստ ունի: