Skip to content

معايير التشغيل

[toc]

مستوى الجذر

chain required

السلسلة ID التي يجب أن يتم تضمينها في كل معاملة. تستخدم لمنع هجمات إعادة التداول.

الهجوم المتكرر هو محاولة لإرسال معاملة صالحة إلى شبكة مختلفة عن تلك التي كانت موجهة لها. لأن chain هو جزء من الحمل المفيد للمعاملات الموقعة، يتم رفض المعاملة الموقعة لسلسلة واحدة من قبل النظراء الذين يستخدمون سلسلة أخرى ID.

Type: String
Env:CHAIN
toml
chain = "00000000-0000-0000-0000-000000000000"
shell
CHAIN="00000000-0000-0000-0000-000000000000"

public_key required

المفاتيح العامة للقرابة. يجب أن تستخدم أقرابة مؤكدات الإجماع BLS - المفاتيح الطبيعية.

Type: String, public key multihash
Env:PUBLIC_KEY
toml
public_key = "ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2"
shell
PUBLIC_KEY="ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2"

private_key required

المفتاح الخاص للقرابة: يجب أن يطابق public_key؛ يجب أن تستخدم الأقران المؤكدة بالإجماع BLS-المفاتيح الطبيعية.

Type:todo private-key
Env:PRIVATE_KEY
toml
private_key = "8926201CA347641228C3B79AA43839DEDC85FA51C0E8B9B6A00F6B0D6B0423E902973F"
shell
PRIVATE_KEY="8926201CA347641228C3B79AA43839DEDC85FA51C0E8B9B6A00F6B0D6B0423E902973F"

trusted_peers

قائمة من أقرانهم الموثوقين

يجب أن يستخدم مؤكدون الإجماع مفاتيح BLS-القرابة العادية. لكل مؤكد، قم بتوفير إدخال متطابق trusted_peers_pop.

Type:

صف من سلسلة الأقران. استخدم PUBLIC_KEY@ADDRESS عندما يكون عنوان P2P معروفًا ؛ يتم قبول PUBLIC_KEY العارض أيضًا ويسمح للعثور على عنوان الأقران من الضجة.

Env:TRUSTED_PEERS
toml
trusted_peers = [
    "ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2@127.0.0.1:1337",
    "ea0130A7E9D016D723F72942FCF4B988FB599EA0E092F73C8B68E69F4E8B3FE542A3F7E48AD6CD15F3EB484E45F79399071F77@127.0.0.1:1338",
]
shell
# as JSON
TRUSTED_PEERS='[
  "ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2@127.0.0.1:1337",
  "ea0130A7E9D016D723F72942FCF4B988FB599EA0E092F73C8B68E69F4E8B3FE542A3F7E48AD6CD15F3EB484E45F79399071F77@127.0.0.1:1338"
]'

trusted_peers_pop

BLS إدخالات دليل على امتلاك المؤكّد الأقارب الموثوق بهم.

Type:

صف من الأشياء مع حقل public_key و pop_hex

Env:TRUSTED_PEERS_POP
toml
trusted_peers_pop = [
  { public_key = "ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2", pop_hex = "8515da750f81182aaba5c22fc9f03a01e81ed85e4495a2ca6b29a71c0c8549537e31e79cddf6ff285b9e22d0d9dc17ce0f46e7d0cf78b2ef9feab50c849a1ea8e1e4f07e966f6113faa8a999317545d9f111b8e08a7273913710b43a20b19c08" },
  { public_key = "ea0130A7E9D016D723F72942FCF4B988FB599EA0E092F73C8B68E69F4E8B3FE542A3F7E48AD6CD15F3EB484E45F79399071F77", pop_hex = "a14eb180f0d78c55d2c034e91ccf691378e9c3ceed8e0b81d3e4b7c215c0dbb633bb9f1c5063911c31af4610016c164015f0f93db3c7df6a2ad0c39338fe7695b976a59fd13797615f229fbd77276a8bb2842e4e44fadcafdb7b37f4a143b913" },
]
shell
# as JSON
TRUSTED_PEERS_POP='[
  {"public_key":"ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2","pop_hex":"0x8515da750f81182aaba5c22fc9f03a01e81ed85e4495a2ca6b29a71c0c8549537e31e79cddf6ff285b9e22d0d9dc17ce0f46e7d0cf78b2ef9feab50c849a1ea8e1e4f07e966f6113faa8a999317545d9f111b8e08a7273913710b43a20b19c08"},
  {"public_key":"ea0130A7E9D016D723F72942FCF4B988FB599EA0E092F73C8B68E69F4E8B3FE542A3F7E48AD6CD15F3EB484E45F79399071F77","pop_hex":"0xa14eb180f0d78c55d2c034e91ccf691378e9c3ceed8e0b81d3e4b7c215c0dbb633bb9f1c5063911c31af4610016c164015f0f93db3c7df6a2ad0c39338fe7695b976a59fd13797615f229fbd77276a8bb2842e4e44fadcafdb7b37f4a143b913"}
]'

