Урок 2

فهم بناء جملة Vyper والمفاهيم الأساسية

استعد للتعمق في عالم عقود Ethereum الذكية مع Vyper في المستقبل. في الدرس 3، سنلقي نظرة على مبادئ Vyper الأكثر تعقيدًا. سنتخذ نهجًا عمليًا أكثر، مع التركيز على تصميم وتنفيذ والتفاعل مع العقود الذكية على شبكة إيثريوم.

مقدمة إلى بناء جملة Vyper

تتواصل أجهزة الكمبيوتر، مثل الأشخاص، بمجموعة متنوعة من اللغات. سوليديتي وفايبر هما لغتان بارزتان في عالم بلوكتشين لإيثريوم. قدمنا Vyper، وهي لغة برمجة العقود الذكية لإيثيريوم، وقارناها بـ Solidity في الدرس 1. في هذا القسم بدلاً من ذلك، سوف نتعمق في صيغة Vyper، والتي تشبه بشكل لافت للنظر صيغة Python. أحد أهداف Vyper هو تسهيل ترميز العقود الذكية مع الحفاظ على الأمان الجيد. الغرض من بناء الجملة هو أن يكون بسيطًا ومباشرًا قدر الإمكان. ستشعر وكأنك في المنزل تمامًا إذا كنت مبرمجًا في Python. حتى لو لم تكن كذلك، فإن صيغة Vyper الشبيهة بلغة Python سهلة التعلم. دعونا نلقي نظرة على المكونات النحوية الرئيسية لـ Vyper.

الثعبان
# هذا تعليق في Vyper
@external
def greet (الاسم: سلسلة [10]) - > سلسلة [30]:
 قم بإرجاع الاتصال ("مرحبًا"، الاسم،! " ")

أنواع البيانات الأساسية في Vyper

أنواع البيانات هي اللبنات الأساسية لأي لغة برمجة. وهي تحدد نوع البيانات التي يمكن تخزينها ومعالجتها داخل البرنامج. لنستعرض بعض أنواع البيانات الأساسية التي تقدمها Vyper:

  • Boolean: هذا نوع بيانات ثنائي يمكن أن يحتوي على واحدة من قيمتين محتملتين، صحيحة أو خاطئة. مثال: العلم: bool = True
  • الأعداد الصحيحة: يدعم Vyper الأعداد الصحيحة، وهي أعداد صحيحة يمكن أن تكون إما موجبة أو سالبة أو صفرية. تأتي بأحجام مختلفة من 8 إلى 256 بت، وأكثرها شيوعًا هو int128. مثال: العد: int128 = 10
  • عشري: يُستخدم هذا لتمثيل أرقام الفاصلة العائمة، أي الأرقام التي تحتوي على نقطة عشرية. مثال: السعر: عشري = 123.45
  • وحدات البايت والسلسلة: وحدات البايت هي تسلسلات بيانات البايت، بينما السلاسل عبارة عن تسلسلات من أحرف unicode. مثال: الاسم: سلسلة [20] = 'أليس'
  • القوائم والمصفوفات: القوائم هي مجموعة من العناصر من نفس نوع البيانات. المصفوفات، من ناحية أخرى، هي نوع خاص من القوائم حيث يكون الطول ثابتًا. مثال: الأرقام: int128 [5] = [1، 2، 3، 4، 5]
    لكل نوع من أنواع البيانات هذه مكانه الخاص في كتابة العقود الذكية. ستحتاج إلى اختيار نوع البيانات المناسب لكل جزء من البيانات التي تريد تخزينها، استنادًا إلى نوع العمليات التي تريد تنفيذها على تلك البيانات.

للتلخيص، بعض القيم المتوفرة في Vyper:

  • كتاب
  • int128
  • الوحدة 256
  • الكسور العشرية
  • يخاطب
  • بايت 32
  • وحدات البايت
  • خيط
الثعبان
# @version ^0.3.7

ب: الجمهور (كتاب)
i: عامة (int128) # -2 ** 127 إلى (2 ** 127 - 1)
u: عامة (الوحدة 256) # 0 إلى 2 ** 256 - 1
ديسمبر: عام (عشري) # -2 ** 127 إلى (2 ** 127 - 1)، 10 منازل عشرية
العنوان: عام (العنوان)
b32: عام (بايت 32)
bs: عام (بايت [100])
s: عامة (سلسلة [100])


