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

پس بگذارید اول همان ها را از سر راه برداریم و بعد مسیری را بنویسیم که امروز واقعا اجرا می شود.

اپلیکیشن غیرمتمرکز چیست و چه چیزی نیست

اپلیکیشن غیرمتمرکز چیست و چه چیزی نیست

تعریفی که خود مستندات اتریوم می دهد کوتاه و دقیق است: یک اپلیکیشن غیرمتمرکز ترکیبی از یک قرارداد هوشمند و یک رابط کاربری است که کد سمت سرورش روی یک شبکه همتا به همتا اجرا می شود نه روی سرور شما.

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

چرا آموزشی که پیدا کرده اید کار نمی کند

دو دلیل، و هر دو بیرونی هستند.

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

شبکه آزمایشی. این یکی بدتر است، چون خطایش گیج کننده است. راپستن، رینکبی، گورلی و کوان همگی از رده خارج شده اند و هولسکی هم از شهریور ۱۴۰۴ کنار گذاشته شده. طبق فهرست رسمی شبکه های اتریوم، امروز فقط دو شبکه آزمایشی عمومی نگهداری می شوند: سپولیا برای توسعه دهنده قرارداد و اپلیکیشن، و هودی برای تست ارتقاهای پروتکل و اعتبارسنج ها.

یعنی اگر آموزشی گفت روی گورلی مستقر کنید، همان جا ببندیدش. وقت تلف کردن است.

مسیری که امروز کار می کند

قدم اول: محیط

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

npm init -y
npm install --save-dev hardhat
npx hardhat init

قدم دوم: یک قرارداد که واقعا کوچک است

اولین قرارداد شما نباید توکن باشد. توکن نوشتن ساده به نظر می رسد و شما را مستقیم به سراغ استانداردهایی می برد که هنوز لازمتان نیست. یک دفترچه یادداشت روی زنجیره برای شروع کافی است:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract Note {
    string private text;
    event Updated(address indexed by, string text);

    function set(string calldata t) external {
        text = t;
        emit Updated(msg.sender, t);
    }

    function get() external view returns (string memory) {
        return text;
    }
}

همین قرارداد کوچک هر چیزی را که باید یاد بگیرید در خود دارد: وضعیت روی زنجیره، تابعی که تراکنش می خواهد، تابعی که نمی خواهد، و رویدادی که رابط کاربری به آن گوش می دهد. اگر جزئیات نوشتن و کامپایل را می خواهید، راهنمای ساخت قرارداد هوشمند اتریوم همین لایه را با جزئیات بیشتر باز کرده است.

قدم سوم: اول محلی، بعد سپولیا

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

قدم چهارم: رابط کاربری

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

قدم پنجم: منتشرش کنید

قرارداد را روی مرورگر بلاک تایید کنید تا کدش خوانا باشد. این کار پنج دقیقه طول می کشد و تنها چیزی است که یک پروژه ناشناس را از یک پروژه مشکوک جدا می کند.

اتریومقیمت لحظه ای اتریوم ۱.۷۶٪
۴۸۴,۶۹۰,۱۳۶ تومان
$2,463.75 نرخ جهانی
تغییر ۲۴ ساعته - بروزرسانی ۰۲:۰۱ ثبت سفارش

برای توسعه دهنده ایرانی چه چیزی فرق می کند

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

  • دسترسی به سرویس دهنده نقطه اتصال. ثبت نام در سرویس های بزرگ آر پی سی از آی پی ایران معمولا نمی گیرد. راه حل تمیز، اجرای یک نود سبک یا استفاده از نقطه اتصال عمومی برای مرحله توسعه است. برای مرحله تولید باید اشتراک بخرید.
  • پرداخت اشتراک. کارت بانکی ایرانی روی هیچ کدام از این سرویس ها کار نمی کند. مسیری که کاربران ما بیشتر استفاده می کنند ووچر است. نرخ ووچرهای موجود را ببینید و برای اشتراک های سالانه خرید یو ووچر برای اشتراک سالانه رایج ترین گزینه است.
  • اتریوم شبکه آزمایشی. شیرهای دریافت اتر تست تقریبا همگی یک حساب گیت هاب با سابقه می خواهند و بعضی هایشان موجودی روی شبکه اصلی. این را قبل از شروع پروژه حل کنید نه وسط استقرار.
  • قطعی اینترنت. استقرار قرارداد کاری نیست که بشود نصفه رهایش کرد. اگر می دانید شب پرنوسانی از نظر دسترسی در پیش است، کلید خصوصی و اسکریپت استقرار را از قبل آماده داشته باشید.

کجا واقعا سخت می شود

ساختن اولین اپلیکیشن غیرمتمرکز یک بعدازظهر کار دارد. چیزی که ماه ها طول می کشد این هاست:

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

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

سوال های پرتکرار

برای ساخت اپلیکیشن غیرمتمرکز از کجا شروع کنم؟

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

روی کدام شبکه آزمایشی مستقر کنم؟

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

ترافل و گاناش هنوز قابل استفاده اند؟

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

برای شروع چقدر اتر لازم دارم؟

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