التكوين

genesis.file

مسار الملف إلى الحمل المفيد الذي تم إنشاؤه بواسطة kagami genesis sign. عادة ما تكتب ملفات الشخصية التي يتم إنشاؤها هذا باعتباره ملف Norito .nrt.

Type: String, file path (relative to the config file or CWD)
Env:GENESIS
toml
[genesis]
file = "./genesis.signed.nrt"
shell
GENESIS="./genesis.signed.nrt"

genesis.public_key required

مفتاح عام من زوج مفتاح جينيس

Type: String, public key multihash
Env:GENESIS_PUBLIC_KEY
toml
[genesis]
public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
shell
GENESIS_PUBLIC_KEY="ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"

الشبكة

network.address required

عنوان الاتصالات p2p لأغراض التوافق (sumeragi) وتزامن الكتلة (block_sync).

Type: String, socket address (host/IPv4/IPv6 + port)
Env:P2P_ADDRESS
toml
[network]
address = "0.0.0.0:1337"
shell
P2P_ADDRESS=0.0.0.0:1337

network.public_address required

العنوان بين الأقران (الخارجي، كما يرى أقرانهم الآخرون).

سيتم الإشاعات إلى أقرانهم المرتبطين حتى يتمكنوا من إشاعاتها لأقرانهم الآخرين.

Type: String, socket address (host/IPv4/IPv6 + port)
Env:P2P_PUBLIC_ADDRESS
toml
[network]
public_address = "0.0.0.0:5000"
shell
P2P_PUBLIC_ADDRESS=0.0.0.0:5000

network.block_gossip_size

كمية الكتل التي يمكن إرسالها في رسالة مزامنة واحدة.

Type: Number
Default:4
toml
[network]
block_gossip_size = 256

network.block_gossip_period_ms

الفاصل الزمني بين الطلبات من الأقران على أحدث كتلة.

الإشاعات المتكررة تقلل من وقت المزامنة، ولكن يمكن أن تزيد من عبء الشبكة.

Type: Number, duration in milliseconds
Default:10_000 (10 seconds)
toml
[network]
block_gossip_period_ms = 1_000

network.transaction_gossip_size

أقصى عدد من المعاملات في الرسالة الشائعة.

الحجم الأصغر يؤدي إلى وقت أطول للتزامن، ولكنه مفيد إذا كان لديك خسارة كبيرة من الحزم.

Type: Number
Default:500
toml
[network]
transaction_gossip_size = 256

network.transaction_gossip_period_ms

فترة الشائعات في انتظار المعاملة بين الأقران.

الإشاعات المتكررة تقلل من وقت المزامنة، ولكن يمكن أن تزيد من عبء الشبكة.

Type: Number, duration in milliseconds
Default:1_000 (1 second)
toml
[network]
transaction_gossip_period_ms = 5_000

network.idle_timeout_ms

مدة الوقت التي تنتهي فيها الاتصال مع الزملاء إذا كان الزملاء غير مشغولين.

Type: Number, duration in milliseconds
Default:300_000 (5 minutes)
toml
[network]
idle_timeout_ms = 300_000

Torii

torii.address required

