Skip to content

Iroha تعليمات خاصة

عندما تحدثنا عن كيف Iroha تعمل, لقد قلنا ذلك Iroha التعليمات الخاصة هي الطريقة الوحيدة لتغيير الدولة العالمية. أي نوع من التعليمات الخاصة لدينا؟ إذا قرأت الدليل المحدد للغة في هذه الدروسية، لقد رأيتِ بالفعل بعض التعليمات Register<Account> و Mint<Numeric>.

هذه هي القائمة الكاملة لإرشادات خاصة Iroha:

التعليماتوصف
التسجيل/إزالة التسجيل إعطاء ID إلى كيان جديد على بلوكتشين.
النعناع / الحرق الأصول الرقمية من النقود / الحرق أو تسبب التكرار.
SetKeyValue/RemoveKeyValueقم بتحديث البيانات الوصفية.
SetParameterحدد معايير على امتداد السلسلة
الإعانة/الإلغاءإعطاء أو إزالة الإذن والأدوار.
النقل نقل ملكية أو قيمة الأصول.
حفلات الاحتفاظ بالأموال الأصلية قفل الأصول الرقمية في حجز البروتوكول.
ExecuteTriggerإنفاذ محفزات.
التسجيل/التخصيص / التحديث سجل، تمديد، أو تحديث سلوك الوقت التشغيل.

دعونا نبدأ بموجب ملخص Iroha التعليمات الخاصة؛ ما هي الأشياء التي يمكن استدعاء كل تعليمة وما هي التعليمات المتاحة لكل جسم.

خلاصة

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

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

التعليماتالأجسامالوجهة
EnsureAliasالنطاق العادي، مستعار مساحة البيانات، وتعيين حساب
التسجيل/إزالة التسجيل الحسابات، تعريف الأصول، NFTs، الأدوار، المحفزات، الأقران، إزالة النطاق
النعناع / الحرق الأصول الرقمية، تثبيت التكرارحسابات أو محفزات
SetKeyValue/RemoveKeyValueالأشياء التي تحتوي على بيانات أساسية : النطاقات، الحسابات، تعريف الأصول، NFTs، RWAs، محفزات
SetParameterملامح سلسلة
الإعانة/الإلغاءالأدوار، رموز الإذنالحسابات أو الأدوار
النقل النطاقات، تعريف الأصول، الأصول الرقمية NFTsالحسابات
حفلات الاحتفاظ بالأموال الأصلية الاحتفاظ بالأصول الرقمية، قفل الأصول، التزامات الاحتفاض المجهولةالمشترين أو الوجهات، أو الانقسام في النزاع
ExecuteTriggerالمحفزات
التسجيل/التخصيص / التحديث السجلات، الحملات المفيدة الخاصة بالجهاز التنفيذي، تحديثات الجهاز التنفسي

هناك أيضا طريقة أخرى للنظر في ISI ، من حيث كائن الكتيب الذي يلمسونه:

الهدفالتعليمات
الحسابتسجيل / إلغاء تسجيل الحسابات ، وتلقي الأصول ، تحديث البيانات المعدنية للحسابات ، منح أو إلغاء الإذن ودورها
النطاقتأمين إعداد النطاقات، إلغاء تسجيل النطاقين، نقل ملكية النطاق، تحديث البيانات الوصفية للنطاق
تعريف الأصولتعريفات السجل/إفراج السجل، ونقل الملكية، تحديث البيانات النسبية
الأصولالكمية الرقمية من النعناع/الحرق، والكمية العددية من التحويل
الاحتفاظفتح، قبول، علامة الدفع المرسل، الإفراج، إلغاء، النزاع، الحل، سحب، أو انتهاء السجلات الاحتفاظ الأصلية
NFTالتسجيل/إزالة التسجيل NFTs ، ونقل الملكية، تحديث البيانات الوصفية
RWAتسجيل المكونات، وتحويل الكمية، والاحتفاظ/الإفراج، والتجميد/إفراز التجميد، والاستبدال، والاندماج، وتحديث البيانات الأساسية والسيطرة
المحفزتسجيل/إلغاء التسجيل، تكرار محفز النقود/الحرق، تنفيذ المحفز، تحديث البيانات الأساسية المحفزة
العالمتسجيل/إزالة سجل الأقران والأدوار، تعيين المعايير، تحديث المنفذ

