سرپنت (Serpent) چیست؟ زبان برنامه نویسی قرارداد هوشمند اتریوم

سرپنت Serpent یکی از زبان های برنامه نویسی سطح بالایی است که برای نوشتن قراردادهای هوشمند اتریوم استفاده می شود. این زبان، همانطور که از معنی آن نشان داده شده است، بسیار شبیه به پایتون طراحی شده است. در نظر گرفته شده است که حداکثر تمیز و ساده باشد و بسیاری از مزایای کارایی یک زبان سطح پایین را با سهولت استفاده در سبک برنامه نویسی ترکیب کند و در عین حال ویژگی های خاص دامنه را برای برنامه نویسی قراردادی اضافه کند. آخرین نسخه کامپایلر Serpent که در github موجود است، به زبان ++C نوشته شده است که به راحتی در هر کلاینت گنجانده شده است.

این آموزش مبتنی بر دانش اولیه در مورد نحوه کار اتریوم است، از جمله مفهوم بلوک ها، تراکنش ها، قراردادها و پیام ها و این واقعیت که قراردادها یک آرایه بایت را به عنوان ورودی می گیرند و یک آرایه بایت را به عنوان خروجی ارائه می دهند. اگر این کار را نمی کنید، برای یک آموزش اولیه به اینجا بروید.

این مستندات کامل نیست و این مثال‌ها ممکن است کمک بیشتری کند:

https://github.com/AugurProject/augur-core/tree/master/tests/serpent_tests

https://github.com/ethereum/serpent/tree/develop/examples

https://github.com/AugurProject/augur-core/tree/master/src

https://github.com/ethereum/dapp-bin

تفاوت بین سرپنت و پایتون

تفاوت های مهم میان سرپنت و پایتون عبارتند از:

  • اعداد پایتون به طور بالقوه دارای اندازه نامحدود هستند، اعداد Serpent حدود 2256 را تشکیل می دهند. به عنوان مثال، در Serpent عبارت 3^(2^254) به طور شگفت انگیزی به 1 ارزیابی می شود، حتی اگر در واقعیت عدد صحیح واقعی آنقدر بزرگ است که بتوان آن را به طور کامل در جهان ثبت کرد.
  • سرپنت ×سرپنت اعشاری ندارد.
  • سرپنت هیچ گونه درکی از لیست ([x**2 for x in my_list] مانند این عبارت)، فرهنگ لغت یا سایر ویژگی های پیشرفته ندارد.
  • سرپنت هیچ مفهومی از توابع درجه یک ندارد. قراردادها دارای توابع هستند و می توانند توابع خود را فراخوانی کنند، اما متغیرها (به جز ذخیره سازی) در طول تماس ها باقی نمی مانند.
  • سرپنت مفهومی از متغیرهای ذخیره سازی پایدار دارد.
  • سرپنت یک عبارت خارجی دارد که برای فراخوانی توابع از قراردادهای دیگر استفاده می شود.
منبع : ethereumbuilders.gitbooks.io