الالتزام الأول والقراءة
هذا الدليل يوجهك خلال تشغيل خدمات Asset Core محليًا، وإرسال التزام بسيط، وقراءة الحالة الناتجة.
المتطلبات المسبقة
- مجموعة أدوات Rust (مستقرة، عبر rustup)
- عميل HTTP (curl أو ما شابه)
- محطة تحتوي على نافذتين أو علامات تبويب
الخطوة 1 - بناء العمليات
من جذر مستودع Asset Core:
cargo build --release -p assetcored-write -p assetcored-read
هذا ينتج ثنائيات في target/release/.
الخطوة 2 - بدء خدمة الكتابة
في المحطة الأولى:
./target/release/assetcored-write --config daemon-write/config/default.toml
يبدأ برنامج الكتابة (daemon) على http://127.0.0.1:8080 بشكل افتراضي.
تحقق من أنه يعمل:
إرشادات إضافية:
curl http://127.0.0.1:8080/v1/health
استجابة متوقعة:
إرشادات إضافية:
نبرة: رسمية سجل: تقني
سياق:
- المجال: بنية تحتية للبلوك تشين
- الجمهور: مهندسو الأمن وقادة البنية التحتية
- الغرض: وثائق تقنية
- اللغة: ar
- الاتجاه: من اليمين إلى اليسار
قيود:
- استخدام لغة محايدة من حيث الجنس
- الحفاظ على أسماء العلامات التجارية
- الحفاظ على الدقة التقنية
- ضمان أن تبقى علامات الترقيم والترقيم ملائمة من حيث الاتجاه
- الحفاظ على أسماء العلامات التجارية والمصطلحات في القاموس دون ترجمة
الحفاظ على دون ترجمة:
- code_blocks
- inline_code
- links
- glossary_terms
- mathematical_notation
إرشادات القاموس:
الحفاظ على هذه المصطلحات كما هي (لا تترجم): Asset Core، Asset‑Core، CSP، API، Docker، ECS، daemon، L1، L2، L3، OpenGraph، GitHub، Astro، TypeScript، JavaScript، ℤ، ℤ²، ℤ³، ℝ²، ℝ³، 0D، 1D، 2D، 3D
{
"status": "healthy",
"commit_log": { ... }
}
الخطوة 3 - بدء خدمة القراءة
إرشادات إضافية:
في المحطة الثانية:
./target/release/assetcored-read \
--listen 127.0.0.1:8081 \
--commit_log commit_log.log \
--checkpoint read.checkpoint.json
يعمل برنامج القراءة على تتبع نفس سجل الالتزام الذي يستخدمه برنامج الكتابة.
تحقق من أنه يعمل:
إرشادات إضافية:
curl http://127.0.0.1:8081/v1/health
الخطوة 4 - أرسل أول عملية التزام لك
إنشاء حاوية وإضافة رصيد قابل للتبادل في معاملة واحدة:
إرشادات إضافية:
curl -X POST http://127.0.0.1:8080/v1/commit \
-H "Content-Type: application/json" \
-d '{
"operations": [
{
"op": "CreateContainer",
"args": {
"container_id": 1001,
"kind": "Standard",
"owner": null
}
},
{
"op": "AddFungible",
"args": {
"container_id": 1001,
"class_id": 100,
"key": 1,
"quantity": 500
}
}
],
"idempotency_key": "first-commit"
}'
استجابة متوقعة:
إرشادات إضافية:
نبرة: رسمية سجل: تقني
سياق:
- المجال: بنية تحتية للبلوك تشين
- الجمهور: مهندسو الأمن وقادة البنية التحتية
- الغرض: وثائق تقنية
- اللغة: ar
- الاتجاه: من اليمين إلى اليسار
قيود:
- استخدام لغة محايدة من حيث الجنس
- الحفاظ على أسماء العلامات التجارية
- الحفاظ على الدقة التقنية
- ضمان أن تبقى علامات الترقيم والترقيم ملائمة من حيث الاتجاه
- الحفاظ على أسماء العلامات التجارية والمصطلحات في القاموس دون ترجمة
الحفاظ على دون ترجمة:
- code_blocks
- inline_code
- links
- glossary_terms
- mathematical_notation
إرشادات القاموس:
الحفاظ على هذه المصطلحات كما هي (لا تترجم): Asset Core، Asset‑Core، CSP، API، Docker، ECS، daemon، L1، L2، L3، OpenGraph، GitHub، Astro، TypeScript، JavaScript، ℤ، ℤ²، ℤ³، ℝ²، ℝ³، 0D، 1D، 2D، 3D
{
"global_seq": 1,
"batch_seq": 1,
"minted_instances": [],
"metadata": {
"idempotency_key": "first-commit"
}
}
يؤكد global_seq أن التزامك تم تعيينه برقم تسلسل 1.
الخطوة 5 - قراءة الحالة مرة أخرى
استعلام عن أرصدة الحاويات:
curl http://127.0.0.1:8081/v1/read/container/1001/balances
استجابة متوقعة:
إرشادات إضافية:
نبرة: رسمية سجل: تقني
سياق:
- المجال: بنية تحتية للبلوك تشين
- الجمهور: مهندسو الأمن وقادة البنية التحتية
- الغرض: وثائق تقنية
- اللغة: ar
- الاتجاه: من اليمين إلى اليسار
قيود:
- استخدام لغة محايدة من حيث الجنس
- الحفاظ على أسماء العلامات التجارية
- الحفاظ على الدقة التقنية
- ضمان أن تبقى علامات الترقيم والترقيم ملائمة من حيث الاتجاه
- الحفاظ على أسماء العلامات التجارية والمصطلحات في القاموس دون ترجمة
الحفاظ على دون ترجمة:
- code_blocks
- inline_code
- links
- glossary_terms
- mathematical_notation
إرشادات القاموس:
الحفاظ على هذه المصطلحات كما هي (لا تترجم): Asset Core، Asset‑Core، CSP، API، Docker، ECS، daemon، L1، L2، L3، OpenGraph، GitHub، Astro، TypeScript، JavaScript، ℤ، ℤ²، ℤ³، ℝ²، ℝ³، 0D، 1D، 2D، 3D
{
"container_id": 1001,
"balances": [
{
"class_id": 100,
"key": 1,
"quantity": 500
}
],
"freshness": {
"checkpoint_seq": 1,
"commit_log_seq": 1
}
}
تظهر بيانات التعريف freshness أن عملية القراءة قد عالجت جميع الالتزامات من خلال التسلسل 1.
استكشاف الأخطاء وإصلاحها
”تم رفض الاتصال” عند الالتزام
خدمة الكتابة غير قيد التشغيل أو تعمل على منفذ مختلف. تحقق من الطرفية بحثًا عن الأخطاء وتأكد من أن مسار --config صحيح.
أرصدة فارغة عند القراءة
لم يلحق برنامج القراءة ببرنامج الكتابة. تحقق من أن كلا البرنامجين يستخدمان نفس مسار سجل الالتزام. تُظهر بيانات الانتعاش نقطة التحقق الحالية.
خطأ “ContainerNotFound”
إرشادات إضافية:
معرف الحاوية في استعلام القراءة الخاص بك لا يتطابق مع ما أنشأته. معرفات الحاوية هي أعداد صحيحة، وليست سلاسل نصية.
”InvalidQuantity” error
يجب أن تكون الكمية أكبر من الصفر. تحقق من عملية AddFungible.
الخطوات التالية
- استخدام Python SDK - كرر هذا سير العمل مع مساعدات Python المخصصة
- Containers and Assets - تعرف على أنواع الحاويات المختلفة
- المعاملات - مرجع كامل لبنية المعاملات