mahboubiali
mahboubiali
خواندن ۳ دقیقه·۴ سال پیش

چگونه یک DApp بسازیم؟

در مقالات قبلی درباره ویژگی ها و کاربردهای Dapps صحبت کردم و همچنین سه پلتفرم مشهور برای اجرای Dapps ها را نام بردم از بین پلتفرمهای اتریوم ،ترون و ایاس ، من بلاکچین ترون را بدلیل سرعت تراکنش و پایین بودن کارمزد انتخاب میکنم و در این مقاله میخواهم نیازمندیهای پیاده سازی یک Dapp ساده روی بلاکچین ترون را با هم بررسی کنیم .

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

فرض کنید میخواهید یک قرارداد هوشمند برای پرداخت حقوق پرسنل شرکت بنویسید برای پرداخت حقوق به پرسنل ما نیاز به اطلاعاتی مانند کد پرسنلی ، شماره حساب ، میزان حقوق ماهیانه و اطلاعات شخصی پرسنل داریم ، در این حالت نیازی به ذخیره همه اطلاعات پرسنلی بر روی شبکه بلاکچین ندارید فقط لازم است شماره حساب که همان آدرس کیف پول پرسنل و مبلغ حقوق ماهیانه (به ارز دیجیتال) را روی بلاکچین ذخیره کنیم مابقی اطلاعات پرسنلی در یک بانک اطلاعاتی متمرکز مانند SQL Server یا MangoDb ذخیره و از طریق یک کلید با اطلاعات روی بلاکچین مرتبط میشود. دلیل این موضوع هم بخاطر کارمزد تراکنش در شبکه بلاکچین است برای انجام تراکنش در شبکه ترون باید BandWidth بعنوان کارمزد پرداخت کنید که برای هر بایت از دیتا یک پهنای باند BandWidthاز ترون باید به شبکه ترون پرداخت کنید که در ادامه این سری مقالات به آن اشاره خواهم کرد.

چگونه یک Smart Contract بنویسم ؟

همانطور که گفتم هسته اصلی Dapp یک قرارداد هوشمند است برای نوشتن یک قرارداد هوشمند باید با زبان Solidity یک قرارداد که شامل توابع و خصوصیات مختلف است پیاده سازی کنید سالیدیتی یک زبان قرارداد گرا محسوب میشود که توسط اتریوم عرضه شده است ، ترون نیز با این زبان سازگار است و این قرارداد ها روی ماشین مجازی ترونTVM نیز قابل اجرا میباشد.

برای نوشتن قرارداد هوشمند با زبان Solidity میتوانید از محیط برنامه نویسی انلاین Remix استفاده کنید و شروع به نوشتن قرارداد کنید .

در زیر ساختار یک قرارداد هوشمند ساده برای ذخیره مقداری از نوع Integer را میبینید اسم قرداد SetSimpleData است که دارای دو تابع اصلی جهت ذخیره و دریافت دیتا میباشد .

  • pragma solidity 0.4.23;
  • contract SetSimpleData {
  • function SetDate() public{
  • }
  • function GetData() public returns (uint datavalue){
  • }
  • }

در این قرارداد میتوانیم با متد SetData مقداری را روی شبکه ترون ذخیره و با متد GetData مقدار ذخیره شده در قرارداد را بازخوانی نماییم . برای این کار یک متغییر از نوع UInt در قرارداد بصورت Public تعریف میکنیم

uint dataValue ;

با این دستور متغیری برای ذخیره اطلاعات در قرارداد ایجاد میشود با فراخوانی متد SetData هر مقداری را میتوانیم در این متغییر ذخیره نماییم .

  • pragma solidity 0.4.23;
  • contract SetSimpleData {
  • uint dataValue;
  • function SetDate() public{
  • dataValue =msg.value;
  • }
  • function GetData() public returns (uint datavalue){
  • return dataValue;
  • }
  • }

برای آشنایی بیشتر با ساختار زبان Solidity میتوانید از این لینک استفاده کنید ، قرارداد هوشمند مانند هر برنامه کامپیوتری میتواند دارای عملکرد و خصوصیات خودش باشد اما در این مثال هدف اجرای یک قرارداد ساده روی بلاکچین ترون است .

بعد از ساخت قرارداد هوشمند در محیط Remix و رفع باگ و کامپایل قرارداد ، میتوانید قرارداد خود را بعد از انتقال به بلاکچین ، در یک اپلیکیشن وب استفاده نمایید . برای این کار لازم است موارد زیر نصب و انجام گردند:

  • نصب NPM
  • نصب NodeJs
  • نصب TronBox
  • نصب کیف پول TronLink روی Browser
  • اتصال به شبکه تست ترون Shasta
  • شارژ ترون از شبکه تست به کیف پول
  • فریز کردن مقداری از ترون ها برای اجرای قرارداد هوشمند
  • ساخت اپلیکیشن تحت وب با React

ادامه ...


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