Skip to content

Конфигурация мәселелерін шешу

Бұл бөлімде проблемаларды шешу үшін кеңестер бар Iroha 3 конфигурация. кілттерін тексердім Біріншіден, бұл проблемалардың ең көп таралған көзі болып табылады Iroha.

Егер сіздің проблемаңыз осы жерде сипатталмаған болса, бізге Telegram арқылы хабарласыңыз.

Docker Compose орнатудағы ескірген генезис

Егер сіз Docker Compose нұсқасы Iroha, Сіз бір теңгерім контейнерлердің проблемасына тап болуыңыз мүмкін Failed to deserialize raw genesis block қатесі. Бұл әдетте теңгерім, қол қойылған генезис транзакциясы және құрылған конфигурация әр түрлі Iroha тексерулер немесе профильдер.

Қабылдауды келесі қадамдармен тексеріңіз:

  1. Ағымдағы контейнерлерді тексеру үшін docker ps қолданыңыз. Жаратылған профильге байланысты, сіз әдетте hyperledger/iroha:dev контейнерлерін көресіз. Әдеттегі Docker Compose профилі төрт теңгерімдегі контейнерді қамтиды, бірақ туылған docker-compose.yml әртүрлі болуы мүмкін.

  2. Журналдарды тексеріп, Failed to deserialize raw genesis block қатесін іздеңіз. Егер сіз Iroha дэймон режимімен docker compose up -d бастасаңыз, docker compose logs командасын пайдаланыңыз.

Мұндай мәселені шешудің тәсілі Iroha қолданылуына байланысты. Егер бұл негізгі демо болса және сізге теңгерімдестерді сақтаудың қажеті болмаса, сәйкес келетін локальдік желі немесе Docker Compose топтамасын Kagami мен қалпына келтіріңіз:

bash
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 үлгі деректерін қалпына келтіруіңіз керек болса, келесі әрекеттерді жасаңыз:

  1. Екінші Iroha теңгерімді қосыңыз, ол бірінші (бос) теңгерімнен деректерді көшіреді.
  2. Жаңа теңгерімнің бірінші теңгеріммен деректерді қадамдастыруын күтіңіз.
  3. Жаңа әріптестерді белсенді қалдырыңыз.
  4. Бірінші теңгерімнің генезис және конфигурация файлдарын тек үйлестірілген көші-қонның бір бөлігі ретінде жаңарту.

INFO

Тірі желіде генезисті ауыстыру үшін жалпы автоматты қайта жазу жолы жоқ. Мұны үйлестірілген көші-қон ретінде қараңыз: ескі жай-күйді сақтаңыз, үйлесімді әріптестерді келтіріңіз және операторлар көші-қөн жоспарына келіскеннен кейін ғана растаушыларды жаңа конфигурацияға жылжытыңыз.

Жеке және қоғамдық кілттердің көп қапшықты форматы

Егер сіз клиенттің конфигурациясын қарасаңыз, онда кілттердің көп-хаш форматында берілгенін байқайсыз .

Егер сіз бұрын-соңды көп хешпен жұмыс істемеген болсаңыз, оң жақтағы бас байттардың (байтқа екі символ) алты ондық бейнесі емес деп болжау табиғатты, бірақ ASCII (немесе UTF-8), және public_key мен private_key экземплярларындағы жіптік сөз тіркесінде from_hex шақыру.

Сонымен қатар, PrivateKey::try_from_str деп шақыру дұрыс кілтті ғана береді деп болжау табиғатты. Егер сіз кілттің біттер санын қате алсаңыз, мысалы 32 байт пен 64 тең болсаңыз, бұл қате хабарламасын береді.

Бұл екі тұжырым да дұрыс емес. Өкінішке қарай, қате хабарламалары осы сәтсіздіктің нақты түрін жоюға көмектеспейді.

Қалай түзеу керек: hex_literal қолданыңыз. Бұл сондай-ақ жағымсыз таңбалар тізбесін шешедецималдық сандардың әдемі шағын кестесіне айналдырады.

WARNING

Тіпті try_from_str іске асырылуы да берілген тізбенің жарамды PrivateKey екенін тексеріп, егер ол болмаса ескерте алмайды.

Ол кейбір айқын қателерді алады, мысалы, егер жіп жарамсыз символды қамтитын болса. Алайда, біз көптеген кілті пішімдерін қолдауды көздегендіктен, ол көп нәрсе істей алмайды. Кілттің берілген шотқа арналған дұрыс жеке кілті екенін де айта алмайды, егер сіз нұсқау бермесеңіз.

Мұндай кішкентай қателіктерді, мысалы, тікелей жіптік сөздіктерден дезерыяландыру арқылы немесе түсінікті орындарда жаңа аспабын жасау арқылы болдырмауға болады.