იანესისი
გენეზიში განისაზღვრება საწყისი ჯაჭვის მდგომარეობა. რედაქტირებადი წყარო არის JSON მანიფესტი, ხოლო Iroha 3 კვანძი მოიხმარს ხელმოწერილი Norito ტრანზაქციის ფაილს.
დეფოლტური გენეზიის მანიფესტი
{
"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
}ფაილები
defaults/genesis.json. Kagami-ის მიერ შექმნილი ქსელები საგამოშვო დირექტორში საკუთარ დირექტორიან და ხელმოწერილი ტრანზაქციას წერენ:
cargo run --bin kagami -- localnet --build-line iroha3 --peers 4 --out-dir ./localnetამ დირექტორში გენერირებული README.md აღნიშნავს კონკრეტულ ფაილებს და ამოქმედების ბრძანებებს შერჩეული პროფილისთვის.
თანატოლების კონფიგურაცია
config.toml-ის [genesis] განყოფილებაში ხელმოწერილი გენეზის ტრანზაქციაზე თანატოლები მიუთითებენ:
[genesis]
file = "./genesis.signed.nrt"
public_key = "ed0120..."ქსელის ყველა თანატოლმა უნდა შეთანხმდეს გაფორმებული გენეზის ტრანზაქციაზე და გენეზიის საჯარო გასაღები.
იანესის ხელმოწერა
თუ მანიფესტი ხელით რედაქტირებთ, შეამოწმეთ და მოაწერეთ ხელმოწერა თანატოლების დაწყებამდე:
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 ან Nexus პროფილისთვის, შეიყვანეთ ტოპოლოგია და BLS წარმოქმნილი პროფილისთვის საჭირო მფლობელობის მტკიცებულებები. Kagami localnet, wizard და პროფილის წარმოების ბრძანებები ამ დეტალებს ავტომატურად მართავენ.
იანესის აღდგენა
გენეზიის განხორციელება ხდება მხოლოდ მაშინ, როდესაც მისი შენახვა ცარიელია. ახალი გენეზის გამოსამოწმებლად ერთჯერადი ლოკალურ ქსელში, შეაჩერეთ პარები, ამოიღეთ მათი შექმნილი სახელმწიფო დირექტორი და დაიწყეთ ახალი ხელმოწერილი გენეზიდან. არ შეცვალოთ გენეზა მიმდინარე ქსელზე, თუ ყველა ვალიდატორი არ აკოორდინებს იგივე მიგრაციას.