diff --git a/pages/ar/about/introduction.mdx b/pages/ar/about/introduction.mdx index 64f253a7995b..3c6eefd5e586 100644 --- a/pages/ar/about/introduction.mdx +++ b/pages/ar/about/introduction.mdx @@ -26,7 +26,7 @@ The Graph هو بروتوكول لامركزي وذلك لفهرسة البيا The Graph يفهرس بيانات Ethereumالـ بناء على أوصاف الـ subgraph ، والمعروفة باسم subgraph manifest. حيث أن وصف الـ subgraph يحدد العقود الذكية ذات الأهمية لـ subgraph ، ويحدد الأحداث في تلك العقود التي يجب الانتباه إليها ، وكيفية تعيين بيانات الحدث إلى البيانات التي سيخزنها The Graph في قاعدة البيانات الخاصة به. -بمجرد كتابة ` subgraph manifest ` ، يمكنك استخدام Graph CLI لتخزين التعريف في IPFS وإخبار المفهرس ببدء فهرسة البيانات لذلك الـ subgraph. +بمجرد كتابة `subgraph manifest` ، يمكنك استخدام Graph CLI لتخزين التعريف في IPFS وإخبار المفهرس ببدء فهرسة البيانات لذلك الـ subgraph. يقدم هذا الرسم البياني مزيدًا من التفاصيل حول تدفق البيانات عند نشر الـsubgraph manifest ، التعامل مع إجراءات الـ Ethereum: diff --git a/pages/ar/developer/assemblyscript-api.mdx b/pages/ar/developer/assemblyscript-api.mdx index 8e73bb511c90..535d905333f8 100644 --- a/pages/ar/developer/assemblyscript-api.mdx +++ b/pages/ar/developer/assemblyscript-api.mdx @@ -33,23 +33,23 @@ npm install --save-dev @graphprotocol/graph-ts # NPM - واجهة برمجة تطبيقات `ethereum` للعمل مع عقود Ethereum الذكية والأحداث والكتل والإجراات وقيم Ethereum. - واجهة برمجة تطبيقات `store` لتحميل الـ entities وحفظها من وإلى مخزن Graph Node. -- واجهة برمجة تطبيقات ` log` لتسجيل الرسائل إلى خرج Graph Node ومستكشف Graph Explorer. +- واجهة برمجة تطبيقات `log` لتسجيل الرسائل إلى خرج Graph Node ومستكشف Graph Explorer. - واجهة برمجة تطبيقات `ipfs` لتحميل الملفات من IPFS. - واجهة برمجة تطبيقات `json` لتحليل بيانات JSON. -- واجهة برمجة تطبيقات ` crypto` لاستخدام وظائف التشفير. +- واجهة برمجة تطبيقات `crypto` لاستخدام وظائف التشفير. - Low-level primitives to translate between different type systems such as Ethereum, JSON, GraphQL and AssemblyScript. ### إصدارات الـ `apiVersion` في الـ subgraph manifest تحدد إصدار الـ mapping API الذي يتم تشغيله بواسطة Graph Node للـ subgraph المحدد. الاصدار الحالي لـ mapping API هو 0.0.6. -| الاصدار | ملاحظات الإصدار | -| :-: | --- | -| 0.0.6 | تمت إضافة حقل `nonce` إلى كائن إجراء الـ Ethereum
تمت إضافة `baseFeePerGas` إلى كائن Ethereum Block | -| 0.0.5 | تمت ترقية AssemblyScript إلى الإصدار 0.19.10 (يرجى الاطلاع على [ `دليل الترحيل` ](/developer/assemblyscript-migration-guide))
`ethereum.transaction.gasUsed` أعيد تسميته إلى `ethereum.transaction.gasLimit` | -| 0.0.4 | تمت إضافة حقل `functionSignature` إلى كائن Ethereum SmartContractCall | -| 0.0.3 | تمت إضافةحقل `from` إلى كائن Ethereum Call
`etherem.call.address` تمت إعادة تسميته إلى `ethereum.call.to` | -| 0.0.2 | تمت إضافة حقل ` input` إلى كائن إجراء Ethereum | +| الاصدار | ملاحظات الإصدار | +|:-------:| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.0.6 | تمت إضافة حقل `nonce` إلى كائن إجراء الـ Ethereum
تمت إضافة `baseFeePerGas` إلى كائن Ethereum Block | +| 0.0.5 | تمت ترقية AssemblyScript إلى الإصدار 0.19.10 (يرجى الاطلاع على [ `دليل الترحيل` ](/developer/assemblyscript-migration-guide))
`ethereum.transaction.gasUsed` أعيد تسميته إلى `ethereum.transaction.gasLimit` | +| 0.0.4 | تمت إضافة حقل `functionSignature` إلى كائن Ethereum SmartContractCall | +| 0.0.3 | تمت إضافةحقل `from` إلى كائن Ethereum Call
`etherem.call.address` تمت إعادة تسميته إلى `ethereum.call.to` | +| 0.0.2 | تمت إضافة حقل `input` إلى كائن إجراء Ethereum | ### الأنواع المضمنة Built-in @@ -127,14 +127,13 @@ _Construction_ - `BigInt.fromI32 (x: i32): BigInt` - ينشئ `BigInt` من `i32`. - `BigInt.fromString(s: string): BigInt`– يحلل `BigInt` من سلسلة(string). -- `BigInt.fromUnsignedBytes(x: Bytes): BigInt` – يترجم `bytes` باعتباره عددا صحيحا little-endian بدون إشارة. إذا كان الإدخال الخاص بك big-endian، فقم باستدعاء `.()reverse ` أولا. -- `BigInt.fromSignedBytes(x: Bytes): BigInt` – يترجم `bytes` باعتباره عددا صحيحا little-endian له إشارة. إذا كان الإدخال الخاص بك big-endian، فاستدعي `.()reverse ` أولا. +- `BigInt.fromUnsignedBytes(x: Bytes): BigInt` – يترجم `bytes` باعتباره عددا صحيحا little-endian بدون إشارة. إذا كان الإدخال الخاص بك big-endian، فقم باستدعاء `.()reverse` أولا. +- `BigInt.fromSignedBytes(x: Bytes): BigInt` – يترجم `bytes` باعتباره عددا صحيحا little-endian له إشارة. إذا كان الإدخال الخاص بك big-endian، فاستدعي `.()reverse` أولا. _Type conversions_ - `x.toHex(): string` – ترجع `BigInt` إلى سلسلة سداسية العشرية. - -- `x.toString (): string` - يحول `BigInt` إلى سلسلة رقم عشري. +- `x.toString(): string` – turns `BigInt` into a decimal number string. - `x.toI32 (): i32` - ترجع `BigInt` كـ `i32` ؛ تفشل إذا كانت القيمة لا تتناسب مع `i32`. إنها لفكرة جيدة أن تتحقق أولا من `()x.isI32`. - `x.toBigDecimal (): BigDecimal` - يحول إلى رقم عشري بدون جزء كسري. @@ -175,7 +174,7 @@ import { TypedMap } from '@graphprotocol/graph-ts' - `new TypedMap()` – creates an empty map with keys of type `K` and values of type `T` - `map.set (key: K، value: V): void` - يضبط قيمة الـ `key` لـ `value` - `map.getEntry(key: K): TypedMapEntry | null` – returns the key-value pair for a `key` or `null` if the `key` does not exist in the map -- `map.get(key: K): V | null` – يرجع قيمة ` key` أو `null` إذا كان المفتاح ` ` غير موجود في الخريطة +- `map.get(key: K): V | null` – يرجع قيمة `key` أو `null` إذا كان المفتاح `` غير موجود في الخريطة - `map.isSet(key: K): bool` – يرجع `true` إذا كان الـ `key` موجودا في الخريطة و `false` إذا كان غير موجود #### Bytes @@ -184,7 +183,7 @@ import { TypedMap } from '@graphprotocol/graph-ts' import { Bytes } from '@graphprotocol/graph-ts' ``` -يتم استخدام ` Bytes` لتمثيل مصفوفات طول عشوائية من البايتات. يتضمن ذلك قيم إيثريوم من النوع ` bytes` و ` bytes32` وما إلى ذلك. +يتم استخدام `Bytes` لتمثيل مصفوفات طول عشوائية من البايتات. يتضمن ذلك قيم إيثريوم من النوع `bytes` و `bytes32` وما إلى ذلك. فئة `Bytes` ترث من [ Uint8Array ](https://github.com/AssemblyScript/assemblyscript/blob/3b1852bc376ae799d9ebca888e6413afac7b572f/std/assembly/typedarray.ts#L64) و لذا فهو يدعم جميع وظائف `Uint8Array` ، بالإضافة إلى الـ methods الجديدة التالية: @@ -198,7 +197,7 @@ import { Bytes } from '@graphprotocol/graph-ts' import { Address } from '@graphprotocol/graph-ts' ``` -` Address` امتداد لـ` Bytes` لتمثيل قيم Ethereum ` address`. +`Address` امتداد لـ`Bytes` لتمثيل قيم Ethereum `address`. إنها تضيف الـ method التالية أعلىAPI الـ `Bytes`: @@ -212,7 +211,7 @@ import { store } from '@graphprotocol/graph-ts' تسمح واجهة برمجة التطبيقات `store` بتحميل وحفظ وإزالة الكيانات من وإلى مخزن Graph Node. -Entities written to the store map one-to-one to the `@entity` types defined in the subgraph's GraphQL schema. لتسهيل العمل مع هذه الكيانات ، فالأمر `graph codegen` المقدم بواسطة [ Graph CLI ](https://github.com/graphprotocol/graph-cli) ينشئ فئات الكيان ، وهي فئات فرعية من النوع المضمن ` Entity` ، مع خصائص getters و setters للحقول في المخطط بالإضافة إلى methods لتحميل هذه الكيانات وحفظها. +Entities written to the store map one-to-one to the `@entity` types defined in the subgraph's GraphQL schema. لتسهيل العمل مع هذه الكيانات ، فالأمر `graph codegen` المقدم بواسطة [ Graph CLI ](https://github.com/graphprotocol/graph-cli) ينشئ فئات الكيان ، وهي فئات فرعية من النوع المضمن `Entity` ، مع خصائص getters و setters للحقول في المخطط بالإضافة إلى methods لتحميل هذه الكيانات وحفظها. #### إنشاء الكيانات @@ -242,7 +241,7 @@ export function handleTransfer(event: TransferEvent): void { } ``` -عند مواجهة حدث ` Transfer` أثناء معالجة السلسلة ، يتم تمريره إلى معالج الحدث `handleTransfer` باستخدام نوع ` Transfer` المولدة (الاسم المستعار هنا لـ `TransferEvent` لتجنب تعارض التسمية مع نوع الكيان). يسمح هذا النوع بالوصول إلى البيانات مثل الإجراء الأصلي للحدث وبارامتراته. +عند مواجهة حدث `Transfer` أثناء معالجة السلسلة ، يتم تمريره إلى معالج الحدث `handleTransfer` باستخدام نوع `Transfer` المولدة (الاسم المستعار هنا لـ `TransferEvent` لتجنب تعارض التسمية مع نوع الكيان). يسمح هذا النوع بالوصول إلى البيانات مثل الإجراء الأصلي للحدث وبارامتراته. يجب أن يكون لكل كيان ID فريد لتجنب التضارب مع الكيانات الأخرى. من الشائع إلى حد ما أن تتضمن بارامترات الأحداث معرفا فريدا يمكن استخدامه. ملاحظة: استخدام hash الـ الإجراء كـ ID يفترض أنه لا توجد أحداث أخرى في نفس الإجراء تؤدي إلى إنشاء كيانات بهذا الـ hash كـ ID. @@ -260,7 +259,7 @@ if (transfer == null) { // Use the Transfer entity as before ``` -نظرا لأن الكيان قد لا يكون موجودا في المتجر ، فإن method `load` تُرجع قيمة من النوع ` Transfer | null`. وبالتالي قد يكون من الضروري التحقق من حالة `null` قبل استخدام القيمة. +نظرا لأن الكيان قد لا يكون موجودا في المتجر ، فإن method `load` تُرجع قيمة من النوع `Transfer | null`. وبالتالي قد يكون من الضروري التحقق من حالة `null` قبل استخدام القيمة. > ** ملاحظة: ** تحميل الكيانات ضروري فقط إذا كانت التغييرات التي تم إجراؤها في الـ mapping تعتمد على البيانات السابقة للكيان. انظر القسم التالي للتعرف على الطريقتين لتحديث الكيانات الموجودة. @@ -269,7 +268,7 @@ if (transfer == null) { هناك طريقتان لتحديث كيان موجود: 1. حمل الكيان بـ `Transfer.load (id)` على سبيل المثال، قم بتعيين الخصائص على الكيان ، ثم `()save.` للمخزن. -2. ببساطة أنشئ الكيان بـ ` new Transfer(id)` على سبيل المثال، قم بتعيين الخصائص على الكيان ، ثم `()save.` للمخزن. إذا كان الكيان موجودا بالفعل ، يتم دمج التغييرات فيه. +2. ببساطة أنشئ الكيان بـ `new Transfer(id)` على سبيل المثال، قم بتعيين الخصائص على الكيان ، ثم `()save.` للمخزن. إذا كان الكيان موجودا بالفعل ، يتم دمج التغييرات فيه. يتم تغيير الخصائص بشكل مباشر في معظم الحالات ، وذلك بفضل خاصية الـ setters التي تم إنشاؤها: @@ -287,9 +286,9 @@ transfer.from.unset() transfer.from = null ``` -يعمل هذا فقط مع الخصائص الاختيارية ، أي الخصائص التي تم التصريح عنها بدون `! ` في GraphQL. كمثالان `owner: Bytes` أو `amount: BigInt`. +يعمل هذا فقط مع الخصائص الاختيارية ، أي الخصائص التي تم التصريح عنها بدون `!` في GraphQL. كمثالان `owner: Bytes` أو `amount: BigInt`. -يعد تحديث خصائص المصفوفة أكثر تعقيدا ، حيث يؤدي الحصول على مصفوفة من كيان إلى إنشاء نسخة من تلك المصفوفة. هذا يعني أنه يجب تعيين خصائص المصفوفة مرة أخرى بشكل صريح بعد تغيير المصفوفة. التالي يفترض ` entity` به حقل `أرقام: [BigInt!]!`. +يعد تحديث خصائص المصفوفة أكثر تعقيدا ، حيث يؤدي الحصول على مصفوفة من كيان إلى إنشاء نسخة من تلك المصفوفة. هذا يعني أنه يجب تعيين خصائص المصفوفة مرة أخرى بشكل صريح بعد تغيير المصفوفة. التالي يفترض `entity` به حقل `أرقام: [BigInt!]!`. ```typescript // This won't work @@ -334,7 +333,7 @@ type Transfer @entity { } ``` -و توقيع الحدث `Transfer(address,address,uint256)` على Ethereum ، قيم ` from` ، ` to` و `amount` من النوع `address` و `address` و `uint256` يتم تحويلها إلى `Address` و `BigInt` ، مما يسمح بتمريرها إلى خصائص `!Bytes ` و `!BigInt ` للكيان `Transfer`: +و توقيع الحدث `Transfer(address,address,uint256)` على Ethereum ، قيم `from` ، `to` و `amount` من النوع `address` و `address` و `uint256` يتم تحويلها إلى `Address` و `BigInt` ، مما يسمح بتمريرها إلى خصائص `!Bytes` و `!BigInt` للكيان `Transfer`: ```typescript let id = event.transaction.hash.toHex() @@ -412,7 +411,7 @@ export function handleTransfer(event: Transfer) { } ``` -طالما أن `ERC20Contract` في الـ Ethereum له دالة عامة للقراءة فقط تسمى ` symbol` ، فيمكن استدعاؤها بـ `()symbol.`. بالنسبة لمتغيرات الحالة العامة ، يتم إنشاء method بنفس الاسم تلقائيا. +طالما أن `ERC20Contract` في الـ Ethereum له دالة عامة للقراءة فقط تسمى `symbol` ، فيمكن استدعاؤها بـ `()symbol.`. بالنسبة لمتغيرات الحالة العامة ، يتم إنشاء method بنفس الاسم تلقائيا. أي عقد آخر يمثل جزءا من الـ subgraph يمكن استيراده من الكود الذي تم انشاؤه ويمكن ربطه بعنوان صالح. @@ -553,7 +552,7 @@ export function handleSomeEvent(event: SomeEvent): void { import { ipfs } from '@graphprotocol/graph-ts' ``` -تقوم العقود الذكية أحيانا بإرساء ملفات IPFS على السلسلة. يسمح هذا للـ mappings بالحصول على IPFS hashes من العقد وقراءة الملفات المقابلة من IPFS. سيتم إرجاع بيانات الملف كـ ` Bytes` ، والتي تتطلب عادة مزيدا من المعالجة ، على سبيل المثال مع واجهة برمجة التطبيقات `json` الموثقة لاحقا في هذه الصفحة. +تقوم العقود الذكية أحيانا بإرساء ملفات IPFS على السلسلة. يسمح هذا للـ mappings بالحصول على IPFS hashes من العقد وقراءة الملفات المقابلة من IPFS. سيتم إرجاع بيانات الملف كـ `Bytes` ، والتي تتطلب عادة مزيدا من المعالجة ، على سبيل المثال مع واجهة برمجة التطبيقات `json` الموثقة لاحقا في هذه الصفحة. IPFS hash أو مسار معطى، تتم قراءة ملف من IPFS على النحو التالي: @@ -602,7 +601,7 @@ ipfs.mapJSON('Qm...', 'processItem', Value.fromString('parentId')) الـ flag الوحيد المدعوم حاليا هو `json` ، والذي يجب تمريره إلى `ipfs.map`. باستخدام flag الـ `json` ، يجب أن يتكون ملف IPFS من سلسلة من قيم JSON ، قيمة واحدة لكل سطر. سيؤدي استدعاء `ipfs.map` إلى قراءة كل سطر في الملف ، وإلغاء تسلسله إلى `JSONValue` واستدعاء الـ callback لكل منها. يمكن لـ callback بعد ذلك استخدام عمليات الكيان لتخزين البيانات من `JSONValue`. يتم تخزين تغييرات الكيان فقط عندما ينتهي المعالج الذي يسمى `ipfs.map` بنجاح ؛ في غضون ذلك ، يتم الاحتفاظ بها في الذاكرة ، وبالتالي يكون حجم الملف الذي يمكن لـ `ipfs.map` معالجته يكون محدودا. -عند النجاح ، يرجع `ipfs.map` ` بـ void`. إذا تسبب أي استدعاء لـ callback في حدوث خطأ ، فسيتم إحباط المعالج الذي استدعى `ipfs.map` ، ويتم وضع علامة على الـ subgraph على أنه فشل. +عند النجاح ، يرجع `ipfs.map` `بـ void`. إذا تسبب أي استدعاء لـ callback في حدوث خطأ ، فسيتم إحباط المعالج الذي استدعى `ipfs.map` ، ويتم وضع علامة على الـ subgraph على أنه فشل. ### Crypto API @@ -610,7 +609,7 @@ ipfs.mapJSON('Qm...', 'processItem', Value.fromString('parentId')) import { crypto } from '@graphprotocol/graph-ts' ``` -توفر واجهة برمجة تطبيقات ` crypto` دوال التشفير للاستخدام في mappings. الآن ، يوجد واحد فقط: +توفر واجهة برمجة تطبيقات `crypto` دوال التشفير للاستخدام في mappings. الآن ، يوجد واحد فقط: - `crypto.keccak256(input: ByteArray): ByteArray` @@ -636,7 +635,7 @@ if (value.kind == JSONValueKind.BOOL) { } ``` -بالإضافة إلى ذلك ، هناك method للتحقق مما إذا كانت القيمة ` null`: +بالإضافة إلى ذلك ، هناك method للتحقق مما إذا كانت القيمة `null`: - `value.isNull(): boolean` diff --git a/pages/ar/developer/assemblyscript-migration-guide.mdx b/pages/ar/developer/assemblyscript-migration-guide.mdx index d0eba1f9a31a..38ed98f0c53b 100644 --- a/pages/ar/developer/assemblyscript-migration-guide.mdx +++ b/pages/ar/developer/assemblyscript-migration-guide.mdx @@ -6,9 +6,9 @@ title: دليل ترحيل AssemblyScript سيمكن ذلك لمطوري ال Subgraph من استخدام مميزات أحدث للغة AS والمكتبة القياسية. -ينطبق هذا الدليل على أي شخص يستخدم `graph-cli`/`graph-ts` ادنى من الإصدار `0.22.0`. إذا كنت تستخدم بالفعل إصدارًا أعلى من (أو مساويًا) لذلك ، فأنت بالفعل تستخدم الإصدار ` 0.19.10 ` من AssemblyScript 🙂 +ينطبق هذا الدليل على أي شخص يستخدم `graph-cli`/`graph-ts` ادنى من الإصدار `0.22.0`. إذا كنت تستخدم بالفعل إصدارًا أعلى من (أو مساويًا) لذلك ، فأنت بالفعل تستخدم الإصدار `0.19.10` من AssemblyScript 🙂 -> ملاحظة: اعتبارًا من ` 0.24.0 ` ، يمكن أن يدعم ` grapg-node ` كلا الإصدارين ، اعتمادًا على ` apiVersion ` المحدد في Subgraph manifest. +> ملاحظة: اعتبارًا من `0.24.0` ، يمكن أن يدعم `grapg-node` كلا الإصدارين ، اعتمادًا على `apiVersion` المحدد في Subgraph manifest. ## مميزات @@ -35,7 +35,7 @@ title: دليل ترحيل AssemblyScript - `Math` دوال مثل `exp`, `exp2`, `log`, `log2` and `pow` تم استبدالها بمتغيرات أسرع ([v0.9.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.0)) - أكثر تحسينا `Math.mod` ([v0.17.1](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.1)) - Cache more field accesses in std Map and Set ([v0.17.8](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.8)) -- قم بتحسين قدرات اثنين في ` ipow32 / 64 ` ([ v0.18.2 ](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.2)) +- قم بتحسين قدرات اثنين في `ipow32 / 64` ([ v0.18.2 ](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.18.2)) ### آخر @@ -44,7 +44,7 @@ title: دليل ترحيل AssemblyScript ## كيف تقوم بالترقية؟ -1. تغيير ال Mappings الخاص بك ` apiVersion ` في ` subgraph.yaml ` إلى ` 0.0.6 `: +1. تغيير ال Mappings الخاص بك `apiVersion` في `subgraph.yaml` إلى `0.0.6`: ```yaml ... @@ -56,7 +56,7 @@ dataSources: ... ``` -2. قم بتحديث ` graph-cli ` الذي تستخدمه إلى ` أحدث إصدار ` عن طريق تشغيل: +2. قم بتحديث `graph-cli` الذي تستخدمه إلى `أحدث إصدار` عن طريق تشغيل: ```bash # if you have it globally installed @@ -66,14 +66,14 @@ npm install --global @graphprotocol/graph-cli@latest npm install --save-dev @graphprotocol/graph-cli@latest ``` -3. افعل الشيء نفسه مع ` graph-ts ` ، ولكن بدلاً من التثبيت بشكل عام ، احفظه في dependencies الرئيسية: +3. افعل الشيء نفسه مع `graph-ts` ، ولكن بدلاً من التثبيت بشكل عام ، احفظه في dependencies الرئيسية: ```bash npm install --save @graphprotocol/graph-ts@latest ``` 4. Follow the rest of the guide to fix the language breaking changes. -5. قم بتشغيل ` codegen ` و ` deploy` مرة أخرى. +5. قم بتشغيل `codegen` و `deploy` مرة أخرى. ## Breaking changes @@ -137,7 +137,7 @@ ERROR TS2322: Type '~lib/@graphprotocol/graph-ts/common/numbers/BigInt | null' i ~~~~ in src/mappings/file.ts(41,21) ``` -لحل المشكلة يمكنك ببساطة تغيير عبارة ` if ` إلى شيء مثل هذا: +لحل المشكلة يمكنك ببساطة تغيير عبارة `if` إلى شيء مثل هذا: ```typescript if (!decimals) { @@ -218,7 +218,7 @@ let bytes = new Bytes(2) changetype(bytes) // works :) ``` -إذا كنت تريد فقط إزالة nullability ، فيمكنك الاستمرار في استخدام ` as ` (أو `variable`) ، ولكن تأكد من أنك تعرف أن القيمة لا يمكن أن تكون خالية ، وإلا فإنه سوف ينكسر. +إذا كنت تريد فقط إزالة nullability ، فيمكنك الاستمرار في استخدام `as` (أو `variable`) ، ولكن تأكد من أنك تعرف أن القيمة لا يمكن أن تكون خالية ، وإلا فإنه سوف ينكسر. ```typescript // remove nullability @@ -242,7 +242,7 @@ let newBalance = new AccountBalance(balanceId) ### التحقق من Nullability مع الوصول الى الخاصية -لاستخدام [ مميزة التحقق من nullability ](https://www.assemblyscript.org/basics.html#nullability-checks) ، يمكنك استخدام عبارات ` if ` أو عامل التشغيل الثلاثي (`؟ ` and `: `) مثل هذا: +لاستخدام [ مميزة التحقق من nullability ](https://www.assemblyscript.org/basics.html#nullability-checks) ، يمكنك استخدام عبارات `if` أو عامل التشغيل الثلاثي (`؟` and `:`) مثل هذا: ```typescript let something: string | null = 'data' @@ -260,7 +260,7 @@ if (something) { } ``` -ومع ذلك ، فإن هذا لا يعمل إلا عند تنفيذ ` if ` / ternary على متغير ، وليس على خاصية الوصول ، مثل هذا: +ومع ذلك ، فإن هذا لا يعمل إلا عند تنفيذ `if` / ternary على متغير ، وليس على خاصية الوصول ، مثل هذا: ```typescript class Container { @@ -417,7 +417,7 @@ export class Something { } ``` -فإن المترجم سيخطئ لأنك ستحتاج إما إضافة مُهيئ للخصائص التي هي فئات ، أو إضافة عامل التشغيل `! `: +فإن المترجم سيخطئ لأنك ستحتاج إما إضافة مُهيئ للخصائص التي هي فئات ، أو إضافة عامل التشغيل `!`: ```typescript export class Something { @@ -443,7 +443,7 @@ export class Something { ### مخطط GraphQL -هذا ليس تغيير مباشرا ل AssemblyScript ، ولكن قد تحتاج إلى تحديث ملف ` schema.graphql ` الخاص بك. +هذا ليس تغيير مباشرا ل AssemblyScript ، ولكن قد تحتاج إلى تحديث ملف `schema.graphql` الخاص بك. الآن لم يعد بإمكانك تعريف الحقول في الأنواع الخاصة بك والتي هي قوائم Non-Nullable. إذا كان لديك مخطط مثل هذا: @@ -458,7 +458,7 @@ type MyEntity @entity { } ``` -سيتعين عليك إضافة `! ` لعضو من نوع القائمة ، مثل هذا: +سيتعين عليك إضافة `!` لعضو من نوع القائمة ، مثل هذا: ```graphql type Something @entity { @@ -478,7 +478,7 @@ type MyEntity @entity { - Aligned `Map#set` and `Set#add` with the spec, returning `this` ([v0.9.2](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.9.2)) - لم تعد المصفوفة ترث من ArrayBufferView ، لكنها أصبحت متميزة الآن ([ v0.10.0 ](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.0)) - Classes initialized from object literals can no longer define a constructor ([v0.10.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.10.0)) -- نتيجة العملية الثنائية ` ** ` هي الآن العدد الصحيح للمقام المشترك إذا كان كلا المعاملين عددًا صحيحًا. Previously, the result was a float as if calling `Math/f.pow` ([v0.11.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.11.0)) +- نتيجة العملية الثنائية `**` هي الآن العدد الصحيح للمقام المشترك إذا كان كلا المعاملين عددًا صحيحًا. Previously, the result was a float as if calling `Math/f.pow` ([v0.11.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.11.0)) - إجبار`NaN` إلى `false` عندما ال casting إلى`bool` ([v0.14.9](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.14.9)) - When shifting a small integer value of type `i8`/`u8` or `i16`/`u16`, only the 3 respectively 4 least significant bits of the RHS value affect the result, analogous to the result of an `i32.shl` only being affected by the 5 least significant bits of the RHS value. Example: `someI8 << 8` previously produced the value `0`, but now produces `someI8` due to masking the RHS as `8 & 7 = 0` (3 bits) ([v0.17.0](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.0)) - Bug fix of relational string comparisons when sizes differ ([v0.17.8](https://github.com/AssemblyScript/assemblyscript/releases/tag/v0.17.8)) diff --git a/pages/ar/developer/create-subgraph-hosted.mdx b/pages/ar/developer/create-subgraph-hosted.mdx index c95b98fdc85d..56aca0d2313e 100644 --- a/pages/ar/developer/create-subgraph-hosted.mdx +++ b/pages/ar/developer/create-subgraph-hosted.mdx @@ -4,7 +4,7 @@ title: إنشاء الـ Subgraph قبل التمكن من استخدام Graph CLI ، يلزمك إنشاء الـ subgraph الخاص بك في [ Subgraph Studio ](https://thegraph.com/studio). ستتمكن بعد ذلك من إعداد مشروع الـ subgraph الخاص بك ونشره على المنصة الي تختارها. لاحظ أنه لن يتم نشر ** الـ subgraphs التي لا تقوم بفهرسة mainnet لإيثريوم على شبكة The Graph **. -يمكن استخدام الأمر `graph init ` لإعداد مشروع subgraph جديد ، إما من عقد موجود على أي من شبكات Ethereum العامة ، أو من مثال subgraph. يمكن استخدام هذا الأمر لإنشاء subgraph في Subgraph Studio عن طريق تمرير `graph init --product subgraph-studio`. إذا كان لديك بالفعل عقد ذكي تم نشره على شبكة Ethereum mainnet أو إحدى شبكات testnets ، فإن تمهيد subgraph جديد من هذا العقد يمكن أن يكون طريقة جيدة للبدء. لكن أولا ، لنتحدث قليلا عن الشبكات التي يدعمها The Graph. +يمكن استخدام الأمر `graph init` لإعداد مشروع subgraph جديد ، إما من عقد موجود على أي من شبكات Ethereum العامة ، أو من مثال subgraph. يمكن استخدام هذا الأمر لإنشاء subgraph في Subgraph Studio عن طريق تمرير `graph init --product subgraph-studio`. إذا كان لديك بالفعل عقد ذكي تم نشره على شبكة Ethereum mainnet أو إحدى شبكات testnets ، فإن تمهيد subgraph جديد من هذا العقد يمكن أن يكون طريقة جيدة للبدء. لكن أولا ، لنتحدث قليلا عن الشبكات التي يدعمها The Graph. ## الشبكات المدعومة @@ -46,7 +46,7 @@ The Graph Network supports subgraphs indexing mainnet Ethereum: يعتمد Graph's Hosted Service على استقرار وموثوقية التقنيات الأساسية ، وهي نقاط JSON RPC endpoints. المتوفرة. سيتم تمييز الشبكات الأحدث على أنها في مرحلة beta حتى تثبت الشبكة نفسها من حيث الاستقرار والموثوقية وقابلية التوسع. خلال هذه الفترة beta ، هناك خطر حدوث عطل وسلوك غير متوقع. -تذكر أنك ** لن تكون قادرا ** على نشر subgraph يفهرس شبكة non-mainnet لـ شبكة Graph اللامركزية في [Subgraph Studio ](/ studio / subgraph-studio). +تذكر أنك ** لن تكون قادرا ** على نشر subgraph يفهرس شبكة non-mainnet لـ شبكة Graph اللامركزية في [Subgraph Studio](/studio/subgraph-studio). ## من عقد موجود @@ -71,13 +71,13 @@ graph init \ graph init --studio ``` -يعتمد مثال الـ subgraph على عقد Gravity بواسطة Dani Grant الذي يدير avatars للمستخدم ويصدر أحداث ` NewGravatar ` أو ` UpdateGravatar ` كلما تم إنشاء avatars أو تحديثها. يعالج الـ subgraph هذه الأحداث عن طريق كتابة كيانات ` Gravatar ` إلى مخزن Graph Node والتأكد من تحديثها وفقا للأحداث. ستنتقل الأقسام التالية إلى الملفات التي تشكل الـ subgraph manifest لهذا المثال. +يعتمد مثال الـ subgraph على عقد Gravity بواسطة Dani Grant الذي يدير avatars للمستخدم ويصدر أحداث `NewGravatar` أو `UpdateGravatar` كلما تم إنشاء avatars أو تحديثها. يعالج الـ subgraph هذه الأحداث عن طريق كتابة كيانات `Gravatar` إلى مخزن Graph Node والتأكد من تحديثها وفقا للأحداث. ستنتقل الأقسام التالية إلى الملفات التي تشكل الـ subgraph manifest لهذا المثال. ## The Subgraph Manifest Subgraph manifest `subgraph.yaml` تحدد العقود الذكية لفهارس الـ subgraph الخاص بك ، والأحداث من هذه العقود التي يجب الانتباه إليها ، وكيفية عمل map لبيانات الأحداث للكيانات التي تخزنها Graph Node وتسمح بالاستعلام عنها. يمكن العثور على المواصفات الكاملة لـ subgraph manifests [ هنا ](https://github.com/graphprotocol/graph-node/blob/master/docs/subgraph-manifest.md). -بالنسبة لمثال الـ subgraph ،يكون الـ ` subgraph.yaml `: +بالنسبة لمثال الـ subgraph ،يكون الـ `subgraph.yaml`: ```yaml specVersion: 0.0.4 @@ -120,7 +120,7 @@ dataSources: الإدخالات الهامة لتحديث manifest هي: -- ` description`: وصف يمكن قراءته لماهية الـ subgraph. يتم عرض هذا الوصف بواسطة Graph Explorer عند نشر الـ subgraph على الـ Hosted Service. +- `description`: وصف يمكن قراءته لماهية الـ subgraph. يتم عرض هذا الوصف بواسطة Graph Explorer عند نشر الـ subgraph على الـ Hosted Service. - `repository`: عنوان URL للمخزن حيث يمكن العثور على subgraph manifest. يتم أيضا عرض هذا بواسطة Graph Explorer. @@ -138,9 +138,9 @@ dataSources: - `dataSources.mapping.callHandlers`: lists the smart contract functions this subgraph reacts to and handlers in the mapping that transform the inputs and outputs to function calls into entities in the store. -- `dataSources.mapping.blockHandlers`: lists the blocks this subgraph reacts to and handlers in the mapping to run when a block is appended to the chain. بدون فلتر، سيتم تشغيل معالج الكتلة في كل كتلة. يمكن توفير فلتر اختياري مع الأنواع التالية: call`. سيعمل فلتر ` call` على تشغيل المعالج إذا كانت الكتلة تحتوي على استدعاء واحد على الأقل لعقد مصدر البيانات. +- `dataSources.mapping.blockHandlers`: lists the blocks this subgraph reacts to and handlers in the mapping to run when a block is appended to the chain. بدون فلتر، سيتم تشغيل معالج الكتلة في كل كتلة. يمكن توفير فلتر اختياري مع الأنواع التالية: call`. سيعمل فلتر` call` على تشغيل المعالج إذا كانت الكتلة تحتوي على استدعاء واحد على الأقل لعقد مصدر البيانات. -يمكن لـ subgraph واحد فهرسة البيانات من عقود ذكية متعددة. أضف إدخالا لكل عقد يجب فهرسة البيانات منه إلى مصفوفة ` dataSources `. +يمكن لـ subgraph واحد فهرسة البيانات من عقود ذكية متعددة. أضف إدخالا لكل عقد يجب فهرسة البيانات منه إلى مصفوفة `dataSources`. يتم ترتيب الـ triggers لمصدر البيانات داخل الكتلة باستخدام العملية التالية: @@ -155,22 +155,22 @@ dataSources: يجب أن تتطابق ملف (ملفات) ABI مع العقد (العقود) الخاصة بك. هناك عدة طرق للحصول على ملفات ABI: - إذا كنت تقوم ببناء مشروعك الخاص ، فمن المحتمل أن تتمكن من الوصول إلى أحدث ABIs. -- إذا كنت تقوم ببناء subgraph لمشروع عام ، فيمكنك تنزيل هذا المشروع على جهاز الكمبيوتر الخاص بك والحصول على ABI باستخدام [ ` truffle compile ` ](https://truffleframework.com/docs/truffle/overview) أو استخدام solc للترجمة. +- إذا كنت تقوم ببناء subgraph لمشروع عام ، فيمكنك تنزيل هذا المشروع على جهاز الكمبيوتر الخاص بك والحصول على ABI باستخدام [ `truffle compile` ](https://truffleframework.com/docs/truffle/overview) أو استخدام solc للترجمة. - يمكنك أيضا العثور على ABI على [ Etherscan ](https://etherscan.io/) ، ولكن هذا ليس موثوقا به دائما ، حيث قد يكون ABI الذي تم تحميله هناك قديما. تأكد من أن لديك ABI الصحيح ، وإلا فإن تشغيل الـ subgraph الخاص بك سيفشل. ## مخطط GraphQL -مخطط الـ subgraph الخاص بك موجود في الملف ` schema.graphql `. يتم تعريف مخططات GraphQL باستخدام لغة تعريف واجهة GraphQL. إذا لم تكتب مخطط GraphQL مطلقا ، فمن المستحسن أن تقوم بمراجعة هذا التمهيد على نظام نوع GraphQL. يمكن العثور على الوثائق المرجعية لمخططات GraphQL في قسم [ GraphQL API ](/developer/graphql-api). +مخطط الـ subgraph الخاص بك موجود في الملف `schema.graphql`. يتم تعريف مخططات GraphQL باستخدام لغة تعريف واجهة GraphQL. إذا لم تكتب مخطط GraphQL مطلقا ، فمن المستحسن أن تقوم بمراجعة هذا التمهيد على نظام نوع GraphQL. يمكن العثور على الوثائق المرجعية لمخططات GraphQL في قسم [ GraphQL API ](/developer/graphql-api). ## تعريف الكيانات قبل تعريف الكيانات ، من المهم التراجع والتفكير في كيفية هيكلة بياناتك وربطها. سيتم إجراء جميع الاستعلامات لنموذج البيانات المعرفة في مخطط الـ subgraph والكيانات المفهرسة بواسطة الـ subgraph. لهذا السبب ، من الجيد تعريف مخطط الـ subgraph بطريقة تتوافق مع احتياجات الـ dapp الخاص بك. قد يكون من المفيد تصور الكيانات على أنها "كائنات تحتوي على بيانات" ، وليس أحداثا أو دوال. -بواسطة The Graph ، يمكنك ببساطة تحديد أنواع الكيانات في ` schema.graphql ` ، وسيقوم Graph Node بإنشاء حقول المستوى الأعلى للاستعلام عن الـ instances الفردية والمجموعات من هذا النوع من الكيانات. كل نوع يجب أن يكون كيانا يكون مطلوبا للتعليق عليه باستخدام التوجيه `entity `. +بواسطة The Graph ، يمكنك ببساطة تحديد أنواع الكيانات في `schema.graphql` ، وسيقوم Graph Node بإنشاء حقول المستوى الأعلى للاستعلام عن الـ instances الفردية والمجموعات من هذا النوع من الكيانات. كل نوع يجب أن يكون كيانا يكون مطلوبا للتعليق عليه باستخدام التوجيه `entity`. ### مثال جيد -تم تنظيم الكيان ` Gravatar ` أدناه حول كائن Gravatar وهو مثال جيد لكيفية تعريف الكيان. +تم تنظيم الكيان `Gravatar` أدناه حول كائن Gravatar وهو مثال جيد لكيفية تعريف الكيان. ```graphql type Gravatar @entity { @@ -184,7 +184,7 @@ type Gravatar @entity { ### مثال سيئ -يستند مثالان الكيانات أدناه ` GravatarAccepted ` و ` GravatarDeclined ` إلى أحداث. لا يوصى بعمل map الأحداث أو استدعاءات الدوال للكيانات 1: 1. +يستند مثالان الكيانات أدناه `GravatarAccepted` و `GravatarDeclined` إلى أحداث. لا يوصى بعمل map الأحداث أو استدعاءات الدوال للكيانات 1: 1. ```graphql type GravatarAccepted @entity { @@ -210,7 +210,7 @@ type GravatarDeclined @entity { Null value resolved for non-null field 'name' ``` -يجب أن يكون لكل كيان حقل ` id` ، وهو من النوع ` ID!` (string). حقل `id` يقدم كمفتاح رئيسي ويجب أن يكون فريدا في كل الكيانات لنفس النوع. +يجب أن يكون لكل كيان حقل `id` ، وهو من النوع `ID!` (string). حقل `id` يقدم كمفتاح رئيسي ويجب أن يكون فريدا في كل الكيانات لنفس النوع. ### أنواع المقاييس المضمنة @@ -218,15 +218,15 @@ Null value resolved for non-null field 'name' ندعم المقاييس التالية في GraphQL API الخاصة بنا: -| النوع | الوصف | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Bytes` | مصفوفة Byte ، ممثلة كسلسلة سداسية عشرية. يشيع استخدامها في Ethereum hashes وعناوينه. | -| `ID` | يتم تخزينه كـ `string`. | -| `String` | لقيم ` string`. لا يتم دعم اNull ويتم إزالتها تلقائيا. | -| `Boolean` | لقيم `boolean`. | -| `Int` | GraphQL spec تعرف `Int` بحجم 32 بايت. | -| `BigInt` | أعداد صحيحة كبيرة. يستخدم لأنواع Ethereum ` uint32 ` ، ` int64 ` ، ` uint64 ` ، ... ، ` uint256 `. ملاحظة: كل شيء تحت ` uint32 ` ، مثل ` int32 ` أو ` uint24 ` أو ` int8 ` يتم تمثيله كـ ` i32 `. | -| `BigDecimal` | `BigDecimal` High precision decimals represented as a signficand and an exponent. يتراوح نطاق الأس من −6143 إلى +6144. مقربة إلى 34 رقما. | +| النوع | الوصف | +| --- | --- | +| `Bytes` | مصفوفة Byte ، ممثلة كسلسلة سداسية عشرية. يشيع استخدامها في Ethereum hashes وعناوينه. | +| `ID` | يتم تخزينه كـ `string`. | +| `String` | لقيم `string`. لا يتم دعم اNull ويتم إزالتها تلقائيا. | +| `Boolean` | لقيم `boolean`. | +| `Int` | GraphQL spec تعرف `Int` بحجم 32 بايت. | +| `BigInt` | أعداد صحيحة كبيرة. يستخدم لأنواع Ethereum `uint32` ، `int64` ، `uint64` ، ... ، `uint256`. ملاحظة: كل شيء تحت `uint32` ، مثل `int32` أو `uint24` أو `int8` يتم تمثيله كـ `i32`. | +| `BigDecimal` | `BigDecimal` High precision decimals represented as a signficand and an exponent. يتراوح نطاق الأس من −6143 إلى +6144. مقربة إلى 34 رقما. | #### Enums @@ -240,7 +240,7 @@ enum TokenStatus { } ``` -بمجرد تعريف الـ enum في المخطط ، يمكنك استخدام string لقيمة الـ enum لتعيين حقل الـ enum في الكيان. على سبيل المثال ، يمكنك تعيين ` tokenStatus ` إلى ` SecondOwner ` عن طريق تعريف الكيان أولا ثم تعيين الحقل بعد ذلك بـ `entity.tokenStatus = "SecondOwner`. يوضح المثال أدناه الشكل الذي سيبدو عليه كيان التوكن في حقل الـ enum: +بمجرد تعريف الـ enum في المخطط ، يمكنك استخدام string لقيمة الـ enum لتعيين حقل الـ enum في الكيان. على سبيل المثال ، يمكنك تعيين `tokenStatus` إلى `SecondOwner` عن طريق تعريف الكيان أولا ثم تعيين الحقل بعد ذلك بـ `entity.tokenStatus = "SecondOwner`. يوضح المثال أدناه الشكل الذي سيبدو عليه كيان التوكن في حقل الـ enum: يمكن العثور على مزيد من التفاصيل حول كتابة الـ enums في [GraphQL documentation](https://graphql.org/learn/schema/). @@ -252,7 +252,7 @@ enum TokenStatus { #### العلاقات واحد لواحد -عرف نوع كيان ` Transaction` بعلاقة فردية اختيارية مع نوع كيان ` TransactionReceipt `: +عرف نوع كيان `Transaction` بعلاقة فردية اختيارية مع نوع كيان `TransactionReceipt`: ```graphql type Transaction @entity { @@ -268,7 +268,7 @@ type TransactionReceipt @entity { #### علاقات واحد لمتعدد -عرف نوع كيان ` TokenBalance ` بعلاقة واحد لمتعدد المطلوبة مع نوع كيان Token: +عرف نوع كيان `TokenBalance` بعلاقة واحد لمتعدد المطلوبة مع نوع كيان Token: ```graphql type Token @entity { @@ -284,13 +284,13 @@ type TokenBalance @entity { #### البحث العكسي -يمكن تعريف البحث العكسي لكيان من خلال الحقل `derivedFrom `. يؤدي هذا إلى إنشاء حقل افتراضي للكيان الذي قد يتم الاستعلام عنه ولكن لا يمكن تعيينه يدويا من خلال الـ mappings API. بالأحرى، هو مشتق من العلاقة المعرفة للكيان الآخر. بالنسبة لمثل هذه العلاقات ، نادرا ما يكون من المنطقي تخزين جانبي العلاقة ، وسيكون أداء الفهرسة والاستعلام أفضل عندما يتم تخزين جانب واحد فقط ويتم اشتقاق الجانب الآخر. +يمكن تعريف البحث العكسي لكيان من خلال الحقل `derivedFrom`. يؤدي هذا إلى إنشاء حقل افتراضي للكيان الذي قد يتم الاستعلام عنه ولكن لا يمكن تعيينه يدويا من خلال الـ mappings API. بالأحرى، هو مشتق من العلاقة المعرفة للكيان الآخر. بالنسبة لمثل هذه العلاقات ، نادرا ما يكون من المنطقي تخزين جانبي العلاقة ، وسيكون أداء الفهرسة والاستعلام أفضل عندما يتم تخزين جانب واحد فقط ويتم اشتقاق الجانب الآخر. بالنسبة لعلاقات واحد_لمتعدد ، يجب دائما تخزين العلاقة في جانب "واحد" ، ويجب دائما اشتقاق جانب "المتعدد". سيؤدي تخزين العلاقة بهذه الطريقة ، بدلا من تخزين مجموعة من الكيانات على الجانب "متعدد" ، إلى أداء أفضل بشكل كبير لكل من فهرسة واستعلام الـ subgraph. بشكل عام ، يجب تجنب تخزين مصفوفات الكيانات. #### مثال -يمكننا إنشاء أرصدة لتوكن يمكن الوصول إليه من التوكن عن طريق اشتقاق حقل ` tokenBalances `: +يمكننا إنشاء أرصدة لتوكن يمكن الوصول إليه من التوكن عن طريق اشتقاق حقل `tokenBalances`: ```graphql type Token @entity { @@ -311,7 +311,7 @@ type TokenBalance @entity { #### مثال -عرف البحث العكسي من نوع كيان ` User` إلى نوع كيان ` Organization`. في المثال أدناه ، يتم تحقيق ذلك من خلال البحث عن خاصية` members ` من داخل كيان ` Organization `. في الاستعلامات ، سيتم حل حقل ` organizations` في ` User` من خلال البحث عن جميع كيانات ` Organization` التي تتضمن ID المستخدم. +عرف البحث العكسي من نوع كيان `User` إلى نوع كيان `Organization`. في المثال أدناه ، يتم تحقيق ذلك من خلال البحث عن خاصية`members` من داخل كيان `Organization`. في الاستعلامات ، سيتم حل حقل `organizations` في `User` من خلال البحث عن جميع كيانات `Organization` التي تتضمن ID المستخدم. ```graphql type Organization @entity { @@ -327,7 +327,7 @@ type User @entity { } ``` -هناك طريقة أكثر فاعلية لتخزين هذه العلاقة وهي من خلال جدول mapping يحتوي على إدخال واحد لكل زوج ` User` / ` Organization` بمخطط مثل +هناك طريقة أكثر فاعلية لتخزين هذه العلاقة وهي من خلال جدول mapping يحتوي على إدخال واحد لكل زوج `User` / `Organization` بمخطط مثل ```graphql type Organization @entity { @@ -368,7 +368,7 @@ query usersWithOrganizations { #### إضافة تعليقات إلى المخطط -وفقا لمواصفات GraphQL ، يمكن إضافة التعليقات فوق خاصيات كيان المخطط باستخدام الاقتباسات المزدوجة ` "" `. هذا موضح في المثال أدناه: +وفقا لمواصفات GraphQL ، يمكن إضافة التعليقات فوق خاصيات كيان المخطط باستخدام الاقتباسات المزدوجة `""`. هذا موضح في المثال أدناه: ```graphql type MyFirstEntity @entity { @@ -384,7 +384,7 @@ type MyFirstEntity @entity { تعريف استعلام النص الكامل يتضمن اسم الاستعلام وقاموس اللغة المستخدم لمعالجة حقول النص وخوارزمية الترتيب المستخدمة لترتيب النتائج والحقول المضمنة في البحث. كل استعلام نص كامل قد يمتد إلى عدة حقول ، ولكن يجب أن تكون جميع الحقول المضمنة من نوع كيان واحد. -لإضافة استعلام نص كامل ، قم بتضمين نوع ` _Schema_ ` مع نص كامل موجه في مخطط GraphQL. +لإضافة استعلام نص كامل ، قم بتضمين نوع `_Schema_` مع نص كامل موجه في مخطط GraphQL. ```graphql type _Schema_ @@ -407,7 +407,7 @@ type Band @entity { } ``` -يمكن استخدام حقل المثال ` bandSearch ` في الاستعلامات لفلترة كيانات ` Band ` استنادا إلى المستندات النصية في الـ ` name ` ، ` description` و ` bio `. انتقل إلى [GraphQL API - Queries](/developer/graphql-api#queries) للحصول على وصف لـ API بحث النص الكامل ولمزيد من الأمثلة المستخدمة. +يمكن استخدام حقل المثال `bandSearch` في الاستعلامات لفلترة كيانات `Band` استنادا إلى المستندات النصية في الـ `name` ، `description` و `bio`. انتقل إلى [GraphQL API - Queries](/developer/graphql-api#queries) للحصول على وصف لـ API بحث النص الكامل ولمزيد من الأمثلة المستخدمة. ```graphql query { @@ -420,7 +420,7 @@ query { } ``` -> ** [ إدارة الميزات ](#experimental-features): ** من ` specVersion ` ` 0.0.4 ` وما بعده ، يجب الإعلان عن ` fullTextSearch ` ضمن قسم ` features ` في the subgraph manifest. +> ** [ إدارة الميزات ](#experimental-features): ** من `specVersion` `0.0.4` وما بعده ، يجب الإعلان عن `fullTextSearch` ضمن قسم `features` في the subgraph manifest. ### اللغات المدعومة @@ -458,11 +458,11 @@ query { ## كتابة الـ Mappings -The mappings transform the Ethereum data your mappings are sourcing into entities defined in your schema. تتم كتابة الـ Mappings في مجموعة فرعية من [ TypeScript ](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) تسمى [AssemblyScript ](https: //github.com/AssemblyScript/assemblyscript/wiki) والتي يمكن ترجمتها إلى WASM ([ WebAssembly ](https://webassembly.org/)). يعتبر AssemblyScript أكثر صرامة من TypeScript العادي ، ولكنه يوفر تركيبا مألوفا. +The mappings transform the Ethereum data your mappings are sourcing into entities defined in your schema. تتم كتابة الـ Mappings في مجموعة فرعية من [ TypeScript ](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) تسمى \[AssemblyScript \](https://github.com/AssemblyScript/assemblyscript/wiki) والتي يمكن ترجمتها إلى WASM ([ WebAssembly ](https://webassembly.org/)). يعتبر AssemblyScript أكثر صرامة من TypeScript العادي ، ولكنه يوفر تركيبا مألوفا. -لكل معالج حدث تم تعريفه في ` subgraph.yaml ` ضمن ` mapping.eventHandlers ` ، قم بإنشاء دالة صادرة بنفس الاسم. يجب أن يقبل كل معالج بارمترا واحدا يسمى ` event ` بنوع مطابق لاسم الحدث الذي تتم معالجته. +لكل معالج حدث تم تعريفه في `subgraph.yaml` ضمن `mapping.eventHandlers` ، قم بإنشاء دالة صادرة بنفس الاسم. يجب أن يقبل كل معالج بارمترا واحدا يسمى `event` بنوع مطابق لاسم الحدث الذي تتم معالجته. -في مثال الـ subgraph ، يحتوي ` src / mapping.ts ` على معالجات لأحداث ` NewGravatar ` و ` UpdatedGravatar `: +في مثال الـ subgraph ، يحتوي `src / mapping.ts` على معالجات لأحداث `NewGravatar` و `UpdatedGravatar`: ```javascript import { NewGravatar, UpdatedGravatar } from '../generated/Gravity/Gravity' @@ -489,13 +489,13 @@ export function handleUpdatedGravatar(event: UpdatedGravatar): void { } ``` -يأخذ المعالج الأول حدث ` NewGravatar ` وينشئ كيان ` Gravatar ` جديد بـ ` new Gravatar (event.params.id.toHex ()) ` ،مالئا حقول الكيان باستخدام بارامترات الحدث المقابلة. يتم تمثيل instance الكيان بالمتغير ` gravatar ` ، مع قيمة معرف `()event.params.id.toHex `. +يأخذ المعالج الأول حدث `NewGravatar` وينشئ كيان `Gravatar` جديد بـ `new Gravatar (event.params.id.toHex ())` ،مالئا حقول الكيان باستخدام بارامترات الحدث المقابلة. يتم تمثيل instance الكيان بالمتغير `gravatar` ، مع قيمة معرف `()event.params.id.toHex`. -يحاول المعالج الثاني تحميل ` Gravatar ` الموجود من مخزن Graph Node. إذا لم يكن موجودا بعد ، فإنه يتم إنشاؤه عند الطلب. يتم بعد ذلك تحديث الكيان لمطابقة بارامترات الحدث الجديدة ، قبل حفظه مرة أخرى في المخزن باستخدام ` ()gravatar.save `. +يحاول المعالج الثاني تحميل `Gravatar` الموجود من مخزن Graph Node. إذا لم يكن موجودا بعد ، فإنه يتم إنشاؤه عند الطلب. يتم بعد ذلك تحديث الكيان لمطابقة بارامترات الحدث الجديدة ، قبل حفظه مرة أخرى في المخزن باستخدام `()gravatar.save`. ### الـ IDs الموصى بها لإنشاء كيانات جديدة -يجب أن يكون لكل كيان ` id` فريدا بين جميع الكيانات من نفس النوع. يتم تعيين قيمة ` id ` للكيان عند إنشاء الكيان. فيما يلي بعض قيم ` id ` الموصى بها التي يجب مراعاتها عند إنشاء كيانات جديدة. ملاحظة: قيمة ` id `يجب أن تكون `string`. +يجب أن يكون لكل كيان `id` فريدا بين جميع الكيانات من نفس النوع. يتم تعيين قيمة `id` للكيان عند إنشاء الكيان. فيما يلي بعض قيم `id` الموصى بها التي يجب مراعاتها عند إنشاء كيانات جديدة. ملاحظة: قيمة `id`يجب أن تكون `string`. - `event.params.id.toHex()` - `event.transaction.from.toHex()` @@ -513,7 +513,7 @@ export function handleUpdatedGravatar(event: UpdatedGravatar): void { graph codegen [--output-dir ] [] ``` -ولكن في معظم الحالات ، تكون الـ subgraphs مهيأة مسبقا بالفعل عبر ` package.json ` للسماح لك ببساطة بتشغيل واحد مما يلي لتحقيق نفس الشيء: +ولكن في معظم الحالات ، تكون الـ subgraphs مهيأة مسبقا بالفعل عبر `package.json` للسماح لك ببساطة بتشغيل واحد مما يلي لتحقيق نفس الشيء: ```sh # Yarn @@ -523,7 +523,7 @@ yarn codegen npm run codegen ``` -سيؤدي هذا إلى إنشاء فئة AssemblyScript لكل عقد ذكي في ملفات ABI المذكورة في ` subgraph.yaml ` ، مما يسمح لك بربط هذه العقود بعناوين محددة في الـ mappings واستدعاء methods العقد للكتلة التي تتم معالجتها. وستنشئ أيضا فئة لكل حدث للعقد لتوفير وصول سهل إلى بارامترات الحدث بالإضافة إلى الكتلة والإجراء التي نشأ منها الحدث. كل هذه الأنواع تكتب إلى `//.ts`. في مثال الـ subgraph ، سيكون هذا `generated/Gravity/Gravity.ts`,مما يسمح للـ mappings باستيراد هذه الأنواع باستخدام +سيؤدي هذا إلى إنشاء فئة AssemblyScript لكل عقد ذكي في ملفات ABI المذكورة في `subgraph.yaml` ، مما يسمح لك بربط هذه العقود بعناوين محددة في الـ mappings واستدعاء methods العقد للكتلة التي تتم معالجتها. وستنشئ أيضا فئة لكل حدث للعقد لتوفير وصول سهل إلى بارامترات الحدث بالإضافة إلى الكتلة والإجراء التي نشأ منها الحدث. كل هذه الأنواع تكتب إلى `//.ts`. في مثال الـ subgraph ، سيكون هذا `generated/Gravity/Gravity.ts`,مما يسمح للـ mappings باستيراد هذه الأنواع باستخدام ```javascript import { @@ -578,7 +578,7 @@ dataSources: ### قوالب مصدر البيانات للعقود التي تم إنشاؤها ديناميكيا -بعد ذلك ، أضف _ قوالب مصدر البيانات _ إلى الـ manifest. وهي متطابقة مع مصادر البيانات العادية ، باستثناء أنها تفتقر إلى عنوان عقد معرف مسبقا تحت ` source `. عادة ، يمكنك تعريف قالب واحد لكل نوع من أنواع العقود الفرعية المدارة أو المشار إليها بواسطة العقد الأصلي. +بعد ذلك ، أضف _ قوالب مصدر البيانات _ إلى الـ manifest. وهي متطابقة مع مصادر البيانات العادية ، باستثناء أنها تفتقر إلى عنوان عقد معرف مسبقا تحت `source`. عادة ، يمكنك تعريف قالب واحد لكل نوع من أنواع العقود الفرعية المدارة أو المشار إليها بواسطة العقد الأصلي. ```yaml dataSources: @@ -614,7 +614,7 @@ templates: ### إنشاء قالب مصدر البيانات -في الخطوة الأخيرة ، تقوم بتحديث mapping عقدك الرئيسي لإنشاء instance لمصدر بيانات ديناميكي من أحد القوالب. في هذا المثال ، يمكنك تغيير mapping العقد الرئيسي لاستيراد قالب ` Exchange ` واستدعاء method الـ`Exchange.create(address)` لبدء فهرسة عقد التبادل الجديد. +في الخطوة الأخيرة ، تقوم بتحديث mapping عقدك الرئيسي لإنشاء instance لمصدر بيانات ديناميكي من أحد القوالب. في هذا المثال ، يمكنك تغيير mapping العقد الرئيسي لاستيراد قالب `Exchange` واستدعاء method الـ`Exchange.create(address)` لبدء فهرسة عقد التبادل الجديد. ```typescript import { Exchange } from '../generated/templates' @@ -627,12 +627,12 @@ export function handleNewExchange(event: NewExchange): void { ``` > ** ملاحظة: ** مصدر البيانات الجديد سيعالج فقط الاستدعاءات والأحداث للكتلة التي تم إنشاؤها فيه وجميع الكتل التالية ، ولكنه لن يعالج البيانات التاريخية ، أي البيانات الموجودة في الكتل السابقة. -> +> > إذا كانت الكتل السابقة تحتوي على بيانات ذات صلة بمصدر البيانات الجديد ، فمن الأفضل فهرسة تلك البيانات من خلال قراءة الحالة الحالية للعقد وإنشاء كيانات تمثل تلك الحالة في وقت إنشاء مصدر البيانات الجديد. ### سياق مصدر البيانات -تسمح سياقات مصدر البيانات بتمرير تكوين إضافي عند عمل instantiating للقالب. في مثالنا ، لنفترض أن التبادلات مرتبطة بزوج تداول معين ، والذي تم تضمينه في حدث ` NewExchange `. That information can be passed into the instantiated data source, like so: +تسمح سياقات مصدر البيانات بتمرير تكوين إضافي عند عمل instantiating للقالب. في مثالنا ، لنفترض أن التبادلات مرتبطة بزوج تداول معين ، والذي تم تضمينه في حدث `NewExchange`. That information can be passed into the instantiated data source, like so: ```typescript import { Exchange } from '../generated/templates' @@ -644,7 +644,7 @@ export function handleNewExchange(event: NewExchange): void { } ``` -داخل mapping قالب ` Exchange ` ، يمكن الوصول إلى السياق بعد ذلك: +داخل mapping قالب `Exchange` ، يمكن الوصول إلى السياق بعد ذلك: ```typescript import { dataSource } from '@graphprotocol/graph-ts' @@ -653,11 +653,11 @@ let context = dataSource.context() let tradingPair = context.getString('tradingPair') ``` -هناك setters و getters مثل ` setString ` و ` getString ` لجميع أنواع القيم. +هناك setters و getters مثل `setString` و `getString` لجميع أنواع القيم. ## Start Blocks -يعد ` startBlock ` إعدادا اختياريا يسمح لك بتحديد كتلة في السلسلة والتي سيبدأ مصدر البيانات بالفهرسة. تعيين كتلة البدء يسمح لمصدر البيانات بتخطي الملايين من الكتل التي ربما ليست ذات صلة. عادةً ما يقوم مطور الرسم البياني الفرعي بتعيين ` startBlock ` إلى الكتلة التي تم فيها إنشاء العقد الذكي لمصدر البيانات. +يعد `startBlock` إعدادا اختياريا يسمح لك بتحديد كتلة في السلسلة والتي سيبدأ مصدر البيانات بالفهرسة. تعيين كتلة البدء يسمح لمصدر البيانات بتخطي الملايين من الكتل التي ربما ليست ذات صلة. عادةً ما يقوم مطور الرسم البياني الفرعي بتعيين `startBlock` إلى الكتلة التي تم فيها إنشاء العقد الذكي لمصدر البيانات. ```yaml dataSources: @@ -684,7 +684,7 @@ dataSources: ``` > ** ملاحظة: ** يمكن البحث عن كتلة إنشاء العقد بسرعة على Etherscan: -> +> > 1. ابحث عن العقد بإدخال عنوانه في شريط البحث. > 2. انقر فوق hash إجراء الإنشاء في قسم `Contract Creator`. > 3. قم بتحميل صفحة تفاصيل الإجراء حيث ستجد كتلة البدء لذلك العقد. @@ -699,7 +699,7 @@ dataSources: ### تعريف معالج الاستدعاء -لتعريف معالج استدعاء في الـ manifest الخاص بك ، ما عليك سوى إضافة مصفوفة ` callHandlers ` أسفل مصدر البيانات الذي ترغب في الاشتراك فيه. +لتعريف معالج استدعاء في الـ manifest الخاص بك ، ما عليك سوى إضافة مصفوفة `callHandlers` أسفل مصدر البيانات الذي ترغب في الاشتراك فيه. ```yaml dataSources: @@ -728,7 +728,7 @@ dataSources: ### دالة الـ Mapping -كل معالج استدعاء يأخذ بارامترا واحدا له نوع يتوافق مع اسم الدالة التي تم استدعاؤها. في مثال الـ subgraph أعلاه ، يحتوي الـ mapping على معالج عندما يتم استدعاء الدالة ` createGravatar ` ويتلقى البارامتر ` CreateGravatarCall ` كـ argument: +كل معالج استدعاء يأخذ بارامترا واحدا له نوع يتوافق مع اسم الدالة التي تم استدعاؤها. في مثال الـ subgraph أعلاه ، يحتوي الـ mapping على معالج عندما يتم استدعاء الدالة `createGravatar` ويتلقى البارامتر `CreateGravatarCall` كـ argument: ```typescript import { CreateGravatarCall } from '../generated/Gravity/Gravity' @@ -743,7 +743,7 @@ export function handleCreateGravatar(call: CreateGravatarCall): void { } ``` -الدالة ` handleCreateGravatar ` تأخذ ` CreateGravatarCall ` جديد وهو فئة فرعية من`ethereum.Call`, ، مقدم بواسطة `graphprotocol/graph-ts@`, والذي يتضمن المدخلات والمخرجات المكتوبة للاستدعاء. يتم إنشاء النوع ` CreateGravatarCall ` من أجلك عندما تشغل`graph codegen`. +الدالة `handleCreateGravatar` تأخذ `CreateGravatarCall` جديد وهو فئة فرعية من`ethereum.Call`, ، مقدم بواسطة `graphprotocol/graph-ts@`, والذي يتضمن المدخلات والمخرجات المكتوبة للاستدعاء. يتم إنشاء النوع `CreateGravatarCall` من أجلك عندما تشغل`graph codegen`. ## معالجات الكتلة @@ -814,7 +814,7 @@ eventHandlers: ## الميزات التجريبية -بدءًا من ` specVersion ` ` 0.0.4 ` ، يجب الإعلان صراحة عن ميزات الـ subgraph في قسم `features` في المستوى العلوي من ملف الـ manifest ، باستخدام اسم `camelCase` الخاص بهم ، كما هو موضح في الجدول أدناه: +بدءًا من `specVersion` `0.0.4` ، يجب الإعلان صراحة عن ميزات الـ subgraph في قسم `features` في المستوى العلوي من ملف الـ manifest ، باستخدام اسم `camelCase` الخاص بهم ، كما هو موضح في الجدول أدناه: | الميزة | الاسم | | ----------------------------------------------------- | ------------------------- | @@ -840,13 +840,13 @@ dataSources: ... حالة الاستخدام الشائعة لدمج IPFS مع Ethereum هي تخزين البيانات على IPFS التي ستكون مكلفة للغاية للحفاظ عليها في السلسلة ، والإشارة إلى IPFS hash في عقود Ethereum. -بالنظر إلى IPFS hashes هذه ، يمكن لـ subgraphs قراءة الملفات المقابلة من IPFS باستخدام ` ipfs.cat ` و ` ipfs.map `. للقيام بذلك بشكل موثوق ، من الضروري أن يتم تثبيت هذه الملفات على عقدة IPFS التي تتصل بها Graph Node التي تقوم بفهرسة الـ subgraph. في حالة [hosted service](https://thegraph.com/hosted-service),يكون هذا [https://api.thegraph.com/ipfs/](https://api.thegraph.com/ipfs/). +بالنظر إلى IPFS hashes هذه ، يمكن لـ subgraphs قراءة الملفات المقابلة من IPFS باستخدام `ipfs.cat` و `ipfs.map`. للقيام بذلك بشكل موثوق ، من الضروري أن يتم تثبيت هذه الملفات على عقدة IPFS التي تتصل بها Graph Node التي تقوم بفهرسة الـ subgraph. في حالة [hosted service](https://thegraph.com/hosted-service),يكون هذا [https://api.thegraph.com/ipfs/](https://api.thegraph.com/ipfs/). -> ** ملاحظة: ** لا تدعم شبكة Graph حتى الآن ` ipfs.cat ` و ` ipfs.map ` ، ويجب على المطورين عدم النشر الـ subgraphs للشبكة باستخدام تلك الوظيفة عبر الـ Studio. +> ** ملاحظة: ** لا تدعم شبكة Graph حتى الآن `ipfs.cat` و `ipfs.map` ، ويجب على المطورين عدم النشر الـ subgraphs للشبكة باستخدام تلك الوظيفة عبر الـ Studio. من أجل تسهيل ذلك على مطوري الـ subgraph ، فريق Graph كتب أداة لنقل الملفات من عقدة IPFS إلى أخرى ، تسمى [ ipfs-sync ](https://github.com/graphprotocol/ipfs-sync). -> **[إدارة الميزات](#experimental-features):** يجب الإعلان عن ` ipfsOnEthereumContracts ` ضمن `features` في subgraph manifest. +> **[إدارة الميزات](#experimental-features):** يجب الإعلان عن `ipfsOnEthereumContracts` ضمن `features` في subgraph manifest. ### أخطاء غير فادحة @@ -864,7 +864,7 @@ features: ... ``` -يجب أن يتضمن الاستعلام أيضا الاستعلام عن البيانات ذات التناقضات المحتملة من خلال الوسيطة ` subgraphError `. يوصى أيضا بالاستعلام عن ` _meta ` للتحقق مما إذا كان الـ subgraph قد تخطى الأخطاء ، كما في المثال: +يجب أن يتضمن الاستعلام أيضا الاستعلام عن البيانات ذات التناقضات المحتملة من خلال الوسيطة `subgraphError`. يوصى أيضا بالاستعلام عن `_meta` للتحقق مما إذا كان الـ subgraph قد تخطى الأخطاء ، كما في المثال: ```graphql foos(first: 100, subgraphError: allow) { @@ -876,7 +876,7 @@ _meta { } ``` -إذا واجه الـ subgraph خطأ فسيرجع هذا الاستعلام كلا من البيانات وخطأ الـ graphql ضمن رسالة ` "indexing_error" ` ، كما في مثال الاستجابة هذا: +إذا واجه الـ subgraph خطأ فسيرجع هذا الاستعلام كلا من البيانات وخطأ الـ graphql ضمن رسالة `"indexing_error"` ، كما في مثال الاستجابة هذا: ```graphql "data": { @@ -898,11 +898,11 @@ _meta { ### Grafting onto Existing Subgraphs -عندما يتم نشر الـ subgraph لأول مرة ، فإنه يبدأ في فهرسة الأحداث من كتلة نشوء السلسلة المتوافقة (أو من ` startBlock ` المعرفة مع كل مصدر بيانات) في بعض الحالات ، يكون من المفيد إعادة استخدام البيانات من subgraph موجود وبدء الفهرسة من كتلة لاحقة. يسمى هذا الوضع من الفهرسة بـ _Grafting_. Grafting ، على سبيل المثال ، مفيد أثناء التطوير لتجاوز الأخطاء البسيطة بسرعة في الـ mappings ، أو للحصول مؤقتا على subgraph موجود يعمل مرة أخرى بعد فشله. +عندما يتم نشر الـ subgraph لأول مرة ، فإنه يبدأ في فهرسة الأحداث من كتلة نشوء السلسلة المتوافقة (أو من `startBlock` المعرفة مع كل مصدر بيانات) في بعض الحالات ، يكون من المفيد إعادة استخدام البيانات من subgraph موجود وبدء الفهرسة من كتلة لاحقة. يسمى هذا الوضع من الفهرسة بـ _Grafting_. Grafting ، على سبيل المثال ، مفيد أثناء التطوير لتجاوز الأخطاء البسيطة بسرعة في الـ mappings ، أو للحصول مؤقتا على subgraph موجود يعمل مرة أخرى بعد فشله. > ** ملاحظة: ** الـ Grafting يتطلب أن المفهرس قد فهرس الـ subgraph الأساسي. لا يوصى باستخدامه على شبكة The Graph في الوقت الحالي ، ولا ينبغي للمطورين نشر الـ subgraphs على الشبكة باستخدام تلك الوظيفة عبر الـ Studio. -يتم عمل Grafte لـ subgraph في الـ subgraph الأساسي عندما يحتوي الـ subgraph manifest في ` subgraph.yaml ` على كتلة ` graft ` في المستوى العلوي: +يتم عمل Grafte لـ subgraph في الـ subgraph الأساسي عندما يحتوي الـ subgraph manifest في `subgraph.yaml` على كتلة `graft` في المستوى العلوي: ```yaml description: ... @@ -911,7 +911,7 @@ graft: block: 7345624 # Block number ``` -عندما يتم نشر subgraph يحتوي الـ manifest على كتلة ` graft ` ، فإن Graph Node سوف تنسخ بيانات ` base ` subgraph بما في ذلك الـ ` block ` المعطى ثم يتابع فهرسة الـ subgraph الجديد من تلك الكتلة. يجب أن يوجد الـ subgraph الأساسي في instance الـ Graph Node المستهدف ويجب أن يكون قد تمت فهرسته حتى الكتلة المحددة على الأقل. بسبب هذا التقييد ، يجب استخدام الـ grafting فقط أثناء التطوير أو أثناء الطوارئ لتسريع إنتاج non-grafted subgraph مكافئ. +عندما يتم نشر subgraph يحتوي الـ manifest على كتلة `graft` ، فإن Graph Node سوف تنسخ بيانات `base` subgraph بما في ذلك الـ `block` المعطى ثم يتابع فهرسة الـ subgraph الجديد من تلك الكتلة. يجب أن يوجد الـ subgraph الأساسي في instance الـ Graph Node المستهدف ويجب أن يكون قد تمت فهرسته حتى الكتلة المحددة على الأقل. بسبب هذا التقييد ، يجب استخدام الـ grafting فقط أثناء التطوير أو أثناء الطوارئ لتسريع إنتاج non-grafted subgraph مكافئ. Because grafting copies rather than indexes base data it is much quicker in getting the subgraph to the desired block than indexing from scratch, though the initial data copy can still take several hours for very large subgraphs. أثناء تهيئة الـ grafted subgraph ، سيقوم الـ Graph Node بتسجيل المعلومات حول أنواع الكيانات التي تم نسخها بالفعل. @@ -925,4 +925,4 @@ Because grafting copies rather than indexes base data it is much quicker in gett - يضيف أو يزيل الواجهات - It changes for which entity types an interface is implemented -> **[إدارة الميزات](#experimental-features):**يجب الإعلان عن ` التطعيم ` ضمن `features` في subgraph manifest. +> **[إدارة الميزات](#experimental-features):**يجب الإعلان عن `التطعيم` ضمن `features` في subgraph manifest. diff --git a/pages/ar/developer/define-subgraph-hosted.mdx b/pages/ar/developer/define-subgraph-hosted.mdx index c4ec3a65d2e0..5b6e87beb774 100644 --- a/pages/ar/developer/define-subgraph-hosted.mdx +++ b/pages/ar/developer/define-subgraph-hosted.mdx @@ -8,9 +8,9 @@ title: تعريف Subgraph يتكون تعريف Subgraph من عدة ملفات: -- `Subgraph.yaml `ملف YAML يحتوي على Subgraph manifest +- `Subgraph.yaml`ملف YAML يحتوي على Subgraph manifest -- ` schema.graphql `: مخطط GraphQL يحدد البيانات المخزنة في Subgraph وكيفية الاستعلام عنها عبر GraphQL +- `schema.graphql`: مخطط GraphQL يحدد البيانات المخزنة في Subgraph وكيفية الاستعلام عنها عبر GraphQL - `AssemblyScript Mappings`: [AssemblyScript](https://github.com/AssemblyScript/assemblyscript) code that translates from the event data to the entities defined in your schema (e.g. `mapping.ts` in this tutorial) @@ -20,7 +20,7 @@ title: تعريف Subgraph تمت كتابة Graph CLI بلغة JavaScript ، وستحتاج إلى تثبيتها أيضًا `yarn` or `npm` لتستخدمها؛ من المفترض أن يكون لديك yarn فيما يلي. -بمجرد حصولك على ` yarn ` ، قم بتثبيت Graph CLI عن طريق التشغيل +بمجرد حصولك على `yarn` ، قم بتثبيت Graph CLI عن طريق التشغيل **التثبيت بواسطة yarn:** diff --git a/pages/ar/developer/developer-faq.mdx b/pages/ar/developer/developer-faq.mdx index 1f0a5cbd6f81..670d557c121c 100644 --- a/pages/ar/developer/developer-faq.mdx +++ b/pages/ar/developer/developer-faq.mdx @@ -42,11 +42,11 @@ docker pull graphprotocol/graph-node:latest ### 8. كيف يمكنني استدعاء دالة العقد أو الوصول إلى متغير الحالة العامة من Subgraph mappings الخاصة بي؟ -ألقِ نظرة على حالة ` الوصول إلى العقد الذكي ` داخل القسم [ AssemblyScript API ](/developer/assemblyscript-api). +ألقِ نظرة على حالة `الوصول إلى العقد الذكي` داخل القسم [ AssemblyScript API ](/developer/assemblyscript-api). -### 9. هل من الممكن إنشاء Subgraph باستخدام`graph init` from `graph-cli`بعقدين؟ أو هل يجب علي إضافة مصدر بيانات آخر يدويًا في ` subgraph.yaml ` بعد تشغيل ` graph init `؟ +### 9. هل من الممكن إنشاء Subgraph باستخدام`graph init` from `graph-cli`بعقدين؟ أو هل يجب علي إضافة مصدر بيانات آخر يدويًا في `subgraph.yaml` بعد تشغيل `graph init`؟ -للأسف هذا غير ممكن حاليا. الغرض من ` graph init ` هو أن تكون نقطة بداية أساسية حيث يمكنك من خلالها إضافة المزيد من مصادر البيانات يدويًا. +للأسف هذا غير ممكن حاليا. الغرض من `graph init` هو أن تكون نقطة بداية أساسية حيث يمكنك من خلالها إضافة المزيد من مصادر البيانات يدويًا. ### 10. أرغب في المساهمة أو إضافة مشكلة GitHub ، أين يمكنني العثور على مستودعات مفتوحة المصدر؟ @@ -56,7 +56,7 @@ docker pull graphprotocol/graph-node:latest ### 11. ما هي الطريقة الموصى بها لإنشاء معرفات "تلقائية" لكيان عند معالجة الأحداث؟ -إذا تم إنشاء كيان واحد فقط أثناء الحدث ولم يكن هناك أي شيء متاح بشكل أفضل ، فسيكون hash الإجراء + فهرس السجل فريدا. يمكنك تشويشها عن طريق تحويلها إلى Bytes ثم تمريرها عبر ` crypto.keccak256 ` ولكن هذا لن يجعلها فريدة من نوعها. +إذا تم إنشاء كيان واحد فقط أثناء الحدث ولم يكن هناك أي شيء متاح بشكل أفضل ، فسيكون hash الإجراء + فهرس السجل فريدا. يمكنك تشويشها عن طريق تحويلها إلى Bytes ثم تمريرها عبر `crypto.keccak256` ولكن هذا لن يجعلها فريدة من نوعها. ### 12. عند الاستماع إلى عدة عقود ، هل من الممكن تحديد أمر العقد للاستماع إلى الأحداث؟ @@ -64,7 +64,7 @@ docker pull graphprotocol/graph-node:latest ### 13. هل من الممكن التفريق بين الشبكات (mainnet، Kovan، Ropsten، local) من داخل معالجات الأحداث؟ -نعم. يمكنك القيام بذلك عن طريق استيراد ` graph-ts ` كما في المثال أدناه: +نعم. يمكنك القيام بذلك عن طريق استيراد `graph-ts` كما في المثال أدناه: ```javascript import { dataSource } from '@graphprotocol/graph-ts' @@ -75,7 +75,7 @@ dataSource.address() ### 14. هل تدعم معالجات الكتل والإستدعاء على Rinkeby؟ -في Rinkeby ، ندعم معالجات الكتل ، لكن بدون ` filter: call `. معالجات الاستدعاء غير مدعومة في الوقت الحالي. +في Rinkeby ، ندعم معالجات الكتل ، لكن بدون `filter: call`. معالجات الاستدعاء غير مدعومة في الوقت الحالي. ### 15. هل يمكنني استيراد ethers.js أو مكتبات JS الأخرى إلى ال Subgraph mappings الخاصة بي؟ @@ -83,7 +83,7 @@ dataSource.address() ### 16. هل من الممكن تحديد الكتلة التي سيتم بدء الفهرسة عليها؟ -نعم. يحدد ` dataSources.source.startBlock ` في ملف ` subgraph.yaml ` رقم الكتلة الذي يبدأ مصدر البيانات الفهرسة منها. في معظم الحالات نقترح استخدام الكتلة التي تم إنشاء العقد من خلالها: Start blocks +نعم. يحدد `dataSources.source.startBlock` في ملف `subgraph.yaml` رقم الكتلة الذي يبدأ مصدر البيانات الفهرسة منها. في معظم الحالات نقترح استخدام الكتلة التي تم إنشاء العقد من خلالها: Start blocks ### 17. هل هناك بعض النصائح لتحسين أداء الفهرسة؟ تستغرق مزامنة ال subgraph وقتًا طويلاً جدًا. diff --git a/pages/ar/developer/distributed-systems.mdx b/pages/ar/developer/distributed-systems.mdx index e647ca602f02..aa4b1b4174b7 100644 --- a/pages/ar/developer/distributed-systems.mdx +++ b/pages/ar/developer/distributed-systems.mdx @@ -31,7 +31,7 @@ The Graph هو بروتوكول يتم تنفيذه كنظام موزع. The Graph يوفر `block: { number_gte: $minBlock }` API ، والتي تضمن أن تكون الاستجابة لكتلة واحدة تزيد أو تساوي `$minBlock`. إذا تم إجراء الطلب لـ `graph-node` instance ولم تتم مزامنة الكتلة الدنيا بعد ، فسيرجع `graph-node` بخطأ. إذا قام `graph-node` بمزامنة الكتلة الدنيا ، فسيتم تشغيل الاستجابة لأحدث كتلة. إذا تم تقديم الطلب إلى Edge & Node Gateway ، ستقوم الـ Gateway بفلترة المفهرسين الذين لم يقوموا بعد بمزامنة الكتلة الدنيا وتجعل الطلب لأحدث كتلة قام المفهرس بمزامنتها. -يمكننا استخدام ` number_gte ` لضمان عدم عودة الوقت إلى الوراء عند عمل polling للبيانات في الحلقة. هنا مثال لذلك: +يمكننا استخدام `number_gte` لضمان عدم عودة الوقت إلى الوراء عند عمل polling للبيانات في الحلقة. هنا مثال لذلك: ```javascript /// Updates the protocol.paused variable to the latest diff --git a/pages/ar/developer/graphql-api.mdx b/pages/ar/developer/graphql-api.mdx index 15ab979dacff..d6771fd72547 100644 --- a/pages/ar/developer/graphql-api.mdx +++ b/pages/ar/developer/graphql-api.mdx @@ -6,7 +6,7 @@ title: GraphQL API ## الاستعلامات -في مخطط الـ subgraph الخاص بك ، يمكنك تعريف أنواع وتسمى `Entities`. لكل نوع من `Entity` ، سيتم إنشاء حقل `entity` و `entities` في المستوى الأعلى من نوع `Query`. لاحظ أنه لا يلزم تضمين ` query ` أعلى استعلام ` graphql ` عند استخدام The Graph. +في مخطط الـ subgraph الخاص بك ، يمكنك تعريف أنواع وتسمى `Entities`. لكل نوع من `Entity` ، سيتم إنشاء حقل `entity` و `entities` في المستوى الأعلى من نوع `Query`. لاحظ أنه لا يلزم تضمين `query` أعلى استعلام `graphql` عند استخدام The Graph. #### أمثلة @@ -21,7 +21,7 @@ title: GraphQL API } ``` -** ملاحظة: ** عند الاستعلام عن كيان واحد ، فإن الحقل ` id ` يكون مطلوبا ويجب أن يكون string. +** ملاحظة: ** عند الاستعلام عن كيان واحد ، فإن الحقل `id` يكون مطلوبا ويجب أن يكون string. الاستعلام عن جميع كيانات `Token`: @@ -36,7 +36,7 @@ title: GraphQL API ### الفرز -عند الاستعلام عن مجموعة ، يمكن استخدام البارامتر `orderBy` للترتيب حسب صفة معينة. بالإضافة إلى ذلك ، يمكن استخدام ` OrderDirection ` لتحديد اتجاه الفرز ،`asc` للترتيب التصاعدي أو `desc` للترتيب التنازلي. +عند الاستعلام عن مجموعة ، يمكن استخدام البارامتر `orderBy` للترتيب حسب صفة معينة. بالإضافة إلى ذلك ، يمكن استخدام `OrderDirection` لتحديد اتجاه الفرز ،`asc` للترتيب التصاعدي أو `desc` للترتيب التنازلي. #### مثال @@ -53,7 +53,7 @@ title: GraphQL API عند الاستعلام عن مجموعة ، يمكن استخدام البارامتر `first` لترقيم الصفحات من بداية المجموعة. من الجدير بالذكر أن ترتيب الفرز الافتراضي يكون حسب الـ ID بترتيب رقمي تصاعدي ، وليس حسب وقت الإنشاء. -علاوة على ذلك ، يمكن استخدام البارامتر ` skip ` لتخطي الكيانات وترقيم الصفحات. على سبيل المثال `first:100` يعرض أول 100 عنصر و `first:100, skip:100` يعرض 100 عنصر التالية. +علاوة على ذلك ، يمكن استخدام البارامتر `skip` لتخطي الكيانات وترقيم الصفحات. على سبيل المثال `first:100` يعرض أول 100 عنصر و `first:100, skip:100` يعرض 100 عنصر التالية. الاستعلامات يجب أن تتجنب استخدام قيم `skip` كبيرة جدا نظرا لأنها تؤدي بشكل عام أداء ضعيفا. لجلب عدد كبير من العناصر ، من الأفضل تصفح الكيانات بناء على صفة كما هو موضح في المثال الأخير. @@ -122,7 +122,7 @@ title: GraphQL API } ``` -يمكنك استخدام لواحق مثل ` _gt ` ، ` _lte ` لمقارنة القيم: +يمكنك استخدام لواحق مثل `_gt` ، `_lte` لمقارنة القيم: #### مثال @@ -154,11 +154,11 @@ _not_starts_with _not_ends_with ``` -يرجى ملاحظة أن بعض اللواحق مدعومة فقط لأنواع معينة. على سبيل المثال ، ` Boolean ` يدعم فقط ` _not ` و ` _in ` و ` _not_in `. +يرجى ملاحظة أن بعض اللواحق مدعومة فقط لأنواع معينة. على سبيل المثال ، `Boolean` يدعم فقط `_not` و `_in` و `_not_in`. ### Time-travel queries -يمكنك الاستعلام عن حالة الكيانات الخاصة بك ليس فقط للكتلة الأخيرة ، والتي هي افتراضيا ، ولكن أيضا لكتلة اعتباطية في الماضي. يمكن تحديد الكتلة التي يجب أن يحدث فيها الاستعلام إما عن طريق رقم الكتلة أو hash الكتلة الخاص بها عن طريق تضمين وسيطة ` block ` في حقول المستوى الأعلى للاستعلامات. +يمكنك الاستعلام عن حالة الكيانات الخاصة بك ليس فقط للكتلة الأخيرة ، والتي هي افتراضيا ، ولكن أيضا لكتلة اعتباطية في الماضي. يمكن تحديد الكتلة التي يجب أن يحدث فيها الاستعلام إما عن طريق رقم الكتلة أو hash الكتلة الخاص بها عن طريق تضمين وسيطة `block` في حقول المستوى الأعلى للاستعلامات. لن تتغير نتيجة مثل هذا الاستعلام بمرور الوقت ، أي أن الاستعلام في كتلة سابقة معينة سيعيد نفس النتيجة بغض النظر عن وقت تنفيذها ، باستثناء أنه إذا قمت بالاستعلام في كتلة قريبة جدا من رأس سلسلة Ethereum ، قد تتغير النتيجة إذا تبين أن هذه الكتلة ليست في السلسلة الرئيسية وتمت إعادة تنظيم السلسلة. بمجرد اعتبار الكتلة نهائية ، لن تتغير نتيجة الاستعلام. @@ -178,7 +178,7 @@ _not_ends_with } ``` -سيعود هذا الاستعلام بكيانات ` Challenge ` وكيانات ` Application ` المرتبطة بها ، كما كانت موجودة مباشرة بعد معالجة رقم الكتلة 8،000،000. +سيعود هذا الاستعلام بكيانات `Challenge` وكيانات `Application` المرتبطة بها ، كما كانت موجودة مباشرة بعد معالجة رقم الكتلة 8،000،000. #### مثال @@ -194,13 +194,13 @@ _not_ends_with } ``` -سيعود هذا الاستعلام بكيانات ` Challenge ` وكيانات ` Application ` المرتبطة بها ، كما كانت موجودة مباشرة بعد معالجة الكتلة باستخدام hash المحددة. +سيعود هذا الاستعلام بكيانات `Challenge` وكيانات `Application` المرتبطة بها ، كما كانت موجودة مباشرة بعد معالجة الكتلة باستخدام hash المحددة. ### استعلامات بحث النص الكامل حقول استعلام البحث عن نص كامل توفر API للبحث عن نص تعبيري يمكن إضافتها إلى مخطط الـ subgraph وتخصيصها. راجع [ تعريف حقول بحث النص الكامل ](/developer/create-subgraph-hosted#defining-fulltext-search-fields) لإضافة بحث نص كامل إلى الـ subgraph الخاص بك. -استعلامات البحث عن النص الكامل لها حقل واحد مطلوب ، وهو ` text ` ، لتوفير عبارة البحث. تتوفر العديد من عوامل النص الكامل الخاصة لاستخدامها في حقل البحث ` text `. +استعلامات البحث عن النص الكامل لها حقل واحد مطلوب ، وهو `text` ، لتوفير عبارة البحث. تتوفر العديد من عوامل النص الكامل الخاصة لاستخدامها في حقل البحث `text`. عوامل تشغيل البحث عن النص الكامل: @@ -213,7 +213,7 @@ _not_ends_with #### أمثلة -باستخدام العامل ` or` ، سيقوم الاستعلام هذا بتصفية blog الكيانات التي تحتوي على أشكال مختلفة من "anarchism" أو "crumpet" في حقول النص الكامل الخاصة بها. +باستخدام العامل `or` ، سيقوم الاستعلام هذا بتصفية blog الكيانات التي تحتوي على أشكال مختلفة من "anarchism" أو "crumpet" في حقول النص الكامل الخاصة بها. ```graphql { @@ -226,7 +226,7 @@ _not_ends_with } ``` -العامل ` follow by ` يحدد الكلمات بمسافة محددة عن بعضها في مستندات النص-الكامل. الاستعلام التالي سيعيد جميع الـ blogs التي تحتوي على أشكال مختلفة من "decentralize" متبوعة بكلمة "philosophy" +العامل `follow by` يحدد الكلمات بمسافة محددة عن بعضها في مستندات النص-الكامل. الاستعلام التالي سيعيد جميع الـ blogs التي تحتوي على أشكال مختلفة من "decentralize" متبوعة بكلمة "philosophy" ```graphql { @@ -262,6 +262,6 @@ _not_ends_with ### الكيانات -سيتم التعامل مع جميع أنواع GraphQL التي تحتوي على توجيهات `entity@ ` في مخططك على أنها كيانات ويجب أن تحتوي على حقل ` ID `. +سيتم التعامل مع جميع أنواع GraphQL التي تحتوي على توجيهات `entity@` في مخططك على أنها كيانات ويجب أن تحتوي على حقل `ID`. -> ** ملاحظة: ** في الوقت الحالي ، يجب أن تحتوي جميع الأنواع في مخططك على توجيه `entity@ `. في المستقبل ، سنتعامل مع الأنواع التي لا تحتوي على التوجيه `entity@ ` ككائنات، لكن هذا غير مدعوم حتى الآن. +> ** ملاحظة: ** في الوقت الحالي ، يجب أن تحتوي جميع الأنواع في مخططك على توجيه `entity@`. في المستقبل ، سنتعامل مع الأنواع التي لا تحتوي على التوجيه `entity@` ككائنات، لكن هذا غير مدعوم حتى الآن. diff --git a/pages/ar/developer/querying-from-your-app.mdx b/pages/ar/developer/querying-from-your-app.mdx index f3decc0d1768..41970d4d6bc8 100644 --- a/pages/ar/developer/querying-from-your-app.mdx +++ b/pages/ar/developer/querying-from-your-app.mdx @@ -24,7 +24,7 @@ Here are a couple of the more popular GraphQL clients in the ecosystem and how t ### Apollo client -[Apoolo client ](https://www.apollographql.com/docs/)يدعم مشاريع الويب بما في ال framework مثل React و Vue ، بالإضافة إلى mobile clients مثل iOS و Android و React Native. +[Apoolo client](https://www.apollographql.com/docs/)يدعم مشاريع الويب بما في ال framework مثل React و Vue ، بالإضافة إلى mobile clients مثل iOS و Android و React Native. لنلقِ نظرة على كيفية جلب البيانات من Subgraph وذلك باستخدام Apollo client في مشروع ويب. @@ -100,7 +100,7 @@ client ### URQL -هناك خيار آخر وهو [ URQL ](https://formidable.com/open-source/urql/) ، وهي مكتبة GraphQL client أخف وزنا إلى حد ما. +هناك خيار آخر وهو [URQL](https://formidable.com/open-source/urql/) ، وهي مكتبة GraphQL client أخف وزنا إلى حد ما. لنلقِ نظرة على كيفية جلب البيانات من Subgraph باستخدام URQL في مشروع ويب. diff --git a/pages/ar/explorer.mdx b/pages/ar/explorer.mdx index ae31b016d8a4..7c9bb396474a 100644 --- a/pages/ar/explorer.mdx +++ b/pages/ar/explorer.mdx @@ -11,7 +11,7 @@ title: مستكشف title="مشغل فيديو يوتيوب" frameBorder="0" allowFullScreen -> + > ## Subgraphs @@ -60,7 +60,7 @@ Let’s start with the Indexers. دعونا نبدأ مع المفهرسين ا يمكن للمفهرسين كسب كلا من رسوم الاستعلام ومكافآت الفهرسة. يحدث هذا عندما يقوم المشاركون في الشبكة بتفويض GRT للمفهرس. يتيح ذلك للمفهرسين تلقي رسوم الاستعلام ومكافآت بناء على بارامترات المفهرس الخاصة به. يتم تعيين بارامترات الفهرسة عن طريق النقر على الجانب الأيمن من الجدول ، أو بالانتقال إلى ملف تعريف المفهرس والنقر فوق زر "Delegate". -لمعرفة المزيد حول كيفية أن تصبح مفوضا كل ما عليك فعله هو التوجه إلى [ الوثائق الرسمية ](/delegating) أو [ أكاديمية The Graph ](https://docs.thegraph.academy/network/delegators). +لمعرفة المزيد حول كيفية أن تصبح مفوضا كل ما عليك فعله هو التوجه إلى [الوثائق الرسمية](/delegating) أو [ أكاديمية The Graph ](https://docs.thegraph.academy/network/delegators). ![Indexing details pane](/img/Indexing-Details-Pane.png) @@ -76,7 +76,7 @@ Let’s start with the Indexers. دعونا نبدأ مع المفهرسين ا ![صورة المستكشف 6](/img/Curation-Overview.png) -إذا كنت تريد معرفة المزيد عن دور المنسق ، فيمكنك القيام بذلك عن طريق زيارة الروابط التالية ـ [ أكاديمية The Graph ](https://thegraph.academy/curators/) أو \[ الوثائق الرسمية. \](/ curating) +إذا كنت تريد معرفة المزيد عن دور المنسق ، فيمكنك القيام بذلك عن طريق زيارة الروابط التالية ـ [ أكاديمية The Graph ](https://thegraph.academy/curators/) أو \[ الوثائق الرسمية. \](/curating) ### 3. المفوضون Delegators diff --git a/pages/ar/global.json b/pages/ar/global.json index d96555da2f85..3cf6737c97c2 100644 --- a/pages/ar/global.json +++ b/pages/ar/global.json @@ -1,5 +1,17 @@ { + "language": "Language", "aboutTheGraph": "حول The Graph", "developer": "مطور", - "supportedNetworks": "الشبكات المدعومة" + "supportedNetworks": "الشبكات المدعومة", + "collapse": "Collapse", + "expand": "Expand", + "previous": "Previous", + "next": "Next", + "editPage": "Edit page", + "pageSections": "Page Sections", + "linkToThisSection": "Link to this section", + "technicalLevelRequired": "Technical Level Required", + "notFoundTitle": "Oops! This page was lost in space...", + "notFoundSubtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", + "goHome": "Go Home" } diff --git a/pages/ar/hosted-service/what-is-hosted-service.mdx b/pages/ar/hosted-service/what-is-hosted-service.mdx index 491b79119f4f..fbd2e4687b57 100644 --- a/pages/ar/hosted-service/what-is-hosted-service.mdx +++ b/pages/ar/hosted-service/what-is-hosted-service.mdx @@ -40,7 +40,7 @@ The `` in this case is your github user or organization name, `/ [] ``` -يعتمد مثال الـ subgraph على عقد Gravity بواسطة Dani Grant الذي يدير avatars للمستخدم ويصدر أحداث ` NewGravatar ` أو ` UpdateGravatar ` كلما تم إنشاء avatars أو تحديثها. يعالج الـ subgraph هذه الأحداث عن طريق كتابة كيانات ` Gravatar ` إلى مخزن Graph Node والتأكد من تحديثها وفقا للأحداث. Continue on to the [subgraph manifest](/developer/create-subgraph-hosted#the-subgraph-manifest) to better understand which events from your smart contracts to pay attention to, mappings, and more. +يعتمد مثال الـ subgraph على عقد Gravity بواسطة Dani Grant الذي يدير avatars للمستخدم ويصدر أحداث `NewGravatar` أو `UpdateGravatar` كلما تم إنشاء avatars أو تحديثها. يعالج الـ subgraph هذه الأحداث عن طريق كتابة كيانات `Gravatar` إلى مخزن Graph Node والتأكد من تحديثها وفقا للأحداث. Continue on to the [subgraph manifest](/developer/create-subgraph-hosted#the-subgraph-manifest) to better understand which events from your smart contracts to pay attention to, mappings, and more. ## Supported Networks on the Hosted Service diff --git a/pages/ar/index.json b/pages/ar/index.json index 0967ef424bce..3e48ecb8a612 100644 --- a/pages/ar/index.json +++ b/pages/ar/index.json @@ -1 +1,77 @@ -{} +{ + "title": "Get Started", + "intro": "Learn about The Graph, a decentralized protocol for indexing and querying data from blockchains.", + "shortcuts": { + "aboutTheGraph": { + "title": "حول The Graph", + "description": "تعرف أكثر حول The Graph" + }, + "quickStart": { + "title": "بداية سريعة", + "description": "Jump in and start with The Graph" + }, + "developerFaqs": { + "title": "الأسئلة الشائعة للمطورين", + "description": "Frequently asked questions" + }, + "queryFromAnApplication": { + "title": "Query from an Application", + "description": "Learn to query from an application" + }, + "createASubgraph": { + "title": "إنشاء الـ Subgraph", + "description": "Use Studio to create subgraphs" + }, + "migrateFromHostedService": { + "title": "Migrate from Hosted Service", + "description": "Migrating subgraphs to The Graph Network" + } + }, + "networkRoles": { + "title": "Network Roles", + "description": "Learn about The Graph’s network roles.", + "roles": { + "developer": { + "title": "المطور", + "description": "Create a subgraph or use existing subgraphs in a dapp" + }, + "indexer": { + "title": "فهرسة (indexing)", + "description": "تشغيل عقدة node وذلك لفهرسة البيانات وتقديم الاستعلامات" + }, + "curator": { + "title": "(التنسيق) curating", + "description": "تنظيم البيانات بواسطة الإشارة إلى subgraphs" + }, + "delegator": { + "title": "تفويض", + "description": "تأمين الشبكة عن طريق تفويض GRT للمفهرسين" + } + } + }, + "readMore": "Read more", + "products": { + "title": "المنتجات", + "products": { + "subgraphStudio": { + "title": "Subgraph Studio", + "description": "Create, manage and publish subgraphs and API keys" + }, + "graphExplorer": { + "title": "Graph Explorer", + "description": "Explore subgraphs and interact with the protocol" + }, + "hostedService": { + "title": "الخدمة المستضافة", + "description": "Create and explore subgraphs on the Hosted Service" + } + } + }, + "supportedNetworks": { + "title": "الشبكات المدعومة", + "description": "The Graph supports the following networks on The Graph Network and the Hosted Service.", + "graphNetworkAndHostedService": "The Graph Network & Hosted Service", + "hostedService": "الخدمة المستضافة", + "betaWarning": "Network is in beta. Use with caution." + } +} diff --git a/pages/ar/indexing.mdx b/pages/ar/indexing.mdx index c28f9bed30b5..e6ad889e20a5 100644 --- a/pages/ar/indexing.mdx +++ b/pages/ar/indexing.mdx @@ -79,7 +79,7 @@ query indexerAllocations { - إذا تمت تسوية الاعتراض بالتعادل، فسيتم إرجاع وديعة ال Fishermen ، ولن يتم شطب المفهرس المعترض عليه. - إذا تم قبول الاعتراض، فسيتم إرجاع GRT التي أودعها الFishermen ، وسيتم شطب المفهرس المعترض عليه وسيكسب Fishermen ال 50٪ من GRT المشطوبة. -يمكن عرض الاعتراضات في واجهة المستخدم في بروفايل المفهرس ضمن علامة التبويب ` Disputes`. +يمكن عرض الاعتراضات في واجهة المستخدم في بروفايل المفهرس ضمن علامة التبويب `Disputes`. ### ما هي خصومات رسوم الاستعلام ومتى يتم توزيعها؟ @@ -427,7 +427,7 @@ docker pull ghcr.io/graphprotocol/indexer-service:latest docker pull ghcr.io/graphprotocol/indexer-agent:latest ``` -**ملاحظة**: بعد بدء ال containers ، يجب أن تكون خدمة المفهرس متاحة على [http: // localhost: 7600 ](http://localhost:7600) ويجب على وكيل المفهرس عرض API إدارة المفهرس على [ http: // localhost: 18000 / ](http://localhost:18000/). +**ملاحظة**: بعد بدء ال containers ، يجب أن تكون خدمة المفهرس متاحة على [http://localhost:7600](http://localhost:7600) ويجب على وكيل المفهرس عرض API إدارة المفهرس على [http://localhost:18000/](http://localhost:18000/). ```sh # Indexer service @@ -617,7 +617,7 @@ indexer cost set model my_model.agora ### Stake in the protocol -الخطوات الأولى للمشاركة في الشبكة كمفهرس هي الموافقة على البروتوكول وصناديق الأسهم، و (اختياريا) إعداد عنوان المشغل لتفاعلات البروتوكول اليومية. _ ** ملاحظة **: لأغراض الإرشادات ، سيتم استخدام Remix للتفاعل مع العقد ، ولكن لا تتردد في استخدام الأداة التي تختارها (\[OneClickDapp \](https: // oneclickdapp.com/) و [ ABItopic ](https://abitopic.io/) و [ MyCrypto ](https://www.mycrypto.com/account) وهذه بعض الأدوات المعروفة)._ +الخطوات الأولى للمشاركة في الشبكة كمفهرس هي الموافقة على البروتوكول وصناديق الأسهم، و (اختياريا) إعداد عنوان المشغل لتفاعلات البروتوكول اليومية. _ ** ملاحظة **: لأغراض الإرشادات ، سيتم استخدام Remix للتفاعل مع العقد ، ولكن لا تتردد في استخدام الأداة التي تختارها (\[OneClickDapp \](https://oneclickdapp.com/) و [ABItopic](https://abitopic.io/) و [MyCrypto](https://www.mycrypto.com/account) وهذه بعض الأدوات المعروفة)._ بعد أن تم إنشاؤه بواسطة المفهرس ، يمر التخصيص السليم عبر أربع حالات. diff --git a/pages/es/developer/assemblyscript-api.mdx b/pages/es/developer/assemblyscript-api.mdx index 98e4e1fbdb06..889990ea5f63 100644 --- a/pages/es/developer/assemblyscript-api.mdx +++ b/pages/es/developer/assemblyscript-api.mdx @@ -43,13 +43,13 @@ La librería de `@graphprotocol/graph-ts` proporciona las siguientes APIs: La `apiVersion` en el manifiesto del subgrafo especifica la versión de la API correspondiente al mapeo que está siendo ejecutado en el Graph Node de un subgrafo en específico. La versión actual para la APÍ de mapeo es la 0.0.6. -| Version | Notas del lanzamiento | -| :-: | --- | -| 0.0.6 | Se agregó la casilla `nonce` a las Transacciones de Ethereum, se
añadió `baseFeePerGas` para los bloques de Ethereum | -| 0.0.5 | Se actualizó la versión del AssemblyScript a la v0.19.10 (esta incluye cambios importantes, recomendamos leer la [`guía de migración`](/developer/assemblyscript-migration-guide))
`ethereum.transaction.gasUsed` actualizada a `ethereum.transaction.gasLimit` | -| 0.0.4 | Añadido la casilla de `functionSignature` para la función de Ethereum SmartContractCall | -| 0.0.3 | Añadida la casilla `from` para la función de Ethereum Call
`ethereum.call.address` actualizada a `ethereum.call.to` | -| 0.0.2 | Añadida la casilla de `input` para la función de Ethereum Transaction | +| Version | Notas del lanzamiento | +|:-------:| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.0.6 | Se agregó la casilla `nonce` a las Transacciones de Ethereum, se
añadió `baseFeePerGas` para los bloques de Ethereum | +| 0.0.5 | Se actualizó la versión del AssemblyScript a la v0.19.10 (esta incluye cambios importantes, recomendamos leer la [`guía de migración`](/developer/assemblyscript-migration-guide))
`ethereum.transaction.gasUsed` actualizada a `ethereum.transaction.gasLimit` | +| 0.0.4 | Añadido la casilla de `functionSignature` para la función de Ethereum SmartContractCall | +| 0.0.3 | Añadida la casilla `from` para la función de Ethereum Call
`ethereum.call.address` actualizada a `ethereum.call.to` | +| 0.0.2 | Añadida la casilla de `input` para la función de Ethereum Transaction | ### Built-in Types diff --git a/pages/es/developer/create-subgraph-hosted.mdx b/pages/es/developer/create-subgraph-hosted.mdx index 76a1af304e61..bb9dc04a9df1 100644 --- a/pages/es/developer/create-subgraph-hosted.mdx +++ b/pages/es/developer/create-subgraph-hosted.mdx @@ -138,7 +138,7 @@ Las entradas importantes a actualizar para el manifiesto son: - `dataSources.mapping.callHandlers`: enumera las funciones de contrato inteligente a las que reacciona este subgrafo y los handlers en el mapeo que transforman las entradas y salidas a las llamadas de función en entidades en el almacén. -- `dataSources.mapping.blockHandlers`: enumera los bloques a los que reacciona este subgrafo y los handlers en el mapeo que se ejecutan cuando un bloque se agrega a la cadena. Sin un filtro, el handler de bloque se ejecutará en cada bloque. Se puede proporcionar un filtro opcional con los siguientes tipos: call`. Un filtro `call` ejecutará el handler si el bloque contiene al menos una llamada al contrato de la fuente de datos. +- `dataSources.mapping.blockHandlers`: enumera los bloques a los que reacciona este subgrafo y los handlers en el mapeo que se ejecutan cuando un bloque se agrega a la cadena. Sin un filtro, el handler de bloque se ejecutará en cada bloque. Se puede proporcionar un filtro opcional con los siguientes tipos: `call`. Un filtro `call` ejecutará el handler si el bloque contiene al menos una llamada al contrato de la fuente de datos. Un único subgrafo puede indexar datos de múltiples contratos inteligentes. Añade una entrada por cada contrato del que haya que indexar datos a la array `dataSources`. @@ -218,15 +218,15 @@ Cada entidad debe tener un campo `id`, que es de tipo `ID!` (string). El campo ` Admitimos los siguientes scalars en nuestra API GraphQL: -| Tipo | Descripción | -| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Bytes` | Byte array, representado como un string hexadecimal. Comúnmente utilizado para los hashes y addresses de Ethereum. | -| `ID` | Almacenado como un `string`. | -| `String` | Scalar para valores `string`. Los caracteres null no se admiten y se eliminan automáticamente. | -| `Boolean` | Scalar para valores `boolean`. | -| `Int` | The GraphQL spec define `Int` para tener un tamano de 32 bytes. | -| `BigInt` | Números enteros grandes. Usados para los tipos `uint32`, `int64`, `uint64`, ..., `uint256` de Ethereum. Nota: Todo debajo de `uint32`, como `int32`, `uint24` o `int8` es representado como `i32`. | -| `BigDecimal` | `BigDecimal` Decimales de alta precisión representados como un signo y un exponente. El rango de exponentes va de -6143 a +6144. Redondeado a 34 dígitos significativos. | +| Tipo | Descripción | +| --- | --- | +| `Bytes` | Byte array, representado como un string hexadecimal. Comúnmente utilizado para los hashes y addresses de Ethereum. | +| `ID` | Almacenado como un `string`. | +| `String` | Scalar para valores `string`. Los caracteres null no se admiten y se eliminan automáticamente. | +| `Boolean` | Scalar para valores `boolean`. | +| `Int` | The GraphQL spec define `Int` para tener un tamano de 32 bytes. | +| `BigInt` | Números enteros grandes. Usados para los tipos `uint32`, `int64`, `uint64`, ..., `uint256` de Ethereum. Nota: Todo debajo de `uint32`, como `int32`, `uint24` o `int8` es representado como `i32`. | +| `BigDecimal` | `BigDecimal` Decimales de alta precisión representados como un signo y un exponente. El rango de exponentes va de -6143 a +6144. Redondeado a 34 dígitos significativos. | #### Enums @@ -451,10 +451,10 @@ Diccionarios de idiomas admitidos: Algoritmos admitidos para ordenar los resultados: -| Algoritmos | Descripción | -| ------------------- | -------------------------------------------------------------------------------------------------- | -| rango | Usa la calidad de coincidencia (0-1) de la consulta de texto completo para ordenar los resultados. | -| rango de Proximidad | Similar al rango, pero también incluye la proximidad de los matches. | +| Algoritmos | Descripción | +| --- | --- | +| rango | Usa la calidad de coincidencia (0-1) de la consulta de texto completo para ordenar los resultados. | +| rango de Proximidad | Similar al rango, pero también incluye la proximidad de los matches. | ## Escribir Mapeos @@ -627,7 +627,7 @@ export function handleNewExchange(event: NewExchange): void { ``` > **Nota:** Un nuevo origen de datos sólo procesará las llamadas y los eventos del bloque en el que fue creado y todos los bloques siguientes, pero no procesará los datos históricos, es decir, los datos que están contenidos en bloques anteriores. -> +> > Si los bloques anteriores contienen datos relevantes para la nueva fuente de datos, lo mejor es indexar esos datos leyendo el estado actual del contrato y creando entidades que representen ese estado en el momento de crear la nueva fuente de datos. ### Contexto de la Fuente de Datos @@ -684,7 +684,7 @@ dataSources: ``` > **Nota:** El bloque de creación del contrato se puede buscar rápidamente en Etherscan: -> +> > 1. Busca el contrato introduciendo su dirección en la barra de búsqueda. > 2. Haz clic en el hash de la transacción de creación en la sección `Contract Creator`. > 3. Carga la página de detalles de la transacción, donde encontrarás el bloque inicial de ese contrato. diff --git a/pages/es/global.json b/pages/es/global.json index a89f8e037622..7e187e00b0c6 100644 --- a/pages/es/global.json +++ b/pages/es/global.json @@ -1,5 +1,17 @@ { + "language": "Language", "aboutTheGraph": "Acerca de The Graph", "developer": "Desarrollador", - "supportedNetworks": "Redes compatibles" + "supportedNetworks": "Redes compatibles", + "collapse": "Collapse", + "expand": "Expand", + "previous": "Previous", + "next": "Next", + "editPage": "Edit page", + "pageSections": "Page Sections", + "linkToThisSection": "Link to this section", + "technicalLevelRequired": "Technical Level Required", + "notFoundTitle": "Oops! This page was lost in space...", + "notFoundSubtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", + "goHome": "Go Home" } diff --git a/pages/es/index.json b/pages/es/index.json index 0967ef424bce..0cd8d2cd65d7 100644 --- a/pages/es/index.json +++ b/pages/es/index.json @@ -1 +1,77 @@ -{} +{ + "title": "Get Started", + "intro": "Learn about The Graph, a decentralized protocol for indexing and querying data from blockchains.", + "shortcuts": { + "aboutTheGraph": { + "title": "Acerca de The Graph", + "description": "Aprende más sobre The Graph" + }, + "quickStart": { + "title": "Comienzo Rapido", + "description": "Jump in and start with The Graph" + }, + "developerFaqs": { + "title": "Preguntas Frecuentes de los Desarrolladores", + "description": "Frequently asked questions" + }, + "queryFromAnApplication": { + "title": "Query from an Application", + "description": "Learn to query from an application" + }, + "createASubgraph": { + "title": "Crear un Subgrafo", + "description": "Use Studio to create subgraphs" + }, + "migrateFromHostedService": { + "title": "Migrate from Hosted Service", + "description": "Migrating subgraphs to The Graph Network" + } + }, + "networkRoles": { + "title": "Network Roles", + "description": "Learn about The Graph’s network roles.", + "roles": { + "developer": { + "title": "Desarrollador", + "description": "Create a subgraph or use existing subgraphs in a dapp" + }, + "indexer": { + "title": "indexación", + "description": "Operador de nodos encargado de indexar los datos y proveer consultas" + }, + "curator": { + "title": "curación", + "description": "Organiza los datos mediante la señalización de subgrafos" + }, + "delegator": { + "title": "delegación", + "description": "Se encarga de proteger la red al delegar sus GRT a los Indexadores" + } + } + }, + "readMore": "Read more", + "products": { + "title": "Productos", + "products": { + "subgraphStudio": { + "title": "Subgraph Studio", + "description": "Create, manage and publish subgraphs and API keys" + }, + "graphExplorer": { + "title": "Graph Explorer", + "description": "Explora los distintos subgrafos e interactua con el protocolo" + }, + "hostedService": { + "title": "Hosted Service", + "description": "Crea y explora subgrafos en el servicio alojado" + } + } + }, + "supportedNetworks": { + "title": "Redes admitidas", + "description": "The Graph supports the following networks on The Graph Network and the Hosted Service.", + "graphNetworkAndHostedService": "The Graph Network & Hosted Service", + "hostedService": "Hosted Service", + "betaWarning": "Network is in beta. Use with caution." + } +} diff --git a/pages/es/indexing.mdx b/pages/es/indexing.mdx index 460c64005f05..1e1c92633f0b 100644 --- a/pages/es/indexing.mdx +++ b/pages/es/indexing.mdx @@ -115,11 +115,11 @@ Los indexadores pueden diferenciarse aplicando técnicas avanzadas para tomar de - **Grande**: Preparado para indexar todos los subgrafos utilizados actualmente y atender solicitudes para el tráfico relacionado. | Configuración | Postgres
(CPUs) | Postgres
(memory in GBs) | Postgres
(disk in TBs) | VMs
(CPUs) | VMs
(memory in GBs) | -| ------------- |:--------------------------:|:-----------------------------------:|:---------------------------------:|:---------------------:|:------------------------------:| -| Pequeño | 4 | 8 | 1 | 4 | 16 | -| Estándar | 8 | 30 | 1 | 12 | 48 | -| Medio | 16 | 64 | 2 | 32 | 64 | -| Grande | 72 | 468 | 3,5 | 48 | 184 | +| --- | :-: | :-: | :-: | :-: | :-: | +| Pequeño | 4 | 8 | 1 | 4 | 16 | +| Estándar | 8 | 30 | 1 | 12 | 48 | +| Medio | 16 | 64 | 2 | 32 | 64 | +| Grande | 72 | 468 | 3,5 | 48 | 184 | ### ¿Cuáles son algunas de las precauciones de seguridad básicas que debe tomar un indexador? @@ -135,7 +135,7 @@ En el centro de la infraestructura de un indexador está el Graph Node que monit - **Endpoint de Ethereum**: Un punto final que expone una API Ethereum JSON-RPC. Esto puede tomar la forma de un solo cliente Ethereum o podría ser una configuración más compleja que equilibre la carga en varios. Es importante tener en cuenta que ciertos subgrafos requerirán capacidades particulares del cliente Ethereum, como el modo de archivo y la API de seguimiento. -- ***Nodo IPFS (versión inferior a 5)**: Los metadatos de implementación de Subgrafo se almacenan en la red IPFS. El Graph Node accede principalmente al nodo IPFS durante la implementación del subgrafo para obtener el manifiesto del subgrafo y todos los archivos vinculados. Los indexadores de la red no necesitan alojar su propio nodo IPFS, un nodo IPFS para la red está alojado en https://ipfs.network.thegraph.com. +- **Nodo IPFS (versión inferior a 5)**: Los metadatos de implementación de Subgrafo se almacenan en la red IPFS. El Graph Node accede principalmente al nodo IPFS durante la implementación del subgrafo para obtener el manifiesto del subgrafo y todos los archivos vinculados. Los indexadores de la red no necesitan alojar su propio nodo IPFS, un nodo IPFS para la red está alojado en https://ipfs.network.thegraph.com. - **Servicio de indexador**: Gestiona todas las comunicaciones externas necesarias con la red. Comparte modelos de costos y estados de indexación, transfiere solicitudes de consulta desde la puerta de acceso (gateway) a Graph Node y administra los pagos de consultas a través de canales de estado con la puerta de acceso. @@ -149,24 +149,24 @@ Nota: Para admitir el escalado ágil, se recomienda que las inquietudes de consu #### Graph Node -| Puerto | Objeto | Rutas | Argumento CLI | Variable de Entorno | -| ------ | ---------------------------------------------------------------- | ---------------------------------------------------- | ----------------- | ------------------- | -| 8000 | Servidor HTTP GraphQL
(para consultas de subgrafos) | /subgraphs/id/...
/subgraphs/name/.../... | --http-port | - | -| 8001 | GraphQL WS
(para suscripciones a subgrafos) | /subgraphs/id/...
/subgraphs/name/.../... | --ws-port | - | -| 8020 | JSON-RPC
(para administrar implementaciones) | / | --admin-port | - | -| 8030 | API de estado de indexación de subgrafos | /graphql | --index-node-port | - | -| 8040 | Métricas de Prometheus | /metrics | --metrics-port | - | +| Puerto | Objeto | Rutas | Argumento CLI | Variable de Entorno | +| --- | --- | --- | --- | --- | +| 8000 | Servidor HTTP GraphQL
(para consultas de subgrafos) | /subgraphs/id/...
/subgraphs/name/.../... | --http-port | - | +| 8001 | GraphQL WS
(para suscripciones a subgrafos) | /subgraphs/id/...
/subgraphs/name/.../... | --ws-port | - | +| 8020 | JSON-RPC
(para administrar implementaciones) | / | --admin-port | - | +| 8030 | API de estado de indexación de subgrafos | /graphql | --index-node-port | - | +| 8040 | Métricas de Prometheus | /metrics | --metrics-port | - | #### Servicio de Indexador -| Puerto | Objeto | Rutas | Argumento CLI | Variable de Entorno | -| ------ | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------------- | ---------------------- | -| 7600 | Servidor HTTP GraphQL
(para consultas de subgrafo pagadas) | /subgraphs/id/...
/status
/channel-messages-inbox | --port | `INDEXER_SERVICE_PORT` | -| 7300 | Métricas de Prometheus | /metrics | --metrics-port | - | +| Puerto | Objeto | Rutas | Argumento CLI | Variable de Entorno | +| --- | --- | --- | --- | --- | +| 7600 | Servidor HTTP GraphQL
(para consultas de subgrafo pagadas) | /subgraphs/id/...
/status
/channel-messages-inbox | --port | `INDEXER_SERVICE_PORT` | +| 7300 | Métricas de Prometheus | /metrics | --metrics-port | - | #### Agente Indexador -| Puerto | Objeto | Rutas | Argumento CLI | Variable de
Entorno | +| Puerto | Objeto | Rutas | Argumento CLI | Variable de
Entorno | | ------ | ----------------------------- | ----- | ------------------------- | --------------------------------------- | | 8000 | API de gestión de indexadores | / | --indexer-management-port | `INDEXER_AGENT_INDEXER_MANAGEMENT_PORT` | @@ -262,7 +262,7 @@ EOF #### Usa Terraform para crear infraestructura -Antes de ejecutar cualquier comando, lee [ variables.tf ](https://github.com/graphprotocol/indexer/blob/main/terraform/variables.tf) y crea un archivo `terraform.tfvars` en este directorio (o modifica el que creamos en el último paso). Para cada variable en la que deseas anular el valor predeterminado, o donde necesites establecer un valor, ingresa una configuración en `terraform.tfvars`. +Antes de ejecutar cualquier comando, lee [variables.tf](https://github.com/graphprotocol/indexer/blob/main/terraform/variables.tf) y crea un archivo `terraform.tfvars` en este directorio (o modifica el que creamos en el último paso). Para cada variable en la que deseas anular el valor predeterminado, o donde necesites establecer un valor, ingresa una configuración en `terraform.tfvars`. - Ejecuta los siguientes comandos para crear la infraestructura. @@ -617,7 +617,7 @@ indexer cost set model my_model.agora ### Participar en el protocolo -Los primeros pasos para participar en la red como Indexador son aprobar el protocolo, stakear fondos y (opcionalmente) configurar una dirección de operador para las interacciones diarias del protocolo. _ **Nota**: A los efectos de estas instrucciones, Remix se utilizará para la interacción del contrato, pero no dudes en utilizar la herramienta que elijas (\[OneClickDapp\](https: // oneclickdapp.com/), [ABItopic](https://abitopic.io/) y [MyCrypto](https://www.mycrypto.com/account) son algunas otras herramientas conocidas)._ +Los primeros pasos para participar en la red como Indexador son aprobar el protocolo, stakear fondos y (opcionalmente) configurar una dirección de operador para las interacciones diarias del protocolo. _ **Nota**: A los efectos de estas instrucciones, Remix se utilizará para la interacción del contrato, pero no dudes en utilizar la herramienta que elijas (\[OneClickDapp\](https://oneclickdapp.com/), [ABItopic](https://abitopic.io/) y [MyCrypto](https://www.mycrypto.com/account) son algunas otras herramientas conocidas)._ Después de ser creada por un indexador, una asignación saludable pasa por cuatro estados. diff --git a/pages/ja/developer/assemblyscript-api.mdx b/pages/ja/developer/assemblyscript-api.mdx index 0069310090ce..4826602d3457 100644 --- a/pages/ja/developer/assemblyscript-api.mdx +++ b/pages/ja/developer/assemblyscript-api.mdx @@ -43,13 +43,13 @@ npm install -save-dev @graphprotocol/graph-ts # NPM サブグラフマニフェストの`apiVersion` は、指定されたサブグラフに対してグラフノードが実行するマッピング API のバージョンを指定します。 現在のマッピング API のバージョンは 0.0.6 です。 -| バージョン | リリースノート | -| :-: | --- | -| 0.0.6 | Ethereum Transaction オブジェクトに`nonce`フィールドを追加 イーサリアムブロックオブジェクトに
Added `baseFeePerGas`を追加 | +| バージョン | リリースノート | +|:-----:| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.0.6 | Ethereum Transaction オブジェクトに`nonce`フィールドを追加 イーサリアムブロックオブジェクトに
Added `baseFeePerGas`を追加 | | 0.0.5 | AssemblyScript がバージョン 0.19.10 にアップグレード(変更点がありますので[`Migration Guide`](/developer/assemblyscript-migration-guide))をご覧ください)。
`ethereum.transaction.gasUsed`の名前が`ethereum.transaction.gasLimit`に変更 | -| 0.0.4 | Ethereum SmartContractCall オブジェクトに`functionSignature`フィールドを追加 | -| 0.0.3 | Ethereum Call オブジェクトに`from`フィールドを追加
`etherem.call.address`の名前を `ethereum.call.to`に変更 | -| 0.0.2 | Ethereum Transaction オブジェクトに `input`フィールドを追加 | +| 0.0.4 | Ethereum SmartContractCall オブジェクトに`functionSignature`フィールドを追加 | +| 0.0.3 | Ethereum Call オブジェクトに`from`フィールドを追加
`etherem.call.address`の名前を `ethereum.call.to`に変更 | +| 0.0.2 | Ethereum Transaction オブジェクトに `input`フィールドを追加 | ### 組み込み型 diff --git a/pages/ja/global.json b/pages/ja/global.json index 992768286958..d755ec739e6c 100644 --- a/pages/ja/global.json +++ b/pages/ja/global.json @@ -1,5 +1,17 @@ { + "language": "Language", "aboutTheGraph": "The Graphについて", "developer": "デベロッパー", - "supportedNetworks": "サポートされているネットワーク" + "supportedNetworks": "サポートされているネットワーク", + "collapse": "Collapse", + "expand": "Expand", + "previous": "Previous", + "next": "Next", + "editPage": "Edit page", + "pageSections": "Page Sections", + "linkToThisSection": "Link to this section", + "technicalLevelRequired": "Technical Level Required", + "notFoundTitle": "Oops! This page was lost in space...", + "notFoundSubtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", + "goHome": "Go Home" } diff --git a/pages/ja/index.json b/pages/ja/index.json index 0967ef424bce..86cb3354c441 100644 --- a/pages/ja/index.json +++ b/pages/ja/index.json @@ -1 +1,77 @@ -{} +{ + "title": "Get Started", + "intro": "Learn about The Graph, a decentralized protocol for indexing and querying data from blockchains.", + "shortcuts": { + "aboutTheGraph": { + "title": "The Graphについて", + "description": "The Graphについて学ぶ" + }, + "quickStart": { + "title": "クイックスタート", + "description": "Jump in and start with The Graph" + }, + "developerFaqs": { + "title": "Developer FAQs", + "description": "Frequently asked questions" + }, + "queryFromAnApplication": { + "title": "Query from an Application", + "description": "Learn to query from an application" + }, + "createASubgraph": { + "title": "Create a Subgraph", + "description": "Use Studio to create subgraphs" + }, + "migrateFromHostedService": { + "title": "Migrate from Hosted Service", + "description": "Migrating subgraphs to The Graph Network" + } + }, + "networkRoles": { + "title": "Network Roles", + "description": "Learn about The Graph’s network roles.", + "roles": { + "developer": { + "title": "ディベロッパー", + "description": "Create a subgraph or use existing subgraphs in a dapp" + }, + "indexer": { + "title": "インデクシング", + "description": "ノードを稼働してデータインデックスを作成し、クエリサービスを提供する" + }, + "curator": { + "title": "キューレーティング", + "description": "サブグラフのシグナリングによるデータの整理" + }, + "delegator": { + "title": "デリゲーティング", + "description": "保有GRTをインデクサーに委任することでネットワークの安全性を確保" + } + } + }, + "readMore": "Read more", + "products": { + "title": "プロダクト", + "products": { + "subgraphStudio": { + "title": "Subgraph Studio", + "description": "Create, manage and publish subgraphs and API keys" + }, + "graphExplorer": { + "title": "グラフエクスプローラ", + "description": "サブグラフの探索とプロトコルとの対話" + }, + "hostedService": { + "title": "Hosted Service", + "description": "ホストサービスでのサブグラフの作成と探索" + } + } + }, + "supportedNetworks": { + "title": "Supported Networks", + "description": "The Graph supports the following networks on The Graph Network and the Hosted Service.", + "graphNetworkAndHostedService": "The Graph Network & Hosted Service", + "hostedService": "Hosted Service", + "betaWarning": "Network is in beta. Use with caution." + } +} diff --git a/pages/ja/indexing.mdx b/pages/ja/indexing.mdx index e02be5538cbc..dafa47e72922 100644 --- a/pages/ja/indexing.mdx +++ b/pages/ja/indexing.mdx @@ -26,7 +26,7 @@ import { Difficulty } from '@/components' ### 報酬の分配方法は? -インデキシング報酬は、年間 3%の発行量に設定されているプロトコル・インフレから得られます。 報酬は、それぞれのサブグラフにおけるすべてのキュレーション・シグナルの割合に基づいてサブグラフに分配され、そのサブグラフに割り当てられたステークに基づいてインデクサーに分配されます。 **特典を受けるためには、仲裁憲章で定められた基準を満たす有効なPOI(Proof of Indexing)で割り当てを終了する必要があります。** +インデキシング報酬は、年間 3%の発行量に設定されているプロトコル・インフレから得られます。 報酬は、それぞれのサブグラフにおけるすべてのキュレーション・シグナルの割合に基づいてサブグラフに分配され、そのサブグラフに割り当てられたステークに基づいてインデクサーに分配されます。 **特典を受けるためには、仲裁憲章で定められた基準を満たす有効な POI(Proof of Indexing)で割り当てを終了する必要があります。** コミュニティでは、報酬を計算するための数多くのツールが作成されており、それらは[コミュニティガイドコレクション](https://www.notion.so/Community-Guides-abbb10f4dba040d5ba81648ca093e70c)にまとめられています。 また、[Discord サーバー](https://discord.gg/vtvv7FP)の#delegators チャンネルや#indexers チャンネルでも、最新のツールリストを見ることができます。 @@ -65,13 +65,13 @@ Use Etherscan to call `getRewards()`: - Etherscan interface to Rewards contract に移動します。 * `getRewards()`を呼び出します - - **10を拡大します。 getRewards**のドロップダウン + - **10 を拡大します。 getRewards**のドロップダウン - 入力欄に**allocationID**を入力 - **Query**ボタンをクリック ### 争議(disputes)とは何で、どこで見ることができますか? -インデクサークエリとアロケーションは、期間中に The Graph 上で争議することができます。 争議期間は、争議の種類によって異なります。 クエリ/裁定には7エポックスの紛争窓口があり、割り当てには56エポックスがあります。 これらの期間が経過した後は、割り当てやクエリのいずれに対しても紛争を起こすことはできません。 紛争が開始されると、Fishermenは最低10,000GRTのデポジットを要求され、このデポジットは紛争が最終的に解決されるまでロックされます。 フィッシャーマンとは、紛争を開始するネットワーク参加者のことです。 +インデクサークエリとアロケーションは、期間中に The Graph 上で争議することができます。 争議期間は、争議の種類によって異なります。 クエリ/裁定には 7 エポックスの紛争窓口があり、割り当てには 56 エポックスがあります。 これらの期間が経過した後は、割り当てやクエリのいずれに対しても紛争を起こすことはできません。 紛争が開始されると、Fishermen は最低 10,000GRT のデポジットを要求され、このデポジットは紛争が最終的に解決されるまでロックされます。 フィッシャーマンとは、紛争を開始するネットワーク参加者のことです。 争議は UI のインデクサーのプロフィールページの`Disputes`タブで確認できます。 @@ -79,7 +79,7 @@ Use Etherscan to call `getRewards()`: - 争議が引き分けた場合、フィッシャーマンのデポジットは返還され、争議中のインデクサーはスラッシュされることはありません。 - 争議が受け入れられた場合、フィッシャーマンがデポジットした GRT は返却され、争議中のインデクサーはスラッシュされ、フィッシャーマンはスラッシュされた GRT の 50%を獲得します。 -紛争は、UIのインデクサーのプロファイルページの`紛争`タブで確認できます。 +紛争は、UI のインデクサーのプロファイルページの`紛争`タブで確認できます。 ### クエリフィーリベートとは何ですか、またいつ配布されますか? @@ -114,12 +114,12 @@ Use Etherscan to call `getRewards()`: - **Medium** - 100 個のサブグラフと 1 秒あたり 200 ~ 500 のリクエストをサポートするプロダクションインデクサー - **Large** - 現在使用されているすべてのサブグラフのインデックスを作成し、関連するトラフィックのリクエストに対応します -| Setup | Postgres
(CPUs) | Postgres
(memory in GBs) | Postgres
(disk in TBs) | VMs
(CPUs) | VMs
(memory in GBs) | -| -------- |:--------------------------:|:-----------------------------------:|:---------------------------------:|:---------------------:|:------------------------------:| -| Small | 4 | 8 | 1 | 4 | 16 | -| Standard | 8 | 30 | 1 | 12 | 48 | -| Medium | 16 | 64 | 2 | 32 | 64 | -| Large | 72 | 468 | 3.5 | 48 | 184 | +| Setup | Postgres
(CPUs) | Postgres
(memory in GBs) | Postgres
(disk in TBs) | VMs
(CPUs) | VMs
(memory in GBs) | +| --- | :-: | :-: | :-: | :-: | :-: | +| Small | 4 | 8 | 1 | 4 | 16 | +| Standard | 8 | 30 | 1 | 12 | 48 | +| Medium | 16 | 64 | 2 | 32 | 64 | +| Large | 72 | 468 | 3.5 | 48 | 184 | ### インデクサーが取るべきセキュリティ対策は? @@ -149,20 +149,20 @@ Use Etherscan to call `getRewards()`: #### グラフノード -| Port | Purpose | Routes | CLI Argument | Environment Variable | -| ---- | ------------------------------------------------------- | ------------------------------------------------------------------- | ----------------- | -------------------- | -| 8000 | GraphQL HTTP server
(for subgraph queries) | /subgraphs/id/...

