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
}

Ֆայլեր

Upstream պահեստը առաքում է կանխարգելված մանիֆես 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 եւ պրոֆիզայի արտադրման հրամանները ավտոմատ կերպով կզբաղվեն այդ մանրամասներով:

Ծննդոցի վերագործարկումը

Պարերը կատարում են գենեզը միայն այն ժամանակ, երբ դրա պահեստն դատարկ է: Մեկ անգամ օգտագործվող տեղական ցանցում նոր գենեզի փորձարկելու համար դադարեցրեք զուգընկերներին, հանեք ստեղծված պետության ցուցակը եւ սկսեք նոր ստորագրված գենեզից: Մի փոխարինեք Գենեզը վազող ցանցում, քանի դեռ յուրաքանչյուր հավաստավորիչ չի համակարգում նույն միգրացիան.