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

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

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

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

ArzPlus Logo فرصت ویژه: ۱ میلیارد بیبی دوج رایگان!

همین حالا در ارزپلاس ثبت‌نام کنید و ۱ میلیارد بیبی دوج هدیه بگیرید. بدون قرعه‌کشی، فرصت محدود!

دریافت هدیه

در این مقاله به بررسی زبان برنامه‌نویسی 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 ادامه خواهیم داد و تعدادی قرارداد هوشمند ساده دیگر را خواهیم نوشت. نظرات خود را حتما با ما در میان بگذارید.

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

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

حمله زنجیره تامین
کریپتو پدیا

حمله زنجیره تامین چیست و چرا حملات Supply Chain در دنیای کریپتو خطرناک هستند؟

23 مرداد 1404 - 22:00
64
فیچر اتریوم و پروپوزال EIP-7782
کریپتو پدیا

پروپوزال EIP-7782 چیست؟ پیشنهادی برای بلاک‌های ۶ ثانیه‌ای اتریوم

23 مرداد 1404 - 12:00
75
ولیدیتورهای کازمس از ارائه خدمت به سیکرت نتورک سر باز زندن
تحلیل فاندامنتال

پایان کار Eden Network؛ خداحافظی با یکی از بازیگران مهم حوزه MEV

22 مرداد 1404 - 21:00
68
تحلیل بازار

پیش‌بینی یک تحلیلگر: اگر بیت کوین به ۱۵۰ هزار دلار برسد،‌ اتریوم ۸۵۰۰ دلاری می‌شود!

22 مرداد 1404 - 14:00
198
فیچر قیمت اتریوم
اخبار اتریوم

اتریوم در چند قدمی سقف تاریخی؛ فروش هیجانی معامله‌گران خرد ادامه دارد

22 مرداد 1404 - 12:00
725
تحلیل تکنیکال قیمت بیت کوین (BTC) و اتریوم (ETH)؛ ۴ اسفند ۱۴۰۳
تحلیل تکنیکال

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

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

آموزش

کاندید بعدی فدرال رزرو
مقالات عمومی

رئیس بعدی فدرال رزرو کیست؟ محبوبیت بی‌سابقه کریستوفر والر از وال‌استریت تا بازار کریپتو

24 مرداد 1404 - 12:00
56
حمله زنجیره تامین
کریپتو پدیا

حمله زنجیره تامین چیست و چرا حملات Supply Chain در دنیای کریپتو خطرناک هستند؟

23 مرداد 1404 - 22:00
64
فیچر موبایل فیک
مقالات عمومی

موبایل جدید یا تله هکرها؟ راز گوشی‌های فیک و سرقت رمزارزها چیست؟

23 مرداد 1404 - 20:00
141
فیچر محاسبات کوانتومی
مقالات عمومی

پرسش و پاسخ با متخصص محاسبات کوانتومی؛ تهدید کامپیوترهای کوانتومی برای ارزهای دیجیتال واقعیت است یا اغراق؟

23 مرداد 1404 - 16:00
117
فیچر اتریوم و پروپوزال EIP-7782
کریپتو پدیا

پروپوزال EIP-7782 چیست؟ پیشنهادی برای بلاک‌های ۶ ثانیه‌ای اتریوم

23 مرداد 1404 - 12:00
75
فیچر پروژه های منتخب MVB بایننس
مقالات عمومی

۱۵ پروژه‌ منتخب فصل دهم MVB بایننس؛ استارتاپ‌هایی با پتانسیل رشد انفجاری

17 مرداد 1404 - 22:00
874

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

تاخیر برداشت در اکسکوینو

بررسی مشکلات تاخیر برداشت ریالی و رمزارزی در صرافی اکسکوینو؛ دلایل، پیامدها و راهکارها

5 مرداد 1404 - 17:00
2561

کلاهبرداری با کیف پول چند امضایی چیست و چگونه از آن در امان بمانیم؟

حمله انتقال صفر (Zero-Transfer)؛ راهنمای کامل شناسایی و مقابله با تهدید کیف پول‌های رمزارزی

تاثیر تصویب قانون GENIUS بر ریسک فریز و مسدود شدن دارایی‌های تتر ایرانی‌ها؛ چه باید کرد؟

اشتباه ۶۰ هزار دلاری کاربر بیت کوین در پرداخت کارمزد؛ مراقب باشید این اشتباه را تکرار نکنید!

تسلیم یا کاپیتولاسیون (Capitulation) در کریپتو چیست؟ نشانه ترس یا فرصتی برای ورود به بازار؟

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

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

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

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