روز ۱/۱۰۰ -کشف پتانسیل‌های سالیدیتی: هنر «Hello world»

به نخستین پست از مجموعه پرشور #۱۰۰روزباسالیدیتی ما خوش آمدید، جایی که عمیقاً به اکتشاف دنیای زبان سالیدیتی و جستجوی ویژگی‌های شگفت‌انگیز آن می‌پردازیم. در این مقاله، شما را در سفری منحصربه‌فرد برای درک قدرت سالیدیتی از طریق مثال رایج «Hello world» همراهی می‌کنیم.

آماده شوید تا وارد یک تجربه آموزشی هیجان‌انگیز شوید که در آن دانش فنی، محتوای جذاب و حتی شادی و سرگرمی با استفاده از ایموجی‌ها را ببینیم! پس، بیایید قدرت سالیدیتی را کشف کنیم و یاد بگیریم چطور قرارداد «Hello world» خودمان را بسازیم. 🚀

#100DaysOfSolidity Series 001 “Hello World”
#100DaysOfSolidity Series 001 “Hello World”


📜 ظرافت‌های «Hello world»:

در اولین نگاه، «Hello world» شاید ساده و تکراری به نظر برسد، اما این مثال به عنوان یک نقطه آغازین حیاتی برای فراگیری هر زبان برنامه‌نویسی شناخته می‌شود. در زبان سالیدیتی، این نمونه به ما کمک می‌کند تا با مفاهیم بنیادی و سینتکس آشنا شویم و در عین حال، پایه‌ای برای قراردادهای هوشمند پیچیده‌تر بنا نهیم. بیایید با بررسی ساختار کد و فهمیدن اجزای آن، ماجراجویی خود را آغاز کنیم.

📝 ساختار کد:

۱.دستور Pragma:

دستورPragma به عنوان نقطه آغازین هر قرارداد سالیدیتی شناخته می‌شود. این دستورالعمل نسخه مورد نیاز کامپایلر را تعیین می‌کند. در مثال ما، به نسخه کامپایلری برابر یا بیشتر از ۰.۸.۱۷ و کمتر از ۰.۹.۰ نیاز داریم. این تضمین می‌کند که سازگاری و استفاده از آخرین پیشرفت‌ها حفظ شود، ضمن اینکه ثبات کد نیز تأمین می‌گردد.

۲. اعلام قرارداد یا Contract Declaration:

سپس، ما با استفاده از کلمه کلیدی "contract" دنبال شده توسط نام قرارداد، که در مورد ما"HelloWorld" است، قرارداد خود را اعلام می‌کنیم. قراردادها به عنوان بلوک‌های ساختمانی قراردادهای هوشمند عمل می‌کنند، عملکرد و داده‌ها را در واحدهای قابل استفاده مجدد محصور می‌کنند.

3. state variable:

در داخل قرارداد، ما یک متغیر حالت به نام "greet" از نوع"string" تعریف می‌کنیم. State variableداده‌هایی را نگه می‌دارند که طی کل عمر قرارداد باقی می‌مانند. کلمه کلیدی "public" باعث می‌شود که این متغیر از بیرون قرارداد قابل دسترس باشد، که این امکان را به ما می‌دهد تا مقدار آن را بخوانیم.

۴. مقداردهی اولیه:

در این مثال ما، ما متغیر"greet" را با رشته"Hello World!" مقداردهی اولیه می‌کنیم. این کار پیام تبریک اولیه را تنظیم می‌کند که بعداً می‌توان تغییر داد.

🔍 نگاهی عمیق تر:‌

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

۱. نسخه‌بندی در سالیدیتی:(Solidity Versioning)

سالیدیتی زبانی است که به سرعت در حال تکامل است و حفظ سازگاری با نسخه‌های متفاوت کامپایلر اهمیت بالایی دارد. با تعیین دستورالعمل pragma، ما اطمینان حاصل می‌کنیم که قراردادمان با استفاده از نسخه معینی از کامپایلر سالیدیتی کامپایل می‌شود. این امر در جلوگیری از مشکلات ناشی از تغییرات عمده در نسخه‌های جدیدتر کامپایلر موثر است.

۲. انواع داده ها (data types):