/subgraphs/name/.../... | --http-port | - | -| 8001 | GraphQL WS
(for subgraph subscriptions) | /subgraphs/id/...

/subgraphs/name/.../... | --ws-port | - | -| 8020 | JSON-RPC
(for managing deployments) | / | --admin-port | - | -| 8030 | Subgraph indexing status API | /graphql | --index-node-port | - | -| 8040 | Prometheus metrics | /metrics | --metrics-port | - | +| Port | Purpose | Routes | CLI Argument | Environment Variable | +| --- | --- | --- | --- | --- | +| 8000 | GraphQL HTTP server
(for subgraph queries) | /subgraphs/id/...

/subgraphs/name/.../... | --http-port | - | +| 8001 | GraphQL WS
(for subgraph subscriptions) | /subgraphs/id/...

/subgraphs/name/.../... | --ws-port | - | +| 8020 | JSON-RPC
(for managing deployments) | / | --admin-port | - | +| 8030 | Subgraph indexing status API | /graphql | --index-node-port | - | +| 8040 | Prometheus metrics | /metrics | --metrics-port | - | #### Indexer Service -| Port | Purpose | Routes | CLI Argument | Environment Variable | -| ---- | ------------------------------------------------------------ | --------------------------------------------------------------------------- | -------------- | ---------------------- | -| 7600 | GraphQL HTTP server
(for paid subgraph queries) | /subgraphs/id/...
/status
/channel-messages-inbox | --port | `INDEXER_SERVICE_PORT` | -| 7300 | Prometheus metrics | /metrics | --metrics-port | - | +| Port | Purpose | Routes | CLI Argument | Environment Variable | +| --- | --- | --- | --- | --- | +| 7600 | GraphQL HTTP server
(for paid subgraph queries) | /subgraphs/id/...
/status
/channel-messages-inbox | --port | `INDEXER_SERVICE_PORT` | +| 7300 | Prometheus metrics | /metrics | --metrics-port | - | #### Indexer Agent @@ -448,7 +448,7 @@ docker run -p 7600:7600 -it indexer-service:latest ... docker run -p 18000:8000 -it indexer-agent:latest ... ``` -[Google Cloud で Terraform を使ってサーバーインフラを構築するのセクション ](/indexing#setup-server-infrastructure-using-terraform-on-google-cloud) を参照してください。 +[Google Cloud で Terraform を使ってサーバーインフラを構築するのセクション](/indexing#setup-server-infrastructure-using-terraform-on-google-cloud) を参照してください。 #### K8s と Terraform の使用 @@ -658,7 +658,7 @@ setDelegationParameters(950000, 600000, 500) ### アロケーションの寿命 -インデクサーによって作成された後、健全なアロケーションは4つの状態を経ます。 +インデクサーによって作成された後、健全なアロケーションは 4 つの状態を経ます。 - **Active**- オンチェーンでアロケーションが作成されると(allocateFrom())、それは**active**であるとみなされます。 インデクサー自身やデリゲートされたステークの一部がサブグラフの配置に割り当てられ、これによりインデクシング報酬を請求したり、そのサブグラフの配置のためにクエリを提供したりすることができます。 インデクサエージェントは、インデキシングルールに基づいて割り当ての作成を管理します。 diff --git a/pages/ko/developer/assemblyscript-api.mdx b/pages/ko/developer/assemblyscript-api.mdx index 7ddd83d90288..1940e1e7f916 100644 --- a/pages/ko/developer/assemblyscript-api.mdx +++ b/pages/ko/developer/assemblyscript-api.mdx @@ -43,13 +43,13 @@ npm install --save-dev @graphprotocol/graph-ts # NPM 서브그래프 매니페스트의 `apiVersion`은 주어진 서브그래프에 대해 그래프 노드가 실행하는 매핑 API 버전을 지정합니다. 현재 맵핑 API 버전은 0.0.6 입니다. -| 버전 | 릴리스 노트 | -| :-: | --- | -| 0.0.6 | 이더리움 트랜잭션 개체에 `nonce` 필드를 추가했습니다.
`baseFeePerGas`가 이더리움 블록 개체에 추가되었습니다. | +| 버전 | 릴리스 노트 | +|:-----:| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.0.6 | 이더리움 트랜잭션 개체에 `nonce` 필드를 추가했습니다.
`baseFeePerGas`가 이더리움 블록 개체에 추가되었습니다. | | 0.0.5 | AssemblyScript를 버전 0.19.10으로 업그레이드했습니다(변경 내용 깨짐 포함. [`Migration Guide`](/developer/assemblyscript-migration-guide) 참조)
`ethereum.transaction.gasUsed`의 이름이 `ethereum.transaction.gasLimit`로 변경되었습니다. | -| 0.0.4 | Ethereum SmartContractCall 개체에 `functionSignature` 필드를 추가했습니다. | -| 0.0.3 | Ethereum Call 개체에 `from` 필드를 추가했습니다.
`etherem.call.address`의 이름이 `ethereum.call.to`로 변경되었습니다. | -| 0.0.2 | Ethereum Transaction 개체에 `input` 필드를 추가했습니다. | +| 0.0.4 | Ethereum SmartContractCall 개체에 `functionSignature` 필드를 추가했습니다. | +| 0.0.3 | Ethereum Call 개체에 `from` 필드를 추가했습니다.
`etherem.call.address`의 이름이 `ethereum.call.to`로 변경되었습니다. | +| 0.0.2 | Ethereum Transaction 개체에 `input` 필드를 추가했습니다. | ### 기본 제공 유형 diff --git a/pages/ko/global.json b/pages/ko/global.json index 7676db4cfe8a..8dc8b72d9f86 100644 --- a/pages/ko/global.json +++ b/pages/ko/global.json @@ -1,5 +1,17 @@ { + "language": "Language", "aboutTheGraph": "The Graph 소개", "developer": "개발자", - "supportedNetworks": "지원되는 네트워크" + "supportedNetworks": "지원되는 네트워크", + "collapse": "Collapse", + "expand": "Expand", + "previous": "Previous", + "next": "Next", + "editPage": "Edit page", + "pageSections": "Page Sections", + "linkToThisSection": "Link to this section", + "technicalLevelRequired": "Technical Level Required", + "notFoundTitle": "Oops! This page was lost in space...", + "notFoundSubtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", + "goHome": "Go Home" } diff --git a/pages/ko/index.json b/pages/ko/index.json index 0967ef424bce..02032b3326a0 100644 --- a/pages/ko/index.json +++ b/pages/ko/index.json @@ -1 +1,77 @@ -{} +{ + "title": "Get Started", + "intro": "Learn about The Graph, a decentralized protocol for indexing and querying data from blockchains.", + "shortcuts": { + "aboutTheGraph": { + "title": "The Graph 소개", + "description": "The Graph에 대해 더 알아보기" + }, + "quickStart": { + "title": "Quick Start", + "description": "Jump in and start with The Graph" + }, + "developerFaqs": { + "title": "Developer FAQs", + "description": "Frequently asked questions" + }, + "queryFromAnApplication": { + "title": "Query from an Application", + "description": "Learn to query from an application" + }, + "createASubgraph": { + "title": "Create a Subgraph", + "description": "Use Studio to create subgraphs" + }, + "migrateFromHostedService": { + "title": "Migrate from Hosted Service", + "description": "Migrating subgraphs to The Graph Network" + } + }, + "networkRoles": { + "title": "Network Roles", + "description": "Learn about The Graph’s network roles.", + "roles": { + "developer": { + "title": "개발자", + "description": "Create a subgraph or use existing subgraphs in a dapp" + }, + "indexer": { + "title": "인덱싱(indexing)", + "description": "데이터 인덱싱 혹은 쿼리 제공을 위해 노드를 운영합니다." + }, + "curator": { + "title": "큐레이팅", + "description": "서브그래프들에 신호를 보냄으로써 데이터를 구성합니다." + }, + "delegator": { + "title": "위임하기", + "description": "인덱서들에게 GRT를 위임함으로써 네트워크를 보안에 기여합니다." + } + } + }, + "readMore": "Read more", + "products": { + "title": "제품", + "products": { + "subgraphStudio": { + "title": "Subgraph Studio", + "description": "Create, manage and publish subgraphs and API keys" + }, + "graphExplorer": { + "title": "Graph Explorer", + "description": "Explore subgraphs and interact with the protocol" + }, + "hostedService": { + "title": "Hosted Service", + "description": "Create and explore subgraphs on the Hosted Service" + } + } + }, + "supportedNetworks": { + "title": "Supported Networks", + "description": "The Graph supports the following networks on The Graph Network and the Hosted Service.", + "graphNetworkAndHostedService": "The Graph Network & Hosted Service", + "hostedService": "Hosted Service", + "betaWarning": "Network is in beta. Use with caution." + } +} diff --git a/pages/vi/curating.mdx b/pages/vi/curating.mdx index 626dfc2e1872..1affd60eaf9d 100644 --- a/pages/vi/curating.mdx +++ b/pages/vi/curating.mdx @@ -59,39 +59,12 @@ Indexer có thể tìm các subgraph để lập chỉ mục dựa trên các t ## Những rủi ro -
    -
  1. - Thị trường truy vấn vốn còn sơ khai tại The Graph và có rủi ro rằng mức tỉ suất lợi nhuận năm (%APY) của bạn có thể - thấp hơn mức bạn mong đợi do các động lực thị trường non trẻ. -
  2. -
  3. - Phí Curation - khi người phụ trách báo hiệu GRT trên một subgraph, họ phải chịu 1% thuế curation. Phí này được đốt - và phần còn lại được gửi vào nguồn cung dự trữ của đường liên kết. -
  4. -
  5. - Khi curator đốt cổ phần của họ để rút GRT ra, giá trị GRT của số cổ phần còn lại sẽ bị giảm. Hãy lưu ý rằng trong - một số trường hợp, n curator có thể quyết định đốt cổ phẩn của họ tất cả cùng một lúc. Tình huống này có thể - phổ biến nếu một nhà phát triển dapp ngừng lập phiên bản/cải tiến và truy vấn subgraph của họ hoặc nếu một subgraph - thất bại. Kết quả là, những curator còn lại có thể chỉ rút được một phần GRT ban đầu của họ. Đối với một vai trò - mạng với rủi ro thấp hơn, xem [Delegators](https://thegraph.com/docs/delegating). -
  6. -
  7. - Một subgraph có thể thất bại do một lỗi. Một subgraph thất bại không tích lũy phí truy vấn. Do đó, bạn sẽ phải đợi - cho đến khi nhà phát triển sửa lỗi và triển khai phiên bản mới. -
      -
    • - Nếu bạn đã đăng ký phiên bản mới nhất của một subgraph, các cổ phần của bạn sẽ tự động chuyển sang phiên bản mới - đó. Điều này sẽ phát sinh một khoản thuế curation 0.5%. -
    • -
    • - Nếu bạn đã báo hiệu trên một phiên bản subgraph cụ thể và nó không thành công, bạn sẽ phải đốt phần cổ phần - curation của bạn theo cách thủ công. Lưu ý rằng bạn có thể nhận được nhiều hơn hoặc ít hơn GRT so với số tiền - bạn gửi ban đầu vào đường cong curation, đây là một rủi ro của việc trở thành curator. You can then signal on - the new subgraph version, thus incurring a 1% curation tax. -
    • -
    -
  8. -
+1. Thị trường truy vấn vốn còn sơ khai tại The Graph và có rủi ro rằng mức tỉ suất lợi nhuận năm (%APY) của bạn có thể thấp hơn mức bạn mong đợi do các động lực thị trường non trẻ. +2. Phí Curation - khi người phụ trách báo hiệu GRT trên một subgraph, họ phải chịu 1% thuế curation. Phí này được đốt và phần còn lại được gửi vào nguồn cung dự trữ của đường liên kết. +3. Khi curator đốt cổ phần của họ để rút GRT ra, giá trị GRT của số cổ phần còn lại sẽ bị giảm. Hãy lưu ý rằng trong một số trường hợp, n curator có thể quyết định đốt cổ phẩn của họ **tất cả cùng một lúc**. Tình huống này có thể phổ biến nếu một nhà phát triển dapp ngừng lập phiên bản/cải tiến và truy vấn subgraph của họ hoặc nếu một subgraph thất bại. Kết quả là, những curator còn lại có thể chỉ rút được một phần GRT ban đầu của họ. Đối với một vai trò mạng với rủi ro thấp hơn, xem \[Delegators\](https://thegraph.com/docs/delegating). +4. Một subgraph có thể thất bại do một lỗi. Một subgraph thất bại không tích lũy phí truy vấn. Do đó, bạn sẽ phải đợi cho đến khi nhà phát triển sửa lỗi và triển khai phiên bản mới. + - Nếu bạn đã đăng ký phiên bản mới nhất của một subgraph, các cổ phần của bạn sẽ tự động chuyển sang phiên bản mới đó. Điều này sẽ phát sinh một khoản thuế curation 0.5%. + - Nếu bạn đã báo hiệu trên một phiên bản subgraph cụ thể và nó không thành công, bạn sẽ phải đốt phần cổ phần curation của bạn theo cách thủ công. Lưu ý rằng bạn có thể nhận được nhiều hơn hoặc ít hơn GRT so với số tiền bạn gửi ban đầu vào đường cong curation, đây là một rủi ro của việc trở thành curator. You can then signal on the new subgraph version, thus incurring a 1% curation tax. ## Câu hỏi thường gặp về Curation @@ -127,5 +100,5 @@ Vẫn còn thắc mắc? Xem video hướng dẫn Curation của chúng tôi bê title="Trình phát video YouTube" frameBorder="0" allowFullScreen - > +> diff --git a/pages/vi/delegating.mdx b/pages/vi/delegating.mdx index caa911c5c7ad..92e6a6e492c1 100644 --- a/pages/vi/delegating.mdx +++ b/pages/vi/delegating.mdx @@ -90,5 +90,5 @@ Hướng dẫn này cung cấp đánh giá đầy đủ về tài liệu này v title="Trình phát video YouTube" frameBorder="0" allowFullScreen - > +> diff --git a/pages/vi/explorer.mdx b/pages/vi/explorer.mdx index f66163c2def8..fef6a2b6a34b 100644 --- a/pages/vi/explorer.mdx +++ b/pages/vi/explorer.mdx @@ -11,15 +11,14 @@ Chào mừng bạn đến với Graph Explorer, hay như chúng tôi thường g title="Trình phát video YouTube" frameBorder="0" allowFullScreen - > +> ## Subgraphs Điều đầu tiên, nếu bạn vừa hoàn thành việc triển khai và xuất bản subgraph của mình trong Subgraph Studio, thì tab Subgraphs ở trên cùng của thanh điều hướng là nơi để xem các subgraph đã hoàn thành của riêng bạn (và các subgraph của những người khác) trên mạng phi tập trung. Tại đây, bạn sẽ có thể tìm thấy chính xác subgraph mà bạn đang tìm kiếm dựa trên ngày tạo, lượng tín hiệu hoặc tên. -![Explorer Image 1 -](/img/Subgraphs-Explorer-Landing.png) +![Explorer Image 1](/img/Subgraphs-Explorer-Landing.png) Khi bạn nhấp vào một subgraph, bạn sẽ có thể thử các truy vấn trong playground và có thể tận dụng chi tiết mạng để đưa ra quyết định sáng suốt. Bạn cũng sẽ có thể báo hiệu GRT trên subgraph của riêng bạn hoặc các subgraph của người khác để làm cho các indexer nhận thức được tầm quan trọng và chất lượng của nó. Điều này rất quan trọng vì việc báo hiệu trên một subgraph khuyến khích nó được lập chỉ mục, có nghĩa là nó sẽ xuất hiện trên mạng để cuối cùng phục vụ các truy vấn. diff --git a/pages/vi/global.json b/pages/vi/global.json index 0967ef424bce..72b4fc820dba 100644 --- a/pages/vi/global.json +++ b/pages/vi/global.json @@ -1 +1,17 @@ -{} +{ + "language": "Language", + "aboutTheGraph": "About The Graph", + "developer": "Nhà phát triển", + "supportedNetworks": "Mạng lưới được hỗ trợ", + "collapse": "Collapse", + "expand": "Expand", + "previous": "Previous", + "next": "Next", + "editPage": "Edit page", + "pageSections": "Page Sections", + "linkToThisSection": "Link to this section", + "technicalLevelRequired": "Technical Level Required", + "notFoundTitle": "Oops! This page was lost in space...", + "notFoundSubtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", + "goHome": "Go Home" +} diff --git a/pages/vi/hosted-service/migrating-subgraph.mdx b/pages/vi/hosted-service/migrating-subgraph.mdx index 85f72f053b30..e81d98dd5e2a 100644 --- a/pages/vi/hosted-service/migrating-subgraph.mdx +++ b/pages/vi/hosted-service/migrating-subgraph.mdx @@ -139,7 +139,7 @@ If you're still confused, fear not! Check out the following resources or watch o diff --git a/pages/vi/index.json b/pages/vi/index.json index 0967ef424bce..d8244f44217f 100644 --- a/pages/vi/index.json +++ b/pages/vi/index.json @@ -1 +1,77 @@ -{} +{ + "title": "Get Started", + "intro": "Learn about The Graph, a decentralized protocol for indexing and querying data from blockchains.", + "shortcuts": { + "aboutTheGraph": { + "title": "About The Graph", + "description": "Tìm hiểu thêm về The Graph" + }, + "quickStart": { + "title": "Quick Start", + "description": "Jump in and start with The Graph" + }, + "developerFaqs": { + "title": "Developer FAQs", + "description": "Frequently asked questions" + }, + "queryFromAnApplication": { + "title": "Query from an Application", + "description": "Learn to query from an application" + }, + "createASubgraph": { + "title": "Create a Subgraph", + "description": "Use Studio to create subgraphs" + }, + "migrateFromHostedService": { + "title": "Migrate from Hosted Service", + "description": "Migrating subgraphs to The Graph Network" + } + }, + "networkRoles": { + "title": "Network Roles", + "description": "Learn about The Graph’s network roles.", + "roles": { + "developer": { + "title": "Nhà phát triển", + "description": "Create a subgraph or use existing subgraphs in a dapp" + }, + "indexer": { + "title": "Indexer", + "description": "Vận hành một nút để lập chỉ mục dữ liệu và phục vụ các truy vấn" + }, + "curator": { + "title": "Curator", + "description": "Tổ chức dữ liệu bằng cách báo hiệu trên các subgraph" + }, + "delegator": { + "title": "Delegator", + "description": "Bảo mật mạng bằng cách ủy quyền GRT cho Indexers" + } + } + }, + "readMore": "Read more", + "products": { + "title": "Các sản phẩm", + "products": { + "subgraphStudio": { + "title": "Subgraph Studio", + "description": "Create, manage and publish subgraphs and API keys" + }, + "graphExplorer": { + "title": "Trình khám phá Graph", + "description": "Explore subgraphs and interact with the protocol" + }, + "hostedService": { + "title": "Hosted Service", + "description": "Create and explore subgraphs on the Hosted Service" + } + } + }, + "supportedNetworks": { + "title": "Mạng lưới được hỗ trợ", + "description": "The Graph supports the following networks on The Graph Network and the Hosted Service.", + "graphNetworkAndHostedService": "The Graph Network & Hosted Service", + "hostedService": "Hosted Service", + "betaWarning": "Network is in beta. Use with caution." + } +} diff --git a/pages/vi/indexing.mdx b/pages/vi/indexing.mdx index b543436f0049..11ddf485c8e6 100644 --- a/pages/vi/indexing.mdx +++ b/pages/vi/indexing.mdx @@ -109,86 +109,17 @@ Indexer có thể tự phân biệt bản thân bằng cách áp dụng các k ### Có các yêu cầu gì về phần cứng (hardware)? -
    -
  • - Nhỏ - Đủ để bắt đầu index một số subgraph, có thể sẽ cần được mở rộng. -
  • -
  • - Tiêu chuẩn - Thiết lập mặc định, đây là những gì được sử dụng trong bản kê khai (manifest) triển khai mẫu - k8s/terraform. -
  • -
  • - Trung bình - Công cụ indexing production hỗ trợ 100 đồ subgraph và 200-500 yêu cầu mỗi giây. -
  • -
  • - Lớn - Được chuẩn bị để index tất cả các subgraph hiện đang được sử dụng và phục vụ các yêu cầu cho lưu lượng - truy cập liên quan. -
  • -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Thiết lập -
Postgres
-
(CPUs)
-
-
Postgres
-
(bộ nhớ tính bằng GB)
-
-
Postgres
-
(đĩa tính bằng TBs)
-
-
VMs
-
(CPUs)
-
-
VMs
-
(bộ nhớ tính bằng GB)
-
Nhỏ481416
Tiêu chuẩn83011248
Trung bình166423264
Lớn724683,548184
-
+- **Nhỏ** - Đủ để bắt đầu index một số subgraph, có thể sẽ cần được mở rộng. +- **Tiêu chuẩn** - Thiết lập mặc định, đây là những gì được sử dụng trong bản kê khai (manifest) triển khai mẫu k8s/terraform. +- **Trung bình** - Công cụ indexing production hỗ trợ 100 đồ subgraph và 200-500 yêu cầu mỗi giây. +- **Lớn** - Được chuẩn bị để index tất cả các subgraph hiện đang được sử dụng và phục vụ các yêu cầu cho lưu lượng truy cập liên quan. + +| Setup | Postgres
(CPUs) | Postgres
(memory in GBs) | Postgres
(disk in TBs) | VMs
(CPUs) | VMs
(memory in GBs) | +| -------- |:--------------------------:|:-----------------------------------:|:---------------------------------:|:---------------------:|:------------------------------:| +| Small | 4 | 8 | 1 | 4 | 16 | +| Standard | 8 | 30 | 1 | 12 | 48 | +| Medium | 16 | 64 | 2 | 32 | 64 | +| Large | 72 | 468 | 3.5 | 48 | 184 | ### Một số biện pháp phòng ngừa bảo mật cơ bản mà indexer nên thực hiện là gì? @@ -218,141 +149,26 @@ Lưu ý: Để hỗ trợ mở rộng quy mô nhanh, bạn nên tách các mối #### Graph Node -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CổngMục đíchTuyếnĐối số CLI - Biến
Môi trường -
8000 - GraphQL HTTP server
- (dành cho các truy vấn subgraph) -
- /subgraphs/id/... -
-
- /subgraphs/name/.../... -
--http-port-
8001 - GraphQL WS
(Dành cho đăng ký subgraph) -
- /subgraphs/id/... -
-
- /subgraphs/name/.../... -
--ws-port-
8020 - JSON-RPC
- (để quản lý triển khai) -
/--admin-port-
8030API trạng thái indexing subgraph/graphql--index-node-port-
8040Số liệu Prometheus/metrics-metrics-port-
-
+| Port | Purpose | Routes | CLI Argument | Environment Variable | +| ---- | ----------------------------------------------------- | ---------------------------------------------------- | ----------------- | -------------------- | +| 8000 | GraphQL HTTP server
(for subgraph queries) | /subgraphs/id/...
/subgraphs/name/.../... | --http-port | - | +| 8001 | GraphQL WS
(for subgraph subscriptions) | /subgraphs/id/...
/subgraphs/name/.../... | --ws-port | - | +| 8020 | JSON-RPC
(for managing deployments) | / | --admin-port | - | +| 8030 | Subgraph indexing status API | /graphql | --index-node-port | - | +| 8040 | Prometheus metrics | /metrics | --metrics-port | - | #### Dịch vụ Indexer -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
CổngMục đíchTuyếnĐối số CLIBiến Môi trường
7600 - GraphQL HTTP server
(Dành cho các truy vấn subgraph có trả phí) -
- /subgraphs/id/... -
- /status -
- /channel-messages-inbox -
--portINDEXER_SERVICE_PORT
7300Số liệu Prometheus/metrics--metrics-port-
-
+| Port | Purpose | Routes | CLI Argument | Environment Variable | +| ---- | ---------------------------------------------------------- | ----------------------------------------------------------------------- | -------------- | ---------------------- | +| 7600 | GraphQL HTTP server
(for paid subgraph queries) | /subgraphs/id/...
/status
/channel-messages-inbox | --port | `INDEXER_SERVICE_PORT` | +| 7300 | Prometheus metrics | /metrics | --metrics-port | - | #### Đại lý Indexer -
- - - - - - - - - - - - - - - - - - - -
CổngMục đíchTuyếnĐối số CLIBiến Môi trường
8000API quản lý Indexer/--indexer-management-portINDEXER_AGENT_INDEXER_MANAGEMENT_PORT
-
+| Port | Purpose | Routes | CLI Argument | Environment Variable | +| ---- | ---------------------- | ------ | ------------------------- | --------------------------------------- | +| 8000 | Indexer management API | / | --indexer-management-port | `INDEXER_AGENT_INDEXER_MANAGEMENT_PORT` | ### Thiết lập cơ sở hạ tầng máy chủ bằng Terraform trên Google Cloud @@ -782,30 +598,11 @@ default => 0.1 * $SYSTEM_LOAD; Ví dụ truy vấn chi phí bằng cách sử dụng mô hình trên: -
- - - - - - - - - - - - - - - - - - - - - -
Truy vấnGiá
{ pairs(skip: 5000) { id } }0.5 GRT
{ tokens { symbol } }0.1 GRT
{ pairs(skip: 5000) { id { tokens } symbol } }0.6 GRT
-
+| Query | Price | +| ---------------------------------------------------------------------------- | ------- | +| { pairs(skip: 5000) { id } } | 0.5 GRT | +| { tokens { symbol } } | 0.1 GRT | +| { pairs(skip: 5000) { id { tokens } symbol } } | 0.6 GRT | #### Áp dụng mô hình chi phí diff --git a/pages/vi/studio/billing.mdx b/pages/vi/studio/billing.mdx index 588cd2ed2f40..fae13d468b27 100644 --- a/pages/vi/studio/billing.mdx +++ b/pages/vi/studio/billing.mdx @@ -43,7 +43,7 @@ For a quick demo of how billing works on the Subgraph Studio, check out the vide diff --git a/pages/vi/studio/subgraph-studio.mdx b/pages/vi/studio/subgraph-studio.mdx index 9af3926db3df..3bb38004be5a 100644 --- a/pages/vi/studio/subgraph-studio.mdx +++ b/pages/vi/studio/subgraph-studio.mdx @@ -70,7 +70,7 @@ You’ve made it this far - congrats! Publishing your subgraph means that an IPF diff --git a/pages/vi/supported-networks/near.mdx b/pages/vi/supported-networks/near.mdx index 288ac380494c..639b1de21297 100644 --- a/pages/vi/supported-networks/near.mdx +++ b/pages/vi/supported-networks/near.mdx @@ -226,7 +226,7 @@ Here are some example subgraphs for reference: [NEAR Receipts](https://github.com/graphprotocol/example-subgraph/tree/near-receipts-example) -## FAQ +## CÂU HỎI THƯỜNG GẶP ### How does the beta work? diff --git a/pages/zh/about/introduction.mdx b/pages/zh/about/introduction.mdx index e4833d5e34be..a0f852188001 100644 --- a/pages/zh/about/introduction.mdx +++ b/pages/zh/about/introduction.mdx @@ -22,19 +22,17 @@ The Graph 是一个去中心化的协议,用于索引和查询区块链的数 The Graph 通过一个去中心化的协议解决了这一问题,该协议可以对区块链数据进行索引并实现高性能和高效率的查询。 这些 API(索引的 "子图")然后可以用标准的 GraphQL API 进行查询。 今天,有一个托管服务,也有一个具有相同功能的分去中心化协议。 两者都由 [](https://github.com/graphprotocol/graph-node)Graph Node -的开放源码实现支持。 - ## The Graph 是如何工作的 -Graph 根据子图描述(称为子图清单)来学习什么以及如何为以太坊数据建立索引。 子图描述定义了子图所关注的智能合约,这些合约中需要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。 +的开放源码实现支持。 -一旦你写好了 `子图清单 `,你就可以使用 Graph CLI 将该定义存储在 IPFS 中,并告诉索引人开始为该子图编制索引数据。 +Graph 根据子图描述(称为子图清单)来学习什么以及如何为以太坊数据建立索引。 子图描述定义了子图所关注的智能合约,这些合约中需要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。 -这张图更详细地介绍了一旦部署了子图清单,处理以太坊交易的数据流。 +一旦你写好了 `子图清单`,你就可以使用 Graph CLI 将该定义存储在 IPFS 中,并告诉索引人开始为该子图编制索引数据。 ![](/img/graph-dataflow.png) -流程遵循这些步骤: +The flow follows these steps: 1. 一个去中心化的应用程序通过智能合约上的交易向以太坊添加数据。 2. 智能合约在处理交易时,会发出一个或多个事件。 @@ -44,6 +42,6 @@ Graph 根据子图描述(称为子图清单)来学习什么以及如何为 ## 下一步 -在下面的章节中,我们将更详细地介绍如何定义子图,如何部署它们,以及如何从 Graph 节点建立的索引中查询数据。 +流程遵循这些步骤: -在你开始编写你自己的子图之前,你可能想看一下 Graph 浏览器,探索一些已经部署的子图。 每个子图的页面都包含一个操作面板,让你用 GraphQL 查询该子图的数据。 +在下面的章节中,我们将更详细地介绍如何定义子图,如何部署它们,以及如何从 Graph 节点建立的索引中查询数据。 diff --git a/pages/zh/curating.mdx b/pages/zh/curating.mdx index 66ed9fe2bd2a..774fac8c90ee 100644 --- a/pages/zh/curating.mdx +++ b/pages/zh/curating.mdx @@ -6,7 +6,7 @@ title: 策展 在发出信号时,策展人可以决定在子图的一个特定版本上发出信号,或者使用自动迁移发出信号。 当使用自动迁移发出信号时,策展人的份额将始终升级到由开发商发布的最新版本。 如果你决定在一个特定的版本上发出信号,股份将始终保持在这个特定的版本上。 -Remember that curation is risky. 请做好你的工作,确保你在你信任的子图上进行策展。 请做好你的工作,确保你在你信任的子图上进行策展。 创建子图是没有权限的,所以人们可以创建子图,并称其为任何他们想要的名字。 关于策展风险的更多指导,请查看 [The Graph Academy 的策展指南。 ](https://thegraph.academy/curators/) +Remember that curation is risky. 请做好你的工作,确保你在你信任的子图上进行策展。 请做好你的工作,确保你在你信任的子图上进行策展。 创建子图是没有权限的,所以人们可以创建子图,并称其为任何他们想要的名字。 关于策展风险的更多指导,请查看 [The Graph Academy 的策展指南。](https://thegraph.academy/curators/) ## 联合曲线 101 @@ -33,7 +33,7 @@ Remember that curation is risky. 请做好你的工作,确保你在你信任 ## 如何进行信号处理 -现在我们已经介绍了关于粘合曲线如何工作的基本知识,这就是你将如何在子图上发出信号。 在 The Graph 资源管理器的策展人选项卡中,策展人将能够根据网络统计数据对某些子图发出信号和取消信号。 关于如何在资源管理器中做到这一点的一步步概述,请[点击这里。 ](https://thegraph.com/docs/explorer) +现在我们已经介绍了关于粘合曲线如何工作的基本知识,这就是你将如何在子图上发出信号。 在 The Graph 资源管理器的策展人选项卡中,策展人将能够根据网络统计数据对某些子图发出信号和取消信号。 关于如何在资源管理器中做到这一点的一步步概述,请[点击这里。](https://thegraph.com/docs/explorer) 策展人可以选择在特定的子图版本上发出信号,或者他们可以选择让他们的策展份额自动迁移到该子图的最新生产版本。 这两种策略都是有效的,都有各自的优点和缺点。 @@ -49,7 +49,7 @@ Remember that curation is risky. 请做好你的工作,确保你在你信任 因此,如果索引人不得不猜测他们应该索引哪些子图,那么他们赚取强大的查询费用的机会就会很低,因为他们没有办法验证哪些子图是高质量的。 进入策展阶段。 -策展人使 The Graph 网络变得高效,信号是策展人用来让索引人知道一个子图是好的索引的过程,其中 GRT 被存入子图的粘合曲线。 索引人可以从本质上信任策展人的信号,因为一旦发出信号,策展人就会为该子图铸造一个策展份额,使他们有权获得该子图所带来的部分未来查询费用。 策展人的信号以ERC20代币的形式表示,称为Graph Curation Shares(GCS)。 想赚取更多查询费的策展人应该向他们预测会给网络带来大量费用的子图发出他们的 GRT 信号。 策展人不能因为不良行为而被砍掉,但有一个对策展人的存款税,以抑制可能损害网络完整性的不良决策。 如果策展人选择在一个低质量的子图上进行策展,他们也会赚取较少的查询费,因为有较少的查询需要处理,或者有较少的索引人处理这些查询。 请看下面的图! +策展人使 The Graph 网络变得高效,信号是策展人用来让索引人知道一个子图是好的索引的过程,其中 GRT 被存入子图的粘合曲线。 索引人可以从本质上信任策展人的信号,因为一旦发出信号,策展人就会为该子图铸造一个策展份额,使他们有权获得该子图所带来的部分未来查询费用。 策展人的信号以 ERC20 代币的形式表示,称为 Graph Curation Shares(GCS)。 想赚取更多查询费的策展人应该向他们预测会给网络带来大量费用的子图发出他们的 GRT 信号。 策展人不能因为不良行为而被砍掉,但有一个对策展人的存款税,以抑制可能损害网络完整性的不良决策。 如果策展人选择在一个低质量的子图上进行策展,他们也会赚取较少的查询费,因为有较少的查询需要处理,或者有较少的索引人处理这些查询。 请看下面的图! ![Signaling diagram](/img/curator-signaling.png) @@ -64,7 +64,7 @@ Remember that curation is risky. 请做好你的工作,确保你在你信任 3. 当策展人烧掉他们的股份以提取 GRT 时,剩余股份的 GRT 估值将被降低。 请注意,在某些情况下,策展人可能决定 **一次性**烧掉他们的股份。 这种情况可能很常见,如果一个 dApp 开发者停止版本/改进和查询他们的子图,或者如果一个子图失败。 因此,剩下的策展人可能只能提取他们最初 GRT 的一小部分。 关于风险较低的网络角色,请看委托人 \[Delegators\](https://thegraph.com/docs/delegating). 4. 一个子图可能由于错误而失败。 一个失败的子图不会累积查询费用。 因此,你必须等待,直到开发人员修复错误并部署一个新的版本。 - 如果你订阅了一个子图的最新版本,你的股份将自动迁移到该新版本。 这将产生 0.5%的策展税。 - - 如果你已经在一个特定的子图版本上发出信号,但它失败了,你将不得不手动烧毁你的策展税。 请注意,你可能会收到比你最初存入策展曲线更多或更少的 GRT,这是作为策展人的相关风险。 然后你可以在新的子图版本上发出信号,从而产生1%的策展税。 + - 如果你已经在一个特定的子图版本上发出信号,但它失败了,你将不得不手动烧毁你的策展税。 请注意,你可能会收到比你最初存入策展曲线更多或更少的 GRT,这是作为策展人的相关风险。 然后你可以在新的子图版本上发出信号,从而产生 1%的策展税。 ## 策展常见问题 @@ -100,5 +100,5 @@ Remember that curation is risky. 请做好你的工作,确保你在你信任 title="YouTube video player" frameBorder="0" allowFullScreen -> + > diff --git a/pages/zh/developer/create-subgraph-hosted.mdx b/pages/zh/developer/create-subgraph-hosted.mdx index 6b235e379634..1dee95ffac20 100644 --- a/pages/zh/developer/create-subgraph-hosted.mdx +++ b/pages/zh/developer/create-subgraph-hosted.mdx @@ -6,7 +6,7 @@ Before being able to use the Graph CLI, you need to create your subgraph in [Sub The `graph init` command can be used to set up a new subgraph project, either from an existing contract on any of the public Ethereum networks, or from an example subgraph. This command can be used to create a subgraph on the Subgraph Studio by passing in `graph init --product subgraph-studio`. If you already have a smart contract deployed to Ethereum mainnet or one of the testnets, bootstrapping a new subgraph from that contract can be a good way to get started. But first, a little about the networks The Graph supports. -## Supported Networks +## 支持的网络 The Graph Network supports subgraphs indexing mainnet Ethereum: diff --git a/pages/zh/developer/querying-from-your-app.mdx b/pages/zh/developer/querying-from-your-app.mdx index c09c44efee72..949e915c8bfd 100644 --- a/pages/zh/developer/querying-from-your-app.mdx +++ b/pages/zh/developer/querying-from-your-app.mdx @@ -11,7 +11,7 @@ Queries (HTTP) https://api.studio.thegraph.com/query/// ``` -**Graph Explorer** +**Graph 浏览器** ```sh Queries (HTTP) diff --git a/pages/zh/developer/quick-start.mdx b/pages/zh/developer/quick-start.mdx index 5c07399604fd..1856aca08178 100644 --- a/pages/zh/developer/quick-start.mdx +++ b/pages/zh/developer/quick-start.mdx @@ -7,7 +7,7 @@ This guide will quickly take you through how to initialize, create, and deploy y - **Subgraph Studio** - used only for subgraphs that index **Ethereum mainnet** - **Hosted Service** - used for subgraphs that index **other networks** outside of Ethereum mainnnet (e.g. Binance, Matic, etc) -## Subgraph Studio +## 子图工作室 ### 1. 安装Graph CLI @@ -113,7 +113,7 @@ The logs should tell you if there are any errors. If your subgraph is failing, y You can now query your subgraph by following [these instructions](/developer/query-the-graph). You can query from your dapp if you don't have your API key via the free, rate limited temporary query URL that can be used for development and staging. You can read the additional instructions for how to query a subgraph from a frontend application [here](/developer/querying-from-your-app). -## Hosted Service +## 托管服务 ### 1. 安装Graph CLI diff --git a/pages/zh/global.json b/pages/zh/global.json index 8111158cc4e7..fa27403b545d 100644 --- a/pages/zh/global.json +++ b/pages/zh/global.json @@ -1,5 +1,17 @@ { + "language": "Language", "aboutTheGraph": "关于 The Graph", "developer": "开发商", - "supportedNetworks": "支持的网络" + "supportedNetworks": "支持的网络", + "collapse": "Collapse", + "expand": "Expand", + "previous": "Previous", + "next": "Next", + "editPage": "Edit page", + "pageSections": "Page Sections", + "linkToThisSection": "Link to this section", + "technicalLevelRequired": "Technical Level Required", + "notFoundTitle": "Oops! This page was lost in space...", + "notFoundSubtitle": "Check if you’re using the right address or explore our website by clicking on the link below.", + "goHome": "Go Home" } diff --git a/pages/zh/hosted-service/query-hosted-service.mdx b/pages/zh/hosted-service/query-hosted-service.mdx index ad41c4bede90..3655c0268dda 100644 --- a/pages/zh/hosted-service/query-hosted-service.mdx +++ b/pages/zh/hosted-service/query-hosted-service.mdx @@ -4,7 +4,7 @@ title: 查询托管服务 部署子图后,请访问[托管服务](https://thegraph.com/hosted-service/) 以打开 [GraphiQL](https://github.com/graphql/graphiql) 界面,您可以在其中通过发出查询和查看数据模式来探索已经部署的子图的 GraphQL API。 -下面提供了一个示例,但请参阅 [查询 API ](/developer/graphql-api) 以获取有关如何查询子图实体的完整参考。 +下面提供了一个示例,但请参阅 [查询 API](/developer/graphql-api) 以获取有关如何查询子图实体的完整参考。 #### 示例 @@ -21,7 +21,7 @@ title: 查询托管服务 ## 使用托管服务 -Graph Explorer 及其 GraphQL playground是探索和查询托管服务上部署的子图的有用方式。 +Graph Explorer 及其 GraphQL playground 是探索和查询托管服务上部署的子图的有用方式。 下面详细介绍了一些主要功能: diff --git a/pages/zh/index.json b/pages/zh/index.json index 0967ef424bce..05802f75ba78 100644 --- a/pages/zh/index.json +++ b/pages/zh/index.json @@ -1 +1,77 @@ -{} +{ + "title": "Get Started", + "intro": "Learn about The Graph, a decentralized protocol for indexing and querying data from blockchains.", + "shortcuts": { + "aboutTheGraph": { + "title": "关于 The Graph", + "description": "了解有关The Graph的更多信息" + }, + "quickStart": { + "title": "Quick Start", + "description": "Jump in and start with The Graph" + }, + "developerFaqs": { + "title": "Developer FAQs", + "description": "Frequently asked questions" + }, + "queryFromAnApplication": { + "title": "Query from an Application", + "description": "Learn to query from an application" + }, + "createASubgraph": { + "title": "Create a Subgraph", + "description": "Use Studio to create subgraphs" + }, + "migrateFromHostedService": { + "title": "Migrate from Hosted Service", + "description": "Migrating subgraphs to The Graph Network" + } + }, + "networkRoles": { + "title": "Network Roles", + "description": "Learn about The Graph’s network roles.", + "roles": { + "developer": { + "title": "开发者", + "description": "Create a subgraph or use existing subgraphs in a dapp" + }, + "indexer": { + "title": "索引", + "description": "操作节点以索引数据并提供查询" + }, + "curator": { + "title": "策展", + "description": "通过在子图上发出信号来组织数据" + }, + "delegator": { + "title": "委托", + "description": "通过将 GRT 委托给索引人来保护网络" + } + } + }, + "readMore": "Read more", + "products": { + "title": "产品", + "products": { + "subgraphStudio": { + "title": "子图工作室", + "description": "Create, manage and publish subgraphs and API keys" + }, + "graphExplorer": { + "title": "Graph 浏览器", + "description": "探索子图并与协议互动" + }, + "hostedService": { + "title": "托管服务", + "description": "在托管服务上创建和探索子图" + } + } + }, + "supportedNetworks": { + "title": "支持的网络", + "description": "The Graph supports the following networks on The Graph Network and the Hosted Service.", + "graphNetworkAndHostedService": "The Graph Network & Hosted Service", + "hostedService": "托管服务", + "betaWarning": "Network is in beta. Use with caution." + } +} diff --git a/pages/zh/indexing.mdx b/pages/zh/indexing.mdx index 5a3f24a80d4e..8d398be89d41 100644 --- a/pages/zh/indexing.mdx +++ b/pages/zh/indexing.mdx @@ -79,7 +79,7 @@ query indexerAllocations { - 如果以平局方式解决争议,渔夫的押金将被退还,并且争议的索引人不会被削减。 - 如果争议被接受,渔夫存入的 GRT 将被退回,有争议的 索引人将被削减,渔夫将获得被削减的 GRT 的 50%。 -争议可以在用户界面中的 `争议 `标签下的索引人档案页中查看。 +争议可以在用户界面中的 `争议`标签下的索引人档案页中查看。 ### 什么是查询费奖励? 何时发放?