توکن ERC20 یکی از نامهایی است که قطعا در دنیای ارزهای دیجیتال بارها با آن برخورد داشتهاید. اما این توکن چیست و چه کاربردی دارد؟
اتریوم در سال ۲۰۱۴ توسط فردی به نام ویتالیک بوترین پایه گذاری شد و خود را به عنوان یک پلتفرم متن باز برای عرضه اپلیکیشنهای غیرمتمرکز معرفی کرد. قسمت بزرگی از انگیزه ویتالیک بوترین برای خلق یک بلاک چین جدید با قابلیتهای متنوع، از عدم انعطافپذیری پروتکلهای بلاک چین بیت کوین برخاسته است.
از زمان آغاز به کار این بلاک چین، به لطف این انعطافپذیری بالا نسبت به بیت کوین، اتریوم توجه توسعه دهندگان، کسب و کارها و کارآفرینان زیادی را به خود جلب کرد. این مسئله در ادامه باعث ظهور ویژگیهای بینظیری مانند قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز شد.
اما یکی از مواردی که این روزها در دنیای اپلیکیشنها و پلتفرمهای غیرمتمرکز زیاد میشنویم، توکنی به نام ERC20 است. اما تا چه حد با این توکن آشنایی دارید؟ در این مقاله به معرفی جامعی از توکن ERC20 میپردازیم؛ توکنی که به یک استاندارد برای بسیاری از دیگر توکنهای ریز و درشت دنیای ارزهای دیجیتال تبدیل شده است.
استاندارد توکن ERC20 چیست؟
در زمینه اتریوم، ERC مخفف Ethereum Request for Comments است؛ به معنی درخواست نظر اتریوم. در این پلتفرم اسنادی رسمی وجود دارند که استاندارد مشخصی را برای برنامهنویسی روی اتریوم تعیین میکنند. این استاندارد با مسئله EIP یا Ethereum Improvement Proposals متفاوت است. بر خلاف EIP که روی بهبود خود شبکه اتریوم تمرکز دارد، ERC با هدف ایجاد شرایطی برای تعامل اپلیکیشنها و قراردادها با شبکه اتریوم ایجاد شده است.
در سال ۲۰۱۵، استاندارد ERC-20 توسط ویتالیک بوترین و فابیان ووگلستلریک نوشته شد تا به صورت یک فرمت ساده برای توکن رسمی اتریوم باشد. به زبان خیلی ساده، با استفاده از این استاندارد، توسعهدهندگان نیازی به اختراع یک توکن از ریشه ندارند. در عوض، آنها میتوانند با استفاده از یک شالوده از پیش ساخته شده، بر اساس هر هدفی که در خصوص صنعت خود در سر دارند، اپلیکیشن یا توکن خود را خلق کنند.
هنگامی که توکنهای جدید ERC-20 خلق شدند، به صورت خودکار با تمامی سرویسها و نرمافزارهایی که از استاندارد توکن ERC20 پشتیبانی میکنند، قادر به تعامل هستند. این سرویسها و نرمافزارها از یک کیف پول سختافزاری گرفته تا یک صرافی را در بر میگیرند.
توکن ERC20 چطور ساخته میشود؟
برای این که یک توکن ERC-20 داشته باشید، نیاز است تا قرارداد شما شامل ۶ عملکرد الزامی باشد. این عملکردها عبارتاند از: totalSupply، balanceOf، transfer، transferFrom، Approve و Allowance. البته شما قادر هستید موارد اختیاری دیگری نظیر نام، نشانی و نشانه را به قرارداد خود اضافه کنید. شاید از نام این موارد بتوانید عملکرد آنها را متوجه شوید. اما برای آگاهی بیشتر، ما هر یک از این دستورات را به صورت جداگانه شرح میدهیم.
همچنین در توضیحات هر یک از این موارد، نوع قرارگیری آنها در زبان برنامه نویسی اتریوم یعنی سالیدیتی (Solidity) را هم مشاهده خواهیم کرد.
totalSupply
میزان عرضه کلی (Total Supply) به تعداد کوینها یا توکنهایی اشاره دارد که در یک شبکه یا اپلیکیشن وجود دارند. این میزان میتواند شامل توکنهای قفل شده، توکنهای حاضر در بازار یا توکنهای در حال گردش باشد. در قراردادهای هوشمند این مسئله به میزان توکنهایی گفته میشود که در یک قرارداد وجود دارد.
در زبان برنامهنویسی اتریوم، totalSupply به صورت زیر نوشته میشود:
function totalSupply() public view returns (uint256)
balanceOf
بر خلاف میزان عرضه کلی، balanceOf دارای یک آدرس است. هنگامی که این دستور داده شود، توکنهای نگهداری شده در این آدرس را بازمیگرداند. به یاد داشته باشید که اتریوم یک بلاک چین عمومی است، بنابراین اگر آدرس یک فرد را بدانید، قادر هستید میزان موجودی حساب این شخص را استعلام کنید.
در زبان برنامهنویسی اتریوم، balanceOf به صورت زیر نوشته میشود:
function balanceOf(address _owner) public view returns (uint256 balance)
transfer
transfer مربوط به انتقال توکنها از یک کاربر به کاربر دیگر میشود. در این بخش شما آدرس و میزان توکنهایی را که میخواهید انتقال دهید را مشخص میکنید. هنگامی که این دستور انجام شود، transfer عملکردی به نام Event را فعال میکند. Event در این زمینه اساسا به بلاک چین اعلام میکند که یک جا به جایی در جریان است.
در زبان برنامهنویسی اتریوم، transfer به صورت زیر نوشته میشود:
function transfer(address _to, uint256 _value) public returns (bool success)
transferFrom
تابع transferFrom یک جایگزین به درد بخور برای trasnfer است که برنامهنویسی در اپلیکیشنهای غیرمتمرکز را کمی منعطفتر میکند. همانند transfer، اساس کار آن انتقال توکنها است، اما در این شرایط، توکنها لزوما قرار نیست برای شخصی قرارداد را اجرا میکنند تعلق داشته باشد.
به زبان دیگر، با استفاده از trasnferFrom میتوانید شخصی دیگر (یا قراردادی دیگر) را از جانب خودتان، برای انتقال داراییها تصویب کنید. برای مثال، شما قصد دارید برای پرداخت اجاره خانه از یک قرارداد هوشمند استفاده کنید. با استفاده از این دستور، به جای اینکه هر هفته، هر ماه یا هر سال بخواهید فرایند پرداخت را خودتان انجام دهید، شما به اپلیکیشن این اجازه را میدهید تا به صورت خودکار این کار را انجام میدهد.
در زبان برنامهنویسی اتریوم، transferFrom به صورت زیر نوشته میشود:
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
approve
approve یک تابع دیگر به منظور انعطافپذیری بیشتر در برنامهنویسی است. با استفاده از این تابع، قادر هستید تعداد توکنهایی را که یک قرارداد هوشمند میتواند از حساب شما برداشت کند، محدود کنید. بدون این تابع، شما در معرض ریسک عدم عملکرد صحیح قرارداد، یا دزدیده شدن تمامی داراییهایتان قرار دارید.
مثالی که در خصوص اجاره خانه بیان کردیم در این مسئله هم صدق میکند. فرض کنید شما آن قدر مشغول کارهای خود هستید که دوست ندارید همیشه درگیر پرداختیهای خود باشید. بنابراین قطعا میخواهید از یک اپلیکیشن غیرمتمرکز برای پرداختیها استفاده کنید.
اما حساب شما پر از دارایی دیجیتال است و میزان آن بسیار بیشتر از هزینههای اجاره خانه است. پس اصلا دوست ندارید اپلیکیشنهای غیرمتمرکز حساب شما را خالی کنند. برای جلوگیری از این کار، شما میتوانید با استفاده از تابع approve برای اپلیکیشنهای مالی یک محدودیت ایجاد کنید.
با وجود این تابع، مثلا اگر باگ یا مشکلی از طریق اپلیکیشنهای غیر متمرکز رخ دهد، شما ۲۰ توکن خود را از دست میدهید. اما در صورت عدم وجود آن، ممکن است تمامی دارایی خود را از دست بدهید.
در زبان برنامهنویسی اتریوم، approve به صورت زیر نوشته میشود:
function approve(address _spender, uint256 _value) public returns (bool success)
allowance
allowance را میتوان با تابع approve متصل کرد. هنگامی که شما به قرارداد خود این اجازه را میدهید تا توکنهای شما را مدیریت کند، میتوانید از این تابع، تعداد توکنهایی را که این قرارداد میتواند همچنان برداشت کند، بررسی کنید.
در زبان برنامهنویسی اتریوم، allowance به صورت زیر نوشته میشود:
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
توابع اختیاری
توابعی که پیش از این معرفی کردیم، همگی اجباری هستند. در دستی دیگر، توابعی مانند Name، Symbol و Decimal اجباری نیستند و نیازی نیست آنها را در قرارداد خود بگنجانید. اما با این حال این توابع میتوانند قرارداد شما را به اصطلاح خوشگلتر کنند. در حقیقت با استفاده از آنها میتوانید توکنهای ERC-20 خود را برای کاربران دوستانهتر کنید. یک نام میتواند برای مردم توکنها را خوانا کند، یک نشانه (مانند ETH یا BTC) میتواند کار را آسانتر کند و همچنین با استفاده از اعشار میزان تقسیمپذیری توکنها را مشخص میکنید.
توکنهای ERC-20 چه کارهایی میتوانند انجام دهند؟
با کنار هم قرار دادن تمامی توابعی که بالا معرفی کردیم، ما حالا یک قرارداد ERC-20 در اختیار داریم. با استفاده از آن میتوانیم میزان کلی عرضه را استعلام بگیریم، میزان حساب را بررسی کنیم، داراییهای خود را انتقال دهیم یا حتی به اپلیکیشنهای غیرمتمرکز اجازه دهیم تا توکنها را برای ما مدیریت کنند.
یکی از مهمترین مسائلی که باعث شده توکن ERC20 موفق عمل کند، انعطافپذیری بالای آن است. این توکن هیچ محدودیتی برای توسعهدهندگان ایجاد نمیکند، بنابراین آنها میتوانند ویژگیهای منحصربهفرد خود را به این توکنها اضافه و پارامترهای مشخصی را که نیاز دارند، برای آن تعریف کنند.
در ادامه با برخی از موارد استفاده این توکنها آشنا میشویم.
استیبل کوینها
استیبل کوینها (توکنهایی که وابسته به قیمت ارزهای فیات هستند) معمولا از استاندارد توکن ERC-20 پیروی میکنند. یکی از مشهورترین استیبل کوینهای دنیا تتر است.
برای یک استیبل کوین معمولی با پشتیبانی فیات، یک صادر کننده استیبل کوین در ازای هر توکن خود، دلار، یورو، طلا یا ارزهای دیگر نگهداری میکند. به این معنی که اگر در خزانه شرکت تولید کننده یک استیبل کوین ۱۰ هزار دلار پول وجود داشته باشد، این شرکت ۱۰ هزار توکن ایجاد کرده است.
پیادهسازی این عملکرد روی اتریوم بسیار ساده است. در اتریوم یک شرکت یا شخص میتواند قراردادی را با ۱۰ هزار توکن شروع کند. سپس این توکنها را بین کاربران منتشر میکند اما با این وعده که هر یک از توکنهای آنها، برابر با یک ارز فیات است.
حال کاربران به جای این که پول نقد داشته باشند، برابر با آنها در دنیای ارزهای دیجیتال توکن در اختیار دارند. میتوانند محصول یا سرویس خریداری کنند، میتوانند پرداختهای درون برنامهای اپلیکیشنهای غیرمتمرکز را انجام دهند یا حتی آنها را با ارزهای دیجیتال نظیر بیت کوین معامله کنند.
البته که راهاندازی یک استیبل کوین با وجود سادگی اجرای آن روی پلتفرم اتریوم آسان نیست و نیازمند به فاکتورهای دیگری نظیر قانونگذاری و مسائل دیگر است.
توکنهای اوراق بهادار
توکنهای اوراق بهادار (Security Tokens) همانند استیبل کوینها هستند. در مسئله قراردادهای هوشمند، هر دو میتوانند عملکردی مشابه داشته باشند. اما فرق اساسی آنها، در توزیع کنندگان این توکنها است. توکنهای اوراق بهادار، ابزاری معادل اوراق بهادار در سهام هستند. معمولا این توکنها به سرمایهگذاران بخشی از سهام را برای کسب و کار یا کالایی مشخص عرضه میکنند.
این مطلب راهم مطالعه کنید: STO چیست؟ چهرهای تازه از اوراق بهادار و شیوه سرمایه گذاری
توکنهای کاربردپذیر
توکنهای کاربرپذیر (Utility Tokens) شاید رایجترین توکنهای این روزها هستند. بر خلاف دو توکن قبلی، این توکنها هیچ پشتوانهای ندارند. این توکنها بیشتر جنبه کاربرد و عملکرد درون یک قرارداد را ایفا میکنند و خارج از آن، هیچ ارزشی ندارند. برای مثال ارز درون یک بازی ویدیویی، یک سوخت برای اپلیکیشنهای غیرمتمرکز، امتیاز وفاداری و غیره، از جمله این موارد استفاده این توکنها هستند.
آیا توکنهای ERC-20 قابل استخراج هستند؟
شما میتوانید اتر (ETH) را استخراج کنید (البته فعلا تا پیش از آغاز به کار اتریوم ۲) اما توکنهای آن قابل استخراج نیستند. هنگامی که یک قرارداد هوشمند آغاز به کار میکند، توسعه دهندگان بر اساس این قرارداد توکنها را عرضه میکنند.
معمولا این رویکرد با استفاده از عرضه اولیه سکه (ICO)، عرضه اولیه معامله (IEO) یا عرضه اولیه سهام (STO) انجام میشود. ممکن است در مسئله قراردادهای هوشمند، با این نوع کلمات اختصاری برخورد کنید، اما مفهوم آنها معمولا کاملا شبیه به هم هستند. سرمایهگذاران اترهای خود را به آدرس قرارداد هوشمند ارسال میکنند و در عوض، توکنهای جدید خود را دریافت میکنند.
معایب و مزایای توکنهای ERC-20
همانطور که توکن ERC20 میتواند مزایای بالایی داشته باشد، معایب خاص خود را هم دارد. اما ابتدا نگاهی به مزایای این توکنها خواهیم داشت.
مزایای توکن ERC20
قابل تعویض هستند
توکنهای ERC20 قابل تعویض هستند. به این معنی که هر یک از واحدهای این توکن قابلیت معاوضه با توکنهای دیگر را دارند. اگر یک توکن از یک شرکت را در اختیار داشته باشید، میتوانید آن را با توکن دیگری از یک شرکت دیگر تعویض کنید. در این زمینه توکنهای ERC20 همانند طلا یا پول نقد عمل میکنند و میتوان آنها را با هر شخص دیگری معامله کرد.
این ویژگی برای توکنهایی که قصد دارند به نوعی یک ارز دارای ارزش باشند، بسیار ایدهآل است.
منعطفپذیر هستند
همانطور که در بخش توابع متوجه شدید، توکنهای ERC-20 بسیار منعطفپذیر هستند و میتوان آن را برای هر نوع اپلیکیشنی، برای هر نیازی و برای هر هدف خاصی، شخصیسازی کرد. یک توکن میتواند به عنوان ارز یک بازی ویدیویی مورد استفاده قرار بگیرد، یا یک امتیاز وفاداری برای یک برنامه باشد، میتواند نشانهای برای سهام یک شرکت باشد یا حتی یک سند برای یک دارایی در دنیای واقعی مانند مسکن.
محبوب هستند
توکنهای ERC20 حالا به جایگاهی رسیدهاند که در صنعت ارزهای دیجیتال کاملا مورد قبول واقع شدهاند. تعداد زیادی از صرافیها، کیف پولها و قراردادهای هوشمند وجود دارند که از این توکن پشتیبانی میکنند. همچنین توسعه دهندگان هم این نوع از توکنها را اولویت خود قرار میدهند.
معایب توکنهای ERC20
مقیاسپذیر نیستند
همانند بسیاری از شبکههای ارزهای دیجیتال، اتریوم هم با مشکل مقیاسپذیری رو به رو است. در حالت حال حاضر، این پلتفرم به درستی قادر به بزرگتر شدن نیست. به همین دلیل همانطور که تعداد مشترکین آن افزایش پیدا میکند، به دلیل عدم توانایی در مقیاسپذیری، سرعت تراکنشها کمتر و هزینه آنها بالاتر میرود. اگر شما یک توکن ERC20 عرضه کنید و شبکه به بالاترین حد خود برسد، ممکن است عملکرد این توکن دچار مشکل شود.
این مطلب راهم مطالعه کنید: معضل سه گانه مقیاس پذیری در بلاک چین
البته این مشکل منحصر به اتریوم نیست و پلتفرمی نظیر کاردانو که خود را نسل سوم شبکههای بلاک چین معرفی کرده است، قصد دارد این مشکل را از ریشه رفع کند. اما در خصوص شبکه بلاک چین اتریوم، این پلتفرم قصد دارد برای حل مشکل، به اتریوم ۲ کوچ کند. در اتریوم ۲، با ایجاد آپگریدهایی نظیر Ethereum Plasma و Ethereum Casper، مقیاسپذیری شبکه رفع خواهد شد.
در معرض ریسک کلاهبرداری قرار دارند
در حالی که این مسئله ربطی به تکنولوژی این توکن ها ندارد، اما همیشه کلاهبرداری توسط آنها یک امر آسان است. ایجاد توکنهای ERC20 کاری راحت است، به این معنی که هر شخصی میتواند با هر هدفی آنها را تولید کند. بنابراین بسیار مهم است که پیش از سرمایهگذاری، ابتدا در مورد توسعه دهنده و اهداف توکن مورد نظر خود به خوبی تحقیق کنید.
تفاوت توکن ERC20 با سایر توکنها
درست است که توکن ERC-20 اولین و البته محبوبترین توکن اتریوم تا امروز بوده است، اما به این معنی نیست که تنها توکن حال حاضر صنعت ارزهای دیجیتال محسوب میشود. در طول سالها توکنهای زیادی وارد میدان شدهاند و هدفشان بهبود توکن ERC20 یا رقابت با آن بوده است.
برای مثال، توکن ERC-721 برای استفاده در اپلیکیشن غیرمتمرکز و محبوب CryptoKitties مورد استفاده قرار گرفت. دیگر توکنها نظیر ERC-1155 یا توکنهای ERC-223 و ERC-621 همگی سعی در بهبود عملکرد توکنهای قبلی خود داشتند.
جمعبندی
در سالهای اخیر، استاندارد ERC-20 توانسته حرف اول را در زمینه داراییهای ارزهای دیجیتال بزند و پس از مطالعه این مطلب، درک این مسئله چندان سخت نیست. هر شخصی بنا به خواسته خود میتواند یک قرارداد هوشمند با عملکردی متفاوت را ایجاد کند. البته وجود برخی از محدودیتها مانند مقیاسپذیری و ویژگیهای بهتر، میتواند عملکرد این توکنها را زیر سوال ببرد، اما باید دید پس از انقلاب اتریوم ۲، چه اتفاقی برای توکنهای ERC 20 رخ خواهد داد.
نظر شما در خصوص این توکنها چیست؟ دیدگاه خود را با کوین نیک به اشتراک بگذارید.
منبع: Binance – Ivestopedia