۲/۱۰۰ - ساخت اولین برنامه‌تان با سالیدیتی: یک راهنمای گام‌به‌گام 👷‍♂️💻

🎉 به دومین پست از مجموعه #۱۰۰روزباسالیدیتی خوش آمدید! در این مقاله، ما شما را در مسیر ساختن برنامه‌ی سالیدیتی خود، از برپایی محیط توسعه گرفته تا استقرار و برقراری تعامل با قرارداد هوشمندتان، هدایت خواهیم کرد.فهرست مطالب۱. راه‌اندازی محیط توسعه‌ی شما 🛠️۲. نوشتن اولین قرارداد هوشمند شما 📝۳. کامپایل و استقرار قرارداد هوشمند 🚀۴. تعامل با قرارداد هوشمند ✨۵. تحلیل قرارداد هوشمند "Counter" 📊۶. نتیجه‌گیری 🌟#100DaysOfSolidity Series 002 “First Application”۱. راه‌اندازی محیط توسعه‌ی شما 🛠️برای شروع ساخت برنامه‌های Solidity، ابتدا باید محیط توسعه خود را راه‌اندازی کنید. در اینجا مراحلی که باید دنبال کنید آورده شده‌اند:۱.۱ نصب کامپایلر solidityکامپایلر سالیدیتی، که به عنوان solc شناخته می‌شود، برای تبدیل کد سالیدیتی به بایت‌کد قابل اجرا روی ماشین مجازی اتریوم (EVM) ضروری است. شما می‌توانید با پیروی از راهنمایی‌های ارائه شده در داکیومنتشن سایتسالیدیتی، این کامپایلر را نصب کنید.۲.۱ انتخاب یک محیط توسعه یکپارچه (IDE)انتخاب یک IDE مناسب برای تجربه‌ای بدون دردسر در توسعه Solidity حیاتی است. برخی از گزینه‌های محبوب شامل Remix، Visual Studio Code با افزونه‌های Solidity، و Truffle Suite هستند. یکی را که بهترین پاسخگوی نیازها و ترجیحات شما است، انتخاب کنید.۳.۱ نصب Dependency(وابستگی‌) مورد نیازبرای تسهیل فرآیند توسعه و استقرار، نیاز است تا Dependency مانند Node.js و npm را نصب کنید. برای دستورالعمل‌های دقیق در مورد نصب این وابستگی‌ها، به داکیومنت IDE مورد نظر خود مراجعه کنید.۲. نوشتن اولین قرارداد هوشمند شما 📝حال که محیط توسعه شما آماده است، بیایید یک قرارداد هوشمند ساده با نام "HelloWorld" در Solidity بنویسیم. این قرارداد برای ذخیره‌سازی و بازیابی یک پیام خوش‌آمدگویی طراحی خواهد شد.pragma solidity ^0.8.0; contract HelloWorld { string public greeting; constructor() { greeting = &quotHello, World!&quot } function setGreeting(string memory _greeting) public { greeting = _greeting; } function getGreeting() public view returns (string memory) { return greeting; } }قرارداد HelloWorld یک متغیر رشته‌ای عمومی به نام greetingتعریف می‌کند و آن را با یک پیام پیش‌فرض در سازنده (constructor) مقداردهی اولیه می‌کند. همچنین، این قرارداد دارای توابع تنظیم‌کننده (setter) و بازیابی‌کننده (getter) است تا امکان به‌روزرسانی و بازیابی پیام خوش‌آمدگویی را فراهم آورد.۳.کامپایل و دیپلوی قرارداد هوشمند 🚀پس از نوشتن قرارداد هوشمند، گام بعدی کامپایل و دیپلوی آن بر روی بلاک‌چین اتریوم است. این مراحل را دنبال کنید:۱.۳ کامپایل کردن قرارداد هوشمندبرای کامپایل کد سالیدیتی، از کامپایلر سالیدیتی (solc) یا کامپایلر تعبیه‌شده در محیط توسعه یکپارچه (IDE) انتخابی خود استفاده کنید. این فرایند، بایت‌کد و رابط باینری کاربردی (ABI) که برای استقرار لازم است، ایجاد می‌کند.۲.۳ دیپلوی در بلاکچین اتریومبرای دیپلوی قرارداد، می‌توانید از ابزارها و خدماتی مانند Remix، Truffle یا Hardhat استفاده کنید. این ابزارها رابطی را برای تعامل با شبکه اتریوم فراهم می‌کنند و امکان دیپلوی قرارداد شما را در یک تست‌نت یا مین‌نت (شبکه اصلی) می‌دهند.۴. تعامل با قرارداد هوشمند ✨پس از استقرار قراردادتان، شما می‌توانید با فراخوانی توابع آن با آن تعامل داشته باشید. در اینجا مثالی از چگونگی تعامل با قرارداد HelloWorld با استفاده از web3.js آورده شده است:const Web3 = require('web3'); const abi = require('path/to/contract/abi'); const contractAddress = '0x…'; // Address of the deployed contract const web3 = new Web3 ('https://ropsten.infura.io/v3/YOUR_INFURA_API_KEY'); const contract = new web3.eth.Contract(abi, contractAddress); // Get the current greeting contract.methods.getGreeting().call((error, result) => { if (error) { console.error(error); } else { console.log('Current greeting:', result); } }); // Update the greeting const newGreeting = 'Hello, Solidity!'; contract.methods.setGreeting(newGreeting).send({ from: '0x…' }, (error, transactionHash) => { if (error) { console.error(error); } else { console.log('Transaction hash:', transactionHash); } });در این بخش کد، از کتابخانه web3.js برای ایجاد اتصال به یک گره (نود) اتریوم استفاده کرده و با قراردادی که دیپلوی شده است تعامل برقرار می‌کنیم. ما پیام تبریک موجود را بازیافته و آن را با یک پیام جدید به‌روز می‌کنیم.۵. تحلیل قرارداد هوشمند "Counter" 📊بیایید قرارداد هوشمند Counter که شما فراهم کرده‌اید را تحلیل کنیم:قرارداد `Counter` یک متغیر `count` از نوع `uint` (عدد صحیح بدون علامت) را حفظ می‌کند. این قرارداد سه تابع ارائه می‌دهد:// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; contract Counter { uint public count; // Function to get the current count function get() public view returns (uint) { return count; } // Function to increment count by 1 function inc() public { count += 1; } // Function to decrement count by 1 function dec() public { // This function will fail if count = 0 count -= 1; } }- `get()`: یک تابع view که مقدار فعلی `count` را برمی‌گرداند.- `inc()`: تابعی که مقدار `count` را ۱ واحد افزایش می‌دهد.- `dec()`: تابعی که مقدار `count` را ۱ واحد کاهش می‌دهد. با این حال، اگر مقدار `count` از پیش ۰ باشد، این تابع شکست خواهد خورد.۶. نتیجه‌گیری 🌟تبریک می‌گوییم برای ساخت اولین برنامه سالیدیتی خود! در این مقاله، ما مراحل ضروری را از راه‌اندازی محیط توسعه‌تان تا نوشتن یک قرارداد هوشمند ساده و تعامل با آن پوشش دادیم. سالیدیتی امکانات بی‌پایانی برای توسعه برنامه‌های غیرمتمرکز روی بلاکچین اتریوم ارائه می‌دهد، و ما امیدواریم که این مقاله پایه‌ای محکم برای اکتشاف بیشتر شما فراهم کرده باشد. به یاد داشته باشید، تمرین کامل‌کننده مهارت است، پس به آزمایش و ساخت برنامه‌های پیچیده‌تر با سالیدیتی ادامه دهیدHappy Coding.📚 References:Solidity DocumentationRemix IDETruffle SuiteWeb3.js DocumentationThe Solidity Blueprint🔸 این مقاله،از مقالات ترجمه شده از سالیدیتی آکادمی است برای خواندن مقاله اصلی می‌توانید به لینک زیر مراجعه کنید: https://medium.com/@solidity101/100daysofsolidity-building-your-first-application-with-solidity-a-step-by-step-guide-%EF%B8%8F-d38e067e4137