استاندارد ERC20 برای ایجاد توکنهای تعویضپذیر در شبکه اتریوم تعریف شده است. اگر مدتی با ارزهای دیجیتال سروکار داشته باشید، قطعا با استاندارد ERC20 روبهرو خواهید شد. پروژههای زیادی بر بستر بلاکچین اتریوم ایجاد شدهاند و توکن اکثر آنها دارای همین استاندارد است. وقتی به دنبال کیف پول مناسب آن توکن میگردیم، متوجه میشویم که باید با ERC20 سازگار باشد و البته بیشتر والتها از این استاندارد پشتیبانی میکنند. در این مقاله بررسی میکنیم که استاندارد ERC20 چیست، چرا و چطور ایجاد شد. همچنین به مزایا و معایب آن و معرفی سایر استانداردهای اتریوم نیز میپردازیم. با صرافی سیمیا همراه باشید.
فهرست محتوا
استاندارد ERC20 چیست؟
استاندارد ERC-20 یکی از استانداردهای فنی برای توکنهای قابل تعویضی است که با استفاده از بلاکچین اتریوم ایجاد شدهاند. به عنوان مثال اتر قابل تعویض است، یعنی بین دو توکن اتر تفاوتی وجود ندارد و میتوان آنها را با هم معاوضه کرد. توکن غیر قابل تعویض نیز همان توکن بیهمتا (NFT) است که دو مورد از آن یکسان نیست و با هم تفاوتهایی دارند، طبیعتا این تفاوت در میزان ارزشمندی آنها نیز وجود دارد.
اتریوم چیست؟ راهنمای جامع شبکه اتریوم و رمزارز اتر
استاندارد ERC-20 به قراردادهای هوشمند مختلف امکان میدهد تا روشی برای تبادل توکنها ایجاد کنند. در این مورد، توکنها معرف یک دارایی، حق مالکیت، دسترسی، رمزارز یا هر چیز دیگری است که به خودی خود منحصربهفرد نیست، اما قابل انتقال است.
قرارداد هوشمند چیست ؟ با کاربردهای Smart Contract آشنا شوید
بخش ERC در ERC20 مخفف عبارت Ethereum Request for Comments است. RFC خلاصهشده عبارت Request For Comment بوده و اسناد RFC مجموعهای از یادداشتهای تکنیکی و سازمانیافته است که پیرامون اینترنت و مباحث جنبی آن رشد پیدا کردهاند. این اسناد که از سال ۱۹۶۹ میلادی تا به امروز در حال تنظیم و توسعه هستند، حاوی بسیاری از مفاهیم شبکههای کامپیوتری مثل قراردادها (پروتکلها)، رویهها، برنامهها و مفاهیم انتزاعی هستند. مرکز رسمی برای تبیین و نظارت بر این قراردادها سازمان IETF است. کارگروه مهندسی اینترنت (Internet Engineering Task Force) سازمانی است که استانداردهای اینترنت را ایجاد کرده و بهبود میبخشد.
به زبان سادهتر ERC، پروتکل رسمی برای بهبود بلاک چین اتریوم است. عدد ۲۰ هم نشاندهنده یک شناسه خاص برای پروتکل ERC20 است. این پروتکل در سالهای اخیر نقش اساسی در صنعت بلاکچین و ارزهای دیجیتال داشته است و کمک کرده تا هزاران برنامه غیر متمرکز (DApps) در یک پلتفرم به صورت استاندارد توسعه یابند.
برنامه غیرمتمرکز چیست؟ همه چیز درباره Dapp ها و کاربردهای آنها
تاریخچه استاندارد ERC20
قراردادهای هوشمند در سال ۲۰۱۵ محبوبتر شدند، اما مسائل مختلفی در رابطه با آنها وجود داشت که باید برطرف میشدند. از آنجایی که هر فردی میتوانست یک توکن ایجاد کند، توکنهای بسیار زیادی به وجود آمدهاند. هرچند روشی برای اطمینان از این موضوع وجود نداشت که توکنهای مختلف را بتوان به وجود آورد، از آنها استفاده کرد و به تبادل آنها پرداخت. بدون وجود یک چارچوب استاندارد برای توکنها، هر برنامهای به توکن مختص به خود نیاز داشت و کاربران نیز به روشی نیا داشتند تا دائما توکنهای هزاران برنامه موجود را به یکدیگر تبدیل کنند.
استاندارد ERC-20 توسط یکی از توسعهدهندگان به اسم فابین ووگلستلار (Fabin Vogelstellar) در سال ۲۰۱۵ به عنوان روشی برای استانداردسازی توکنهای موجود در قراردادهای هوشمند بر بستر بلاکچین اتریوم توسعه یافته است (ووگلستلار بنیانگذار پروژه Lukso نیز هست). ووگلستلار این پروپوزال را از طریق صفحه گیتهاب پروژه خود به عنوان یک استاندارد ERC ثبت کرد. از آنجایی که این پروپوزال، بیستمین پروپوزال بهبود اتریوم بوده، به عنوان ERC-20 ثبت شده است.
پس از رویهای که جامعه توسعهدهندگان اتریوم طی کرد، این پروپوزال در سال ۲۰۱۷ تایید و به عنوان پروپوزال بهبود اتریوم یا همان ERC-20 پیادهسازی شد. از آنجایی که درخواست ثبت این پروپوزال تایید و پیادهسازی شده است، اگر توسعهدهندگان در صدد این هستند تا توکنهای آنها قابل تعویض باشد، توکنهای قراردادهای هوشمند آنها باید مطابق با استاندارد مذکور باشند.
محتوای استاندارد ERC20
استاندارد ERC-20 شامل توابع و رویدادهایی است که یک توکن باید پیادهسازی کند. این نکته را به خاطر داشته باشید که این استاندارد همچنین بر اقداماتی نظارت دارد که قراردادهای هوشمند به منظور ایجاد توکن از آنها بهره میبرند. توابع و اطلاعات پایه و ابتدایی که توکن مطابق با استاندارد ERC-20 باید به همراه داشته باشد عبارتند از:
- تابع TotalSupply: مجموع تعداد توکنهایی که صادر خواهد شد.
- تابع BalanceOf: موجودی توکن مذکور در حساب دارنده توکن را مشخص میکند.
- تابع Transfer: این تابع به طور خودکار انتقال تعداد مشخصی از توکنها به آدرس مذکور را اجرا میکند.
- تابع TransferFrom: این تابع به طور خودکار انتقال تعداد مشخصی از توکنها را از آدرس مشخص دارای توکن مذکور اجرا میکند.
- تابع Approve: به خرجکننده یا همان ارسالکننده توکن امکان میدهد تا تعداد مشخصی از توکنها را از حساب مشخص برداشت کند.
- تابع Allowance: این تابع مقدار مشخصی از توکنها را از خرجکننده به دارنده توکن برمیگرداند.
- رویداد Transfer: این رویداد هنگامی فعال میشود که انتقال با موفقیت انجام شود.
- رویداد Approval: سابقهای از رویدادهای تاییدشده
این توابع و رویدادها برای کاربران و توکنها یکسان و صادق است. به عبارت دیگر، این موارد در تعیین تعداد توکنهای در گردش، ذخیرهسازی و بازگرداندن موجودی حساب، انجام درخواستهای انتقال و برداشت، تایید و موافقت در خصوص انتقالهای خودکار به کاربران کمک میکنند.
این توابع و رویدادها تضمین میکنند که انواع مختلف توکنهای اتریوم در کل اکوسیستم اتریوم به صورت یکپارچه و یکدست اجرا میشوند و در واقع شرایط یکسانی دارند.
آیتمهای قرارداد ERC20
تاکنون جزییاتی از استاندارد ERC20 را بیان کردیم. اکنون به بررسی دقیقتر چند مورد اختیاری میپردازیم. این موارد ساده هستند، اما شناخت مناسب و کافی آنها بسیار مهم است. شناخت مناسب این موارد و محتوای آنها از اهمیت خاصی برخوردار است؛ زیرا نمیتوان این جزییات را پس از اجرای قرارداد تغییر داد.
اسم قرارداد (Contract Name)
اسم قرارداد توکن نسبتا ساده و بدون پیچیدگی خاصی است. اسم قرارداد در واقع یک اسم طولانی است که قرارداد توکن با آن شناخته میشود. برای مثال فرض کنید اسم قرارداد ERC-20 ما «Our Example Token» است. از لحاظ طول اسم قرارداد هیچگونه محدودیتی وجود ندارد. هرچند، توسعهدهندگان باید این نکته را به خاطر داشته باشند که بسیاری از کیف پولها، اسامی طولانی را کاهش داده و کوتاهتر میکنند. بنابراین بهتر است اسم مختصر و کوتاهی برای قرارداد خود انتخاب کنیم.
نماد قرارداد (Contract Symbol)
نماد (Symbol) قرارداد به نماد خود توکن اشاره میکند. برای مثال میتوان گفت که این نماد با نماد سهام بازار بورس مشابه است. اکثر مردم توکن مذکور را با این نماد میشناسند. در خصوص مثالی که ذکر کردیم (قرارداد Our Example Token) منطقیترین نمادی که بتوان برای توکن انتخاب کرد، نماد OET خواهد بود. همانند اسم، نماد قرارداد نیز از لحاظ طول و اندازه محدودیتی ندارد. هرچند اکثر توکنها دارای ۳ یا ۴ حرف هستند. اگرچه بسیاری از پروژهها نمادهای خود را بر اساس حروف ابتدایی توکن خود انتخاب میکنند، اما قانونی در خصوص این موضوع وجود ندارد. بدین ترتیب، اسم و نماد ممکن است ارتباطی با یکدیگر نداشته باشند.
اعداد اعشاری قرارداد (Contract Decimals)
به طور کلی اعداد اعشاری تعیین میکنند که یک توکن تا چند رقم پس از اعشار قابل تفکیک است. این مقدار ممکن است صفر باشد (به معنای آنکه توکن مذکور به مقادیر کمتر قابل تفکیک نیست) یا میتواند تا ۱۸ رقم پس از اعشار نیز تفکیکپذیر باشد. به علاوه در صورت لزوم، تعداد اعداد پس از اعشار حتی میتواند بیشتر از ۱۸ رقم باشد.
بدین ترتیب توسعهدهندگان باید از ابتدا تصمیم بگیرند که توکن ERC-20 آنها تا چند رقم پس از اعشار قابل تفکیک است. در خصوص تعیین این موضوع، کاربرد توکن مذکور از اهمیت ویژهای برخوردار است. برای مثال، فرض کنید توکن مدنظر ما به عنوان توافقنامه مجوز نرمافزار برای بخش خاصی از یک نرمافزار عمل میکند. در این مورد، در اختیار داشتن کسری از توکن مذکور به معنای در اختیار داشتن کسری از مجوز آن نرمافزار است که در واقع بیمعنی است. پس میتوان گفت که نداشتن هیچ رقمی پس از اعشار برای این توکن مناسب است.
به عنوان مثالی دیگر، توکنی را در نظر بگیرید که معرف مالکیت طلای واقعی است. فرض کنید توسعهدهندگان این توکن تصمیم گرفتهاند که هر واحد از توکن آنها معرف یک کیلوگرم طلای واقعی باشد. همچنین این توسعهدهندگان تصمیم گرفتهاند که دارندگان توکن نتوانند کمتر از یک گرم طلا نگهداری یا معامله کنند. در این مورد، توکن مذکور دارای ۳ رقم پس از اعشار باید باشد.
مزایا و معایب ERC20
ایجاد و توسعه یک توکن با استاندارد ERC-20 به چندین دلیل سودمند است. توسعهدهندگان دیگر مجبور نیستند هر بار که توکن یا برنامه غیرمتمرکز جدیدی توسعه میدهند، فعالیت خود را از صفر شروع کنند. از آنجایی که استاندارد ERC-20 به استاندارد محبوبی تبدیل شده است، اثر شبکه (Network Effect) قابل توجهی ایجاد میکند. توسعهدهندگان و کاربران میتوانند مطمئن باشند هر توکنی که با استفاده از استاندارد ERC-20 ایجاد میشود، میتواند با صدها توکن دیگر که مطابق با ERC-20 هستند و سرویسهایی که این توکنها را میپذیرند تعامل برقرار کند.
پیش از اینکه این استاندارد به وجود بیاید، برنامهنویسها از اسامی متفاوتی برای نوشتن کد خود استفاده میکردند. برای مثال یکی از اسم تابع totalAmount برای ارائه تعداد کل توکنهای عرضه شده استفاده میکرد و دیگری از totalNumber. به دنبال آن کیف پولها و صرافیها برای ارتباط گرفتن با هر توکن مجبور بودند کد هر توکن را بخوانند و برای ارتباط با آن توکن، تغییرات لازم را در پلتفرم خود اعمال کنند. بنابراین استفاده از یک استاندارد مشخص مزایای زیر را دارد:
- یکریختی توکنها
- سادگی لیستشدن در اکسچنجها برای ترید
- سادگی برای ارتباط با سایر قراردادهای هوشمند
- سادگی برای تعامل با کیف پولهای مختلف
مسائلی وجود دارد که استاندارد ERC۲۰ به آنها نپرداخته است. در این استاندارد گیرنده از دریافت توکن مطلع نمیشود و این امر میتواند منجر به از دست رفتن سرمایه کاربر شود. برای مثال اگر شما توکنهای خود را به آدرس قرارداد هوشمند یک توکن ERC20 دیگر ارسال کنید، توکن های شما در آن آدرس گیر میافتد؛ درحالی که چنین تراکنش هایی باید برگشت بخورند. تاکنون میلیونها دلار به این دلیل از دست رفته است.
برای حل این مشکل جامعه اتریوم اکنون استاندارد جدیدی به نام ERC-223 معرفی کرده است. این استاندارد اجازه نمیدهد که توکن به آدرسی که از دریافت آن توکن پشتیبانی نمیکند، ارسال شوند.
مشکل نرم افزاری batchOverflow مشکل دیگری است که این استاندارد محدودیتی برای آن در نظر نگرفته است. وجود این مشکل در یک توکن میتواند منجر به خرج کردن مبلغی بیش از موجودی، از یک آدرس شود. در ماه آوریل سال ۲۰۱۸ به دلیل این مشکل نرم افزاری، تعدادی از صرافیها امکان برداشت و واریز تعدادی از توکنهای ERC۲۰ را موقتا بستند. این مشکل، همان مشکل کلاسیک Integer overflow است که هکرها از طریق آن میتوانند مقداری زیادی توکن بدست آورند.
در برنامهنویسی کامپیوتر، سرریز عدد صحیح (Integer overflow) زمانی اتفاق میافتد که یک عملیات محاسباتی تلاش میکند تا یک مقدار عددی خارج از محدوده قابل پردازش ایجاد کند، یا بالاتر از حداکثر یا کمتر از حداقل مقدار قابل نمایش. متداولترین نتیجه این کار، جایگزین شدن حاصل با حداقل مقدار قابل نمایش است. این مشکل میتواند قابلیت اطمینان و امنیت برنامه را به خطر بیندازد.
کاربردهای ERC20؛ از ICO ها تا دیفای
با توجه به اینکه هزاران توکن مختلف وجود دارد، کاربرد توکنهای ERC-20 همچنان در حال گسترش است. توکنهای ERC-20 معرف تنوع بسیار زیادی از داراییهای دیجیتالی و فیزیکی هستند. بعضی از توکنهای ERC-20 معرف املاک، آثار هنری، سهام، فضای ذخیرهسازی و غیره هستند. توکنهای ERC-20 همچنین در سیستمهای مختلف، عملکردهای متفاوتی ارائه میدهند. این عملکردها میتوانند شامل محصولات دیفای، بازارهای مختلف، صرافیها، بازیها، کیف پولها و رایگیری برای بهروزرسانی پروتکلهای مختلف باشند.
این نکته نیز قابل ذکر است که ایجاد استاندارد ERC-20 چگونه بر رشد انفجاری ICO ها تاثیرگذار بوده است. استاندارد ERC-20 به توسعهدهندگان امکان داد تا با استفاده از چارچوب ارائهشده به توسعه سریع توکنها بپردازند. این موضوع به معنای کاهش چشمگیر دانش فنی و میزان تلاش مورد نیاز برای عرضه یک توکن بوده است. توسعهدهندگان توانستند توکنهای خود را به روش فروش جمعی (Crowdsale) به جامعه اتریوم بفروشند و مقدار قابل توجهی سرمایه به دست آورند. این موضوع در تامین بودجه بسیاری از پروژهها و پلتفرمهای مهم و ضروری که امروزه اکوسیستم اتریوم را شکل دادهاند نقش مهمی ایفا کند.
عرضه اولیه کوین چیست؟ همه چیز درباره جذب سرمایه با ICO
چه استانداردهای دیگری در اکوسیستم اتریوم وجود دارد؟
استاندارد ERC20 یکی از استانداردهای قراردادهای هوشمند اکوسیستم اتریوم است. برای اهداف و کاربردهای دیگر چندین استاندارد برای کدنویسی در اتریوم تعریف شده است. در ادامه مرور مختصری بر تعدادی از مهمترین استانداردهای اتریوم خواهیم داشت.
- استاندارد ERC-721: این استاندارد مربوط به توکنهای NFT است. هر توکن یکتا منحصربهفرد بوده و دارای کد مختص به خود است. این موضوع به ایجاد بازار نوظهوری برای آیتمهای کلکسیونی کریپتو نظیر آثار هنری دیجیتالی منجر شده است.
- استاندارد ERC-1400: این استاندارد برای توکنهای اوراق بهادار است. با استفاده از این استاندارد میتوان توکنهای مذکور را به عنوان اوراق بهادار فروخت. در این استاندارد ضروری است تا روی افرادی که به کوینها دسترسی دارند،کنترل بیشتری انجام و همچنین پروتکلهای احراز هویت مشتریان (KYC) ارائه شود.
- استاندارد ERC-223: هنگامی که تراکنشی انجام میدهید، کارمزد آن به صورت اتر پرداخت میشود. این استاندارد پرداخت کارمزد با استفاده از توکن حاضر در تراکنش را امکانپذیر میسازد. این موضوع به معنای آن است که میتوان کارمزد انتقال توکن Augur را با همین توکن با نماد REP پرداخت کرد.
- استاندارد ERC-777: این استاندارد با کاهش هزینه تراکنش و افزودن ویژگیهای جدید در صدد بهبود استاندارد ERC-20 است. این استاندارد از استانداردهای قبل از خود پشتیبانی میکند و در نتیجه ممکن است به طور گستردهتری پذیرفته شود.
پرسش و پاسخ (FAQ)
- استاندارد ERC20 چیست؟
استاندارد ERC20 یک استاندارد فنی برای نوشتن قرارداد هوشمند توکنهای تعویضپذیر بر بستر شبکه اتریوم است. این استاندارد از ایجاد توکنهایی با توابع مختلف جلوگیری کرد و باعث بهبود تعامل توکنها در شبکه اتریوم شد.
- عبارت ERC مخفف چیست؟
عبارت ERC مخفف Ethereum Request for Comments است و به پیشنهادهای بهبودی اشاره دارد که برای اتریوم ارائه شده و به تایید رسیده است.
- استانداردهای معروف اتریوم به جز ERC20 چه هستند؟
در کنار ERC20 استانداردهای معروف دیگری مثل ERC-721 برای توکنهای بیهمتا، ERC-1400 برای توکنهای اوراق بهادار و ERC-223 برای پرداخت کارمزد با خود توکن به جای اتر وجود دارد.
جمعبندی
توکنهای زیادی بر بستر اتریوم یجاد شدهاند و این موضوع باعث اهمیت و شهرت بیشتر استانداردهای این شبکه شده است. ERC20 یکی از معروفترینها است، اغلب افراد نمیدانند که منظور از استاندارد ERC20 چیست و به چه موضوعی اشاره دارد. ERC20 یکی از استانداردهای اتریوم برای نوشتن قرارداد هوشمند توکنهای تعویضپذیر است. در این مقاله پس از معرفی استاندارد ERC-20 و بررسی تاریخچه آن، محتوا و آیتمهای این استاندارد را نیز بررسی کردیم. در ادامه نیز به مزایا و معایب این استاندارد و همچنین معرفی سایر استانداردهای مهم اتریوم پرداخته شد.