میهن بلاکچین
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • NFT
    • مقالات عمومی
  • ایردراپ
  • هک و کلاهبرداری
  • قیمت ارزهای دیجیتال
  • ماشین حساب ارزهای دیجیتال
  • مقایسه قیمت در صرافی
No Result
مشاهده همه‌ی نتایج
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • NFT
    • مقالات عمومی
  • ایردراپ
  • هک و کلاهبرداری
  • قیمت ارزهای دیجیتال
  • ماشین حساب ارزهای دیجیتال
  • مقایسه قیمت در صرافی
No Result
مشاهده همه‌ی نتایج
میهن بلاکچین
No Result
مشاهده همه‌ی نتایج
میهن بلاکچین آموزش مقالات عمومی

مقدمه‌ای بر زبان برنامه‌نویسی تزوس و قرارداد هوشمند در این بلاک چین – بخش یک

نگارش:‌ایوب کریمی
26 اردیبهشت 1401 - 14:11
در مقالات عمومی
زمان مطالعه: 3 دقیقه
1
قرارداد هوشمند در تزوس

Michelson یکی از هیجان‌ برانگیز‌ترین زبان‌های برنامه‌نویسی برای قرارداد هوشمند در حال حاضر است. این زبان مبتنی بر استک (stack) است که در آن قرارداد‌های هوشمند برای تضمین امنیت بلاک چین (blockchain) تزوس (Tezos) نوشته شده است. Michelson در مقایسه با بایت کد (bytecode) قرارداد‌های هوشمند اتریوم (ethereum) خوانا‌تر، ایمن‌تر و قوی‌تر است. همه زبان‌های سطح بالا را می‌توان برای نوشتن قرارداد هوشمند در تزوس مورد استفاده قرار داد و همه آنها در نهایت به Michelson ترجمه می‌شوند.

در این مقاله به بررسی زبان برنامه‌نویسی Michelson می‌پردازیم و یاد می‌گیریم که منظور از مبتنی بودن بر استک چیست و در نهایت تعدادی قرارداد هوشمند ساده نیز می‌نویسیم. این مقاله برای افراد مبتدی در برنامه‌نویسی و یا توسعه تزوس نوشته شده است.

آنچه در این مطلب می‌خوانید

Toggle
  • مفهوم استک در زبان برنامه‌نویسی تزوس
  • عملکرد PUSH
  • ساختار قرارداد هوشمند Michelson
  • یک قرارداد هوشمند ساده Michelson
  • اضافه کردن اعداد صحیح و ذخیره نتیجه
  • نتیجه‌گیری

مفهوم استک در زبان برنامه‌نویسی تزوس

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

هر یک از این آموزش‌ها، استک را به صورتی دستکاری خواهد کرد. استک را به عنوان توده‌ای از داده‌ها در نظر بگیرید. آموزش‌هایی که می‌نویسید بر داده‌های موجود در توده تاثیر می‌گذارند. استک به ترتیب عکس ورود کار می‌کند و اگر بخواهید به داده‌هایی دسترسی داشته باشید که در بالای استک نیستند، ابتدا باید با داده‌هایی سر و کار داشته باشید که در بالای آن هستند.

زمانی که مشغول کدگذاری با Michelson هستید، سه مفهوم اصلی را باید در نظر داشته باشید:

داده‌های جدید در بالای استک قرار می‌گیرند.

داده‌های داخل استک تنها زمانی قابل دسترس می‌شوند که در بالای استک باشند.

ترتیب پردازش داده‌ها از بالای استک به پایین است.

در ادامه به یک مثال در این زمینه پرداخته می‌شود.

عملکرد PUSH

اگر می‌خواهید مقداری داده را به بالای استک اضافه کنید، باید عملکرد PUSH را فراخوانی کنید. این عملکرد به این صورت کار می‌کند:

تزوس

توجه داشته باشید که ممکن است از قبل داده‌هایی در استک موجود باشد، در این حالت، ارزش جدید بر بالای این داده‌ها گذاشته می‌شود. به این ترتیب می‌توان داده‌های جدید را در Michelson حرکت داد:

تزوس

ساختار قرارداد هوشمند Michelson

یک قرارداد هوشمند در زبان برنامه‌نویسی تزوس به صورت ساختاری ساده نمایش داده می‌شود که از سه مولفه ساخته شده است:

نوع پارامتر (parameter) مورد انتظار

نوع انبارش

کد Michelson

این را می‌توان به صورت کد زیر ترجمه کرد:

تزوس

علاوه بر این ساختار، دو قانون وجود دارد که باید در موقع نوشتن قرارداد هوشمند در زبان برنامه‌نویسی تزوس یعنی Michelson مورد توجه قرار داد:

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

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

