همه شما با نشانه های ERC20 آشنا هستید زیرا احتمالاً صاحب یک زن و شوهر هستید که توسط نوعی فروش رمز توزیع می شود. اما آیا می دانید علاوه بر ERC20 استانداردهای بیشتری وجود دارد؟ Ethereum دارای سابقه طولانی در استانداردهای توسعه یافته است.

برای درک بهتر شما از معنای ERC ، مخفف کلمه “Ethereum Request for Comment” است. این پیشنهادی است که برای بحث و پیشنهاد به استاندارد واقعی ارائه شده است. این عدد (مانند 20) به شماره ای در سیستم عامل اشتراک کد اشاره دارد گیتهوب. ابتدا ، بیایید نگاهی به استاندارد ERC20 بیندازیم.

استاندارد ERC20

دقیقاً استاندارد ERC20 چیست?

ظهور توکن های ERC20 انقلابی در بازار ارزهای رمزنگاری شده ایجاد کرد و درهای بسیاری را باز کرد ارز رمزنگاری شده ICO پروژه هایی که جهان طی سال 2017 شاهد آن بوده است. کد ERC20 که در سال 2015 معرفی شده است ، لیستی خاص از قوانینی را که یک توکن مبتنی بر Ethereum برای اجرای آن مجبور است ، مشخص می کند و روند برنامه نویسی توابع توکن ها را در بلاک چین Ethereum ساده می کند. اساساً ، نشانه های ERC20 اشکال خاصی از قراردادهای هوشمند است که از بلاکچین Ethereum استفاده می کنند.

برجسته ترین نمونه های نشانه های ERC20 شامل Bancor ، EOS ، Tronix ، BNB ، VeChain و Bankex است..

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

از آوریل 2018 ، این موارد وجود دارد 66،468 قرارداد رمز ERC20, با تشکر از یکنواختی کد رمز ارائه شده توسط استاندارد ERC20 ، که لیست ارزهای مختلف را در سیستم عامل های تجاری خود برای صرافی های رمزنگاری آسان می کند. به همین ترتیب ، استاندارد ERC20 به جامعه رمزنگاری کمک کرده است تا مشکلات نقدینگی را که می تواند تعداد بسیار زیادی از نشانه های مبتنی بر Ethereum را مرتبط سازد ، غلبه کند..

توابع توکن ERC20:

کد ERC20 شش توابع خاص برای نشانه ها را مشخص می کند که عبارتند از:

1- دریافت کل توکن ها از طریق "totalSupply" تابع

2- بازیابی موجودی رمز حساب دیگری که با آن مرتبط است "_مالک" آدرس از طریق " balanceOf (آدرس _ صاحب) بازده ثابت (توازن uint256)" تابع.

3- ارسال مقدار مشخصی از توکن ها "_مقدار" به آدرس داده شده از طریق " انتقال (آدرس _to ، uint256 _value) بازده (موفقیت bool)" تابع.

4- ارسال مقدار مشخصی از توکن ها "_مقدار" از یک آدرس رمز (قرارداد) به آدرس رمز دیگر (قرارداد) از طریق "transferFrom (آدرس _ از آدرس ، آدرس _to ، uint256 _value) بازده (موفقیت bool)" تابع.

5- فعال کردن یک حساب خاص برای برداشتن رمزها از حساب شخص به طور مکرر ، در حالی که از قبل حد مجاز برای برداشتن نشانه ها از قبل تعریف شده است "_مقدار" پارامتر. این می تواند از طریق "تأیید (آدرس _spender ، uint256 _value) بازده (موفقیت bool)". حد بالای برداشت ، یعنی "_مقدار" پارامتر ، می تواند هنگام فراخوانی عملکرد دوباره رونویسی شود.

6- بازگرداندن مقدار باقیمانده توکن ها ، در مقدار از پیش تعیین شده تعیین شده در حد بالایی که مجاز به صرف آن است "_صرفی" برای برداشتن از حساب "_مالک". این را می توان از طریق "کمک هزینه (آدرس * _دارنده * ، آدرس * _پسندر *) بازده ثابت (uint256 باقیمانده)" تابع.

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

