دلایل 375K برای بهبود ERC20

با جنگ افزارهای مبتنی بر رمز ERC20 مانند EOS ، نشانگر توجه اصلی (BAT) و Storj ، بحث در مورد موفقیت قرارداد رابط کار دشواری است. جامعه Ethereum به وضوح از این استاندارد پشتیبانی کرده است, & هم جوامع توسعه دهنده و هم بازارهای مالی پاسخ مثبت می دهند. با این وجود ، با وجود همه موفقیت های خود ، استاندارد ERC20 منجر به یک اشکال نه چندان ناچیز شده است:

استاندارد توکن ERC20 با اجازه دادن به کاربران برای ارسال توکن های ERC20 به آدرس های توافق سازگار با ERC20 ، منجر به ضرر و زیان کاربران نهایی می شود..

هنگامی که کاربر رمز ERC20 را به یک قرارداد Ethereum ارسال می کند که نشانه های ERC20 را به رسمیت نمی شناسد ، کاربر برای همیشه دسترسی به وجوه خود را از دست می دهد. دقیقاً دقیقاً چه تعداد وجه به دلیل این مسئله قفل شده اند؟ باز هم ، مقدار ناچیز نیست:

  • 310،067 GNT در قرارداد گولم گیر کرده اند (ارزش فعلی حدود 217 هزار دلار).
  • 242 REP در قرارداد آگوور گیر کرده اند (ارزش فعلی حدود 15K $).
  • 814 DGD در قرارداد Digix DAO گیر کرده اند (ارزش فعلی حدود 125K دلار است).
  • 14،506 1ST در قرارداد FirstBlood گیر کرده اند (ارزش فعلی حدود 12K $).

این بیش از یک علامت عظیم 370 هزار دلاری ERC20 است که در این قراردادها مسدود شده است؛ از آنجا که لیست نشانه های ERC20 در حال رشد است ، به احتمال زیاد این تعداد یک دست کم گرفته شده محافظه کارانه از مقدار کل این توکن ها است که در قراردادها منجمد شده است. لیست بالا به هیچ وجه جامع نیست – این فقط چند مورد از محبوب ترین نشانه های ERC20 است.

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

اکثر این معاملات به طور ناخواسته توسط کاربران نهایی انجام می شود که با این شماره تماس می گیرند منتقل کردن تابع (در مقابل عملکرد خودکار transferFrom که قبلاً معرفی شده بود). به یاد بیاورید که ERC20 از هر دو انتقال استفاده می کند & TransferFrom – به نظر می رسد برخی از کاربران نهایی از Transfer برای ارسال مستقیم نشانه های ERC20 به قراردادهایی که انتظار ندارند استفاده می کنند, & بنابراین ، رمزهای ورودی را تشخیص نمی دهید.

سرانجام ، چند نفر از اعضای جامعه Ethereum تصمیم گرفتند تا با درخواست استاندارد جدید رمز ERC ، این مسئله را به صورت مستقیم برطرف كنند. شماره شماره این استاندارد رمز جدید در GitHub شماره شماره 223 است.

پیشنهاد ERC223

کاربر GitHub ، Dexaran ، در 5 مارس 2017 ، یک استاندارد جدید ERC (ERC223) را پیشنهاد کرد که هدف آن رفع این مشکل شکست رمز موفقیت بود. چکیده شماره پیشنهادی جدید GitHub شماره 223 به شرح زیر است:

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

پیشنهاد رمز Dexaran دو ویژگی اصلی را پیاده سازی می کند تا کاربران برنامه های غیرمتمرکز فوراً از ارسال تصادفی توکن به قراردادهای هوشمند که آماده دریافت توکن های گفته شده نیست جلوگیری کنند:

  1. تلفیق ERC20 منتقل کردن & انتقال از توابع را به یک واحد تبدیل می کند منتقل کردن عملکرد با سه پارامتر: (آدرس _to ، uint _value ، داده های بایت).
  2. دریافت کردن در صورت دریافت نشانه ، قرارداد ببندید, باید حاوی یک TokenFallBack عملکردی که دقیقاً نحوه مدیریت نوع کد ورودی را مشخص می کند.

منتقل کردن & انتقال از -> منتقل کردن

یک قسمت کلیدی از استاندارد ERC20 که به این مسئله مشترک کمک می کند این واقعیت است که کاربران نهایی این گزینه را دارند که به اشتباه از یکی از دو عملکرد مورد استفاده برای انتقال استفاده می کنند (انتقال & انتقال از).

ERC223 پیشنهاد می کند هر دو عملکرد را با یک جایگزین کنید منتقل کردن تابع.

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

تابع Transfer که اخیراً پیشنهاد شده است ، سه پارامتر را می پذیرد (که قبلاً فقط دو مورد را پذیرفته بود) ، و مهمتر از همه ، به نظر می رسد که یک تابع TokenFallback را در آدرس گیرنده فراخوانی می کند. بدون سه پارامتر تعریف شده ، عملکرد Transfer قادر به کامپایل نیست. بدون آدرس دریافت کننده حاوی یک عملکرد TokenFallback ، تراکنش عملکرد انتقال ناموفق خواهد بود & هیچ نشانه ای منتقل نمی شود.

توکن tokenFallBack ()

در توسعه Ethereum یک اصلاح کننده قرارداد وجود دارد قابل پرداخت این برای تهیه قرارداد دریافت اتر استفاده شده است – این بدان معنی است که اکنون یک قرارداد در انتظار ارز دیجیتال است. در صورت عقد قرارداد نه حاوی اصلاح کننده قابل پرداخت است ، معامله ارسال شده به سادگی لغو می شود & برگشت هیچ چیز فانتزی نیست ، این Ethereum 101 است.

یک تفکر مشابه در مورد عملکرد ERC223 tokenFallback این است که اصلاح کننده قابل پرداخت برای تهیه قرارداد برای دریافت Ether است ، زیرا توابع tokenFallback برای تهیه قرارداد برای دریافت x token.

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

تکامل ERC

با وجود پیش نویس خشن ERC223 ، یک استاندارد ERC دیگر در آستانه قرار دارد – ERC 721. ERC721 بر روی غیر قابل شستشو دارایی هایی مانند CryptoKitties ، زمین Decentraland, & شاید حتی دارایی های یک روزه املاک و مستغلات. پیشرفت ERC 721 را می توان در اینجا یافت: https://github.com/ethereum/eips/issues/721

همه اینها نشان می دهد که در حالی که جوان است ، جامعه Ethereum در مورد بهبود بستر قرارداد هوشمند خود با قرار دادن استانداردهای مناسب در مقابل موج رو به رشد توسعه دهندگان بسیار جدی است. به آرامی اما مطمئناً ، اشکالات رمز ERC کاهش می یابد – و سپس سوال می تواند آخرین مقیاس استاندارد باشد?