یکی از مراحل مهم در توسعه قراردادهای هوشمند، تست، دیپلوی و تعامل با آنها بر بستر شبکههای اتریوم است. برای اطمینان از عملکرد صحیح و جلوگیری از هزینههای گس اضافی، ابتدا باید قراردادها را روی شبکههای آزمایشی مستقر کرد و پس از تأیید نهایی، به شبکه اصلی (Mainnet) منتقل نمود.
در این راهنما با نحوه اتصال به شبکههای تستی مانند Sepolia، Goerli و (قبلاً) Rinkeby، نحوه دیپلوی قرارداد روی این شبکهها و روش اتصال به قرارداد از طریق MetaMask آشنا خواهید شد.
شبکههای آزمایشی (Testnets) به شما امکان میدهند قراردادهای هوشمند را بدون صرف اتر واقعی آزمایش کنید. این شبکهها شبیهسازیای از شبکه اصلی هستند، اما با توکنهای بیارزش.
- شبکه Sepolia
- شبکه Goerli
- شبکه Rinkeby
پیشنهاد فعلی: استفاده از شبکه Sepolia برای تستها
اگر از Hardhat یا Remix استفاده میکنید، اتصال به شبکه تستی بسیار ساده است.
پیکربندی Hardhat برای Sepolia:
// hardhat.config.jsrequire("@nomiclabs/hardhat-ethers");module.exports = {networks: {sepolia: {url: "https://sepolia.infura.io/v3/YOUR_INFURA_PROJECT_ID",accounts: ["YOUR_PRIVATE_KEY"]}},solidity: "0.8.20"};
در این پیکربندی:
- از Infura یا Alchemy برای اتصال استفاده میشود.
-کلید خصوصی باید از یک کیفپول با موجودی تستی باشد (بدون قرار دادن در Git!).
برای دیپلوی از ابزارهایی مثل Remix, Hardhat یا Truffle استفاده میشود. در مثال زیر، از Hardhat استفاده میکنیم.
کد دیپلوی:
async function main() {const [deployer] = await ethers.getSigners();console.log("Deploying from:", deployer.address);const Token = await ethers.getContractFactory("MyToken");const token = await Token.deploy();console.log("Contract deployed to:", token.address);}main().catch((error) => {console.error(error);process.exit(1);});
سپس با دستور زیر قرارداد را روی Sepolia دیپلوی کنید:
npx hardhat run scripts/deploy.js --network sepolia
برای اجرای تراکنش در شبکههای تستی، باید مقداری اتر تستی داشته باشید. برای Sepolia میتوانید از فاست رسمی استفاده کنید:
پس از تست کامل، میتوانید قرارداد خود را روی شبکه اصلی اتریوم مستقر کنید. مراحل مشابه شبکههای تستی است، فقط باید به نکات زیر توجه کنید:
- استفاده از کلید خصوصی ایمن (ترجیحاً از کیفپول سختافزاری)
- بررسی دقیق کد نهایی و حذف توابع mint, burn یا debug
- پرداخت گس واقعی با اتر اصلی
تغییر شبکه در Hardhat:
mainnet: {url: "https://mainnet.infura.io/v3/YOUR_PROJECT_ID",accounts: ["YOUR_PRIVATE_KEY"]}
هشدار: تراکنشهای Mainnet بازگشتناپذیر هستند. قبل از دیپلوی، حداقل چند بار در شبکه تستی آزمایش انجام دهید.
MetaMask یکی از رایجترین کیفپولها برای تعامل با قراردادهای هوشمند است. پس از دیپلوی قرارداد، میتوانید از متامسک برای:
- ارسال تراکنش
- خواندن دادهها
- تست عملکرد توکنها یا DApp خود استفاده کنید.
مراحل اتصال:
1- نصب افزونه MetaMask و انتخاب شبکه (Sepolia/Mainnet
2- افزودن آدرس قرارداد و ABI در ابزارهایی مانند Remix یا رابط گرافیکی خودتان
3- تعامل از طریق دکمههایی مانند "Buy", "Mint", "Transfer" یا سفارشی
توسعه موفق قراردادهای هوشمند وابسته به تست و استقرار اصولی روی شبکههای اتریوم است. با استفاده از شبکههایی مانند Sepolia میتوان عملکرد قرارداد را بررسی کرد و پس از اطمینان، آن را به Mainnet منتقل کرد. همچنین ابزارهایی مانند Hardhat، Remix و MetaMask روند توسعه، دیپلوی و تعامل با قرارداد را سادهتر و مطمئنتر میکنند.