مفهمو اولیه توکن ERC20
توکن ERC20
در نخستین روزهای پیدایش ارزهای دیجیتال، شخصی که قصد ایجاد یک پروژه جدید مبتنی بر بلاک چین را داشت، مجبور بود برای جذب سرمایهی اولیه و ایجاد یک ار دیجیتال برای خود، بلاک چین جدیدی را خلق کند. این کار درست مانند این بود که آن فرد دوباره از نو لامپ را اختراع کند. اما اکنون با استفاده از اتریوم و استاندارد ERC-20 آن هر کسی میتواند بدون ساخت بلاک چین برای خود توکن ایجاد کند. در این مقاله به بررسی مفهوم توکن و استاندارد ERC20 میپردازیم.
توکن و استاندارد ERC20 چیست ؟
اگر به دنبال نوشتن قرارداد هوشمند در بستر بلاک چین اتریوم هستید، حتما واژه ERC20 به گوشتان خورده است. در این مقاله میخواهیم توضیح دهیم که این استاندارد چیست و استفاده از آن در نوشتن قرارداد هوشمند چه مزایا و معایبی دارد.

به زبان ساده، ERC20 مجموعهای از قواعد و مقرراتی است که به شما کمک میکند یک قرارداد هوشمند را به همراه توکنهایش بر بستر اتریوم بسازید. ERC کوتاهشدهی عبارت Ethereum Request for Comment است و عدد 20 شمارهای بوده که به این درخواست تخصیص میشود.این پروتکل در سال های اخیر نقش اساسی در صنعت بلاک چین و ارزهای دیجیتالی داشته است و کمک کرده تا هزاران برنامه غیر متمرکز (DApps) در یک پلتفرم به صورت استاندارد توسعه یابند.
استاندارد ERC-20 لیستی از قوانینی است که روی یک توکن باید پیاده سازی شود تا بتواند روی اکوسیستم اتریوم فعالیت داشته باشد.این سیاست بیشتر برای پروژههایی میباشد که در حال جذب سرمایه یا ICO هستند تا بلاکچین اصلی خود را راهاندازی کنند.و از این طریق با فروش توکن های ERC-20 میتوانند جذب سرمایه نمایند تا پرئژه اصلی به بهره برداری برسد.
توکن های ERC20 را میتوانید روی تمام کیف پول های اتریوم نگه داری نمایید که طبعا کیف های سخت افزاری که سرآمد همه انها لجر است مناسب ترین محل برای نگهداری این توکن ها میباشند.
توکن ERC20 چگونه کار میکند؟
زمانی که یک قرارداد هوشمند قصد ایجاد توکن مخصوص خود را در پلتفرم اتریوم را داشته باشد، توکن ERC20 وارد بازی میشود. در حقیقت ERC20 زبان مشترکی است که تمام قراردادهای هوشمند اتریوم از آن استفاده میکنند. این زبان به توکنها، امکان مبادله شدن توسط یکدیگر را میدهد.
برای اینکه توکن شما یک توکن ERC20 باشد و بتواند به راحتی با سایر قراردادهای هوشمند ارتباط بگیرد، ۶ تابع خاص باید در قرارداد هوشمند توکن شما پیاده سازی شده باشد. این توابع و ورودی و خروجی آنها عبارتند از:
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-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);
}
دو مورد آخر رویداد هستند و برای نوشتن روی لوگ بلاک چین استفاده میشوند.
- تایید (approve): این تابع، تراکنشها را بر مبنای تعداد کلی توکنها میسنجد.
- مجوز (allowance): این تابع، موجودی حساب هر بازیکن را چک کرده و در صورتی که تعداد توکنها کافی نباشد تراکنش را کنسل میکند.
با پیادهسازی این توابع، توکن های ERC20 باید بتوانند ۴ فعالیت زیر را انجام دهند:
- تعداد کل توکن های عرضه شده. (Total Supply)
- موجودی حساب کاربری. (balance of)
- انتقال توکن از یک فرد به فرد دیگر. (Transfer)
- موافقت با استفاده از توکن به عنوان دارایی پولی. (Transfer From)
به موارد فوق فیلدهای اجباری ERC20 گفته میشود.
حالا با استفاده از این فیلدها میتوانیم مشخص کنیم که:
- تعداد کل توکنها چقدر باشد.
- موجودی حساب کاربری که در ابتدا توکن برای او ارسال میشود چه مقدار باشد.
- به چه کسانی توکنها ارسال شود.
- و…
حال فیلدهای اختیاری این استاندارد را تشریح میکنیم. فیلدهای اختیاری استاندارد ERC20 شامل موارد زیر است:
- اسم توکن (Token name): نامی است که به توکن پلتفرم خود اختصاص میدهید.
- نماد یا علامت اختصاری (Symbol): نماد اختصاری مربوط به توکن است.
- تعداد اعشار (Decimal): در حقیقت شما در این فیلد، میزان تقسیمپذیری توکن خود را تعیین مینمایید. مثلا اگر مقدار این فیلد را 1 قرار دهیم، کمترین مقدار توکن در پلتفرم ما 0/1 میشود.
برای مثال فیلدهای اختیاری را به شکل زیر قرار میدهیم:
- اسم توکن: TRON
- نماد اختصاری توکن: TRX
- اعشار کمترین مقدار: 4 رقم اعشار
تفاوت توکنهای ERC20 و کوین های با بلاک چین مستقل
توکن ها ERC20 در بستر بلاک چین اتریوم، داراییهایی هستند که ارزش دارند. آنها همانند بیت کوین، لایت کوین و اتریوم ارسال و دریافت میشوند. تفاوت این توکن ها با ارزهای دیجیتالی که مانند بیت کوین بلاک چین جداگانه دارند، این است که توکن های ERC20 از آدرس های اتریوم استفاده میکنند و تراکنش های خود را روی بلاک چین اتریوم میفرستند؛ درحالی که کوینی مثل بیت کوین، بلاک چین مخصوص خودش را دارد و تراکنش های آن روی بلاک چین بیت کوین ثبت میشوند.

