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

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

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

فیچر آلتکوین‌
تحلیل تکنیکال

تحلیل تکنیکال قمیت اتریوم (ETH)، ریپل (XRP) و سولانا (SOL): ۱۰ تیر ۱۴۰۴

10 تیر 1404 - 10:00
53
تاریخچه قیمت اتریوم از ابتدا
اخبار اتریوم

در دهمین سالگرد اتریوم، کپسول زمان آنچین رونمایی شد!

9 تیر 1404 - 18:30
39
فیچر تحلیل تکنیکال - تحلیل آلت کوین - تحلیل قیمت
تحلیل تکنیکال

تحلیل تکنیکال قیمت اتریوم (ETH)، ریپل (XRP) و سولانا (SOL)؛ ۹ تیر ۱۴۰۴

9 تیر 1404 - 10:00
99
Vitalik Buterin
تحلیل فاندامنتال

هشدار ویتالیک بوترین درباره مدیریت هویت در بلاکچین؛ از مدل هویت واحد فاصله بگیرید

8 تیر 1404 - 18:00
52
توکن stETH چیست
اخبار اتریوم

لیدو سیستم حاکمیت دوگانه را تصویب کرد؛ قدرت وتو به استیکرهای stETH داده شد

8 تیر 1404 - 12:00
25
فیچر تحلیل اتر و بیت
تحلیل تکنیکال

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

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

آموزش

آموزش نوبیتکس آموزش کار با صرافی نوبیتکس آموزش کار با نوبیتکس
صرافی متمرکز

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

9 تیر 1404 - 19:00
1573
کیف پول سخت افزاری لجر نانو اس Ledger Nano S
کیف پول

پایان پشتیبانی لجر از کیف پول Nano S و نگرانی کاربران درباره امنیت دارایی‌ها

7 تیر 1404 - 14:00
519
اینفوفای
کریپتو پدیا

اینفوفای (InfoFi) چیست و چگونه در این معدن، طلای ناب را استخراج کنیم؟

6 تیر 1404 - 22:00
222
گزارش اسکم
مقالات عمومی

کلاهبرداری بیت کوین را چگونه و در کجا گزارش دهیم؟ راهنمای کامل Chainabuse و Scamwatch

6 تیر 1404 - 20:00
130
معرفی پروژه‌های محبوب در اکوسیستم هایپرلیکوئید
دیفای

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

6 تیر 1404 - 16:00
231
هک نوبیتکس
صرافی متمرکز

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

8 تیر 1404 - 20:01
20236

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

هک نوبیتکس

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

8 تیر 1404 - 20:01
20236

کلاهبرداری بیت کوین را چگونه و در کجا گزارش دهیم؟ راهنمای کامل Chainabuse و Scamwatch

چرا مدل امنیتی بیت کوین شکست خورده است؟ احتمال فروپاشی در عرض یک دهه؟!

توکنومیکس بد، قاتل پروژه‌های خوب: ۵ اشتباه مرگبار در اقتصاد توکنی

کریپتو درینر (Crypto Drainer) چیست؟ تخلیه کیف پول ارز دیجیتال با اسکریپت مخرب

فناوری دوقلوی دیجیتال چیست؟ کلاهبرداری ارز دیجیتال با Digital twin

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

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

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

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