@external
ديف __init__():
 الذات. = خطأ
 سيلفي. = -1
 الذات. = 123
 Self.dec = 3.14
 رقم التعريف الذاتي = 0x704534A22F03EA46F76A07A195568D 115E2E6d52
 self.b32 = 0xada1b75f8ae9a65dcc 16 قدم 95678ac203030505c6b465c8206e26ae84b525cdacb
 self.bs = b\ x01 " "
 الذات. = " مرحبًا فايبر "

وظائف في فايبر

الوظائف في Vyper، تمامًا كما هو الحال في العديد من اللغات الأخرى، هي كتل من التعليمات البرمجية القابلة لإعادة الاستخدام التي تؤدي مهمة محددة. إنها توفر وحدة نمطية أفضل لتطبيقك وتسمح بإعادة استخدام التعليمات البرمجية.

في Vyper، يمكنك تحديد وظيفة باستخدام الكلمة الأساسية def ، تمامًا كما هو الحال في Python. تحتوي الوظائف أيضًا على قائمة المعلمات ونوع الإرجاع. إليك وظيفة Vyper البسيطة:

الثعبان
@external
تعريف الإضافة (أ: int128، ب: int128) - > int128:
 إرجاع أ + ب

يجعل مصمم @externalهذه الوظيفة قابلة للاستدعاء من خارج العقد (عن طريق معاملة أو عقد آخر). بدون هذا المصمم، ستكون الوظيفة قابلة للاستدعاء فقط داخل العقد حيث يتم تعريفها.

الوظائف الداخلية والخارجية

لا يمكن استدعاء وظائف @internal إلا داخل العقد.

لا يمكن استدعاء وظائف @external إلا من خارج العقد.

مثال:

الثعبان
# @version ^0.3.7

# لا يمكن استدعاء الوظائف الداخلية إلا داخل هذا العقد
@internal
@pure
def _add (x: الوحدة 256، y: الوحدة 256) - الوحدة 256: >
 إرجاع x + y


@external
@view
راجع ExtFunc () - > الكتاب:
 إرجاع صحيح


# لا يمكن استدعاء الوظائف الخارجية إلا من خارج هذا العقد
@external
@view
متوسط العمق (x: الوحدة 256، y: الوحدة 256) - الوحدة 256: >
 # لا يمكن استدعاء وظيفة خارجية أخرى
 # وظيفة البحث الذاتي ()

    # يمكن استدعاء الوظائف الداخلية
 z: الوحدة 256 = الذات. _إضافة (x)، ذ)

 الإرجاع (x + y)/2


@internal
@pure
def _sqr (x: الوحدة 256) - الوحدة 256: >
 إرجاع x * x


@external
@view
مجموع المربعات (x: الوحدة 256، y: الوحدة 256) - الوحدة 256: >
 عودة الذات. _متر مربع (x) + الذات. _متر مربع (g)

هياكل التحكم في Vyper

يتم استخدام هياكل التحكم لتنفيذ إجراءات مختلفة بناءً على قرارات مختلفة. تقدم Vyper العديد من هياكل التحكم بما في ذلك if و for loop و while loop.

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

الثعبان
@external
ديف هو_أكبر_من_عشرة (على النحو التالي: int128) - الكتاب: >
 إذا كان الرقم > 10:
 إرجاع صحيح
 وإلا:
 إرجاع خاطئ

تحتوي حلقة for في Vyper على نفس الصيغة الموجودة في Python. يمكنك تنفيذ مجموعة من العبارات، مرة واحدة لكل عنصر في القائمة أو المجموعة أو المجموعة وما إلى ذلك.

الثعبان
الأرقام: int128 [5] = [1، 2، 3، 4، 5]

@external
أرقام المجموع () - > int128:
 المجموع: int128 = 0
 بالنسبة لها في النطاق (5):
 المجموع += الأرقام الذاتية [i]
    مبلغ الإرجاع

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