العنوان الذي يجب أن يستمع إليه الخادم Torii والذي يقوم العميل بقدمه طلباته.

Type: String, socket address (host/IPv4/IPv6 + port)
Env:API_ADDRESS
toml
[torii]
address = "0.0.0.0:8080"
shell
API_ADDRESS=0.0.0.0:8080

torii.max_content_len

الحد الأقصى من البايتات في جسم الطلب الخام المقبول بواسطة نقاط نهاية Torii .

يستخدم هذا الحد لمنع الهجمات DOS.

Type:

عدد (بالبايت)

Default:

64_000_000 (64 مليون بايت)

toml
[torii]
max_content_len = 64_000_000

torii.query_idle_time_ms

الوقت الذي يمكن أن يبقى فيه البحث في المتجر إذا لم يتم الوصول إليه.

Type: Number, duration in milliseconds
Default:10_000 (10 seconds)
toml
[torii]
query_idle_time_ms = 10_000

torii.query_store_capacity

الحد الأعلى لعدد الاستفسارات المباشرة.

Type: Number
Default:128
toml
[torii]
query_store_capacity = 128

torii.query_store_capacity_per_user

الحد الأعلى لعدد الاستفسارات المباشرة لمستخدم واحد.

Type: Number
Default:128
toml
[torii]
query_store_capacity_per_user = 128

الخشبية

logger.level

الكلمات العامة في التسجيل (انظر logger.filter للتكوين المعقّد).

Type:

السلاسل، القيم المحتملة:

  • TRACE: جميع الأحداث، بما في ذلك العمليات منخفضة المستوى.
  • DEBUG: رسائل على مستوى التحليل، مفيدة للتشخيص.
  • INFO: رسائل معلومات عامة.
  • WARN: تحذيرات تشير إلى مشكلات محتملة.
  • ERROR: الأخطاء التي تعيق الوظيفة الطبيعية ولكنها تسمح باستمرار العمل.

اختر المستوى الذي يناسب حالة الاستخدام الخاصة بك. راجع Stack Overflow للحصول على تفاصيل إضافية حول كيفية استخدام مستويات السجل المختلفة.

Default:INFO
Env:LOG_LEVEL
toml
[logger]
level = "INFO"
shell
LOG_LEVEL=INFO

تحديث وقت التشغيل

هذه المعلمة تخضع لتحديث تشكيل وقت التشغيل من خلال نقاط نهاية عامل Torii.

logger.filter

مرشحات السجل المكررة بالإضافة إلى logger.level. يسمح بتخصيص صيغة التسجيل لكل هدف.

Type:

السلسلة، تتكون من إحدى أو أكثر من المبادئ التوجيهية المنفصلة عن بعضها البعض بواسطة العنصرات. يمكن لكل إرشادة أن يكون لها مستوى أقصى للفصائل المقابلة الذي يسمح (على سبيل المثال، يختار) بالفترات والحداثات المتطابقة. تعتبر Iroha مستويات أقل حصراً (مثل trace أو info) أكثر صلابة من المستويات الأكثر حصراً [مثل error أو warn).

على مستوى مرتفع، يتكون النصوصية للاتجاهات من عدة أجزاء:

target[span{field=value}]=level

للحصول على مزيد من التفاصيل، انظر tracing-subscriber وثائق.

Env:LOG_FILTER
toml
[logger]
filter = "iroha_core=debug,iroha_p2p=debug"
shell
LOG_FILTER=iroha_core=debug,iroha_p2p=debug

الموافقة مع logger.level

يعمل logger.filter مع logger.level ولا أحد يغطى الآخر.

على سبيل المثال، إذا logger.level يتم تعيينها INFO و logger.filter يتم تعيينها iroha_core=debug, ستكون مجموعة الصفحات الناتجة info,iroha_core=debug (أي info لجميع الوحدات، debug لـ iroha_core).

تحديث وقت التشغيل

هذه المعلمة تخضع لتحديث تشكيل وقت التشغيل من خلال نقاط نهاية عامل Torii.

logger.format

شكل السجلات.

Type:

السلاسل، القيم المحتملة:

  • full: المنسق الافتراضي. يقوم هذا بإصدار سجلات قابلة للقراءة من قبل الإنسان، ذات خط واحد لكل حدث يحدث، مع عرض السياق الزمني الحالي قبل التعبير عن الحدث بشكل مُصمم.
  • compact: خيار من المنسق الافتراضي ، المحسّن لمدى الخط القصير. يتم إرفاق الحقول من سياق الإطار الحالي إلى حقل الأحداث المصممة ، ولا يتم عرض أسماء الإطار ؛ يتم اختصار مستوى الكلمات إلى حرف واحد.
  • pretty: إصدار سجلات جميلة للغاية، متعددة الخطوط، محسنة للقراءة البشرية. هذا هو المقصود أساسا لاستخدامها في التطوير المحلي وإزالة الأخطاء، أو لتطبيقات خط الأوامر, حيث أن التحليل الآلي وتخزين الكمباك للمسجلات أقل أهمية من القراءة والجاذبية البصرية.
  • json: إنتاج سجلات جديدة محددة الخطوط JSON. هذا مصممة لاستخدام الإنتاج مع الأنظمة التي يتم استهلاك السجلات المهيكلة مثل JSON من خلال أدوات التحليل والمشاهدة. لم يتم تحسين إنتاج JSON لقراءة البشر.

للحصول على مزيد من التفاصيل ومخرجات العينات، انظر tracing-subscriber الوثيقة .

Default:full
Env:LOG_FORMAT
toml
[logger]
format = "json"
shell
LOG_FORMAT=json

Kura

Kura هو محرك التخزين المستمر لـ Iroha (اليابانية للتخزين).

kura.blocks_in_memory

في أقصى حد سيتم تخزين N الكتل الأخيرة في الذاكرة.

سيتم إسقاط الكتل القديمة من الذاكرة و تحميلها من القرص إذا لزم الأمر

Type: Number
Default:1024
Env:KURA_BLOCKS_IN_MEMORY
toml
[kura]
blocks_in_memory = 1024
shell
KURA_BLOCKS_IN_MEMORY=1024

kura.init_mode

Kura وضع البدء

Type:

السلاسل، القيم المحتملة:

  • strict: اعتماد صارم لجميع الكتل
  • fast: البداية السريعة مع عمليات التفتيش الأساسية فقط
Default:strict
Env:KURA_INIT_MODE
toml
[kura]
init_mode = "fast"
shell
KURA_INIT_MODE=fast

kura.store_dir

يحدد المجلد [^paths] حيث يتم تخزين الكتل.

انظر أيضاً: snapshot.store_dir.

Type: String, file path (relative to the config file or CWD)
Default:./storage
Env:KURA_STORE_DIR
toml
[kura]
store_dir = "/path/to/storage"
shell
KURA_STORE_DIR=/path/to/storage

kura.debug.output_new_blocks debug

العلامة تمكن من طباعة كتلة جديدة على الكونسول.

Type:todo bool
Default:false
Env:KURA_DEBUG_OUTPUT_NEW_BLOCKS
toml
[kura.debug]
output_new_blocks = true
shell
KURA_DEBUG_OUTPUT_NEW_BLOCKS=true

الصف

queue.capacity

الحد الأعلى لعدد المعاملات التي تنتظر في الصف.

Type: Number
Default:65_536
toml
[queue]
capacity = 1_048_576

queue.capacity_per_user

الحد الأعلى لعدد المعاملات التي تنتظر في الصف لمستخدم واحد.

استخدم هذه الخيارة لتطبيق التدفق.

Type: Number
Default:65_536
toml
[queue]
capacity_per_user = 1_048_576

queue.transaction_time_to_live_ms

سيتم إلغاء المعاملة بعد هذا الوقت إذا كانت مازالت في الصف.

Type: Number, duration in milliseconds
Default:86_400_000 (24 hours)
toml
[queue]
transaction_time_to_live_ms = 43_200_000

Sumeragi

sumeragi.debug.force_soft_fork debug