یک قرارداد هوشمند ساده Michelson

حالا که ما در مورد PUSH و ساختار قرارداد هوشمند در Michelson می‌دانیم، اجازه دهید یکی بنویسیم!

در اینجا، ما یک قرارداد Hello World را خواهیم نوشت و یک رشته را در داخل انبارش ذخیره می‌کنیم:

تزوس

وقتی که این کد اجرا شد، اوضاع به مانند زیر پیش خواهد رفت:

تزوس

Parameter Unit نشان می‌دهد که پارامتر گذر کرده از نوع unit است.

Storage string نشان می‌دهد که قرارداد دارای انبارشی از نوع string است.

DROP کدی عملکردی است که هر چیزی را که در بالای استک باشد، بر خواهد داشت.

PUSH یک ارزش را به بالای استک می‌آورد که در اینجا رسته Hello World است.

NIL یک کد عملکردی است که لیستی خالی از آن نوع خاص را بر بالای استک اضافه می‌کند.

PAIR از دو مولفه بالای استک استفاده می‌کند؛ جفت جدیدی را که شامل این دو مولفه است، ایجاد می‌کند و جفت را بر روی استک به عقب انتقال می‌دهد.

توجه داشته باشید که هر دستور العمل با یک سمی کالن (semi-colon) به پایان می‌رسد.

اضافه کردن اعداد صحیح و ذخیره نتیجه

اجازه دهید یک عملکرد جدید بنام ADD را معرفی کنیم. احتمالا حدس زده‌اید که این عملکرد چکار می‌کند، این عملکرد دو ارزش عددی را به هم اضافه می‌کند. در اینجا قرارداد هوشمند ساده‌ای را می‌بینید که نحوه عملکرد چنین چیزی را در تزوس به نمایش می‌گذارد:

تزوس

اجازه دهید به داخل هر عملکرد برویم و ببینیم چه اتفاقی در داخل استک روی می‌دهد:

تزوس

Parameter unit، یک بار دیگر، ما از هیچ پارامتری استفاده نمی‌کنیم، بنابراین در حال گذر از یک unit هستیم.

Staorage int، این بار، ما در حال ذخیره ارزش عدد صحیح تایپ در داخل انبارش هستیم.

DROP، ما به جفت اولیه نیاز نداریم، بنابراین می‌توانیم از آن خلاص شویم و فضا را برای ارزش‌هایی که واقعا لازم است، فراهم نماییم.

Push int 2 ؛ Push int 3؛ توجه داشته باشید که این ترتیب اساسی است. زمانی که int 3 را انتقال دهید، int 2 به کف استک می‌رود. اگر چیزی اضافه شود، ترتیب خیلی اهمیت نخواهد داشت. اما اگر برای مثال دو عدد را کم کنیم، لازم است که آنها را در ترتیب صحیح انتقال دهیم.

ADD نیز به روشی مانند PAIR عمل می‌کند. باید از دو عنصر بالای استک استفاده کنید و به ارزش خاصی از آنها برسید و آن را به استک برگردانید. ADD دو عدد را به هم اضافه خواهد کرد. توجه داشته باشید که این اعداد باید از یک نوع باشند.

NIL، مانند قرارداد هوشمند قبل، لیستی خالی از عملکرد‌ها را انتقال می‌دهیم. می‌بینید که روال کار در قرارداد‌های تزوس بسیار شبیه به همدیگر است.

PAIR، جفتی شامل لیست عملکرد‌ها و انبارش جدید ایجاد می‌کند.

نتیجه‌گیری

اغلب در مورد پیچیدگی زبان برنامه‌نویسی تزوس اغراق می‌شود و شاید دلیل این امر، عدم وجود آموزش‌های مناسب برای مبتدیان در فضای اینترنت باشد. به همین خاطر بود که من اقدام به تهیه این مقاله آموزشی کردم که امیدوارم مثمر ثمر واقع شده باشد. درک Michelson کلید درک ویژگی‌های منحصر به فرد بلاک چین تزوس است و از این طریق می‌توان به امنیت و مفیدی این بلاک چین پی برد.

در بخش دوم از این مقاله، به بررسی Michelson ادامه خواهیم داد و تعدادی قرارداد هوشمند ساده دیگر را خواهیم نوشت. نظرات خود را حتما با ما در میان بگذارید.

تگ: اتریومتزوسقرارداد هوشمند
اشتراک‌گذاریتوئیت

نوشته‌های مشابه

تحلیل تکنیکال

