استاندارد ERC20 چیست؟
به زبان سادهتر ERC، پروتکل رسمی برای بهبود بلاک چین اتریوم است. عدد ۲۰ هم نشان دهنده یک شناسه خاص برای پروتکل ERC20 میباشد. این پروتکل در سال های اخیر نقش بسیار کلیدی در حوزه بلاک چین و رمزارزها داشته است و باعث شد تا هزاران برنامه غیر متمرکز (DApps) در یک پلتفرم به صورت استاندارد توسعه یابند.
استاندارد ERC20 به توسعه دهندگان و شرکتها اجازه میدهد تا پروژههای خود را توکنیزه کرده و از طریق ICO جذب سرمایه کنند. این استاندارد مجموعهای از مفاهیم پایهای است که توسعه دهندگان برنامه در بستر بلاک چین اتریوم باید آنها را پیادهسازی کنند تا توکن آنها یک توکن ERC۲۰ باشد.
تفاوت توکنهای ERC20 و بلاک چین های دیگر
توکن ها در بستر بلاک چین اتریوم، داراییهایی هستند که ارزش دارند. آنها همانند بیت کوین، لایت کوین و دوج کوین ارسال و دریافت میشوند. تفاوت این توکن ها با ارزهای دیجیتالی که مانند بیت کوین بلاک چین جداگانه دارند، این است که این توکن ها از آدرس های اتریوم استفاده میکنند و تراکنش های خود را روی بلاک چین اتریوم میفرستند؛ درحالی که کوینی مثل بیت کوین، بلاک چین مخصوص خودش را دارد و تراکنش های آن روی بلاک چین بیت کوین ثبت میشوند.
اصول استاندارد ERC20
برای اینکه توکن شما یک توکن ERC20 باشد و بتواند به راحتی با سایر قراردادهای هوشمند ارتباط بگیرد، ۶ تابع اصلی باید در قرارداد هوشمند توکن شما پیاده سازی شده باشد. این توابع و ورودی و خروجی آنها عبارتند از:
// ---------------------------------------------------------------------------- // ERC Token Standard #۲۰ Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-۲۰-token-standard.md // ---------------------------------------------------------------------------- contract ERC۲۰Interface { function totalSupply() public constant returns (uint); function balanceOf(address tokenOwner) public constant returns (uint balance); function allowance(address tokenOwner, address spender) public constant returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); }
با پیادهسازی این توابع، توکن های ERC20 باید بتوانند ۴ فعالیت زیر را انجام دهند:
- ارائه تعداد کل توکن های عرضه شده
- ارائه موجودی حساب کاربری
- انتقال توکن از یک فرد به فرد دیگر
- موافقت با استفاده از توکن به عنوان دارایی پولی
مزایای توکنهای ERC20
پیش از اینکه این استاندارد به وجود بیاید، برنامه نویسها از اسامی متفاوتی برای نوشتن کد خود استفاده میکردند. برای مثال یکی از اسم تابع totalAmount برای ارائه تعداد کل توکنهای عرضه شده استفاده میکرد و دیگری از totalNumber. به دنبال آن کیف پولها و صرافیها برای ارتباط گرفتن با هر توکن مجبور بودند کد هر توکن را بخوانند و برای ارتباط با آن توکن، تغییرات لازم را در پلتفرم خود اعمال کنند. بنابراین استفاده از یک استاندارد مشخص مزایای زیر را دارد:
- یکریختی توکنها
- سادگی لیست شدن در اکسچنج ها برای ترید
- سادگی برای ارتباط با سایر قراردادهای هوشمند
- سادگی برای تعامل با کیف پول های مختلف
معایب استاندارد ERC20
مسائلی وجود دارد که استاندارد ERC۲۰ به آنها ورود نکرده است. در این استاندارد مقصد از دریافت توکن مطلع نمیشود و این امر میتواند منجر به از دست رفتن سرمایه کاربر شود. برای مثال اگر شما توکنهای خود را به آدرس قرارداد هوشمند یک توکن ERC20 دیگر ارسال کنید، توکن های شما در آن آدرس گیر میافتد؛ درحالی که چنین تراکنش هایی باید برگشت بخورند. تا آخر سال ۲۰۱۷ حدودا ۳ میلیون دلار به این دلیل از دست رفته است.
برای حل این مشکل جامعه اتریوم اکنون استاندارد جدیدی به نام ERC-223 معرفی کرده است. این استاندارد اجازه نمیدهد که توکن به آدرسی که از دریافت آن توکن پشتیبانی نمیکند، ارسال شوند.