مفتاح إزالة الأخطاء فقط لممارسة مسارات معالجة الشوكة الناعمة Sumeragi. اترك هذا المحذوف خارج الاختبارات السيطرة؛ تغييره على شبكة إنتاج جارية يمكن أن يجعل الأقران غير متفقين حول سلوك التوافق.

Type:todo bool
Default:false
toml
[sumeragi.debug]
force_soft_fork = true

صورة سريعة

هذه الوحدة هي المسؤولة عن قراءة وصياغة اللقطات الفورية لـ World State View.

تخزن اللقطات الفورية نقطة تفتيش متسلسلة لمشاهدة الدولة العالمية بحيث يمكن للقرابة إعادة تشغيلها دون إعادة تشغل كل كتلة من Kura. Kura يبقى تاريخ الكتل الدائم ومصدر الحقيقة لإعادة تشغيله. عند البدء ، يقوم Iroha بتحقق من بيانات اللقطة الفورية ضد السلسلة التي تم تشكيلها والبلوكز المخزنة قبل اتخاذ قرار ما إذا كان يجب تحميل اللقطة أو العودة إلى التشغيل.

مسح اللقطات الفورية

في حال كان هناك خطأ ما مع نظام اللقطات الفورية، وترغب في البدء من صفحة فارغة (من حيث اللقطات فوريًا) ، يمكنك إزالة المجلد المحدد عن طريق snapshot.store_dir.

snapshot.mode

الوضع الذي يعمل فيه نظام Snapshot.

Type:

السلاسل، القيم المحتملة:

  • read_write: يخلق Iroha لقطات سريعة مع فترة محددة في snapshot.create_every_ms. عند البدء ، يقرأ Iroha لقطة سريعة قائمة (إذا كانت موجودة) ويتحقق من أنها حديثة مع مخزن الكتل.
  • readonly: مشابهة ل read_write ولكن Iroha لا تخلق أي اللقطات الفورية.
  • disabled: Iroha لا تخلق لقطات سريعة جديدة ولا تقرأ واحدة قائمة عند بدء العمل.
Default:read_write
Env:SNAPSHOT_MODE
toml
[snapshot]
mode = "readonly"
shell
SNAPSHOT_MODE=readonly

snapshot.create_every_ms

تردد اللقطات.

Type: Number, duration in milliseconds
Default:600_000 (10 minutes)
toml
[snapshot]
create_every_ms = 60_000

snapshot.store_dir

دليل حيث تخزين اللقطات.

انظر أيضاً: kura.store_dir

Type: String, file path (relative to the config file or CWD)
Default:./storage/snapshot
Env:SNAPSHOT_STORE_DIR
toml
[snapshot]
store_dir = "/path/to/storage"
shell
SNAPSHOT_STORE_DIR="/path/to/storage"

الهوائية

تقوم "التليميتريا" بتصدير تشخيص الأقران إلى مجمع التليميترية الخارجي. قم بتشغيل telemetry.name و telemetry.url عندما يتعين على النسيق أن يقدم تقريرًا إلى الجمع؛ فلتفوت القسم عندما لا تستخدم التليميتري .

name و url يجب أن تكون مزدوجة.

جميع القسم telemetry اختياري.

telemetry.name

اسم العقدة ليتم عرضها على جهاز التلفاز.

Type: String
toml
[telemetry]
name = "iroha"

telemetry.url

WebSocket URL من جهاز جمع التلفاز.

Type: String
toml
[telemetry]
url = "ws://telemetry.example.com/submit"

telemetry.min_retry_period_ms

الحد الأدنى لفترة الانتظار قبل إعادة الاتصال.

Type: Number, duration in milliseconds
Default:1_000 (1 second)
toml
[telemetry]
min_retry_period_ms = 5_000

telemetry.max_retry_delay_exponent

الحد الأقصى من 2 الذي يستخدم لزيادة التأخير بين الاتصالات.

Type: Number
Default:4
toml
[telemetry]
max_retry_delay_exponent = 4

dev_telemetry.out_file

طريق الملف للكتابة التلفزيونية إلى

Type: String, file path (relative to the config file or CWD)
toml
[dev_telemetry]
out_file = "/path/to/file.json"