تحلیل تکنیکال قیمت بیت کوین (BTC) و اتریوم (ETH)؛ ۱۸ اردیبهشت ۱۴۰۴

18 اردیبهشت 1404 - 10:30
230
ورلد لیبرتی
اخبار آلتکوین

رای‌گیری برای پروپوزال ایردراپ USD1 به هولدرهای WLFI آغاز شد؛ نگرانی سناتورهای دموکرات!

17 اردیبهشت 1404 - 18:00
30
ارتقای تاریخی پکترا (Pectra) در مین نت اتریوم فعال شد؛ گامی بزرگ از ادغام تا مقیاس‌پذیری لایه ۲
اخبار اتریوم

ارتقای تاریخی پکترا (Pectra) در مین نت اتریوم فعال شد؛ گامی بزرگ از ادغام تا مقیاس‌پذیری لایه ۲

17 اردیبهشت 1404 - 16:30
118
تحلیل تکنیکال بیت کوین و اتریوم
تحلیل تکنیکال

تحلیل تکنیکال قیمت بیت کوین (BTC) و اتریوم (ETH)؛ ۱۶ اردیبهشت ۱۴۰۴

16 اردیبهشت 1404 - 09:00
119
فیچر رویدادهای کریپتویی هفته
تحلیل فاندامنتال

رویدادهای مهم کریپتویی در هفته آتی؛ از اصلاحات قانونی تا نوسانات بازار

14 اردیبهشت 1404 - 16:30
88
اخبار اتریوم

قیمت اتریوم در برابر بیت کوین نزدیک به سطوح کلیدی سال ۲۰۱۹؛ آیا ۴۵۰٪ رشد تکرار خواهد شد؟!

14 اردیبهشت 1404 - 15:00
527
اشتراک
اطلاع از
1 دیدگاه
جدید ترین
قدیمی ترین محبوب ترین
Inline Feedbacks
View all comments

آموزش

نرخ بهره فدرال رزرو
کریپتو پدیا

نرخ بهره فدرال رزرو چیست؟

19 اردیبهشت 1404 - 12:00
63
صرافی یونی سواپ Uniswap
صرافی غیرمتمرکز

یونی‌ سواپ درگیر بحران حکمرانی؛ نماینده باسابقه DAO استعفا داد

18 اردیبهشت 1404 - 17:00
52
راه‌اندازی شبکه لایه دو توسط صرافی OKX با همکاری پالیگان؛ رشد OKB ادامه دارد؟
صرافی غیرمتمرکز

فعالیت مجدد تجمیع‌کننده DEX صرافی OKX؛ سیستم‌های امنیتی تقویت شدند

15 اردیبهشت 1404 - 17:00
68
گروک
آموزش

آموزش خودکارسازی معاملات ارز دیجیتال با هوش مصنوعی Grok 3

13 اردیبهشت 1404 - 08:09
3.4k
میکروپرداخت‌ها
مقالات عمومی

آینده میکروپرداخت‌ها (Micro Payments)؛ بررسی چالش‌های قدیمی و راه‌حل‌ها

13 اردیبهشت 1404 - 08:10
138
طلا پشتوانه استیبل کوین ها
مقالات عمومی

بازگشت استاندارد طلا؛ چرا بازتعریف پشتوانه استیبل کوین‌ها ضروری است؟

12 اردیبهشت 1404 - 16:00
119

پیشنهاد سردبیر

میکروپرداخت‌ها

آینده میکروپرداخت‌ها (Micro Payments)؛ بررسی چالش‌های قدیمی و راه‌حل‌ها

13 اردیبهشت 1404 - 08:10
138

آموزش خودکارسازی معاملات ارز دیجیتال با هوش مصنوعی Grok 3

بهترین پروژه‌های اکوسیستم سویی (SUI) که ارزش توجه دارند

تعرفه چیست و چرا اهمیت دارد؟ راهنمای ساده و دقیق برای درک نقش تعرفه‌ها در تجارت جهانی

تحلیل تکنیکال یا پیش‌گویی؟ نگاهی صادقانه به دنیای تریدر

آموزش تولید سیگنال معاملاتی از اخبار کریپتو با هوش مصنوعی ChatGPT

  • خانه
  • قیمت ارز
  • صرافی ها
  • ماشین حساب
No Result
مشاهده همه‌ی نتایج
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • NFT
    • مقالات عمومی
  • ایردراپ
  • هک و کلاهبرداری
  • قیمت ارزهای دیجیتال
  • ماشین حساب ارزهای دیجیتال
  • مقایسه قیمت در صرافی

© 2025 - تمامی حقوق مادی و معنوی این وبسایت نزد میهن بلاکچین محفوظ است