CLI مثال

تفترض الأمثلة الموجودة في هذه الصفحة أنك تقوم بتشغيل أوامر من مساحة العمل Iroha المتقدمة مقابل تشكيل العميل المحلي الافتراضي:

bash
cargo run --bin iroha -- --config ./defaults/client.toml <command>

إذا قمت بتثبيت iroha الثنائي، استخدم iroha --config ./defaults/client.toml بدلاً من ذلك. استبدل أصحاب المواقع أدناه بقيم من شبكتك:

bash
export ALICE="<ALICE_ACCOUNT_I105>"
export BOB="<BOB_ACCOUNT_I105>"
export ASSET_DEF="<ASSET_DEFINITION_BASE58>"
export PEER_KEY="<BLS_PUBLIC_KEY_MULTIHASH>"
export PEER_POP="<PROOF_OF_POSSESSION_HEX>"

عند استهداف الجمهور Taira شبكة اختبار، استخدام Taira تكوين العميل. قبل تشغيل أمثلة مدفوعة الرسوم ، حفظ مساعدة المياه من احصل على Testnet XOR على Taira كما taira_faucet_claim.py, ثم تستحق الشبكة XOR من الصنبور:

bash
export TAIRA_ACCOUNT_ID="<TAIRA_I105_ACCOUNT_ID>"
export TAIRA_FEE_ASSET="6TEAJqbb8oEPmLncoNiMRbLEK6tw"

curl -fsS https://taira.sora.org/v1/accounts/faucet/puzzle | jq .
python3 taira_faucet_claim.py "$TAIRA_ACCOUNT_ID"

iroha --config ./taira.client.toml ledger asset get \
  --definition "$TAIRA_FEE_ASSET" \
  --account "$TAIRA_ACCOUNT_ID"

بعد أن يكون الأصول الممولة بالفخار مرئيًا، ضعي البيانات الوصفية المطلوبة للأصول الغازية للكتابة للمعاملات:

bash
printf '{"gas_asset_id":"%s"}\n' "$TAIRA_FEE_ASSET" > taira.tx-metadata.json

cargo run --bin iroha -- \
  --config ./taira.client.toml \
  --metadata ./taira.tx-metadata.json \
  <command>

EnsureAlias

EnsureAlias هو مسار الإصدار الأول العادي لإنشاء النطاقات و SNS إنه يربط بإعلان المجال البيئي الدقيق، والمالك، وشروط الإيجار، ووقاية الاقتباسات، ثم تقوم بإنشاء أو إصلاح كل الحالة المطلوبة عن طريق الذرية. POST /v1/aliases/setup/plan النقطة النهائية أو التطابق CLI سير العمل:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup plan \
  --intent-file ./domain.intent.json \
  --plan-file ./domain.plan.json

cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup apply --plan-file ./domain.plan.json

النية والخطة خالية من الأسرار، ولكن تطبيق علامات الخطوة وتقديم معاملة عادية مع الحساب الذي تم تشكيله. الخطة مرتبطة بالسلاسل والسلطة ورابط الدولة الحية والموعد النهائي؛ لا تستخدم مرة أخرى على شبكة أخرى.

(Un) التسجيل

التسجيل وعدم التسجيل هو التعليمات المستخدمة لتقديم ID لجهة جديدة على بلوكتشين.

