Ibtido
Ibtido dastlabki zanjir holatini belgilaydi. tahrirlanadigan manba JSON manifestidir va Iroha 3 nod imzolangan Norito transaksiya faylini iste'mol qiladi.
Andoza genesis manifesti
{
"chain": "00000000-0000-0000-0000-000000000000",
"chain_discriminant": 753,
"consensus_fingerprint": "0x65fdcf7c51004c91602cc8cec2b470ea96918fab2985a79044ae6ddf77416447",
"consensus_mode": "Npos",
"sumeragi_v2": {"da_layout":{"encoding":{"encoding":"reed_solomon16","details":null},"chunk_size_bytes":262144,"data_shards":4,"parity_shards":2,"max_payload_size_bytes":16777216,"max_chunk_count":1024},"nexus_amx_context_hash":"6611CDC66348BEBFBD583F888864A747DCC828C5FE84F58DFB0346CCA27ABAF3"},
"crypto": {
"allowed_curve_ids": [
1,
3,
4
],
"allowed_signing": [
"ed25519",
"secp256k1",
"bls_normal"
],
"default_hash": "blake2b-256",
"sm2_distid_default": "1234567812345678",
"sm_intrinsics": "auto",
"sm_openssl_preview": false
},
"executor": null,
"ivm_dir": ".",
"transactions": [
{
"instructions": [
{
"Register": {
"Domain": {
"id": "wonderland.universal",
"logo": null,
"metadata": {
"key": "value"
}
}
}
},
{
"Register": {
"Account": {
"id": "sorauロ1PノウヌmEエWオebHム6ヤルイヰiwuCWErJ7uスoPGアヤnjムKヒTCW2PV",
"label": null,
"metadata": {
"key": "value"
},
"uaid": null
}
}
},
{
"Register": {
"Account": {
"id": "sorauロ1NアサクYSafヌキヰc5ヌトVxマ9jLZヱヒzsKqurハリ9ク3eエAカD54TDT",
"label": null,
"metadata": {
"purpose": "fee_sponsor_vault_custody"
},
"uaid": null
}
}
},
{
"Register": {
"AssetDefinition": {
"confidential_policy": {
"mode": "TransparentOnly",
"pedersen_params_id": null,
"pending_transition": null,
"poseidon_params_id": null,
"vk_set_hash": null
},
"id": "62Fk4FPcMuLvW5QjDGNF2a4jAmjM",
"logo": null,
"metadata": {},
"mintable": "Infinitely",
"spec": {
"scale": null
},
"name": "rose"
}
}
},
{
"Register": {
"Domain": {
"id": "garden_of_live_flowers.universal",
"logo": null,
"metadata": {}
}
}
},
{
"Register": {
"Account": {
"id": "sorauロ1PyXノspjg6gnvエ1メムLネオBトEwtテD8Rクヌgヲホセレカ7エvWUJA5A",
"label": null,
"metadata": {},
"uaid": null
}
}
},
{
"Register": {
"AssetDefinition": {
"confidential_policy": {
"mode": "TransparentOnly",
"pedersen_params_id": null,
"pending_transition": null,
"poseidon_params_id": null,
"vk_set_hash": null
},
"id": "5CJ6HCMxWw9xhuHmxDrzEfWGeE7M",
"logo": null,
"metadata": {},
"mintable": "Infinitely",
"spec": {
"scale": null
},
"name": "cabbage"
}
}
}
],
"ivm_triggers": [],
"parameters": {
"block": {
"max_transactions": 512
},
"custom": {
"ivm_gas_limit_per_block": {
"id": "ivm_gas_limit_per_block",
"payload": 1680000
},
"sumeragi_npos_parameters": {
"id": "sumeragi_npos_parameters",
"payload": {
"activation_lag_blocks": 1,
"epoch_length_blocks": 3600,
"epoch_seed": "A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5",
"evidence_horizon_blocks": 7200,
"finality_margin_blocks": 8,
"max_entity_correlation_pct": 25,
"max_nominator_concentration_pct": 25,
"max_validators": 128,
"min_nomination_bond": 1,
"min_self_bond": 1000,
"seat_band_pct": 5,
"slashing_delay_blocks": 259200,
"vrf_commit_window_blocks": 100,
"vrf_reveal_window_blocks": 40
}
}
},
"executor": {
"execution_depth": 3,
"fuel": 55000000,
"memory": 1048576
},
"smart_contract": {
"execution_depth": 3,
"fuel": 55000000,
"memory": 1048576
},
"sumeragi": {
"block_cadence_ms": 100,
"key_activation_lead_blocks": 1,
"key_allowed_algorithms": [
"bls_normal"
],
"key_allowed_hsm_providers": [
"pkcs11",
"yubihsm",
"softkey"
],
"key_expiry_grace_blocks": 0,
"key_overlap_grace_blocks": 8,
"key_require_hsm": false,
"max_clock_drift_ms": 1000},
"transaction": {
"ivm_bytecode_size": 4194304,
"max_decompressed_bytes": 10485760,
"max_instructions": 20000,
"max_metadata_depth": 8,
"max_signatures": 16,
"max_time_to_live_ms": 86400000,
"max_tx_bytes": 10485760,
"require_height_ttl": false,
"require_sequence": false
}
},
"topology": []
},
{
"instructions": [
{
"Mint": {
"Asset": {
"destination": "62Fk4FPcMuLvW5QjDGNF2a4jAmjM#sorauロ1PノウヌmEエWオebHム6ヤルイヰiwuCWErJ7uスoPGアヤnjムKヒTCW2PV",
"object": "13"
}
}
},
{
"Mint": {
"Asset": {
"destination": "5CJ6HCMxWw9xhuHmxDrzEfWGeE7M#sorauロ1PノウヌmEエWオebHム6ヤルイヰiwuCWErJ7uスoPGアヤnjムKヒTCW2PV",
"object": "44"
}
}
},
{
"Transfer": {
"AssetDefinition": {
"destination": "sorauロ1PノウヌmEエWオebHム6ヤルイヰiwuCWErJ7uスoPGアヤnjムKヒTCW2PV",
"object": "62Fk4FPcMuLvW5QjDGNF2a4jAmjM",
"source": "sorauロ1Nノマ2スヘネdmcLfDBwoスリシoF5sHeカdカQbネxGVヰ8tCホ4P4KX7"
}
}
},
{
"Grant": {
"Permission": {
"destination": "sorauロ1PノウヌmEエWオebHム6ヤルイヰiwuCWErJ7uスoPGアヤnjムKヒTCW2PV",
"object": {
"name": "CanSetParameters"
}
}
}
},
{
"Grant": {
"Permission": {
"destination": "sorauロ1PノウヌmEエWオebHム6ヤルイヰiwuCWErJ7uスoPGアヤnjムKヒTCW2PV",
"object": {
"name": "CanRegisterAccount"
}
}
}
}
],
"ivm_triggers": [],
"topology": []
}
],
"wire_protocol_version": 3
}Fayllar
defaults/genesis.json. Kagami tomonidan yaratilgan tarmoqlar o'zlarining manifesti va imzolangan tranzaksiyalarini chiqarish direktoriyasiga yozadi:
cargo run --bin kagami -- localnet --build-line iroha3 --peers 4 --out-dir ./localnetUshbu direktoriyada yaratilgan README.md tanlangan profil uchun aniq fayllarni va ishga tushirish buyruqlarini qayd etadi.
Tengdoshlar soni
config.toml ning [genesis] bo'limida imzolangan genesis tranzaksiyasida tengdoshlar quyidagilarni ko'rsatadilar:
[genesis]
file = "./genesis.signed.nrt"
public_key = "ed0120..."Tarmoqdagi barcha tengdoshlar imzolangan genesis muomalasi va genesis jamoatchilik kalitini kelishishlari kerak.
Ibtido kitobining imzolanishi
Agar siz manifestni qo'lda tahrirlasangiz, tengdoshlarni boshlashdan oldin uni tasdiqlash va imzolash:
cargo run --bin kagami -- genesis validate ./genesis.json
cargo run --bin kagami -- genesis sign ./genesis.json \
--private-key "$GENESIS_PRIVATE_KEY_HEX" \
--algorithm ed25519 \
--out-file ./genesis.signed.nrtNPoS yoki Nexus profillari uchun topologiya va BLS hosil qilingan profil tomonidan talab etiladigan egalik hujjati kiritiladi. Kagami localnet, wizard va profil yaratish buyruqlari ushbu tafsilotlarni avtomatik ravishda boshqaradi.
Ibtido kitobini qayta yozish
Bir tengdoshi genesisni faqat uning saqlanishi bo'sh bo'lganda amalga oshiradi. Bir martalik lokalnetda yangi genesisni sinovdan o'tkazish uchun tengdoshlarni to'xtatish, ularning yaratilgan davlat direktoriyasini olib tashlash va yangi imzolangan genesisdan boshlanish kerak. Har bir tasdiqlovchi bir xil migratsiyani muvofiqlashtirmasa, harakatlanayotgan tarmoqda genesisni almashtirmang.