اشکال مهم:

ERC20 اولین استاندارد رمز اتریوم است. همانطور که معمولاً در مورد کد جدید اتفاق می افتد ، این کد شامل برخی اشکالات یا اشتباهات منطقی است. ERC20 دو روش انجام معامله رمز را در نظر می گیرد. اول از همه ، عملکرد انتقال به شما امکان می دهد نشانه ها را به آدرس شخصی ارسال کنید. اگر می خواهید نشانه ها را به یک قرارداد هوشمند واریز کنید ، باید از ترکیب “تأیید + انتقال از” استفاده کنید. شما باید این قرارداد را برای برداشتن نشانه های خود از طریق عملکرد تأیید مجاز کنید. سپس ، شما باید یک تعهد از یک قرارداد را فراخوانی کنید که سپرده شما را اداره کند و از طریق عملکرد transferFrom توکن های شما را پس بگیرد.

اگر توکن ها را به طور تصادفی در قراردادی با عملکرد انتقال واریز کنید ، چه می کنید؟ معامله موفقیت آمیز خواهد بود اما این معامله توسط قرارداد گیرنده شناخته نمی شود. به عنوان مثال ، اگر توکن ها را به یک قرارداد غیر متمرکز مبادله ای ارسال کنید ، در این صورت قرارداد مبادله ای توکن های شما را دریافت می کند اما اعتبار این توکن ها را به موجودی رمز ارز شما نمی دهد. علاوه بر این ، اگر قرارداد غیر متمرکز عملکرد استخراج رمز اضطراری را اجرا نکند ، پس گرفتن رمزهای خود در هر صورت غیرممکن است و در نتیجه باعث از دست دادن دائمی رمزها می شود. به دلیل این اشکال ، اکوسیستم اتریوم در حال حاضر میلیون ها دلار ضرر کرده است.

چرا ما هنوز از استاندارد ERC20 استفاده می کنیم?

کاربر Reddit تو / دکساران, سازنده استاندارد ERC223 ، یکی از اولین توسعه دهندگانی است که اشکال فوق را به اطلاع جامعه رسانده است. ما از او س askedال کردیم که چرا حتی اگر از این اشکال مهم اطلاع داشته باشید ، از ERC20 هنوز به این گستردگی استفاده می شود. او دلایل زیر را بیان کرد:

  1. به دلیل مسئولیت کیفری توسعه دهندگان توکن در قبال اعمالشان.
  2. از آنجا که بنیاد Ethereum حتی در صورت شناخته شدن حاوی اشکال ، همچنان در حال ارتقا standard استاندارد رمز ERC20 است. همان وضعیتی که قبلاً در TheDAO بود. آنها باید بگویند "اکنون این را متوقف کنید" اما آنها این کار را نخواهند کرد.
  3. زیرا دلیل اصلی توسعه رمزها ، به جای ایجاد محصول ، جذب وجوه است.
  4. زیرا استفاده از استاندارد متفاوت منجر به تأثیرات بالاتر شبکه خواهد شد. این همان چیزی نیست که ما واقعاً به آن نیاز داریم با توجه به اینکه شبکه Ethereum از قبل دارای مقیاس پذیری است.

استاندارد ERC223

ERC223 استاندارد توسط u / Dexaran پیشنهاد شد که به ایجاد این مقاله کمک کرد. ERC223 یک استاندارد رمز است که به انتقال رمزها اجازه می دهد دقیقاً مانند معاملات اتر رفتار کنند. ERC223 برای جلوگیری از از دست رفتن نشانه ها در معاملات بدون مدیریت ، از مدیریت حوادث استفاده می کند (یک معامله را یک رویداد می داند). این استاندارد بهبود یافته با ایجاد خطا در انتقال عملکرد و لغو معامله ، اشکال مهم ERC20 را برطرف می کند تا هیچ وجهی از بین نرود. به طور خلاصه ، ERC223 بر روی تمرکز دارد امنیت.