الثعبان
@external
عدد مرات العد إلى عشرة () - int128: >
 العدد: int128 = 0
 بينما العد < 10:
 العد += 1
 عدد الإرجاع

معالجة الأخطاء في Vyper

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

الثعبان
@external
deff difrie (a: عشري، b: عشري) - > عشري:
 أؤكد ب! = 0، " لا يمكن القسمة على صفر "
 إرجاع أ/ب

في الكود أعلاه، إذا كانت b تساوي صفرًا، فسيتم طرح رسالة خطأ «لا يمكن القسمة على صفر»، وسيتم إرجاع المعاملة. وإلا، فستنتقل إلى عملية التقسيم.

يوفر Vyper أيضًا عبارة revert التي يمكن استخدامها لإيقاف تنفيذ المكالمة الحالية وإرجاع تغييرات الحالة، مع توفير رسالة خطأ أيضًا.

هذا ملخص سريع لصيغة Vyper ومبادئه الأساسية. مفتاح إتقان Vyper، كما هو الحال مع أي لغة برمجة، هو الممارسة. أنا أؤيد استخدام هذه التقنيات لكتابة تطبيقات بسيطة. في الجلسة التالية، سنتناول كيفية استخدام Vyper لإنشاء العقود الذكية والحفاظ عليها. ابقِ عينك!

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

استعد للتعمق في عالم عقود Ethereum الذكية مع Vyper في المستقبل. في الدرس 3، سنلقي نظرة على مبادئ Vyper الأكثر تعقيدًا. سنتخذ نهجًا عمليًا أكثر، مع التركيز على تصميم وتنفيذ والتفاعل مع العقود الذكية على شبكة إيثريوم. افهم أن عالم تقنية blockchain واسع ومتغير باستمرار. بصفتك مهندسًا في مجال بلوكتشين، فإن رحلتك للاكتشاف والتعلم لا تنتهي أبدًا حقًا. أنت على طريق الإتقان، وكل خطوة للأمام، مهما كانت صغيرة، هي خطوة للأمام. استمر في مجهودك الممتاز، وسأراك في الدرس 3!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 2

فهم بناء جملة Vyper والمفاهيم الأساسية

استعد للتعمق في عالم عقود Ethereum الذكية مع Vyper في المستقبل. في الدرس 3، سنلقي نظرة على مبادئ Vyper الأكثر تعقيدًا. سنتخذ نهجًا عمليًا أكثر، مع التركيز على تصميم وتنفيذ والتفاعل مع العقود الذكية على شبكة إيثريوم.

مقدمة إلى بناء جملة Vyper

تتواصل أجهزة الكمبيوتر، مثل الأشخاص، بمجموعة متنوعة من اللغات. سوليديتي وفايبر هما لغتان بارزتان في عالم بلوكتشين لإيثريوم. قدمنا Vyper، وهي لغة برمجة العقود الذكية لإيثيريوم، وقارناها بـ Solidity في الدرس 1. في هذا القسم بدلاً من ذلك، سوف نتعمق في صيغة Vyper، والتي تشبه بشكل لافت للنظر صيغة Python. أحد أهداف Vyper هو تسهيل ترميز العقود الذكية مع الحفاظ على الأمان الجيد. الغرض من بناء الجملة هو أن يكون بسيطًا ومباشرًا قدر الإمكان. ستشعر وكأنك في المنزل تمامًا إذا كنت مبرمجًا في Python. حتى لو لم تكن كذلك، فإن صيغة Vyper الشبيهة بلغة Python سهلة التعلم. دعونا نلقي نظرة على المكونات النحوية الرئيسية لـ Vyper.

الثعبان
# هذا تعليق في Vyper
@external
def greet (الاسم: سلسلة [10]) - > سلسلة [30]:
 قم بإرجاع الاتصال ("مرحبًا"، الاسم،! " ")

أنواع البيانات الأساسية في Vyper

