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

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

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

Vitalik Buterin
اخبار اتریوم

ویتالیک بوترین از بلوغ دیفای می‌گوید؛ زمان آن رسیده است که اتریوم به بانک جهانی مردم تبدیل شود

22 آبان 1404 - 23:00
70
فیچر تحلیل اتر و بیت
تحلیل تکنیکال

تحلیل تکنیکال بیت کوین (BTC) و اتریوم (ETH): ۲۲ آبان ۱۴۰۴

22 آبان 1404 - 09:00
111
 Injective Protocol چیست توکن INJ چیست
اخبار بلاکچین

راه‌اندازی ماشین مجازی اتریوم در شبکه اینجکتیو؛ ورود به عصر جدیدی از دیفای!

21 آبان 1404 - 20:00
57
فیچر اتریوم
اخبار اتریوم

اتریوم دوباره به بالای ۳٬۶۰۰ دلار بازگشت؛ آیا هدف بعدی ۴٬۰۰۰ دلار است؟

20 آبان 1404 - 23:00
82
فیچر تحلیل اتر و بیت
تحلیل تکنیکال

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

20 آبان 1404 - 09:00
117
کارمزد تراکنش های اتریوم Ethereum fee rising
اخبار اتریوم

سقوط تاریخی کارمزدهای اتریوم به پایین‌ترین سطوح؛ زنگ هشدار یا فرصتی جدید برای کاربران؟

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

آموزش

۵ آلت کوین کمتر شناخته شده
سرمایه گذاری

۸ ارز دیجیتال برتر که سال ۲۰۲۵ را تعریف کردند!

22 آبان 1404 - 22:00
438
شروع فصل آلت کوین ها آلت سیزن قیمت بیت کوین
مقالات عمومی

گزارش وینترمیوت: آلت‌کوین‌ها همچنان در انتظار حرکت بیت کوین به سمت سقف تاریخی هستند!

21 آبان 1404 - 22:00
230
دی پگ xusd
مقالات عمومی

کالبدشکافی دی‌پگ شدن XUSD در بازار وام‌دهی اویلر

20 آبان 1404 - 22:00
48
فیچر کوین بیس
صرافی متمرکز

صرافی کوین‌بیس معاملات پنج آلت‌کوین را متوقف می‌کند

20 آبان 1404 - 21:00
2561
فیچر بلاکچین
مقالات عمومی

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

19 آبان 1404 - 22:00
52
فیچر اکسپلویت بالانسر
مقالات عمومی

کالبدشکافی اکسپلویت Balancer V2؛ چگونه خطایی کوچک در گِرد کردن منجر به بحرانی بزرگ شد؟

16 آبان 1404 - 22:00
96

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

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

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

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

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

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

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

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

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

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

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

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

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