اضافات و مشکلات

ERC223 یک پارامتر داده اضافی به عملکرد انتقال اضافه می کند تا عملیات پیچیده تر از انتقال رمز فقط امکان پذیر شود.

نگرانی اصلی Dexaran این است که افراد زیادی با ارسال آنها به قرارداد با استفاده از عملکرد انتقال ، نه روش های تأیید و transferFrom که قبلاً بحث شد ، نشانه های خود را از دست بدهند. راه حل وی اصلاح روش انتقال برای بررسی اینكه آیا آدرس دریافت كننده قرارداد است (یعنی حاوی داده است) یا خیر. اگر این یک قرارداد باشد ، فرض می شود که یک عملکرد tokenFallback برای تماس گرفتن وجود دارد. ضعف اصلی این است که اگر tokenFallback وجود نداشته باشد ، عملکرد برگشت قرارداد دریافت می شود و نشانه های ارسالی هنوز از دست می روند.

استاندارد ERC777

ERC777 یک استاندارد توکن قابل انعطاف جدید است که به ERC820 (رجیستری شبه پیمانکاری شبه قرارداد) متکی است و سعی در حل مشکلات ERC20 ، از جمله عدم وجود مکانیسم های مدیریت معاملات است که منجر به از دست دادن میلیون ها دلار از اکوسیستم Ethereum می شود. به طور خلاصه ، ERC777 بر روی تمرکز دارد فرزندخواندگی با ارائه یک طیف گسترده ای از مکانیسم های رسیدگی به معاملات.

فواید

مزیت اصلی ERC777 این است که از روش جدیدی برای شناسایی رابط قرارداد استفاده می کند. این استاندارد فرض می کند که یک ثبت مرکزی قرارداد در شبکه Ethereum وجود دارد (این در ERC820 تعریف شده است). همه می توانند این رجیستری را فراخوانی کنند تا بدانند آیا آدرس خاصی (مهم نیست این آدرس قراردادی باشد یا نه) از مجموعه خاصی از توابع یعنی “رابط” پشتیبانی می کند.

یکی از مشکلات اصلی Ethereum عدم توانایی در دانستن این است که قرارداد کارکردهای مختلف را اجرا می کند. ERC820 برای حل این مشکل در نظر گرفته شده است. ERC777 از این روش استفاده می کند ، که قطعاً ایده خوبی است.

از طرف دیگر ، می توانید توکن ایجاد کنید که عملکردهای پیش فرض ERC20 را در کنار عملکردهای جدید ERC777 بدون لغو پیاده سازی کند (و به صورت اختیاری اشکال مهم ERC20 را به ارمغان بیاورد). این می تواند تأثیر شبکه خوبی برای این استاندارد رمز جدید و تصویب سریعتر را تضمین کند. همانطور که عمل نشان می دهد ، هدف اصلی توسعه دهندگان توکن جمع آوری پول است که فرض می کند آنها باید نشانه های خود را به سمت مبادلات سوق دهند. برای مبادلات آسانتر است که توکی را که عملکردهای قدیمی ERC20 را پیاده سازی می کند ، پشتیبانی کند (مهم نیست که این توابع حاوی اشکال هستند یا نه) بدون تحقیق در مورد ویژگی های جدیدتر استانداردهای جدید رمز. پشتیبانی از رمزها در استاندارد جدید برای صرافی ها آسان تر است ، توسعه دهندگان بیشتر از آن استفاده می کنند. این باعث افزایش پذیرش ERC777 می شود ، در حالی که ERC223 فاقد این ویژگی است.

چه فرقی دارد?

این استاندارد توکن مجموعه ای کاملاً جدید از توابع را تعریف می کند ، به عنوان مثال توابع “ارسال” به جای توابع “انتقال”. `autoriseOperator` به جای` تأیید`. عملکرد نشانگر `tokensReceived` به جای عملکرد handler` tokenFallback`.