سالیدیتی انواع داده‌های مختلفی را برای برآورده کردن نیازهای گوناگون فراهم می‌کند. در مثال ما، ما از نوع داده "string" برای ذخیره‌سازی پیام تبریک استفاده کردیم. سالیدیتی همچنین از انواع ابتدایی دیگر مانند اعداد صحیح، بولین‌ها، آدرس‌ها و بیشتر پشتیبانی می‌کند. درک این انواع داده برای ساخت قراردادهای هوشمند محکم و کارآمد ضروری است.

۳. تعیین کننده‌های قابلیت دید(Visibility Modifiers):

با استفاده از تعیین کننده قابلیت دید ««public، ما متغیر حالت «greet» را به دنیای بیرونی قابل دسترس می‌کنیم. سالیدیتی چندین تعیین کننده قابلیت دید مانند عمومی (public)، خصوصی(private)، داخلی (internal) و خارجی(external) را ارائه می‌دهد که بر دسترسی به متغیرها و توابع کنترل اعمال می‌کنند. تعیین درست قابلیت دید برای امنیت و محدودسازی بسیار مهم است.

۴. استقرار و تعامل قرارداد:

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

🎓 محتوای آموزشی:

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

🔢 ساختارهای نمونه کد:

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

رویدادها:

ایونت‌ها یا Events به قراردادها امکان می‌دهند تا با نهادهای خارجی ارتباط برقرار کنند و راهی برایemit کردن اطلاعیه‌ها در مورد رویدادهای خاص درون قرارداد فراهم می‌کنند. در اینجا مثالی از اعلام یکEvent آورده شده است:

```
event Greeting(string message);
```

۲. اصلاح‌کننده‌های تابع(Function Modifiers):

فانکشن مودیفایر‌ها به ما این امکان را می‌دهند که عملکرد توابع در سالیدیتی را ارتقا دهیم. از آن‌ها می‌توان برای افزودن بررسی‌های اضافی، انجام پیش‌پردازش و پس‌پردازش، یا محدودسازی دسترسی استفاده کرد. در اینجا یک نمونه ساده از اصلاح‌کننده‌ای آورده شده است که بررسی می‌کند آیا فراخواننده، مالک قرارداد است یا خیر:

```
modifier onlyOwner() {
require(msg.sender == owner, “Only the contract owner can call this function.”);
_;
}
```

۳ Structs:

استراکت‌ یا Structs به ما امکان می‌دهند ساختارهای داده‌ای سفارشی را در سالیدیتی تدوین کنیم. آنها قادرند چندین متغیر را در خود جای دهند که این امکان را فراهم می‌آورد تا مدل‌های داده‌ای پیچیده‌ای را در قراردادها بسازیم. در اینجا نمونه‌ای از یک ساختار(struct) آورده شده که یک شخص را توصیف می‌کند:

```
struct Person {
string name;
uint age;
address wallet;
}
```

🎉 نتیجه‌گیری:

تبریک می‌گوییم! شما اولین قسمت از سری #۱۰۰روزباسالیدیتی ما را به پایان رساندید و دنیای جذاب سالیدیتی را از طریق مثال نمادین "Hello world"کشف کردید. ما ساختار کد، بینش‌های فنی را پوشش داده‌ایم و ساختارهای کد اضافی را برای گسترش دانش شما ارائه کرده‌ایم. همانطور که در سفر خود ادامه می‌دهید، به خاطر داشته باشید که سالیدیتی به شما امکان می‌دهد تا برنامه‌های غیرمتمرکزی بسازید که می‌توانند صنایع را متحول کنند. پس، به کاوش، کدنویسی و قفل‌گشایی پتانسیل واقعی سالیدیتی ادامه دهید!


امیدواریم از این مقاله آموزشی و سرگرم‌کننده لذت برده باشید. برای پست بعدی در سری #۱۰۰روزباسالیدیتی ما منتظر بمانید، جایی که به بررسی موضوعات بیشتر و جذاب‌تری خواهیم پرداخت و تمام پتانسیل سالیدیتی را به نمایش خواهیم گذاشت. کدنویسی خوشایندی داشته باشید! 😊


🔸 این مقاله ترجمه شده از مقاله سالیدیتی آکادمی است برای خواندن مقاله اصلی می‌توانید به لینک زیر مراجعه کنید:

https://medium.com/@solidity101/100daysofsolidity-unlocking-soliditys-potential-the-art-of-hello-world-23639938b371