استاندارد ERC20 چیست؟

استاندارد ERC20
استاندارد ERC20

اگر به دنبال نوشتن قرارداد هوشمند در بستر بلاک چین اتریوم هستید، حتما واژه استاندارد ERC20 به گوشتان خورده است. در این مقاله می‌خواهیم توضیح دهیم که این استاندارد چیست و استفاده از آن در نوشتن قرارداد هوشمند چه مزایا و معایبی دارد.

بخش ERC در ERC20 مخفف عبارت Ethereum Request for Comments است. RFC خلاصه شده عبارت Request For Comment بوده و اسناد RFC مجموعه اي از يادداشت هاي تکنيکي و سازمان يافته مي‌باشند که پيرامون اينترنت و مباحث جنبی آن رشد پيدا کرده‌اند. اين اسناد که از سال ۱۹۶۹ ميلادی تا به امروز در حال تنظيم و توسعه هستند، حاوی بسياری از مفاهيم شبکه های کامپیوتری مثل قراردادها (پروتکل ها)، رويه ها، برنامه ها و مفاهيم انتزاعی میباشند. مرکز رسمی برای تبيين و نظارت بر اين قراردادها سازمان IETF میباشد.

به زبان ساده‌تر ERC، پروتکل رسمی برای بهبود بلاک چین اتریوم است. عدد ۲۰ هم نشان دهنده یک شناسه خاص برای پروتکل ERC20 می‌باشد. این پروتکل در سال های اخیر نقش اساسی در صنعت بلاک چین و ارزهای دیجیتالی داشته است و کمک کرده تا هزاران برنامه غیر متمرکز (DApps) در یک پلتفرم به صورت استاندارد توسعه یابند.

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

شرایط استاندارد ERC20

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

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
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 و کوین های با بلاک چین مستقل

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

مزایای توکن‌های ERC20

پیش از اینکه این استاندارد به وجود بیاید، برنامه نویس‌ها از اسامی متفاوتی برای نوشتن کد خود استفاده می‌کردند. برای مثال یکی از اسم تابع totalAmount برای ارائه تعداد کل توکن‌های عرضه شده استفاده می‌کرد و دیگری از totalNumber. به دنبال آن کیف پول‌ها و صرافی‌ها برای ارتباط گرفتن با هر توکن مجبور بودند کد هر توکن را بخوانند و برای ارتباط با آن توکن، تغییرات لازم را در پلتفرم خود اعمال کنند. بنابراین استفاده از یک استاندارد مشخص مزایای زیر را دارد:

  1. یکریختی توکن‌ها
  2. سادگی لیست شدن در اکسچنج ها برای ترید
  3. سادگی برای ارتباط با سایر قراردادهای هوشمند
  4. سادگی برای تعامل با کیف پول های مختلف

معایب ERC20

مسائلی وجود دارد که استاندارد ERC20 به آنها نپرداخته است. در این استاندارد گیرنده از دریافت توکن مطلع نمی‌شود و این امر می‌تواند منجر به از دست رفتن سرمایه کاربر شود. برای مثال اگر شما توکن‌های خود را به آدرس قرارداد هوشمند یک توکن ERC20 دیگر ارسال کنید، توکن های شما در آن آدرس گیر می‌افتد؛ درحالی که چنین تراکنش هایی باید برگشت بخورند. تا آخر سال ۲۰۱۷ حدودا ۳ میلیون دلار به این دلیل از دست رفته است.

برای حل این مشکل جامعه اتریوم اکنون استاندارد جدیدی به نام ERC-223 معرفی کرده است. این استاندارد اجازه نمی‌دهد که توکن به آدرسی که از دریافت آن توکن پشتیبانی نمی‌کند، ارسال شوند.

مشکل نرم افزاری batchOverflow مشکل دیگری است که این استاندارد محدودیتی برای آن در نظر نگرفته است. وجود این مشکل در یک توکن می‌تواند منجر به خرج کردن مبلغی بیش از موجودی، از یک آدرس شود. در ماه آوریل سال ۲۰۱۸ به دلیل این مشکل نرم افزاری، تعدادی از صرافی‌ها امکان برداشت و واریز تعدادی از توکن‌های ERC20 را موقتا بستند. این مشکل، همان مشکل کلاسیک سرریزی نوع داده‌ای integer است که هکرها از طریق آن می‌توانند مقداری زیادی توکن بدست آورند.

نویسنده: تیم تولید محتوای میهن بلاکچین