چنین رویکردی می تواند تضمین کند که عملکردهای این استاندارد با توابع سایر استاندارد های رمز عبور نمی کند و آنها را لغو نمی کند ، بنابراین می توان نشانه ای ساخت که با استانداردهای ERC777 و ERC820 سازگار باشد.

سرانجام ، ERC777 استاندارد می شود نعناع و رایت عملکرد نشانه ها.

نقاط عدم موفقیت و نگرانی های امنیتی

ERC777 عملکرد `autoriseOperator` را اجرا می کند که به شما امکان می دهد از طرف شما رمزها را مدیریت کند. دگزاران برای ما توضیح داد که فکر می کند این روش منسوخ شده است و نباید از آن استفاده شود. علاوه بر این ، اجازه دادن به شخصی برای مدیریت نشانه ها از طرف شما به پهنای باند شبکه آسیب می زند و به گاز بیشتری نیاز دارد. `autoriseOperator` قبلاً یک معامله را نشان می دهد و برای انجام آن تراکنش دیگری لازم است "خروج مجاز". بنابراین ، دو معامله برای انجام انتقال لازم است که فقط با یک معامله انجام می شود.

در مرحله بعدی ، استاندارد ERC777 حاوی یک پرچم اختیاری است تا با انجام برخی بررسی ها در مورد رابط ITokenRecipient ، علائم گیر داده را بررسی کند و آدرس را در لیست سفید قرار دهد. از آنجا که این استاندارد بر امنیت شبکه ای متمرکز است که میلیونها دلار ارزش توکن را در اختیار دارد ، انتخاب اختیاری این چک ها چیز خوبی نیست.

سایر استانداردها

بسیاری از استانداردهای دیگر مانند ERC827 که برخی از مزایای ERC223 را با عملکردهای قدیمی ERC20 ترکیب می کند. ERC664 استاندارد روی مدولار بودن استاندارد توکن تمرکز می کند. این استاندارد امکان ارتقا contracts قراردادهای رمز را فراهم می کند ، اما اشکال مهم ERC20 را به ارث برده است. سایر استانداردها شامل ERC721 ، ERC677 و ERC820 هستند اما کمتر شناخته شده هستند.

سازگاری بین استانداردها

ما از دکساران پرسیدیم که کدام استاندارد با گذشته سازگار است. وی به ما گفت ما ابتدا باید درک کنیم که “سازگاری عقب مانده” به معنای “سازگاری عقب مانده” است: “سازگاری با عقب بودن ویژگی سیستم ، محصول یا فناوری است که امکان همکاری با یک سیستم قدیمی تر یا ورودی ورودی برای چنین سیستمی را فراهم می کند.”

ERC20 & ERC223: نشانه های ERC223 با ERC20 سازگار است. هر آنچه برای کار مناسب با ERC20 طراحی شده است (مانند کیف پول) می تواند با ERC223 نیز کار کند. تنها استثنا در اینجا قراردادهایی است که به الگوهای سپرده توکن تأیید + انتقال از طریق حساب اعتماد می کنند. با این وجود ، امکان اجرای تأیید + transferFrom از توابع با نشانه های ERC223 وجود دارد ، حتی اگر در حال حاضر در استاندارد وجود نداشته باشد. در مورد کیف پول ها و سرویس های شخص ثالثی که قرارداد هوشمندی ندارند ، آنها به طور خودکار از ERC223 پشتیبانی می کنند زیرا داده های تماس ورودی رمز ERC20 برای ERC223 معتبر است.

ERC20 & ERC777: جمله زیر را می توانید در بخش “سازگاری به عقب” در پیشنهاد ERC777 بیابید: “این EIP ناسازگاری عقب مانده را نشان نمی دهد و با استاندارد قدیمی تر رمز ERC-20 سازگار است.”