معایب و مزایای توکن های ERC20 در چیست ؟
مزایای توکنهای ERC20
پیش از اینکه این استاندارد به وجود بیاید، برنامه نویسها از اسامی متفاوتی برای نوشتن کد خود استفاده میکردند. برای مثال یکی از اسم تابع totalAmount برای ارائه تعداد کل توکنهای عرضه شده استفاده میکرد و دیگری از totalNumber. به دنبال آن کیف پولها و صرافیها برای ارتباط گرفتن با هر توکن مجبور بودند کد هر توکن را بخوانند و برای ارتباط با آن توکن، تغییرات لازم را در پلتفرم خود اعمال کنند.که مسلما این امر باعث میشود تیم نرم افزار و توسعه دهنده پروژه وقت و هزینه زیادی را صرف این قضیه کنند.
با داشتن یک استاندارد جهانی، هر توکن جدید قادر است به طور خودکار به یک صرافی یا کیف پول اضافه گردد.
استاندارد ERC20، فرآیند ایجاد یک توکن را بسیار آسان کرده است به همین علت بود که اتریوم محبوبترین پلتفرم ICOها در سال 2017 شناخته شد.
بنابراین استفاده از یک استاندارد مشخص مزایای زیر را دارد:
- یکریختی توکنها تبعیت از یک اصول واحد.
- سادگی اضافه شدن در اکسچنج ها برای ترید کردن.
- سادگی برای ارتباط با سایر قراردادهای هوشمند
- سادگی برای تعامل و پذیرفته شدن توسط کیف پول های مختلف.
معایب ERC20
مسائلی وجود دارد که استاندارد ERC20 به آنها نپرداخته است. در این استاندارد گیرنده از دریافت توکن مطلع نمیشود و این امر میتواند منجر به از دست رفتن سرمایه کاربر شود. برای مثال اگر شما توکنهای خود را به آدرس قرارداد هوشمند یک توکن ERC20 دیگر ارسال کنید، توکن های شما در آن آدرس گیر میافتد؛ درحالی که چنین تراکنش هایی باید برگشت بخورند. تا آخر سال ۲۰۱۷ حدودا ۳ میلیون دلار به این دلیل از دست رفته است.
برای حل این مشکل جامعه اتریوم اکنون استاندارد جدیدی به نام ERC-223 معرفی کرده است. این استاندارد اجازه نمیدهد که توکن به آدرسی که از دریافت آن توکن پشتیبانی نمیکند، ارسال شوند.

توکن ERC20