أنواع البيانات هي اللبنات الأساسية لأي لغة برمجة. وهي تحدد نوع البيانات التي يمكن تخزينها ومعالجتها داخل البرنامج. لنستعرض بعض أنواع البيانات الأساسية التي تقدمها Vyper:

  • Boolean: هذا نوع بيانات ثنائي يمكن أن يحتوي على واحدة من قيمتين محتملتين، صحيحة أو خاطئة. مثال: العلم: bool = True
  • الأعداد الصحيحة: يدعم Vyper الأعداد الصحيحة، وهي أعداد صحيحة يمكن أن تكون إما موجبة أو سالبة أو صفرية. تأتي بأحجام مختلفة من 8 إلى 256 بت، وأكثرها شيوعًا هو int128. مثال: العد: int128 = 10
  • عشري: يُستخدم هذا لتمثيل أرقام الفاصلة العائمة، أي الأرقام التي تحتوي على نقطة عشرية. مثال: السعر: عشري = 123.45
  • وحدات البايت والسلسلة: وحدات البايت هي تسلسلات بيانات البايت، بينما السلاسل عبارة عن تسلسلات من أحرف unicode. مثال: الاسم: سلسلة [20] = 'أليس'
  • القوائم والمصفوفات: القوائم هي مجموعة من العناصر من نفس نوع البيانات. المصفوفات، من ناحية أخرى، هي نوع خاص من القوائم حيث يكون الطول ثابتًا. مثال: الأرقام: int128 [5] = [1، 2، 3، 4، 5]
    لكل نوع من أنواع البيانات هذه مكانه الخاص في كتابة العقود الذكية. ستحتاج إلى اختيار نوع البيانات المناسب لكل جزء من البيانات التي تريد تخزينها، استنادًا إلى نوع العمليات التي تريد تنفيذها على تلك البيانات.

للتلخيص، بعض القيم المتوفرة في Vyper:

  • كتاب
  • int128
  • الوحدة 256
  • الكسور العشرية
  • يخاطب
  • بايت 32
  • وحدات البايت
  • خيط
الثعبان
# @version ^0.3.7

ب: الجمهور (كتاب)
i: عامة (int128) # -2 ** 127 إلى (2 ** 127 - 1)
u: عامة (الوحدة 256) # 0 إلى 2 ** 256 - 1
ديسمبر: عام (عشري) # -2 ** 127 إلى (2 ** 127 - 1)، 10 منازل عشرية
العنوان: عام (العنوان)
b32: عام (بايت 32)
bs: عام (بايت [100])
s: عامة (سلسلة [100])


@external
ديف __init__():
 الذات. = خطأ
 سيلفي. = -1
 الذات. = 123
 Self.dec = 3.14
 رقم التعريف الذاتي = 0x704534A22F03EA46F76A07A195568D 115E2E6d52
 self.b32 = 0xada1b75f8ae9a65dcc 16 قدم 95678ac203030505c6b465c8206e26ae84b525cdacb
 self.bs = b\ x01 " "
 الذات. = " مرحبًا فايبر "

وظائف في فايبر

الوظائف في Vyper، تمامًا كما هو الحال في العديد من اللغات الأخرى، هي كتل من التعليمات البرمجية القابلة لإعادة الاستخدام التي تؤدي مهمة محددة. إنها توفر وحدة نمطية أفضل لتطبيقك وتسمح بإعادة استخدام التعليمات البرمجية.

في Vyper، يمكنك تحديد وظيفة باستخدام الكلمة الأساسية def ، تمامًا كما هو الحال في Python. تحتوي الوظائف أيضًا على قائمة المعلمات ونوع الإرجاع. إليك وظيفة Vyper البسيطة:

الثعبان
@external
تعريف الإضافة (أ: int128، ب: int128) - > int128:
 إرجاع أ + ب

يجعل مصمم @externalهذه الوظيفة قابلة للاستدعاء من خارج العقد (عن طريق معاملة أو عقد آخر). بدون هذا المصمم، ستكون الوظيفة قابلة للاستدعاء فقط داخل العقد حيث يتم تعريفها.

الوظائف الداخلية والخارجية

لا يمكن استدعاء وظائف @internal إلا داخل العقد.

لا يمكن استدعاء وظائف @external إلا من خارج العقد.

مثال:

الثعبان
# @version ^0.3.7