با این حال ، دکساران دقیقاً عکس این موضوع را به ما گفت و این مثال را به ما داد: “کیف پول ها و خدماتی مانند MetaMask ، Mist و MyEtherWallet با نشانه های ERC20 کار می کنند. ورودی که برای رمز ERC20 طراحی شده است یک تماس قراردادی است که شامل پارامترهای رمزگذاری شده و یک امضای عملکرد است. تماس های عملکردی در ماشین مجازی Ethereum توسط چهار بایت اول داده ارسال شده با یک تراکنش مشخص می شود. این امضای 4 بایت به عنوان چهار بایت اول از هش نمایش متعارف امضای تابع تعریف شده است. این به این معنی است که توابع `transfer (address، uint256)` و `send (address، uint256)` امضای مختلفی دارند. در نتیجه ورودی طراحی شده برای رمز ERC20 برای رمز ERC777 معتبر نخواهد بود. ” همانطور که ما از تعریف خود برای سازگاری به عقب استفاده می کنیم ، ERC777 با استاندارد رمز ERC20 سازگار نیست.

چه موقع از کدام استاندارد استفاده کنیم

ERC20: کاربر Reddit u / Dexaran این توصیه کنایه آمیز را به ما داد: “وقتی می خواهید سرمایه گذاران شما به دلیل اشکالات پول خود را از دست بدهند.”

ERC223: این استاندارد رمز در کنار ERC777 نیز قابل استفاده است. ERC777 از ویژگی های زیبایی برخوردار است که ERC223 فاقد آن است ، اما منطق ERC223 در مقایسه با ERC777 ساده است که می تواند تضمین کند که بسیار زیاد است کد مستعد خطا. علاوه بر این ، ERC223 به هیچ سرویس مرکزی متکی نیست که به این معنی است که رمز ERC223 شما فقط به اجرای خود شما بستگی دارد. همانطور که قبلاً اشاره کردیم ، هدف ERC223 بهبود امنیت است ، اما این باعث می شود که نشانه های ERC223 با استانداردهای ERC20 مطابقت نداشته باشد.

ERC777: این استاندارد رمز در حال حاضر قابل استفاده است. از طرف دیگر ، ERC777 برخی از نگرانی های امنیتی را دارد که در بالا ذکر شد. آنها همچنین به ثبت قرارداد مرکزی متکی هستند که یک نگرانی امنیتی نیز هست. یک رجیستری مرکزی می تواند زندگی توسعه دهنده را آسانتر کند اما دقیقاً همانطور که با Parity Multisig کار می کرد نیز به عنوان یک نقطه اصلی شکست عمل می کند. تمام Parity Multisigs به یک کتابخانه کد مرکزی متکی بودند. اتفاق افتاد که اشکالی در کتابخانه وجود داشت و از آن بهره برداری شد. در نتیجه ، همه Parity Multisigs خراب شدند. علاوه بر این ، ERC777 مجموعه جدیدی از توابع را تعریف می کند. این تلاشی است که به توسعه دهندگان توکن امکان می دهد توکن های خود را به منظور تصویب همزمان با هر دو استاندارد ERC20 و ERC777 سازگار کنند. این بدان معنی است که یک توسعه دهنده می تواند اشکال ERC20 را در ERC777 به ارث ببرد ، اما به توسعه دهنده اجازه می دهد تا از رویدادهای مربوط به معاملات بیشتر استفاده کند.

به طور کلی: همه نشانه ها یک مورد استفاده مشابه دارند – ICO. من می گویم که ERC223 و ERC777 در تلاشند تا یک مشکل ERC20 را به روش های مختلف حل کنند. ERC223 در حال حاضر در حال توسعه است اتریوم کلاسیک به جای ERC20.

این مقاله با کمک Dexaran ، توسعه دهنده ERC223 ایجاد شده است. برخی از نظرات Paul Edge در مورد استانداردهای توکن Ethereum نیز مورد استفاده قرار گرفت.