توسعه یک High-risk Dapp روی بلاک‌چین ترون

ما در گروه آموزشی فردانش، در دوره «آموزش برنامه‌نویسی Solidity جهت توسعه قراردادهای هوشمند ترون»، یک پروژه واقعی و کاربردی از توسعه یک دپ high-risk رو پیش بردیم. قصد دارم اینجا مقداری درباره جوانب مختلفش صحبت کنم. ابتدا تعریفی از DApp، قراردادهای هوشمند خواهم داشت. در ادامه به برنامه‌نویسی
قراردادهای هوشمند و برخی تفاوت‌های آن با برنامه‌نویسی متعارف خواهم پرداخت.


اگر مایل بودید میتونید به جای خواندن متن، این ویدیو رو مشاهده کنید

https://aparat.com/v/ZQdDL

همینطور اگر مایل بودید میتونید فایل صوتی رو گوش کنید:

https://castbox.fm/episode/id3689851-id343122123?utm_source=podcaster&utm_medium=dlink&utm_campaign=e_343122123&utm_content=%D8%AA%D9%88%D8%B3%D8%B9%D9%87%20%DB%8C%DA%A9%20High-risk%20Dapp%20%D8%B1%D9%88%DB%8C%20%D8%A8%D9%84%D8%A7%DA%A9_%DA%86%DB%8C%D9%86%20%D8%AA%D8%B1%D9%88%D9%86-%20%D9%BE%D8%A7%D8%AF%DA%A9%D8%B3%D8%AA-CastBox_FM

برنامه غیرمتمرکز یا DApp چیست؟

بعنوان کلیدی‌ترین موضوع لازمه که با مفهوم DApp آشنا بشیم. Dapp یا decentralized application، اپلیکیشنی ست که منطق‌ش روی شبکه بلاک‌چین ذخیره شده و به همین دلیل غیر متمرکز decentralized نامیده میشه. اسمارت کانترکت یا قرارداد هوشمند عملا به آن برنامه‌ای گفته می‍شه که منطق یک اپ غیرمتمرکز در آن ذخیره شده. یک قرارداد هوشمند بر روی شبکه بلاکچین ذخیره می‌شه.

اگر بخواهیم منطق قرارداد هوشمند را خیلی ساده بیان کنیم، vending machine ها یا ماشین‌های فروش مثال‌های خوبی هستند. ماشین‌هایی که تو فرودگاه‌ها برای فروش قهوه یا کتاب بکار می‌رن. ویژگی‌شون اینه که وقتی شما سکه‌ای داخلشون می‌اندازید، طی فرآیندی که لازم نیست از بیرون کنترلی روش صورت بگیره، قهوه شما ساخته میشه و به شما تحویل داده میشه.

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

بیتکوین اولین قرارداد هوشمند بود که یک قابلیت داشت و آن ثبت تراکنش بود

نسل دوم بلاک‎‌چین

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

اتریوم اولین بلاک‌چینی بود که این مفهوم رو زیر ساختش رو فراهم کرد و تونست آن رو پیاده‌سازی کنه. شبکه ترون (Tron) انشعابی از شبکه اتریوم بود و با اتریوم شروع کرد ولی تفاوت‌هایی از نظر نحوه تایید تراکنش‌ها نسبت به اتریوم داشت. ترون بخوبی قابلیت توسعه اسمارت کانترکت‌ها رو بر روی خودش داره، و از همان زبان و زیرساختی استفاده می‌کنه که قراردادهای هوشمند اترویوم استفاده می‌کنند.

تفاوت‌های برنامه نوسی متعارف با برنامه نویسی بلاکچین

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

در برنامه نویسی بلاک‌چین این‌طور نیست که ما یک برنامه بنویسیم و هر زمان مایل بودیم تغییرش بدیم و کسی نداند که ما چه کردیم. زمانی که برنامه‌ای در قالب یک اسمارت کانترکت نوشته می‌شه، به محض اینکه دکمه انتشار رو می‌زنید دیگه از کنترل شما خارج می‌شه! می‌ره روی شبکه ترون قرار می‎‌گیره و همه اون رو می‌بینند. حالا اگر برنامه مناسبی از نظر بهره‌وری نباشه، زمانی که کاربری میخواد در قالب آن برنامه تراکنشی روی شبکه ترون انجام بده، باید ترون زیادی مصرف بشه. و مساله اینه که نمیشه این برنامه رو اصلاح کرد. به همین دلیل برنامه‌نویسی smart contract از برنامه‌نویسی متعارف متفاوت هست.


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