# لا يمكن استدعاء الوظائف الداخلية إلا داخل هذا العقد
@internal
@pure
def _add (x: الوحدة 256، y: الوحدة 256) - الوحدة 256: >
 إرجاع x + y


@external
@view
راجع ExtFunc () - > الكتاب:
 إرجاع صحيح


# لا يمكن استدعاء الوظائف الخارجية إلا من خارج هذا العقد
@external
@view
متوسط العمق (x: الوحدة 256، y: الوحدة 256) - الوحدة 256: >
 # لا يمكن استدعاء وظيفة خارجية أخرى
 # وظيفة البحث الذاتي ()

    # يمكن استدعاء الوظائف الداخلية
 z: الوحدة 256 = الذات. _إضافة (x)، ذ)

 الإرجاع (x + y)/2


@internal
@pure
def _sqr (x: الوحدة 256) - الوحدة 256: >
 إرجاع x * x


@external
@view
مجموع المربعات (x: الوحدة 256، y: الوحدة 256) - الوحدة 256: >
 عودة الذات. _متر مربع (x) + الذات. _متر مربع (g)

هياكل التحكم في Vyper

يتم استخدام هياكل التحكم لتنفيذ إجراءات مختلفة بناءً على قرارات مختلفة. تقدم Vyper العديد من هياكل التحكم بما في ذلك if و for loop و while loop.

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

الثعبان
@external
ديف هو_أكبر_من_عشرة (على النحو التالي: int128) - الكتاب: >
 إذا كان الرقم > 10:
 إرجاع صحيح
 وإلا:
 إرجاع خاطئ

تحتوي حلقة for في Vyper على نفس الصيغة الموجودة في Python. يمكنك تنفيذ مجموعة من العبارات، مرة واحدة لكل عنصر في القائمة أو المجموعة أو المجموعة وما إلى ذلك.

الثعبان
الأرقام: int128 [5] = [1، 2، 3، 4، 5]

@external
أرقام المجموع () - > int128:
 المجموع: int128 = 0
 بالنسبة لها في النطاق (5):
 المجموع += الأرقام الذاتية [i]
    مبلغ الإرجاع

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

الثعبان
@external
عدد مرات العد إلى عشرة () - int128: >
 العدد: int128 = 0
 بينما العد < 10:
 العد += 1
 عدد الإرجاع

معالجة الأخطاء في Vyper

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

الثعبان
@external
deff difrie (a: عشري، b: عشري) - > عشري:
 أؤكد ب! = 0، " لا يمكن القسمة على صفر "
 إرجاع أ/ب

في الكود أعلاه، إذا كانت b تساوي صفرًا، فسيتم طرح رسالة خطأ «لا يمكن القسمة على صفر»، وسيتم إرجاع المعاملة. وإلا، فستنتقل إلى عملية التقسيم.

يوفر Vyper أيضًا عبارة revert التي يمكن استخدامها لإيقاف تنفيذ المكالمة الحالية وإرجاع تغييرات الحالة، مع توفير رسالة خطأ أيضًا.

هذا ملخص سريع لصيغة Vyper ومبادئه الأساسية. مفتاح إتقان Vyper، كما هو الحال مع أي لغة برمجة، هو الممارسة. أنا أؤيد استخدام هذه التقنيات لكتابة تطبيقات بسيطة. في الجلسة التالية، سنتناول كيفية استخدام Vyper لإنشاء العقود الذكية والحفاظ عليها. ابقِ عينك!

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

استعد للتعمق في عالم عقود Ethereum الذكية مع Vyper في المستقبل. في الدرس 3، سنلقي نظرة على مبادئ Vyper الأكثر تعقيدًا. سنتخذ نهجًا عمليًا أكثر، مع التركيز على تصميم وتنفيذ والتفاعل مع العقود الذكية على شبكة إيثريوم. افهم أن عالم تقنية blockchain واسع ومتغير باستمرار. بصفتك مهندسًا في مجال بلوكتشين، فإن رحلتك للاكتشاف والتعلم لا تنتهي أبدًا حقًا. أنت على طريق الإتقان، وكل خطوة للأمام، مهما كانت صغيرة، هي خطوة للأمام. استمر في مجهودك الممتاز، وسأراك في الدرس 3!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.