Smart Contract چیست ؟
فهرست مطالب
خلاصه
نام مقاله
آشنایی با قراردادهای هوشمند
توضیحات
قراردادهای هوشمند و کاربرد آن برای بازی های بلاکچین
نویسنده
مهرسا امینی
نام ناشر
ماناتاز
فهرست مطالب
Smart contract یا قرارداد های هوشمند مفهومی است که شاید بیشتر برای کسانی آشنا باشد که در زمینه ی بلاکچین فعالیت می کنند.
و اگر در رابطه با آن بدانید شاید از خود بپرسید این مفهوم در وبلاگ بازی سازی چه کار می کند.
به طور کلی Smart contract برنامههایی هستند که بر روی یک شبکه بلاک چین میزبانی و اجرا میشوند.
که در ادامه به توضیحات کامل آن خواهیم پرداخت.
اما ربط آن به بازی سازی در خدمات طراحی بازی بلاکچین استودیو بازی سازی ماناتاز می باشد که در صورتیکه شما برای بازی خود توکن اختصاصی برای خرید و فروش nft بخواهید ، قائدتا یکی از نیازمندی های شما داشتن Smart contract است به همین علت ما تصمیم گرفتیم در این مقاله در رابطه با این مفهوم توضیح بدهیم.
با ما همراه باشید.
(پیشنهاد می شود پس از مطالعه ی این مقاله ، از مقالات نیازمندی های ساخت بازی های بلاکچین و انتخاب بلاکچین مناسب برای بازی نیز دیدن کنید.)
طبق توضیحات گفته شده در بالا ، قراردادهای هوشمند برنامههایی هستند که بر روی یک شبکه بلاک چین میزبانی و اجرا میشوند.
هر قرارداد هوشمند شامل کدی است که شرایط از پیش تعیین شده ای را مشخص می کند که در صورت تحقق، نتایجی را به دنبال دارد.
قراردادهای هوشمند با اجرا بر روی یک بلاک چین غیرمتمرکز به جای سرور متمرکز ، به چندین طرف اجازه می دهد تا به یک نتیجه مشترک به شیوه ای دقیق، به موقع و بدون دستکاری دست پیدا کنند.
قراردادهای هوشمند زیرساخت قدرتمندی برای اتوماسیون هستند زیرا توسط یک مدیر مرکزی کنترل نمی شوند و در برابر نقاط حمله توسط نهادهای مخرب آسیب پذیر نیستند.
قرارداد هوشمند می توانند کارایی را افزایش دهند ، هزینه ها را کاهش دهند و سطوح جدیدی از شفافیت را در فرآیندها فراهم کنند.
EVM : ماشین مجازی اتریوم یا چارچوبی که امکان اجرای تراکنش هایی مانند قراردادهای هوشمند را فراهم می کند.
IDE : محیط توسعه یکپارچه. (ابزارهایی مانند Truffle که برای استقرار قراردادهای هوشمند ضروری هستند.)
Fungible token : توکن قابل تعویض مرتبط با بلاک چین. (ارز دیجیتال یک توکن قابل تعویض است.)
Gas : کارمزد (Gas معمولاً با اتریوم مرتبط است) که برای اجرای تراکنشهای یک بلاک چین دریافت میشود.
NFT : توکن غیر قابل تعویض، معمولاً یک قطعه هنری منحصر به فرد است که از طریق یک قرارداد هوشمند ساخته و مدیریت می شود.
Node : زیرساخت بلاک چین را تشکیل می دهد که از هزاران گره تشکیل شده است.
Solidity : زبان برنامه نویسی مشابه جاوا اسکریپت برای نوشتن قراردادهای هوشمند استفاده می شود.
معرفی بلاک چین بیت کوین در سال ۲۰۰۹ مسلماً از اولین قرارداد هوشمند پروتکلی پشتیبانی کرد ؛ مجموعه ای از شرایط را ایجاد کرد که برای انتقال بیت کوین بین کاربران در شبکه باید رعایت می شد.
این شرایط شامل امضای کاربر تراکنش با کلید خصوصی صحیحی است که با آدرس عمومی وی مطابقت دارد (مشابه رمز عبوری که به یک حساب خاص پیوند داده شده است) و کاربر دارای وجوه کافی برای پوشش تراکنش است.
سپس بلاک چین بیت کوین برای ارائه نوع عمده دیگری از قراردادهای هوشمند در سال ۲۰۱۲ به نام تراکنش چند امضایی (Multisig ) تکامل یافت.
یک تراکنش Multisig به تعداد معینی از افراد (public keys) نیاز دارد تا تراکنش را قبل از اینکه معتبر تلقی شود، با کلیدهای خصوصی خود امضا کنند.
بلاک چین ها در طی چند سال آینده با افزودن شرایط برنامه ای جدید (به نام کدهای عملیاتی) شروع به آزمایش کردند.
با این حال، جهش بزرگ بعدی در قراردادهای هوشمند با انتشار وایت پیپر اتریوم توسط ویتالیک بوترین در سال 2013 اتفاق افتاد.
در سال 2015 ، اتریوم به عنوان نوع جدیدی از بلاک چین برای قراردادهای هوشمند قابل برنامه ریزی راه اندازی شد.
بهجای اینکه بلاک چین بهعنوان یک قرارداد هوشمند واحد عمل کند یا چند اپکد محدود ارائه کند، بلاک چین قرارداد هوشمند اتریوم یک «کامپیوتر جهانی» ارائه کرد که میتوانست بسیاری از قراردادهای هوشمند مستقل را همزمان اجرا کند.
به خلاصه ترین و ساده ترین شکل ممکن می توان گفت ، منطق کاری قراردادهای هوشمند ، به اینصورت است که مثلا اگر X رخ داد y را اجرا کن.
قراردادهای هوشمند به طور مستقل اجرا می شوند.
آنها نیازی به دستکاری توسط انسان ندارند.
هیچ واسطهای وجود ندارد و اعتماد الزامی نیست زیرا بلاک چین بهطور خودکار قرارداد را پس از برآورده شدن شرایط اجرا میکند.
یک قرارداد هوشمند میتواند چندین شرایط مختلف داشته باشد و یک برنامه کاربردی میتواند چندین قرارداد هوشمند مختلف برای پشتیبانی از مجموعهای از فرآیندهای به هم پیوسته داشته باشد.
همچنین چندین زبان قرارداد هوشمند برای برنامه نویسی وجود دارد که Solidity Ethereum محبوب ترین آنهاست.
هر توسعهدهندهای میتواند یک قرارداد هوشمند ایجاد کند و آن را در یک بلاک چین عمومی برای اهداف خود قرار دهد.
قرارداد هوشمند دقیقاً تعریف میکند که کاربران چگونه میتوانند با آن تعامل داشته باشند، شامل اینکه چه کسی میتواند با قرارداد هوشمند تعامل داشته باشد، در چه زمانهایی و چه ورودیهایی منجر به چه خروجیهایی میشود و…
اجرای قرارداد بر روی زیرساخت های غیرمتمرکز بلاک چین تضمین می کند که هیچ نقطه مرکزی برای شکست حمله ، هیچ واسطه متمرکزی برای رشوه دادن ، و هیچ مکانیزمی برای هر یک از طرفین یا یک مدیر مرکزی وجود ندارد تا از آن برای دستکاری در نتیجه استفاده کند.
استفاده از یک شبکه غیرمتمرکز برای میزبانی و اجرای شرایط قرارداد، توانایی یک واسطه انتفاعی را برای استفاده از موقعیت امتیاز خود برای اجاره و کاهش ارزش کاهش می دهد.
قراردادهای هوشمند قائدتا بر روی بستر بلاکچین قرار دارد و برای همه افرادی که به آن بلاک چین دسترسی دارند قابل مشاهده است.
این بدان معناست که پنهان کردن معاملات خصوصی (یا حتی مبهم) تقریبا غیر ممکن است.
(لازم به ذکر است این ویژگی ، حفره های امنیتی را می تواند نمایان کند که زمینه استقبال هکرها را فراهم می کنند.
این فقدان حریم خصوصی همچنین قراردادهای هوشمند را برای معاملات محتاطانه ایده آل نمی کند.)
قراردادهای هوشمند عملا تغییر ناپذیر هستند.
مواردی که به اشتباه کدگذاری شده اند می توانند باعث دردسر شوند.
اگر نقصی در کد وجود داشته باشد که بتوان از آن بهره برداری کرد، می توان قرارداد را هک کرد و برخی یا حتی تمام وجوه را تخلیه کرد.
خب رسیدیم به اولین رد پای قراردادهای هوشمند در بازی سازی و NFT.
بازیهای مبتنی بر بلاک چین از قراردادهای هوشمند برای اجرای غیرقابل دستکاری اقدامات درون بازی استفاده میکنند.
یک مثال بازی PoolTogether می باشد ، یک بازی P2E بدون ضرر است ؛ که در آن کاربران سرمایههای خود را در یک استخر مشترک قرار میدهند که سپس به بازار پول هدایت میشود و در آنجا سود کسب میکنند.
پس از یک دوره زمانی از پیش تعریف شده، بازی به پایان می رسد و به یک برنده به طور تصادفی تمام سود تعلق گرفته تعلق می گیرد در حالی که همه می توانند سپرده اصلی خود را برداشت کنند.
قبل از ورود به قلمرو قراردادهای هوشمند ، به درک اساسی از نحوه عملکرد بلاک چین نیاز دارید
می توانید از مقاله بازی های بلاکچین ماناتاز شروع کنید.
Solidity زبان برنامه نویسی پیشرو است که برای نوشتن قراردادهای هوشمند بر روی بلاک چین های مختلف استفاده می شود ؛ به ویژه برای اتریوم.(پرکاربردترین بلاک چین برای قراردادهای هوشمند.)
سینتکس آن شبیه جاوا اسکریپت است و بنابراین برای کدنویسانی که زبان های برنامه نویسی را می دانند آشنا به نظر می رسد.
Solidity ، یک زبان برنامه نویسی قدرتمند می باشد ، که می تواند برای ساخت تقریباً هر برنامه ای که یک توسعه دهنده می تواند رویاپردازی کند، استفاده شود.
به همین دلیل ، قراردادهای هوشمند می توانند بسیار پیچیده باشند.
اتریوم تنها بلاک چینی نیست که قراردادهای هوشمند دارد.
Avalanche، Polygon، Wanchain و سایر بلاکچین ها نیز از قراردادهای هوشمند Solidity پشتیبانی می کنند.
در مورد هر کدام تحقیق کنید تا مزایا و معایب آنها را درک کنید و بلاک چینی را انتخاب کنید که قرارداد هوشمند خود را بر روی آن مستقر کنید.
استقرار قراردادهای هوشمند بر روی بلاک چین رایگان نیست.
هر بلاک چین برای صدور قراردادهای هوشمند هزینه های «gas» دریافت می کند که باید در توکن اصلی بلاک چین پرداخت شود.
به عنوان مثال ، اتریوم ، کاربران را وادار میکند تا برای «gas» با استفاده از ETH پرداخت کنند.
هر چه قرارداد پیچیده تر باشد، هزینه های “gas” بالاتر است.
Truffle و Remix که محیط های توسعه یکپارچه هستند، ابزارهای محبوبی برای استقرار قراردادهای هوشمند می باشند.
این ابزارها همه بخشهای قراردادهای هوشمند را در یک رابط کاربری گرافیکی یا GUI یکپارچه میکنند.
آنها شامل دیباگرها و افزونه های ویرایشگر نیز می باشند.
هر قرارداد هوشمند دارای یک آدرس منحصر به فرد در بلاک چین است که هنگام استقرار قرارداد هوشمند ایجاد می شود.
آن را پیدا کنید ، ذخیره کنید و برای طرف های دیگر ارسال کنید تا به قرارداد هوشمند شما دسترسی داشته باشند.
هنگام ذخیره آدرس قرارداد هوشمند خود باید بسیار مراقب باشید.
اگر توکن ها را به آدرس اشتباهی ارسال کنید، ممکن است دسترسی به دارایی های خود را از دست بدهید.
مثال زیر یک مثال ساده برای Hello World می باشد :
/**
* SPDX-License-Identifier: MIT
* @title HelloWorld
* @dev Implements the hello world program
*/
pragma solidity >=0.7.0 <0.9.0;
contract HelloWorld {
string helloworld = "Hello World";
function justHelloWorld() public view returns(string memory) {
return helloworld;
}
function showHelloWorld(string memory me) public view returns(string memory) {
string memory result = string(abi.encodePacked(helloworld, " from ", me));
return result;
}
}
سورس کد قبل از معرفی توابع خاص، با کامت هایی شروع می شود که توضیح می دهد قرارداد هوشمند در مورد چیست.
خود توابع نیز ساده هستند.
اولین تابع ، () justHelloWorld ، یک رشته “HelloWorld” را خروجی می دهد.
تابع دوم یک متغیر ورودی را می گیرد و سپس “HelloWorld from [me]” را خروجی می دهد.
این قرارداد هوشمند ساده را می توان در یک بلاک چین کامپایل ، مستقر و اجرا کرد.
برنامه نویس بازی و سایت ، انیماتور
اکثریت مردم زندگی نمی کنند و تنها به زندگی واکنش نشان می دهند ، تو سعی کن آزاد باشی.