ماذا ستحتاج:
- خلفية علم الحاسوب
- أساسيات Ethereum
- أساسيات حساب التفاضل والتكامل (تحسين القيود)
ما ستحصل عليه:
- أساسيات SNARKs صفر المعرفة
- أساسيات أشجار ميركل
- كيف يمكن لـ Ethereum توسيع نطاق آلاف المعاملات في الثانية بفضل SNARKs
تسمح SNARKs لمُثبِّت أن يثبت للمحقق أنه لديه حل W للمشكلة F مع المدخلات المشتركة / المعروفة X ، دون الكشف عن W.
قد يتطلب إيجاد حل للمشكلة قدرًا كبيرًا من القوة الحسابية والذاكرة.
لذا ، يمكن أن يكون المحقق متأكدًا بنسبة 100٪ من أن Prover قد عمل بشكل صحيح (ووجد حلًا) ، مع عدم إعادة العمل بنفسه / نفسه للتحقق من الحل ولا معرفة الحل على الإطلاق. انه سحر!
تتضمن العملية 3 خطوات:
- SETUP - تم إعداد المشكلة F (التي يجب التعبير عنها كبرنامج حساب تربيعي ، انظر أدناه) لـ SNARKs. هذه العملية ذات ذاكرة عالية جدًا وحوسبة مكثفة اعتمادًا على مدى تعقيد المشكلة (← عدد المدخلات والقيود ← أبعاد مصفوفة مشكلة إرضاء القيود). يجب أن يثق جميع الأطراف باللاعب الذي يقوم بالإعداد (يمكن أن يكون المدقق نفسه) ، حيث يتم استخدام إخراج الإعداد في المراحل التالية. عادة ما يتم الإعداد باستخدام ليبسنارك، مكتبة C ++ وهي التنفيذ الأكثر شيوعًا لـ zkSNARKs.
- إثبات - يستخدم The Prover ، الذي لديه الحل W للمشكلة F مع المدخلات المشتركة X (ربما قضى كميات هائلة من وحدة المعالجة المركزية والذاكرة للعثور عليه!) ، ليبسنارك وإخراج اقامة مرحلة لإنشاء برهان 𝚷. هذه العملية هي بالتأكيد ذاكرة عالية وحوسبة مكثفة (اعتمادًا على تعقيد المشكلة ، كما هو موضح أعلاه). وبدلاً من ذلك ، يكون حجم الناتج (أي برهان 𝚷) موجزًا وثابتًا بشكل مستقل عن تعقيد المشكلة. يحتاج البروفر إلى الثقة بمن قام بمرحلة الإعداد ، حيث إنه يستخدم مخرجاته ...
- جارٍ التحقق - متحقق - يعطي المدخلات إخراج مرحلة الإعداد ، والمدخلات المشتركة X والبرهان checks - يتحقق من الإثبات. إذا نجح التحقق ، تمكن Prover من إثبات للمحقق أنه وجد الحل W للمشكلة F ... دون الكشف عن W! الجزء الجميل هو أنه ليس فقط الدليل مقتصرًا ولديه دائمًا نفس الطول .. ، وعملية التحقق سريعة وليست ذاكرة / حوسبة مكثفة على الإطلاق. على عكس المرحلتين السابقتين ... يمكن إجراء التحقق بسهولة باستخدام هاتف ذكي بالمللي ثانية!
خلاصة جيدة (مصدر):
كيف يحدث هذا؟ حسنًا ، إنه سحر ميرلين! إذا كنت تريد الحصول على الرياضيات وراء ذلك ، نبدأ من هنا.
كيف يمكنني تحويل برنامجي إلى برنامج حسابي تربيعي؟
كما ذكر أعلاه ، يجب أن تكون مشكلة مرحلة الإعداد F برنامجًا حسابيًا تربيعيًا. قواعد اللعبة صعبة:
- يجب أن تكون إدخالات البرنامج أرقامًا. قم بتحويل الأشياء الخاصة بك (المصفوفات ، السلاسل ، إلخ) إلى أرقام. هذا تافه.
- يعني "نظام المعادلات المقيدة بشكل رباعي":
حيث x هو متجه الأبعاد n للمدخلات الخاصة بك ، m هو عدد القيود (أي عدد معادلات النظام الخاص بك) ، C هو معاملات n-by-n Matrix و q هو متجه معاملات n-dimensional. إذا كنت لا تحب المصفوفة والمتجهات ، فإليك الحالة n = 3 و m = 2 (3 إدخالات وقيدين):
- التنفيذ عبارة عن دائرة حسابية ، مما يعني أن النتيجة تم حل المشكلة (النظام تم حله ، أي أن كثيرات الحدود تساوي 0) أو لم تحل المشكلة (جميع الحالات الأخرى). بعبارة أخرى: "هذه المدخلات هي / ليست أحد الحلول لهذه المشكلة".
- C₁ ، C₂ ،… ، C𝚖 ، q₁ ، q₂ ،… ، معاملات q𝚖 هي قيود النظام. هذا هو الأساس الذي يحدد برنامجك. قم بتغييرها ... وستحصل على برنامج آخر! بالعودة إلى كيفية عمل SNARKs: C₁ ، C₂ ،… ، C𝚖 ، q₁ ، q₂ ،… ، q𝚖 هي مدخلات مرحلة الإعداد. وبالتالي ، فإن ناتج مرحلة الإعداد (التي تحتاجها للإثبات والتحقق) يرتبط ارتباطًا وثيقًا بتلك C₁ و C₂ و… و C𝚖 و q₁ و q₂ و… q𝚖 ويعمل فقط لهذه المشكلة. إذا قمت بتغييرها ، فأنت تحدد برنامج / مشكلة أخرى وتحتاج إلى إعادة تشغيل مرحلة الإعداد! x₁، x₂،…، x𝗇 هي المتغيرات (أي ما عليك تخمينه للحصول على حل النظام). لذلك عندما نقول "عزيزي المثل ، هل يمكنك أن تجد حلًا سريًا W للمشكلة F مع المدخلات المشتركة / العامة X" نعني على سبيل المثال "عزيزي المثل ، هل يمكنك العثور على قيم x₁ ، x₂ ، ... ، x𝗇 التي تحل النظام مع ، على سبيل المثال ، x₇ = 2393 ، x₅₂₆ = 5647؟ " يمكنك أن تفعل ما تريده مع كل x𝗇 ، باستثناء x₇ و x₅₂₆ ، اللذان يقتصران على المدخلات المشتركة / العامة.
إنها حياة صعبة ولكن يمكنك البقاء على قيد الحياة ... إذا كنت بحاجة إلى حلقات يمكنك فتحها وتكرار نفس العملية عدة مرات. أو إذا احتجت على سبيل المثال x₁⁴ x₂⁵ ، يمكنك تحديد إدخال جديد x₃ = x₁⁴ x₂⁵ واستخدام x₃ في قيودك. الأمر كله يتعلق بإضافة المتغيرات والقيود ... حتى بالنسبة للبرامج البسيطة ، من السهل الوصول إلى مئات الملايين أو المليارات من المدخلات والقيود!
اريد معرفة المزيد؟ اقرأ هنا. وأيضا تحقق من هذه الأساسية code_to_r1cs.py من ethereum / البحث.
ما هي شجرة ميركل؟
دالة التجزئة هي قاعدة تحدد مدخلات ذات حجم عشوائي إلى مخرجات ذات حجم ثابت. يمكننا أن نبتكر وظيفة تجزئة غير مجدية إلى حد كبير "Concatenate الأولين مع الحرفين الأخيرين" الذي يحول "Woody Allen" إلى "Woen" و "Paul McCartney" إلى "Paey".
شجرة Merkle هي بنية بيانات حيث يكون كل والد هو تجزئة ولديه. في الجزء العلوي تجد الجذر ، وهو تجزئة ابني المستوى 1. في الجزء السفلي ، كل ورقة هي تجزئة إدخال خارجي.
باستخدام خاصية التجزئة "Woody Allen" → "Woen":
عندما تتغير الورقة ، يتم نشر التعديل حتى الجذر. في حالة تغير ANTHONY ، يتغير أيضًا ANNY (صفحة) و CENY و CECO (جذر). أيًا كانت الأوراق تتغير ، يتغير الجذر أيضًا.
لست بحاجة إلى الشجرة بأكملها لإعادة حساب الجذر. في مثالنا ، إذا تغير ANTHONY وكنت تعرف كل من JACO و CECILY ، فيمكنك بسهولة إعادة حساب الجذر حتى إذا تجاهلت تمامًا JAMES و MARCO و JAES و MACO. بالنسبة للأشجار الضخمة ، يوفر هذا الكثير من الوقت!
ماذا في ذلك؟
تعتبر أشجار Merkle رائعة للتحقق من تكامل البيانات. عادة: أنت تعرف ما هو الجذر الصحيح ، وتتحقق من أن البيانات المستلمة تطابق ذلك الجذر. على سبيل المثال: الجهة الموثوقة التي لا يمكنها منحك مجموعة البيانات الكاملة للأسماء الأولى للأشخاص على وجه الأرض (لا وقت أو عرض نطاق ترددي أو ربما لا يمتلك البيانات على الإطلاق) يمنحك الجذر فقط (على سبيل المثال "CECO"). ما بعد الكلمات: تتلقى ملايين الأسماء الأولى ، مع الإشارة إلى رقم الورقة ، من قبل الآلاف من الأطراف غير الموثوق بها. حسنًا ، نظرًا لأن لديك الجذر الصحيح ، يمكنك التحقق من من يمكنك الاعتماد عليه ، ومن يمنحك بيانات مزيفة ...
أشجار ميركل هي جزء من حياتك أيضًا! عند تنزيل ملف 3 غيغابايت من ملف Torrent ، يتم تقسيم ملفك إلى ملايين الأجزاء الصغيرة. يتم تخزين تجزئة كل قطعة في ورقة. نظرًا لأنك تعرف ما هو الجذر الصحيح للشجرة ، في كل مرة تتلقى فيها قطعة من الملف من قبل شخص ما ، يمكنك التحقق مما إذا كانت صحيحة. إذا لم يكن كذلك ، يمكنك أن تطلب نفس القطعة لشخص آخر.
يمكنك القيام بذلك حتى لو لم تقم بتنزيل الشجرة بأكملها / جميع الأوراق: إذا كنت تعلم أن الجذر هو CECO وتثق في JACO ... عندما تتلقى القطعة ANTHONY يمكنك التحقق من ذلك حتى إذا لم تقم بتنزيله بعد قطع قطع ماركو وجيمس.
لماذا تعتبر أشجار Merkle مفيدة في تكنولوجيا دفتر الأستاذ الموزعة أمر واضح ومباشر: أنت تستخدم بروتوكولات الإجماع (بطيئة ومكلفة) فقط للوصول إلى إجماع على الجذر. ثم يمكن للعقد غير الموثوق بها في الشبكة مشاركة البيانات بكفاءة ومباشرة ... ويمكن أن تنام بشكل آمن وسليم بفضل فحوصات التكامل مع الجذر.
عندما طلب الله من Ethereum أن تختار قوتين عظمى بين الأمن والقابلية واللامركزية ... ضحى Ethereum بقابلية التوسع. في الواقع لا يوجد حد أقصى على "المعاملات في الثانية": فالحد الأقصى يتعلق بكمية الغاز لكل كتلة - وهو تبسيط كمية العمليات التي يمكنني القيام بها في كل كتلة. هذا الحد هو 2 مليون غاز. قد يعني هذا العديد من المعاملات "الصغيرة" (لا توجد بيانات مرتبطة بالمعاملات ، ولا توجد عمليات يتم تنفيذها على تلك البيانات) أو عدد قليل من المعاملات الكبيرة. الأمر متروك لعقد Ethereum ، التي تقدم المعاملات ، ولعمال المناجم في Ethereum ، الذين يدرجون في الحظر المعاملات التي تدفع أكثر.
يتم استخراج كتلة كل ~ 15 ثانية. هذا يعني ~ 32 مليون غاز في الدقيقة ، وهو بالتأكيد ليس كافيًا إذا أردنا أن تسير أغراض Ethereum في التيار الرئيسي.
بالمناسبة: توقف مع تلك المقارنات المملة بين Ethereum و Visa. نظام مركزي سوف دائما تكون أسرع من Ethereum ... حسب التصميم! يفعلون أشياء مختلفة وتحتاج إليها في مواقف مختلفة. إذا لم تكن بحاجة إلى اللامركزية وبيئة أقل ثقة ... بالطبع يجب عليك اختيار Visa. بالمختصر: حقيقة أن الخلاط يدور أسرع من الغسالة لا يعني أنك ستنظف بنطلونك في الخلاط!
دعونا نضع اللغز معا! تخيل أنه يمكنك "ضغط" العديد من المعاملات الصغيرة في صفقة واحدة كبيرة بفضل SNARKs. إذا كان الغاز الذي تنفقه هذه الصفقة الكبيرة أقل من مجموع الغاز الذي تنفقه المعاملات الصغيرة ، فهذا يعني أنك توفر الغاز.
ويعني توفير الغاز:
- المستخدمون الذين ينفقون أقل للمعاملات بشكل عام → قد يكون هذا بمثابة دفع للنظام البيئي بأكمله
- القدرة على وضع المزيد من الأشياء في كتلة → Ethereum تدور بشكل أسرع من الخلاط الخاص بك!
كيف تعمل؟
هناك مستخدمين ، ومُرحِّل (أو أكثر من المُرحِّلين) يجمعون المعاملات والعقد الذكي.
- المستخدمون الراغبون في لعب هذه اللعبة يرسلون Ether (أو الرموز المميزة) إلى عقد ذكي مدقق بشكل عام. لكل لاعب جديد يتم إنشاء ورقة جديدة في شجرة Merkle. تحتوي الورقة على معلومات حول مالك الأثير (عنوانه ، وهو أيضًا المفتاح العام) ، ومقدار الأثير وغير التابع (عداد المعاملات لهذا الحساب ، وهو صفر عند إضافة الورقة)
- عندما يريد (أ) إرسال Ether إلى B (يحتاج كلاهما إلى حساب فرعي / حساب في العقد الذكي) ، فإن A تحزم المعاملة التي تتضمن عنوان تبدأ منحساب ال إلى حساب ال السفير البابوي من الحساب ، كمية من الأثير ليتم نقلها و توقيع من المعاملة (موقعة بالمفتاح الخاص لحساب "من" ، بوضوح). ثم يرسل المعاملة المعبأة إلى المرحل.
- يقوم المرحل بتجميع جميع المعاملات التي تم تلقيها في فترة زمنية معينة (مثل ساعة واحدة) ، وتحديث شجرة Merkle بمبالغ الأرصدة الجديدة وإنشاء إثبات SNARK يثبت أن جميع التوقيعات وجذر شجرة Merkle الجديدة صالحة. يرسل المرحل أخيرًا الدولة الجديدة والبرهان إلى العقد الذكي.
- يصادق العقد الذكي على إثبات على السلسلة. إذا كان صالحًا ، فإنه يحفظ جذر شجرة Merkle للدولة الجديدة في الذاكرة الداخلية للعقد.
في الأساس ، يصور جذر شجرة ميركل الحالة الكاملة لجميع الحسابات. ولا يمكنك تغييره (= سرقة المال) إلا إذا كنت تستطيع إثبات صحة التوقيعات التي تؤدي معاملاتها إلى حالة جديدة ملخصة بالجذر الجديد الذي ترسله.
باختصار: يمتلك المستخدمون معاملات فائقة السرعة ومجانية تقريبًا ، مثل Coinbase ، دون الحاجة إلى الثقة في المرحل ، الذي لا يمكنه فعل أي شيء ، على عكس Coinbase ، بدون توقيعك.
إنها سلسلة جانبية غير محتجزة تتلخص حالتها بجذر شجرة ميركل.
دعونا نربط ما تعلمناه أعلاه حول SNARKs بما ناقشناه للتو حول القياس. هناك طرق مختلفة للقيام بذلك. سوف أقارن بين وصفتين: فيتاليك الإصدار وباري وايت هات الإصدار.
يتم الإعداد من قبل ...
الشخص الذي بدأ المشروع ، والذي أنشأ أيضًا العقد الذكي. كلما كان أكثر قابلية للتدقيق ، كان ذلك أفضل إعداد موثوق به!
يحفظ العقد الذكي ...
2 جذور Merkle (قيم بايت 32): تحتوي الشجرة الأولى على عناوين الحسابات (التوقيعات العامة) ، وأرصدة الحسابات الثانية وغير المضمونة
يتم التثبيت عن طريق ...
المذيع
المرسل يرسل إلى العقد الذكي ...
- 2 جذور Merkle للدولة الجديدة (عناوين الشجرة والتوازنات + شجرة nonces)
- قائمة المعاملات بدون توقيعات. "كل معاملة تكلف 68 غاز لكل بايت. وبالتالي ، بالنسبة للتحويل المنتظم ، يمكننا أن نتوقع أن تكون التكلفة الحدية 68 * 3 (من) + 68 * 3 (إلى) + 68 * 1 (رسوم) + 68 * 4 + 4 * 2 (مبلغ) + 68 * 2 (غير) أو 892 غاز "
تثبت المدخلات المعروفة لعملية ...
- 2 جذور ميركل الدولة القديمة
- 2 جذور ميركل الدولة الجديدة
- قائمة المعاملات
تثبت عملية إثبات أن ...
معطى
- 2 جذور ميركل الدولة القديمة (المخزنة بالفعل في العقد)
- 2 جذور ميركل الدولة الجديدة (المرسلة في المعاملة الزراعية)
- قائمة المعاملات (المرسلة في المعاملة aggr.)
... لدى المرسل تواقيع صالحة للانتقال من حالة ذات جذرين قديمين إلى حالة ذات جذرين جديدين بهذه المعاملات.
يتم التحقق بواسطة ...
العقد الذكي (مشفر بالصلابة ، والحيوية ، كما تريد!)
جارٍ التحقق من المدخلات المعروفة لعملية…
نفس عملية إثبات المدخلات المعروفة ، من الواضح ...!
حدود قابلية التوسع
تستخدم كل معاملة مجمعة 650 ألف غاز للتحقق من SNARK (تكلفة ثابتة) بالإضافة إلى 900 غاز تقريبًا التكلفة الحدية لكل معاملة (يكلف إرسال البيانات!). لذا باستخدام الكتلة بأكملها ، يمكن للمجمّع أن يتجمع على الأكثر:
وهو ما يعني ~ 544 مرة في الثانية
باري وايت هات الإصدار
يتم الإعداد من قبل ...
الرجل الذي بدأ المشروع.
يحفظ العقد الذكي ...
1 جذر ميركل مع الدولة الحالية. كل ورقة هي حالة مجزأة للحساب.
تريد خلق حساب؟
state = AccountState (pubkey ، التوازن ، nonce)
state.index = self._tree.append (state.hash ())
يتم التثبيت عن طريق ...
المذيع
المرسل يرسل إلى العقد الذكي ...
- دليل 𝚷
- جذر ميركل الدولة الجديدة
- دليل 𝚷
تثبت المدخلات المعروفة لعملية ...
- جذر ميركل الدولة القديمة
- جذر ميركل الدولة الجديدة
تثبت عملية إثبات أن ...
معطى
- جذر ميركل القديم (المخزن بالفعل في العقد)
- جذر Merkle الجديد (Senti في المعاملة aggr.)
... يحتوي المرحل على قائمة بالمعاملات ذات التوقيعات الصالحة للانتقال من حالة ذات جذر قديم إلى حالة ذات جذر جديد
يتم التحقق بواسطة ...
العقد الذكي (مشفر بالصلابة ، والحيوية ، كما تريد!)
جارٍ التحقق من المدخلات المعروفة لعملية…
نفس عملية إثبات المدخلات المعروفة ، من الواضح ...!
حدود قابلية التوسع
المرسل لا يرسل بيانات المعاملات إلى العقد الذكي (وهو مكلف) ، لذا فإن الحد الأقصى هو في الواقع كمية الغاز للتحقق من دليل SNARK.
يذكر هوارد وو العمل حول تشغيل مرحلة إثبات SNARK على الأنظمة الموزعة ، barryWhiteHat بتفاؤل تنص على أنه من الممكن تأكيد 16666 معاملة في SNARK ضخمة (مليار قيود!).
barryWhiteHat أيضا يعتقد من الممكن التحقق من البرهان على السلسلة باستخدام غاز 500 كيلو ، مما يعني أنه يمكنك وضع 16 سنارك (8 مليون / 500 ألف) لكل كتلة ، وهو ~ 1.07 SNARKs في الثانية ... وهو ما يعني ~ 17,832،XNUMX tx في الثانية (16,666 * 1.07).
إلى ما لا نهاية وما بعدها
- كل ما يلمع ليس ذهبًا / 1. يمكن أن تكون كمية قوة الحوسبة والذاكرة التي تحتاجها في مرحلة الإثبات صادمة حقًا. خاصة في إصدار barryWhiteHat ، حيث يتم نقل جزء من التعقيد خارج السلسلة. يكتب باري "على كمبيوتر محمول مزود بذاكرة وصول عشوائي بسعة 7 غيغابايت و 20 غيغابايت من مساحة المبادلة ، فإنه يكافح من أجل تجميع 20 معاملة في الثانية". حسنًا ، إذا كان الهدف 17,832،XNUMX مرة في الثانية ... لول. هذا يقدم تحديات حسابية متوازية غير تافهة. ولكن إذا كان متوسط تكلفة $ للمعاملة أرخص بكثير من خيار no-SNARKs العادي ... فاللعبة تستحق الشمعة.
- كل ما يلمع ليس ذهب / 2. هناك مشكلة تتعلق بتوافر البيانات! نظرًا لأنه يتم حفظ جذر الشجرة فقط في العقد ، يجب أن تتأكد من أن إصدارًا كاملاً من الشجرة (أو ، هو نفسه ، سجل المعاملات بأكمله) متاح دائمًا. إذا لم تكن البيانات متاحة ، فلن يتمكن المرء ، حتى مع المعاملات الموقعة الصالحة ، من فعل أي شيء لأنه لا يمكنه إثبات Old State → المعاملات → New State.
- من أجل أن يكون المرحل غير موثوق به وأن يكون لدى Ethers في العقد نفس قيمة Ethers خارج (مشكلة السيولة) ... يجب أن يكون المستخدمون قادرين على سحب الأموال من العقد الذكي عندما يريدون ، دون الاعتماد على مُرحل (محدد). كيف؟ هذا ليس في نطاق هذا المنشور 101 ، ولكن يمكنك القراءة حول هذا في الروابط المرفقة.
- هل تريد أن تفهم المزيد حول كيفية التعامل مع الحالة الحالية (العناوين والأرصدة والأرصدة) باستخدام شجرة Merkle؟ إضافة ورقة ، تحديث ورقة ، وما إلى ذلك؟ الدفع هذه المكتبة (ملف اختبار هنا) التي تستخدم هذه الكامنة وحدة. شكرا HarryR!
- هل تريد إعداد بيئة Ethereum-SNARKs الشخصية الخاصة بك؟ لنبدأ خارج السلسلة باستخدام C ++ (الإعداد والإثبات والتحقق) هنا. ثم يمكنك الانتقال إلى Ethereum (لا تنس ، يتم التحقق فقط على السلسلة!) مع Zokrates (الريبوأطلقت حملة وثائق لتبدأ بها).
- ماذا عن استخدام مراكم RSA بدلاً من أشجار Merkle؟ جوجل "تراكم rsa ethereum" للبدأ…
استمتعي!
تويتر marco_derossi
- 7
- حسابي
- الكل
- من بين
- توفر
- الأساسيات
- مليار
- الحالات
- تغيير
- الشيكات
- coinbase
- الحوسبة
- إجماع
- عقد
- التكاليف
- حالياًّ
- الوضع الحالي
- DApps
- البيانات
- مجموعة البيانات
- لامركزية
- بعد
- دفتر الأستاذ الموزع
- توزيع تكنولوجيا دفتر الأستاذ
- البيئة
- الأثير
- ethereum
- EU
- EV
- زائف
- أخيرا
- الاسم الأول
- مجانًا
- وظيفة
- لعبة
- GAS
- GitHub جيثب:
- إعطاء
- ذهبي
- خير
- شراء مراجعات جوجل
- عظيم
- توجيه
- مزيج
- هنا
- مرتفع
- تاريخ
- كيفية
- hr
- HTTPS
- ضخم
- مئات
- ia
- مؤشر
- معلومات
- IP
- IT
- وظيفة
- القفل
- كمبيوتر محمول
- كبير
- قيادة
- دفتر الحسابات
- مستوى
- LG
- المكتبة
- سيولة
- قائمة
- التيار
- برنامج Maps
- متوسط
- مليون
- عمال المناجم
- مال
- المقبلة.
- الاكثر شهره
- خطوة
- أسماء
- شبكة
- العقد
- أرقام
- عمليات
- طلب
- أخرى
- كاتوا ديلز
- مجتمع
- لاعب
- أكثر الاستفسارات
- قوة
- خاص
- المفتاح الخاص
- البرنامج
- تنفيذ المشاريع
- دليل
- يثبت
- جمهور
- مفتاح العام
- خلاصة
- آر إس إيه
- القواعد
- تشغيل
- خزنة
- إنقاذ
- التدرجية
- حجم
- التحجيم
- علوم
- أمن
- طقم
- مشاركة
- شاركت
- قصير
- الاشارات
- مقاس
- النوم
- سمارت
- عقد الذكية
- الهاتف الذكي
- So
- تطبيقات الكمبيوتر
- صلابة
- الحلول
- حل
- الفضاء
- الإنفاق
- بداية
- بدأت
- الولايه او المحافظه
- المحافظة
- ناجح
- نظام
- أنظمة
- تكنولوجيا
- تجربه بالعربي
- الوقت
- الرموز
- تيشرت
- سيل
- صفقة
- المعاملات
- الثقة
- آخر التحديثات
- المستخدمين
- قيمنا
- التحقق
- تأشيرة
- W
- من الذى
- كلمات
- للعمل
- أعمال
- قيمة
- X