كل ما يمكن تسجيله هو كليهما Registrable و Identifiable, لكن ليس كل ما هو Identifiable هو Registrable. يتم تسجيل معظم الأشياء مباشرة، ولكن في بعض الحالات تمثيل في بلوكتشين يحتوي على بيانات أكثر بكثير. لأسباب أمنية وأداء، نحن نستخدم البنّاء لهذه الهياكل البيانية (مثل: NewAccount ، وتحتوي تسجيل الأقران على تعليمات خاصة لإثبات الملكية. كقاعدة عامة، كل ما يمكن تسجيله يمكن أن يكون غير مسجل أيضاً، ولكن هذه ليست قاعدة صعبة وسريعة.

يمكنك تسجيل الحسابات، وصف الأصول، NFTs, أقرانهم، الأدوار، والتحفيزات. EnsureAlias; الخام Register::Domain الحمولة المفيدة مخصصة لجنيس/bootstrap. استخدام تسجيل الأقران RegisterPeerWithPop, الذي يحمل دليل على حيازة مفتاح الأقران تسمية المؤتمرات للتعرف على القيود المفروضة على أسماء الكيانات.

يتم إنشاء قطاعات RWA من خلال تعليمات RegisterRwa المخصصة. لا يعرض الرمز الحالي تعليمات UnregisterRwa؛ استخدم RedeemRwa للتخفيض من الكمية الممثلة.

INFO

لاحظ أنه اعتمادا على الطريقة التي تقرر فيها إعداد حظر التكوين في genesis.json (على وجه التحديد، سواء كنت تشمل تسجيل رموز الإذن أم لا) ، يمكن أن تكون عملية تسجيل الحساب مختلفة جداً. بشكل عام، يمكننا تلخيصها على هذا النحو:

  • في بلوكتشين عام، أي شخص يجب أن يكون قادراً على تسجيل حساب.
  • في بلوكتشين خاصة، يمكن أن يكون هناك عملية فريدة لتسجيل الحسابات. في بلوكتشيين خاصة نموذجية، أي بلوكشين بدون أي عمليات فريدة للتسجيل للحسابات، تحتاج إلى حساب لتسجيل حساب آخر.

نناقش هذه الاختلافات بالتفصيل الكبير عندما مقارنة السلسلات الحكومية والخاصة.

INFO

تسجيل الزملاء هو حاليًا الطريقة الوحيدة لإضافة الزملاء الذين لم يكونوا جزءًا من الزملاء الموثوقين الأصليين في الشبكة.

استخدم دليل محدد لغة لتسجيل كائنات بلوكتشين:

اللغةدليل
CLIاستخدم Iroha CLI لإنشاء النطاقات والتسجيل الحسابات والأصول.
Rustاستخدم Rust التعليمية .
Kotlin/جاوااستخدم Kotlin/Java tutorial.
Pythonاستخدم Python التعليمية .
JavaScript/TypeScriptاستخدم JavaScript/TypeScript التعليمية .

تخطيط وتطبيق إعدادات النطاق العادي ، ثم إلغاء تسجيل النطاق عندما لا يكون مطلوبًا بعد الآن:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup plan \
  --intent-file ./docs-domain.intent.json \
  --plan-file ./docs-domain.plan.json

cargo run --bin iroha -- --config ./defaults/client.toml \
  app alias setup apply --plan-file ./docs-domain.plan.json

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain unregister --id docs.universal

الحسابات المسجلة والمنسخة:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account register --id "$BOB"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account unregister --id "$BOB"

تعريفات الأصول المسجلة والغير مسجلة:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition register \
  --id "$ASSET_DEF" \
  --name docs_token \
  --alias docs_token#docs.universal \
  --scale 0

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition unregister --id "$ASSET_DEF"

تسجيل وإزالة التسجيل NFTs. تقرأ تسجيل NFT محتوياتها JSON من المدخل القياسي:

bash
printf '{"kind":"badge","level":"intro"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft register --id 'badge$docs.universal'

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft unregister --id 'badge$docs.universal'

أدوار التسجيل والفصل عن التسجيل:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role register --id operators

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role unregister --id operators

تسجيل و إلغاء تسجيل المحفزات. يحتاج تسجيل محفز إما إلى تم تجميع IVM رمز البايت أو قائمة تعليمات متسلسلة. هذا المثال يبني تعليمة Log مع CLI ويجريها في تسجيل المحفيض:

bash
cargo run --bin iroha -- --config ./defaults/client.toml -o \
  ledger transaction ping --log-level INFO --msg "hourly cleanup" |
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger register --id hourly_cleanup \
  --instructions-stdin \
  --filter time \
  --time-start 5m \
  --time-period-ms 3600000

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger unregister --id hourly_cleanup

قم بتسجيل و إلغاء تسجيل الأقران. توليد مفتاح BLS و PoP مع kagami إذا لم يكن لديكما بالفعل:

bash
cargo run --bin kagami -- keys --algorithm bls_normal --pop --json

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger peer register --key "$PEER_KEY" --pop "$PEER_POP"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger peer unregister --key "$PEER_KEY"

النعناع / الحرق

يمكن أن يشير النقش والحرق إلى الأصول الرقمية وتسبب عدد محدود من التكرارات. يمكن إعلان بعض الأصول بأنها غير قابلة للنقش، مما يعني أنها لا يمكن نقشها مرة واحدة فقط بعد التسجيل.

يتم صياغة الأصول إلى حساب معين ، عادة ما تكون تلك التي سجلت الأصل في المقام الأول. تعد كميات الأصول غير سلبية ، لذلك لا يمكنك أبدًا امتلاك $-1.0 من الأصل أو حرق مبلغ سلبي والحصول على صياغة.

استخدم دليل محدد للغة لأصول بلوكتشين النقود:

وهنا أمثلة على حرق الأصول:

الأصول الرقمية لـ "منت" و "برن":

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset mint \
  --definition "$ASSET_DEF" \
  --account "$ALICE" \
  --quantity 100

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset burn \
  --definition "$ASSET_DEF" \
  --account "$ALICE" \
  --quantity 10

تكرارات النعناع والحرق:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger mint --id hourly_cleanup --repetitions 5

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger burn --id hourly_cleanup --repetitions 1

النقل

التحويلات تنتقل الملكية أو القيمة بين الحسابات. تغطي المتغيرات العامة للتحويل مجالات، وصف الأصول، والأصول الرقمية، و NFTs. RWA الحركة الكمية تستخدم المخصصة TransferRwa و ForceTransferRwa التعليمات الموصوفة في: الأصول في العالم الحقيقي.

للقيام بذلك، يجب منح حساب إذن لنقل الأصول . راجع إلى مثال حول كيفية نقل الأصول مع CLI أو Rust.

تحويل الأصول الرقمية:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset transfer \
  --definition "$ASSET_DEF" \
  --account "$ALICE" \
  --to "$BOB" \
  --quantity 25

نطاق النقل، وصف الأصول، وملكية NFT:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain transfer --id docs.universal --from "$ALICE" --to "$BOB"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition transfer --id "$ASSET_DEF" --from "$ALICE" --to "$BOB"

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft transfer --id 'badge$docs.universal' --from "$ALICE" --to "$BOB"

مقفلات الاحتفاظ بالأصول

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

استخدامات الاحتفاظ بالأمانة في السوق OpenAssetEscrow, AcceptAssetEscrow, MarkEscrowPaymentSent, ReleaseAssetEscrow, CancelAssetEscrow, OpenEscrowDispute, و ResolveEscrowDispute. استخدام قفلات الأصول العامة OpenAssetLock, DrawdownAssetLock, CancelAssetLock, و ExpireAssetLock. الأمانة المجهولة تعكس دورة حياة السوق مع OpenAnonymousAssetEscrow, AcceptAnonymousAssetEscrow, MarkAnonymousEscrowPaymentSent, ReleaseAnonymousAssetEscrow, CancelAnonymousAssetEscrow, OpenAnonymousEscrowDispute, و ResolveAnonymousEscrowDispute.

هذه ISIs لا تحتوي حاليًا على أوامر CLI من الدرجة الأولى. استخدم بناءات SDK المطبوعة أو تحميلات التعليمات المتسلسلة ، وشاهد الأصول الطبيعية التأمين للحصول على تفاصيل دورة الحياة والإجازات والاستفسارات والأحداث ومثلة Rust.

المنحة/إلغاء

يتم استخدام إرشادات منح وإلغاء الائتمان لترخيصات الحساب ودورات .

يستخدم Grant لمنح مستخدم دائم إما إذن واحد، أو مجموعة من الإذنات (الدور). يمكن إزالة الأدوار والإجازات الممنوحة فقط عن طريق تعليمات Revoke. وبالتالي ، يجب استخدام هذه التعليمات بعناية.

منح أو إلغاء دور على حساب:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account role grant --id "$BOB" --role operators

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account role revoke --id "$BOB" --role operators

إعطاء وإلغاء رموز الإذن. أوامر الإذن تقرأ كائن الإذن من المدخل القياسي:

bash
printf '{"name":"CanSetParameters","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account permission grant --id "$BOB"

printf '{"name":"CanSetParameters","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account permission revoke --id "$BOB"

إعطاء وإلغاء الإذن على دور:

bash
printf '{"name":"CanRegisterDomain","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role permission grant --id operators

printf '{"name":"CanRegisterDomain","payload":null}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger role permission revoke --id operators

SetKeyValue/RemoveKeyValue

هذه التعليمات تحديث الكائن البيانات المعدنية. استخدم SetKeyValue لإدخال أو استبدال مدخل للبيانات المقدمة و RemoveKeyValue لحذف واحد.

تفويضات البيانات الأساسية set تقرأ قيمة JSON من المدخل القياسي:

bash
printf '"production"\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain meta set --id docs.universal --key environment

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger domain meta remove --id docs.universal --key environment

يتوفر نفس النمط للحسابات وتعريفات الأصول، NFTs، RWAs، والتحفيزات:

bash
printf '{"display_name":"Alice"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger account meta set --id "$ALICE" --key profile

printf '{"issuer":"docs"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger asset definition meta set --id "$ASSET_DEF" --key issuer

printf '{"color":"blue"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger nft meta set --id 'badge$docs.universal' --key traits

printf '{"owner":"ops"}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger trigger meta set --id hourly_cleanup --key owner

SetParameter

SetParameter تغير المعايير في جميع أنحاء السلسلة التي يعرضها نموذج البيانات النشطة والمنفذ.

تحديد المعيار عن طريق تمرير عبارة معايير واحدة JSON على المدخل القياسي:

bash
printf '{"Sumeragi":{"BlockTimeMs":1000}}\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger parameter set

ExecuteTrigger

يتم استخدام هذه التعليمات لتنفيذ محفزات .

CLI يمكن تسجيل المحفزات والاشتراك في أحداث تنفيذ المحفزة مباشرة. فإنه لا يوفر أمرًا مكتوبًا execute trigger ، لذلك لتقديم تعليمات يدوية ExecuteTrigger، إنشاء صف InstructionBox المتسلسل مع أداة SDK أو جهاز تنفيذ وإرسال الترتيب الناتج من JSON عبر ledger transaction stdin:

bash
printf '["<BASE64_EXECUTE_TRIGGER_INSTRUCTION_BOX>"]\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger transaction stdin

cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger events trigger-execute --timeout 30s

التعليمات الأخرى

Iroha يعرض أيضًا تعليمات المستوى الأدنى للوصول إلى وقت التشغيل والتكامل مع المنفذ:

  • Log: إصدار مدخل سجل أثناء التنفيذ.
  • CustomInstruction: تحميل حمولات مفيدة خاصة بالجهاز التنفيذي JSON
  • Upgrade: تنشيط تحديث المنفذ

قم بإرسال تعليمات Log مع مساعدة البينغ:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger transaction ping --log-level INFO --msg "hello from docs"

قم بإرسال تعليمات التنفيذية المخصصة كسلسلة InstructionBox. شكل الحمولة الفائدة هو محدد لتنفيذ، لذلك توليد التعليمات مع مطابقة SDK أو أدوات تنفيذ:

bash
printf '["<BASE64_CUSTOM_INSTRUCTION_BOX>"]\n' |
  cargo run --bin iroha -- --config ./defaults/client.toml \
  ledger transaction stdin

قم بتحديث المنفذ من ملف IVM رمز البايت مرتب:

bash
cargo run --bin iroha -- --config ./defaults/client.toml \
  ops executor upgrade --path ./target/ivm/executor.ivm