ساختن یک توکن ERC-20 کار سختی نیست. کد استانداردش عمومی است، ابزارهایش رایگانند و اگر عجله داشته باشید در کمتر از یک ساعت روی شبکه اصلی یک توکن دارید.

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

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

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

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

متن اصلی در EIP-20 است و کوتاه تر از چیزی است که فکر می کنید. شش تابع اجباری دارد:

  • totalSupply کل موجودی در گردش را برمی گرداند.
  • balanceOf موجودی یک آدرس مشخص.
  • transfer انتقال از حساب خودتان به دیگری.
  • approve اجازه دادن به یک قرارداد که تا سقف مشخصی از حساب شما بردارد.
  • allowance خواندن اینکه چقدر اجازه داده شده.
  • transferFrom برداشت توسط همان قراردادی که اجازه گرفته است.

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

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

تله ای که در خود استاندارد نوشته شده

این مهم ترین بخش این متن است و از خود EIP-20 نقل می شود.

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

دلیلش این است که بین لحظه ای که مجوز قدیمی هنوز برقرار است و لحظه ای که جدید ثبت می شود، دارنده مجوز می تواند هر دو را خرج کند.

و بیرون از این حالت خاص، همین سازوکار approve ریشه بیشتر خالی شدن کیف پول هایی است که کاربر می گوید «من که چیزی امضا نکردم». امضا کرده اید؛ فقط چیزی که امضا کرده اید مجوز نامحدود برداشت بوده، نه یک انتقال.

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

ساخت توکن؛ سه مسیر و اینکه کدام برای چه کسی است

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

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

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

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

جزئیات کار با ابزارها در ساخت قرارداد هوشمند روی اتریوم باز شده است.

هزینه، و اینکه چرا معمولا اشتباه حساب می شود

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

هزینه واقعی جای دیگری است: هر تراکنش کاربران شما هم کارمزد دارد، و کارمزد را کاربر می دهد نه شما. یک توکن ERC-20 روی شبکه اصلی اتریوم یعنی هر انتقال کوچک، کارمزدی دارد که ممکن است از خود انتقال بزرگ تر باشد.

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

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

و حرف صریح: ساختن توکن آسان است، ارزش دادن به آن نه

هزاران توکن ERC-20 ساخته شده که هیچ کدام هرگز معامله نشدند. استاندارد به شما یک دفتر حسابداری روی اتریوم می دهد؛ همین. نه نقدینگی می سازد، نه کاربر، نه دلیلی برای اینکه کسی آن را بخواهد.

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

مهم ترین کاربرد واقعی این استاندارد هم چیزی است که همه استفاده می کنند بدون اینکه بدانند: استیبل کوین ها. تتر روی اتریوم یک توکن ERC-20 است، و پشتوانه اش موضوع جداگانه ای است که در پشت این توکن ERC-20 چه چیزی خوابیده است بررسی شده. برای توکن های غیرمثلی هم استاندارد دیگری هست که در تفاوت ERC-721 با ERC-20 توضیح داده شده است.

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

ساخت توکن ERC-20 چقدر هزینه دارد؟

هزینه استقرار به کارمزد شبکه در همان لحظه بستگی دارد و رقم ثابتی ندارد. روی شبکه آزمایشی رایگان است. نکته مهم تر این است که هزینه اصلی، کارمزد تراکنش های بعدی کاربران است، نه استقرار اولیه.

برای ساخت توکن حتما باید برنامه نویسی بلد باشم؟

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

تفاوت ERC-20 و ERC-721 چیست؟

ERC-20 برای دارایی های مثلی است؛ هر واحدش با واحد دیگر یکسان است، مثل پول. ERC-721 برای دارایی هایی است که هر واحدشان یکتاست. ساختار تابع ها و کاربردشان کاملا متفاوت است.

چرا نام و نماد توکن اجباری نیست؟

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