میهن بلاکچین
  • اخبار
    • همه
    • رمزارز در ایران
    • اخبار بیت کوین
    • اخبار اتریوم
    • اخبار آلتکوین
    • اخبار بلاکچین
    • اخبار عمومی
    • اطلاعیه صرافی‌های داخلی
  • تحلیل
    • همه
    • تحلیل آنچین
    • تحلیل اقتصادی
    • تحلیل تکنیکال
    • تحلیل فاندامنتال
  • آموزش
    • همه
    • کریپتو پدیا
    • کریپتو کده
    • دیفای
    • سرمایه گذاری
    • آموزش همه صرافی های ارز دیجیتال
    • ترید
    • کیف پول
    • بازی
    • استخراج
    • 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 ادامه خواهیم داد و تعدادی قرارداد هوشمند ساده دیگر را خواهیم نوشت. نظرات خود را حتما با ما در میان بگذارید.

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

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

۳ چالش اساسی استیبل کوین ها از نگاه ویتالیک بوترین
اخبار اتریوم

ویتالیک بوترین از پلتفرم انتشار پیام‌های ناشناس با نظارت آنچین رونمایی کرد

29 تیر 1405 - 23:00
39
فیچر آپدیت هفتگی
تحلیل فاندامنتال

نبض هفتگی بازار کریپتو؛ از اخبار مهم تا رویدادهای پیش‌روی هفته پایانی تیر

29 تیر 1405 - 09:00
26
آیا لایه ۲ رابینهود دلیل جدیدی برای صعود اتریوم است؟
مقالات عمومی

آیا لایه ۲ رابینهود دلیل جدیدی برای صعود اتریوم است؟

27 تیر 1405 - 12:00
43
گزارش جدید ردپای اقلیمی اتریوم را با دقتی تازه ترسیم می‌کند
مقالات عمومی

گزارش جدید ردپای اقلیمی اتریوم را با دقتی تازه ترسیم می‌کند

26 تیر 1405 - 12:00
27
فیچر قیمت اتریوم
اخبار اتریوم

کیف پول‌های جدید ۵۰ هزار اتریوم از صرافی‌ها خارج کردند؛ این بار آلت کوین‌ها صعود می‌کنند؟

25 تیر 1405 - 21:00
60
فیچر تحلیل اتر و بیت
تحلیل فاندامنتال

کاهش شدید توییت‌های بیت کوین و اتریوم؛ آیا سرمایه‌گذاران خرد از بازار خارج شده‌اند؟

23 تیر 1405 - 13:00
20
اشتراک
اطلاع از
1 دیدگاه
جدید ترین
قدیمی ترین محبوب ترین
Inline Feedbacks
View all comments

آموزش

پایان کار بیت‌مکس؛ صرافی خالق معاملات پرپچوال پس از ۱۱ سال تعطیل می‌شود
صرافی متمرکز

پایان کار بیت‌مکس؛ صرافی خالق معاملات پرپچوال پس از ۱۱ سال تعطیل می‌شود

1 مرداد 1405 - 14:27
33
معرفی زاکورا (Zakura)؛ فورکی برای مقیاس‌پذیری شبکه زی‌کش
کریپتو پدیا

معرفی زاکورا (Zakura)؛ فورکی برای مقیاس‌پذیری شبکه زی‌کش

27 تیر 1405 - 20:00
33
چرا هولدرهای بلندمدت ارزهای دیجیتال به جای فروش، با وثیقه گذاشتن دارایی‌هایشان وام می‌گیرند؟
مقالات عمومی

چرا هولدرهای بلندمدت ارزهای دیجیتال به جای فروش، با وثیقه گذاشتن دارایی‌هایشان وام می‌گیرند؟

27 تیر 1405 - 16:00
59
آیا لایه ۲ رابینهود دلیل جدیدی برای صعود اتریوم است؟
مقالات عمومی

آیا لایه ۲ رابینهود دلیل جدیدی برای صعود اتریوم است؟

27 تیر 1405 - 12:00
43
چرا جستجوی گوگل می‌تواند خطری برای کیف پول ارز دیجیتال باشد
مقالات عمومی

چرا جستجوی گوگل می‌تواند خطری برای کیف پول ارز دیجیتال باشد

26 تیر 1405 - 20:00
102
چرا توکنیزه‌ شدن سهام هنوز بازار سرمایه را متحول نکرده است؟
مقالات عمومی

چرا توکنیزه‌ شدن سهام هنوز بازار سرمایه را متحول نکرده است؟

26 تیر 1405 - 16:00
46

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

فیچر بازار سهام

وال‌استریت فقط برای آمریکایی‌ها نیست؛ قبل از خرید اپل، انویدیا یا S&P 500 این راهنما را بخوانید

16 تیر 1405 - 17:00
189

روزهای قرمز بازار؛ قربانی ترس می‌شوید یا استراتژی‌تان را تغییر می‌دهید؟

تحریم صرافی های ایرانی و ریسک حضانتی؛ دارایی‌هایمان واقعاً در خطر است؟

گزارش ویژه: اکسکوینو چگونه از اختلالی ادعایی به بحرانی سیستمی رسید؟ کالبدشکافی ورشکستگی پنهان در فین‌تک ایران

۵ گام طلایی برای ردیابی کیف پول‌ نهنگ‌ها و به دست آوردن سرمایه میلیون دلاری

«برای آنچه نیاز دارید، چه بهایی می‌پردازید؟» صورت‌مسئله تازه اقتصاد جهانی و ایران

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

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

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

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