Skip to content

Эхлэл

Genesis нь эхлүүлэх зангилын орчинг тодорхойлдог. Тодруулж болох эх үүсвэр нь JSON манифест бөгөөд Iroha 3 түймэг Norito гүйлгээний гарын үсэг зурган файлыг хэрэглэдэг.

Үндсэн хуулийн дагуу үүсэлтийн тэмдэг
json
{
  "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-ийн үүсгэсэн сүлжээүүд өөрийн гэсэн манифест, гарын үсэг зурсан гүйлгээг гаргах каталогид бичнэ:

bash
cargo run --bin kagami -- localnet --build-line iroha3 --peers 4 --out-dir ./localnet

Тухайн жагсаалтад үүсгэсэн README.md нь сонгогдсон хувилбарын тод файлуудыг болон эхлүүлэлтийн командуудыг бүртгэж байна.

Нөхөр үеийнхний хувилбар

config.toml-ийн [genesis] хэсэгт гарын үсэг зурсан эх үүсвэрийн бүтээн байгуулалтын талаарх ижил төстэй хүмүүс:

toml
[genesis]
file = "./genesis.signed.nrt"
public_key = "ed0120..."

Сүлжээний бүх өрсөлдөгчид гарын үсэг зурсан генезисийн гүйлгээ болон генезисийн олон нийтийн түлхүүр дээр тохиролцсон байх ёстой.

Эхлэлд гарын үсэг зурдаг

Хэрэв та манифстийг гар утаснаар эхлүүлэхээс өмнө үүнийг баталгаажуулж, гарын үсэг зурна:

bash
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 болон хувилбарыг үүсгэх команд нь эдгээр мэдээллийг автомат хангах болно.

Женезийг дахин эхлүүлэх

Нөхөр нь зөвхөн хадгаламжгүй байх үедээ генез үйлдэж байна. Шинэ дэглэмийг нэг удаа ашиглах локаль сүлжээнд туршиж үзэхийн тулд өрсөлдөгчдийг зогсоож, үүсгэсэн төрийн захиалгыг арилгаж, Шинэ гарын үсэг зурсан эхлэлээс эхэлнэ. Бүх баталгаажуулагчаар ижил шилжилтийг зохицуулахгүй бол ажиллаж буй сүлжээний генезисийг алмашруулах хэрэггүй.