التكوين
يحدد Genesis حالة السلسلة الأولية. المصدر المحرر هو JSON manifesto، و 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 الذي تم إنشاؤه في هذا السجل بتسجيل الملفات الدقيقة وأوامر التشغيل للملف الشخصي المحدد.
تكوين الأقران
أقرانهم يشيرون إلى المعاملة التي تم توقيعها في [genesis] في config.toml:
[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.nrtلـ (NPoS) أو Nexus الملفات الشخصية، وتشمل الترتيبات BLS إثباتات الملكية التي تتطلبها الملف الشخصي الذي تم إنشاؤه. Kagami localnet, wizard, وأوامر توليد الملفات الشخصية تتعامل مع هذه التفاصيل تلقائياً.
إعادة كتابة التكوين
يرتكب الزميل الجنيس فقط عندما يكون مخزنها فارغًا. لاختبار جنيس جديد في شبكة محلية قابلة للتخلص ، إيقاف الأقران ، وإزالة دليل الحالة التي تم إنشاؤها ، والبدء من الجنيس الجديد الموقع. لا تستبدل الجنيس على الشبكة العاملة ما لم يتم تنسيق كل مرجع الهجرة نفسها.