شبکه اتریوم در سال ۲۰۱۴ توسط یک نابغه برنامهنویسی روسی به نام ویتالیک بوترین ایجاد شد. این شبکه نقطه مزیت و تفاوت خود نسبت به شبکه بیت کوین را در ایجاد بستری متنباز برای راهاندازی اپلیکیشنهای غیرمتمرکز یا همان DApps میداند. یکی از اساسیترین انگیزههای بوترین برای ایجاد یک شبکه بلاکچینی، رفع ایراد انعطافپذیری و مقیاسپذیری شبکه بیتکوین بود. در واقع با اینکه این استاندارد، چارچوب توسعه توکن مختص شبکه اتریوم است؛ اما الهامبخش سایر استانداردها همانند BEP-2 بایننس چین نیز شده است.
در این مقاله از آکادمی مزدکس قصد داریم، یکی از مهمترین استانداردهای ایجاد توکن و شبکه انتقال ارز دیجیتال به نام ERC-20 را معرفی کنیم.
منظور از استاندارد ERC چیست؟
از زمان راهاندازی شبکه اتریوم، این بستر جدید بلاکچینی توانست توجه بسیاری از برنامهنویسان، کسبوکارها و کارآفرینان را به خود جلب کند و حجم رو به رشدی از کاربرانی که قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز را راهاندازی میکنند، با خود همراه سازد.
استاندارد ERC یا همان درخواست برای نظردهی در شبکه اتریوم، شرایط و مستندات فنی لازم برای توسعه توکن بر بستر اتریوم را توصیف میکند. ERC شامل قواعدی است که توکنهای مبتنی بر اتریوم بایستی از آن تبعیت کنند. استانداردهای رایج ERC مجموعهای از توابع لازم برای یک نوع از توکن را تعریف میکنند تا بدین ترتیب، برنامههای کاربردی و قراردادهای هوشمند بتوانند با توکنها به روشی استاندارد ارتباط گیرند. در ادامه تعدادی از استانداردهای رایج و مهم ERC فهرست شده است.
استاندارد | تاریخ ایجاد | کاربرد |
ERC-20 | 2015/11/19 | استاندارد توکنسازی برای توکنها مثلی که توابع اصلی و بنیادین برای ایجاد قابلیت ارسال توکن و همچنین شرایط تایید توکن توسط اعتبارسنج (Validator)های شبکه اتریوم را تعریف میکند. |
ERC-721 | 2018/01/24 | استاندارد توکنهای غیر مثلی (NFT) |
ERC-777 | 2017/11/20 | شامل تمام توابع مورد نیاز برای ارسال یک توکن به نیابت از یک آدرس، حساب یا قرارداد دیگر است. |
ERC-1155 | 2018/06/17 | یک استاندارد برای قراردادهایی است که چندین نوع توکن را مدیریت میکند. |
در شبکه اتریوم (Ethereum) استانداردهای ERC که مخفف Ethereum Request for Comment هستند، در واقع مستنداتی فنی برای برنامهنویسی بر بستر شبکه اتریوم اند. باید به این نکته مهم توجه داشت که استانداردهای ERC با مفهوم EIP یا پیشنهاد بهبود در شبکه اتریوم که شبیه BIP (پیشنهاد بهبود در شبکه بیت کوین) است، متفاوتند. EIP ها برای ایجاد بهبود و بروزرسانی در شبکه اتریوم مورد استفاده قرار میگیرند؛ اما ERCها برای تسهیل ارتباطگیری و تعامل برنامههای کاربردی و قراردادهای هوشمند با یکدیگر کاربرد دارند.
استاندارد ERC-20 اتریوم
استاندارد ERC-20 واسطی ساده است که اجازه ایجاد توکن بر بستر اتریوم را داده و باعث میشود این توکنها بتوانند بهراحتی در میان سایر برنامههای کاربردی نظیر DeFiها منتقل و باز استفاده شوند.
به کمک ویتالیک بوترین و فبین ووگلاستلر (Vogelsteller) در سال 2015، استاندارد ERC-20 برای سادهسازی قالب توسعه توکن بر بستر اتریوم ایجاد شد. به کمک این استاندارد، توسعهدهندگان نیازی به اختراع چرخ از ابتدا را ندارند. در عوض آنها میتوانند بر پایه یک استاندارد پذیرفته شده در کل صنعت، نسبت به توسعه ایده و کسبوکار خود اقدام کنند. زمانی که یک توکن تحت استاندارد ERC-20 توسعه داده میشود، بهصورت خودکار با تمامی خدمات و نرمافزارهایی همانند کیفپول نرمافزاری، کیفپول سختافزاری، صرافیها و مانند آن سازگار خواهد بود.
لازم به ذکر است، استاندارد ERC-20، دو سال پس از توسعه و فراگیری، در قالب یک EIP به نام EIP-20 تدوین و معرفی شد. همچنین، ERC-20 استاندارد توکنهای مثلی (Fungible) نیز هست. توکنهای مثلی، توکنهایی هستند که هر واحد آن (یا بخشی از آن) شبیه یکدیگر هستند و تفاوت آنها قابلتشخیص نیست. برای مثال یک دلار دست شما، با یکدلاری که در دست دیگران است یکسان است، دقیقاً بیت کوین هم به همین ترتیب یک رمزارز مثلی است.
مروری بر توکنهای اتریومی
برخلاف رمزارز اتر (رمزارز پایه شبکه اتریوم)، توکنهای ERC-20، در حسابهای اتریومی نگهداری نمیشود. این نوع توکنها تنها در حسابهای قرارداد هوشمند وجود دارند. برای انتقال توکنهای ERC-20، افراد بایستی تراکنشی به قرارداد هوشمند زده و از قرارداد بخواهند بخشی از موجودی را به جای دیگری منتقل کند. برای نمونه، اگر علی بخواهد 5000 توکن مزدکس (Mazdax Token) را به حسین منتقل کند، او باید تابع درون قرارداد هوشمند توکن آکادمی مزدکس را فراخوانی کرده و از آن بخواهد این کار را انجام دهد.
لازم به ذکر است برای انتقال توکن در شبکه اتریوم، فرستنده تراکنش بایستی مقداری ETH برای پرداخت کارمزد تراکنش خود در حسابش داشته باشد.
شیوه خلق توکنهای ERC-20
منطبق بر استاندارد ERC-20، قرارداد مرتبط به توکن بایستی وضعیت شش تابع خود را مشخص کرده باشد. این توابع totalSupply ،balanceOf ،transfer ،transferFrom، approve و allowance است. علاوه بر این موارد، میتوان از برخی توابع اختیاری دیگر همانند name ،symbol و decimal نیز استفاده کرد. در ادامه در مورد این توابع بیشتر توضیح میدهیم.
۱. تابع totalSupply: برای گرفتن میزان منابع (total supply) یک توکن اتریومی خاص مورداستفاده قرار میگیرد.
function totalSupply () public view returns (uint256)
۲. تابع balanceOf: رهگیری موجودی توکن هریک از کیفپولهای اتریومی را برعهده دارد. بر خلاف تابع totalSupply، تابع balanceOf یک آدرس را بهعنوان پارامتر ورودی میگیرد. زمانی که این تابع فراخوانی شود، موجودی آن آدرس را نمایش میدهد.
function balanceOf (address _owner) public view returns (uint256 balance)
۳. تابع transfer: پس از ایجاد توکن، این تابع میتواند تمام توکنها را به یک کیف منتقل کند یا میان سرمایهگذاران یک ICO توزیع کند. در واقع این تابع برای انتقال توکن از یک کاربر به فرد دیگر کاربرد دارد.
function transfer (address _to, uint256 _value) public returns (bool success)
۴. تابع transferFrom: عملکرد این تابع بسیار شبیه تابع transfer است، با این تفاوت که قدرت برنامهنویسی و سفارشی کردن بیشتری را در اختیار برنامهنویسان برای استفاده در خدمات DeFi فراهم میکند. به کمک این تابع، شما میتوانید به فرد یا قرارداد هوشمند دیگری اجازه دهید به نیابت از شما، توکن را از حساب قرارداد هوشمند بهحساب دیگری منتقل کند. برای نمونه میتوانید به یک قرارداد هوشمند اجازه دهید که در یک بازه زمانی مشخص (مثلاً روزی یکبار) میزان توکنی را به یک آدرس مشخص منتقل کند.
function transferFrom (address _from, address _to, uint256 _value) public returns (bool success)
۵. تابع approve: ازنقطهنظر قابلیت برنامهنویسی، تابع approve بسیار کاربردی است. به کمک این تابع، برنامهنویس میتواند برای تعداد توکن قابلبرداشت از یک حساب، برای یک قرارداد هوشمند سقف و محدودیت تعریف کند. بدون این تابع، احتمال سوء استفاده و دستکاری در قرارداد هوشمند و به سرقت بردن دارایی افزایش مییابد.
function approve (address _spender, uint256 _value) public returns (bool success)
۶. تابع Allowance: بعد از استفاده از تابع approve برای مشاهده مقدار توکنهایی که حساب تایید شده مجاز به برداشت از حساب اصلی است استفاده میشود.
function allowance (address _owner, address _spender) public view returns (uint256 remaining)
سه تابع اختیاری دیگری نیز در استاندارد ERC-20 وجود دارد که نام توکن، سمبل یا همان نماد توکن و تعداد اعشار توکن (میزان خردشوندگی) است. توابعی که تا اینجا بررسی شد، توابعی الزامی و اجباری هستند. بر خلاف این توابع، الزامی به درج نام، سمبل و میزان خردشوندگی توکن وجود ندارد؛ اما با تکمیل این موارد، قرارداد توکن ERC-20، دقیقتر و زیباتر میشود. به کمک این توابع اختیاری به ترتیب، میتوانید یک نام قابلخواندن به توکن اضافه کنید، یک نماد (بهعنوانمثال ETH، BTC، BNB) تنظیم کنید و مشخص کنید که توکنها به چند رقم اعشار قابلتقسیم هستند. مثالا، توکنهایی که بهعنوان ارز پرداختی استفاده میشوند، ممکن است از تقسیمپذیری بیشتر از توکنی که نشاندهنده مالکیت یک دارایی است، بهرهمند شوند.
کاربرد توکنهای ERC-20
با کنار هم قرار دادن تمام توابع بالا، ما یک قرارداد ERC-20 داریم. ما میتوانیم کل عرضه توکن را بررسی، موجودیها را چک و توکن خود را منتقل کنیم و به سایر برنامههای کاربردی مجوز دهیم تا توکنها را برای ما و به نیابت از ما مدیریت کنند.
بخش بزرگی از جذابیت توکنهای ERC-20 مربوط به انعطافپذیری آنهاست. قواعد و شرایط تعیینشده در این استاندارد، توسعه توکن را محدود نمیکند، بنابراین افراد میتوانند ویژگیهای اضافی موردنیاز خود را پیادهسازی و پارامترهای خاصی را متناسب با نیاز خود توسعه دهند.
۱. استیبل کوینها یا توکنهای باثبات
معمولاً استیبل کوینها یعنی توکنهایی که ارزش آنها به یک ارز رایج همانند دلار وابسته است، از استاندارد ERC-20 استفاده میکنند. غالباً برای ایجاد استیبل کوین، صادرکننده توکن بایستی مقادیری دلار، یورو یا هر ارز دیگری را نزد یک نهاد معتمد مانند بانک سپردهگذاری کند و به معادل آن (با نسبت 1:1) در یک شبکه بلاکچینی توکن ایجاد کند. بدین ترتیب، پشتوانه هر توکن یک واحد ارز رایج وجود دارد و نتیجه ارزش آن متناسب با ارزش ارز پشتوانه نوسان خواهد داشت و قاعدتاً ازآنجاییکه نوسانات شدیدی را تجربه نمیکند، به آن استیبل کوین میگویند. تتر یکی از معروفترین این توکنها است.
مزایای استیبل کوینها نسبت به ارز رایج پشتوانه آنها، در خریدوفروش سریعتر، امنتر و با کارمزد کمتر خصوصاً در سطح تبادلات بینالمللی است و در کنار آن، امکان وارد کردن استیبل کوینها در قراردادهای هوشمند باعث خواهد شد که بتوان خدمات DeFi همانند وامدهی و بیمه را توسعه داد.
۲. توکنهای بهادار
توکن بهادار چیزی شبیه به استیبلکوینها است، با این تفاوت که پشتوانه توکنهای بهادار میتواند اوراق قرضه، سهام و داراییهای فیزیکی باشد. در واقع در سطح فنی و قراردادهای هوشمند، استیبلکوینها با توکنهای بهادار تفاوتی ندارند؛ اما در سطح هدف از انتشار و کاربرد، این دو نوع توکن با هم متفاوتند. عموماً داشتن توکن اوراق بهادار به معنای مالکیت بر بخشی از یک دارایی و یا یک کسبوکار است.
۳. توکنهای کاربردی
توکنهای کاربردی رایجترین نوع توکنهای بلاکچینی هستند. برخلاف دو دسته استیبل کوین و توکن بهادار، توکنهای کاربردی هیچ پشتوانهای نداشته و برای استفاده از یک خدمت و کالا مورد استفاده قرار میگیرند. اگر توکنهای دارای پشتوانه مانند سهام یک شرکت هواپیمایی باشند، توکنهای کاربردی مانند بلیت چندبار مصرف هواپیما هستند. توکنهای کاربردی میتوانند موارد استفاده بیشماری داشته باشند، از ارز رایج درون یک بازی گرفته تا کارمزد استفاده از یک برنامههای غیرمتمرکز و امتیازات وفاداری و موارد دیگر.
آیا توکنهای ERC-20 قابل استخراج هستند؟
برخلاف اتر، توکنهای اتریومی قابل استخراج و ماینینگ نیستند. در اصطلاح، این توکنها در قالب یک قرارداد هوشمند همگی بهصورت یکجا ضرب میشوند. زمانی که یک قرارداد هوشمند توکن راهاندازی میشود، توکنها منطبق بر برنامه توزیع توکن و نقشهراه توسعه محصول که توسط توسعهدهنده از قبل تعیینشده، به آدرسهای مختلف منتقل میشوند.
در عمل این امر طی فرایندی به نام ICO یا همان عرضه اولیه سکه، IEO یا همان عرضه اولیه صرافی یا STO یا همان عرضه اولیه توکن بهادار انجام میشود. البته در دنیای توکنهای اتریومی مشابه این نوع عرضهها بسیار زیاد است (IHO، IFO، IBO، ILO و …) و همگی بهمنظور توزیع توکن پروژه در میان کاربران صورت میگیرد.
مزایای توکنهای ERC-20
تعویضپذیری: توکنهای ERC-20 قابلمعاوضه یا Fungible هستند و هر واحد آن با دیگر واحد مشابه و قابلمعاوضه است (همانند اسکناسهای هزار تومانی). برای در بهتر موضوع مثالی میزنیم. فرض کنید شما به دلیل فعالیت خود در آکادمی مزدکس، یک توکن Mazdax Token دریافت کردید. آیا مهم است که این توکن کدامیک از توکنهای آکادمی مزدکس باشد؟ از آنجا که همه این توکنها معادل و مشابه همدیگرند، در عمل هیچ تفاوتی میان آنها نیست و با یکدیگر قابلمعاوضه هستند. قابلیت معاوضه پذیری باعث میشود، بتوان از این استاندارد برای توسعه توکنهای پرداختی و ایجاد یک واحد پولی رمزارزی استفاده کرد.
انعطافپذیری: همانطور که در خلال بررسی توابع موجود در این استاندارد بیان شد، ERC-20 بهشدت قابل سفارشیسازی بوده و میتوان از آن برای بسیاری برنامههای کاربردی استفاده کرد. برای نمونه از این نوع توکنها میتوان بهعنوان ابزار پرداخت درون بازی استفاده کرد، میتوان برای توسعه باشگاه مشتریان از طریق توکن وفاداری استفاده نمود و یا نقش ابزاری برای اثبات حق مالکیت معنوی داشت.
محبوبیت: در دنیای رمزارزها، توکنهای ERC-20 بسیار محبوب و فراگیر هستند. در حال حاضر تعداد بسیار زیادی صرافی رمزارز، کیفپول، قرارداد هوشمند و راهکارهای DeFi هستند که همگی با توکنهای ERC-20 کاملاً سازگاری دارند. از سوی دیگر، به دلیل همین فراگیری، در سطح اینترنت حجم بسیار زیادی از منابع و مستندات آموزشی در اختیار توسعهدهندگان و برنامهنویسان قرار دارد.
معایب توکنهای ERC-20
مقیاسپذیری: همانند بسیاری از شبکههای بلاکچینی، شبکه اتریوم نیز بدون ایراد و مشکل نیست. یکی از ایرادات اساسی این شبکه، بحث مقیاسپذیری است. بهعبارت دیگر با بالا رفتن حجم تراکنشها در این شبکه، فرایند بررسی و تایید تراکنشها طولانیتر و پرهزینه خواهد شد. در این شبکه، در صورت ازدحام تراکنشها، ممکن است کارمزد شبکه به حدی افزایش یابد که انتقال توکن ERC-20 شما دیگر مقرونبهصرفه نباشد.
لازم به ذکر است، این ایراد تنها به شبکه اتریوم وارد نیست و بسیاری از شبکههای غیرمتمرکز با این چالش دستوپنجه نرم میکنند.
کلاهبرداریها: این ایراد، ارتباطی به فناوری و شیوه کارکرد شبکه و توکنهای اتریومی ندارد. در واقع ساده بودن فرایند ایجاد یک توکن و عدم نیاز به داشتن دانش فنی برای ورود به این فضا، کار را برای توسعه همهگونه توکن، چه خوب و چه با هدف کلاهبرداری باز و ساده کرده است.
بنابراین، بایستی در زمان سرمایهگذاری در یک پروژه رمزارزی بسیار دقیق و وسواس گونه عمل کرد. ازآنجاییکه در این بازار تعداد پروژههای اسکم و پانزی کم نیستند، حتماً قبل از سرمایهگذاری، خودتان در مورد آن پروژه تحقیق کنید.
جمعبندی
استاندارد توکنسازی ERC-20 سالهاست که در دنیای رمزارزها یکهتازی میکند و دلیل آن نیز مشخص است. به دلیل سادگی نسبی این استاندارد، همگان میتوانند یک قرارداد هوشمند را توسعه داده و از توکن خود در دامنه وسیعی از کاربردهای توزیعشده استفاده کنند. استاندارد توسعه توکن، بخشی از خانواده استانداردهای ERC است که هر کدام برای رفع بخشی از ایرادات موجود در ERC-20 و یا پاسخگویی به نیازی جدید توسعه دادهشدهاند. در مقالات بعدی بیشتر در مورد این خانواده استاندارد صحبت خواهیم کرد.
لینک کوتاه کپی شد https://mazdax.ir/academy/?p=7441