ERC-1155 چیست و کجا واقعا به درد می خورد
برای ثبت سفارش به حساب نیاز دارید. ثبت نام رایگان است.
فرض کنید یک بازی می سازید با هزار آیتم: پانصد نوع سکه درون بازی، چهارصد شمشیر معمولی و صد شمشیر یکتا. با استانداردهای قدیمی اتریوم باید برای سکه ها یک قرارداد بنویسید و برای شمشیرها یکی دیگر، و اگر بخواهید کاربر ده آیتم را با هم به دوستش بدهد، ده تراکنش جدا بفرستد.
ERC-1155 دقیقا برای این مشکل ساخته شد. حالا ببینیم واقعا چه چیزی حل می کند و کجا هنوز حل نکرده.
ERC-1155 استانداردی روی اتریوم است که اجازه می دهد یک قرارداد هوشمند واحد، چند نوع توکن مختلف را با هم مدیریت کند. هر نوع توکن یک شناسه عددی دارد و قرارداد برای هر شناسه، موجودی هر آدرس را نگه می دارد.
مستند رسمی اتریوم این را صریح نوشته است: یک قرارداد مستقرشده می تواند هر ترکیبی از توکن های مثلی، توکن های غیرمثلی یا حالت های دیگر مثل توکن نیمه مثلی را در خود داشته باشد.
سه دسته ای که با همین یک ساختار پوشش داده می شوند:
- مثلی. هزار واحد از شناسه شماره ۱ با هزار واحد دیگر از همان شناسه فرقی ندارد. سکه درون بازی، بلیت، امتیاز.
- غیرمثلی. شناسه ای که فقط یک واحد از آن وجود دارد. همان چیزی که به آن NFT می گویند.
- نیمه مثلی. شناسه ای که تا وقتی مصرف نشده با بقیه یکسان است و بعد از مصرف یکتا می شود. بلیت کنسرت قبل و بعد از ورود، مثال کلاسیکش است.
مهم ترین قابلیت این استاندارد یک تابع است: safeBatchTransferFrom. به جای یک شناسه و یک مقدار، دو آرایه می گیرد. مثالی که خود مستندات اتریوم می زند این است: شناسه های ۳ و ۶ و ۱۳ با مقادیر ۱۰۰ و ۲۰۰ و ۵، همه در یک تراکنش.
یعنی سه دارایی متفاوت با مقادیر متفاوت، با یک بار پرداخت کارمزد شبکه. با ERC-721 همان کار سه تراکنش جدا لازم داشت و کارمزد پایه هر سه را می پرداختید.
چقدر صرفه جویی می شود؟ عدد ثابتی ندارد و هر کس درصد دقیقی به شما بدهد دارد حدس می زند. آنچه قطعی است ساختار صرفه جویی است: هزینه ثابت هر تراکنش یک بار پرداخت می شود نه چند بار، و هرچه تعداد آیتم بیشتر باشد این تفاوت بزرگ تر می شود.
در متن های فارسی زیاد نوشته می شود که در ERC-721 هر توکن به یک قرارداد جداگانه نیاز دارد. این درست نیست و بد است که تکرار شود.
یک قرارداد ERC-721 هم می تواند هزاران توکن با شناسه های مختلف داشته باشد؛ همه مجموعه های معروف NFT همین طور کار می کنند. تفاوت واقعی جای دیگری است: در ERC-721 هر شناسه دقیقا یک واحد دارد و مفهوم «موجودی» برای یک شناسه وجود ندارد، در حالی که ERC-1155 برای هر شناسه یک موجودی نگه می دارد. از همین یک تفاوت، هم توکن مثلی درمی آید هم انتقال دسته ای. تفصیل خود ERC-721 را در پرونده استاندارد ERC-721 نوشته ایم.
در ERC-721 معمولا برای هر توکن یک آدرس متادیتا ثبت می شود. ERC-1155 به جایش یک الگوی آدرس نگه می دارد که در آن، بخش مربوط به شناسه هنگام خواندن جایگزین می شود.
مزیتش روشن است: به جای ذخیره هزار رشته روی زنجیره، یک رشته ذخیره می شود. عیبش هم به همان اندازه روشن است و کمتر گفته می شود: اگر آن آدرس روی سروری معمولی میزبانی شود، هر لحظه می تواند عوض شود یا از دسترس خارج شود. مالکیت شما روی زنجیره است، ولی آن چیزی که در کیف پول می بینید ممکن است روی زنجیره نباشد.
خیلی از متن ها می نویسند با این استانداردها هنرمند در هر فروش بعدی، حق امتیاز خودکار می گیرد. این ادعا غلط است و منبعش هم خود متن استاندارد است.
حق امتیاز NFT با استاندارد جداگانه ای به نام EIP-2981 تعریف می شود و آن استاندارد در متن رسمی خودش نوشته است که پرداخت حق امتیاز باید داوطلبانه باشد؛ چون انتقال توکن بین دو کیف پول لزوما به معنای فروش نیست. همان متن اضافه می کند که این استاندارد فقط سازوکاری برای خواندن مبلغ و گیرنده حق امتیاز فراهم می کند و انتقال واقعی پول کاری است که بازار باید انجامش بدهد.
ترجمه عملی اش: قرارداد شما می گوید چقدر حق امتیاز حق شماست، و بازار انتخاب می کند که بپردازد یا نپردازد. در عمل بخش بزرگی از بازارها تصمیم گرفتند نپردازند. اگر مدل درآمدی شما روی حق امتیاز زنجیره ای بنا شده، آن مدل روی چیزی بنا شده که هیچ کس مجبور به رعایتش نیست.
منطقی است وقتی تعداد نوع دارایی زیاد است و کاربر معمولا چند تا را با هم جابه جا می کند: بازی، بلیت، امتیاز باشگاه مشتریان، مجموعه های چندلایه.
منطقی نیست وقتی یک دارایی یکتا دارید و بس. برای یک اثر هنری تکی، ERC-721 ساده تر است و پشتیبانی ابزارها و بازارها هم برایش کامل تر. انتخاب استاندارد پیچیده تر برای مسئله ساده، فقط سطح حمله را بزرگ می کند.
و یک ریسک امنیتی که کم گفته می شود: مجوز دادن در این استاندارد همه یا هیچ است. وقتی به یک بازار اجازه دسترسی می دهید، آن اجازه شامل تمام شناسه های آن قرارداد می شود، نه فقط آیتمی که می خواهید بفروشید. همین الگو یکی از رایج ترین مسیرهای از دست رفتن دارایی است و در تحلیل نقاط ضعف قراردادهای هوشمند به تفصیل آمده.
هر کدام از این کارها روی شبکه اصلی اتریوم کارمزد گس دارد و آن کارمزد را باید با اتر بپردازید. برای کسی که از ایران کار می کند، زنجیره واقعی هزینه این است: تبدیل ریال به دارایی، کارمزد سرویس، و بعد کارمزد شبکه در لحظه ای که تراکنش می فرستید.
نرخ و شرایط سفارش در صفحه خرید و فروش اتر با تسویه تومانی است. اگر می خواهید بدون درگیر کردن حساب بانکی موجودی گس تهیه کنید، تبدیل ووچر ارزی به دارایی دیجیتال مسیر دیگری است که کاربران ایرانی زیاد از آن استفاده می کنند.
گوگل روی این عبارت نه بخش «مردم همچنین می پرسند» نشان می دهد و نه جستجوهای مرتبط. بنابراین این چهار سوال از چیزی برداشته شده که عنوان های صفحه اول این نتیجه به کاربر وعده می دهند.
تفاوت اصلی ERC-1155 با ERC-721 چیست؟
در ERC-1155 هر شناسه یک موجودی دارد، در ERC-721 هر شناسه یک واحد است. از همین جا انتقال دسته ای و امکان نگهداری توکن مثلی و غیرمثلی در یک قرارداد به دست می آید. اینکه ERC-721 برای هر توکن قرارداد جدا لازم دارد، تصور غلطی است.
آیا ERC-1155 کارمزد کمتری دارد؟
برای انتقال چند دارایی با هم بله، چون هزینه ثابت تراکنش یک بار پرداخت می شود. برای انتقال یک دارایی تکی تفاوت معناداری ندارد و گاهی به دلیل پیچیدگی بیشتر قرارداد، اندکی گران تر هم می شود.
توکن نیمه مثلی یعنی چه؟
توکنی که تا قبل از استفاده با بقیه هم نوعش قابل تعویض است و بعد از استفاده یکتا می شود. مثال ساده اش بلیت است: قبل از ورود، هزار بلیت یکسانند؛ بعد از ورود، هر کدام مال یک نفر مشخص و غیرقابل تعویض است.
برای ساخت NFT کدام استاندارد بهتر است؟
اگر مجموعه شما فقط دارایی یکتا دارد، ERC-721 انتخاب ساده تر و امن تری است. اگر آیتم های تکراری و یکتا با هم دارید و کاربر آنها را دسته ای جابه جا می کند، ERC-1155 برای همین ساخته شده. بهتر بودن اینجا به مورد استفاده برمی گردد، نه به تازه تر بودن استاندارد.
ERC-1155 یک بهینه سازی مهندسی است، نه یک انقلاب. مسئله ای که حل کرده واقعی است: قرارداد کمتر، تراکنش کمتر، کارمزد کمتر برای کسی که با انبوه آیتم سر و کار دارد.
ولی دو چیزی که به اسمش فروخته می شود را حل نکرده: حق امتیاز خودکار وجود ندارد و متادیتا هنوز می تواند خارج از زنجیره باشد. اگر با این دو محدودیت کنار می آیید، انتخاب درستی است. جایگاه این استاندارد در کل تصویر شبکه را در نقشه لایه های اکوسیستم اتریوم دنبال کنید.
منابع اولیه: مستندات ERC-1155 در سایت رسمی اتریوم و متن رسمی استاندارد حق امتیاز EIP-2981.