آشنایی با ویژگی و کاربرد استانداردهای اتریوم

آنچه می‌خوانید...

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

استاندارد ERC به چه معنا است؟

ERC اصطلاحی شناخته شده در جامعه اتریوم به شمار می رود. ERC برگرفته از عبارت “Ethereum Request for Comments” و شامل دستورالعمل و الگوریتم ساخت توکن در شبکه اتریوم است. توسعه دهندگان جامعه اتریوم، ERC را در قالب یک یادداشت و توصیف روش ها، رفتارها، تحقیقات و نوآوری های قابل اجرا روی اکوسیستم اتریوم ارائه می دهند. هدف از ارائه استاندارد ERC، بررسی نظیر به نظیر یا انتقال مفاهیم و اطلاعات جدید است. این طرح پیشنهادی یا پروپزال پس از تائید توسط توسعه دهندگان اصلی به یک استاندارد تبدیل می شود. به طور دقیق تر، روند آماده شدن استانداردهای اتریوم به این شکل است که ابتدا بهبود دهنده، یک “پروپزال بهبود” یا EIP ارائه می دهد. این طرح باید شامل ویژگی های پروتکل و استانداردهای قرارداد باشد. هر زمان این پروپزال پذیرفته و نهایی شود به یک استاندارد تبدیل خواهد شد. استانداردهای ERC اتریوم، ابتدا به صورت طرح پیشنهادی هستند و در صورت پذیرفته شدن به صورت ERC منتشر می شوند.

در شبکه اتریوم، با مجموعه ای از استانداردها یا پروپزال ها مواجه هستیم (مثلا برای توکن ها). درواقع، این قوانین، مجموعه ساده ای از عملکردها هستند که قراردادهای هوشمند باید آنها را اجرا کنند. در عوض، قراردادهای اجرا کننده استانداردها را می توان از طریق یک رابط استفاده کرد. بهترین نمونه استانداردها، استاندارد ERC-20 است. تمام قراردادهایی که این استاندارد را اجرا می کنند، می توانند بدون هیچ گونه کار فنی اضافی دیگری در صرافی های ارزهای دیجیتال فهرست شوند.

مطلب مفید: ERC20: استانداردی برای صدور توکن در شبکه اتریوم

استاندارد ERC-20 اتریوم

این استاندارد اتریوم رایج ترین و شناخته شده ترین استاندارد در جامعه کریپتو و بازار ارزهای دیجیتال است. اگر نگوییم همه توکن ها، شاید گزاف نباشد اگر بگوییم 99 درصد توکن های صادر شده بر بستر اتریوم، از این استاندارد اتریوم استفاده می کنند. در واقع، استاندارد ERC-20 یک مجموعه ساده از توابع است که کد توکن باید دارای این توابع باشد.

مهمترین مزیت استاندارد ERC-20 این است که هر برنامه کاربردی یا هر قرارداد هوشمندی می تواند به شیوه ای استاندارد و بدون نیاز به دانستن سایر جزئیات توکن، با توکن مورد نظر تعامل داشته باشد.بنابراین، برای فراهم آوردن صدور عرضه اولیه هر توکن، راهی مناسب و روشی استاندارد برای تعامل با همه آنها وجود دارد، گویی همه آنها یکسان هستند. به طور مثال؛ توسعه دهندگان کیف پول های کریپتویی می توانند از توسعه سفارشی و ادغام برای افزودن توکن های جدید اجتناب کنند. تنها چیزی که لازم است بدانند، آدرس اتریومی است که استاندارد را اجرا و پیاده سازی می کند.

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

مطلب مفید: استاندارد BEP2 و BEP20 چیست؟ بررسی تفاوت BEP2 و BEP20 با ERC20

آناتومی استاندارد ERC-20

در اینجا یک رابط اصلی به توصیف تابع و رویداد امضای قرارداد ERC-20 می پردازد که با توضیح هر یک از توابع دنبال می شود:

معرفی استانداردهای اتریوم
استاندارد ERC20 اتریوم
  • عملکرد موجودی کل (TotalSupply)

تابع عمومی موجودی کل برای همه افراد قابل دسترس است و تعداد توکن های موجود در چرخه را نشان می دهد. از آنجا که این تابع عمومی با view modifier برچسب گذاری شده است، استفاده از این تابع، نیاز به گس اتریوم ندارد. بنابراین، می توان به صورت رایگان از مجموع توکن های عرضه شده برای هر توکنِ مبتنی بر ERC-20 مطلع شد. پلتفرم Zepplin با به روز رسانی ارزش متغیر داخلی عرضه کل، این منطق را اجرا و پیاده سازی می کند. این تابع به صورت زیر قابل دسترس خواهد بود:

استانداردهای ERC20 اتریوم
تابع موجودی کل استاندارد ERC20

 

  • عملکرد موجودی حساب (BalanceOf)

این تابع یکی دیگر از تابع های عمومی است که برای همه در دسترس و بدون گس می باشد. تابع BalanceOf، آدرس های اتریوم را می گیرد و تعداد توکن های اختصاص داده شده به این آدرس ها را برمی گرداند. پلتفرم Zepplin یک نقشه داخلی به شرح زیر ارائه می دهد:

آشنایی با استانداردهای اتریوم
تابع موجودی حساب استاندارد ERC20
  • عملکرد انتقال (Transfer)

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

استانداردهای اتریوم
تابع عملکرد انتقال استاندارد ERC20
  • عملکرد هزینه، تائید و انتقال از (Allowance،Approve، TransferFrom)

در نهایت توابع Allowance، Approve و TransferFrom قابلیت های پیشرفته ای را ارائه می کنند و از جانب کاربر، به برخی آدرس های اتریوم اجازه استفاده از توکن ها را می دهند. این آدرس اتریوم می تواند یک قرارداد هوشمند برای مدیریت توکن ها یا یک حساب دیگر باشد. منطق این تابع با پیاده سازی Zepplin به شرح زیر است:

  • تابع تائید، توسط دارنده توکن استفاده می شود تا به برخی از ارسال کننده ها اجازه دهد از جانب کاربر از ارزش مشخصی از توکن هایش استفاده کنند.
  • به همین ترتیب، از تابع هزینه می توان برای بررسی هزینه ارسال کننده برای یک مالک مشخص استفاده کرد.
  • و در نهایت ارسال کننده می تواند از تابع Transfer from برای انتقال تعداد مجاز توکن استفاده کند.

مطلب مفید: گس یا سوخت در شبکه اتریوم چیست؟

استاندارد ERC-223

این پروپزال توسط توسعه دهنده ای ارائه شده که قصد داشت مسائل مربوط به استاندارد ERC-20 را برای توکن ها حل کند.

  • مشکل توکن های گم شده در استاندارد ERC20:

در حین انتقال توکن های ERC 20، مشکل گم شدن توکن ها اتفاق می افتاد. کاربران اشتباهاً، دستورالعمل های ارسال توکن به یک کیف پول را استفاده می کردند و توکن هایشان را به قرارداد هوشمندی می فرستادند که به این منظور طراحی نشده بود. بنابراین، توکن ها در قرارداد هوشمند گیر می افتاد. اما اتفاق بدتر! طراحی این قراردادهای هوشمند به گونه ای نبود که توکن های گیر افتاده را مدیریت کند و این توکن ها برای همیشه در قراردادهای هوشمند می ماندند.

مزیت های استاندارد ERC-223

  • رفع گم شدن توکن ها در استاندارد ERC20

جلوگیری از گم شدن تصادفی توکن ها درقراردادهایی که برای کار با توکن های ارسالی طراحی شده اند. به هرحال، این انتقال تصادفی که غیرمعمول است، احتمالا در آینده با وجود سرویس نام اتریوم (ENS) غیرمعمول تر خواهد شد.

  • کاهش مصرف انرژی

برخلاف دومرحله ای بودن انتقال توکن ها در استاندارد ERC20، انتقال توکن های ERC 223 قراردادهای هوشمند، یک مرحله ای است. و این یعنی دو برابر گس کمتر و استفاده از حجم کمتری از بلاکچین.

معایب و ریسک های استاندارد ERC-223

در حال حاضر، ERC-223 یک پروپزال است نه یک استاندارد. بنابراین، هیچ یک از توکن های عرضه اولیه با این استاندارد پیاده سازی و اجرا نشده اند. ممکن است صرافی ها برای پشتیبانی از چنین توکن هایی به تغییرات نیاز داشته باشند. و شاید برخی از صرافی ها هنوز برای این نوع تغییرات آمادگی لازم را نداشته باشند.

آناتومی استاندارد ERC 223

اکنون که می دانیم ERC 223 چه مشکلاتی را حل می کند، در ادامه نگاهی به نحوه عملکرد و اجرای این استاندارد اتریوم داشته باشیم:

آشنایی با انواع استانداردهای شبکه اتریوم
استاندارد ERC223 اتریوم
  • قرارداد دریافت ERC223 (Receiving Contract)

عملکرد ERC 223 Receiving Contract باید دارای یک تابع ذخیره سازی توکن (tokenFallback) باشد که رابط ساده آن به شرح زیر است:

استانداردهای اتریوم
قرارداد دریافت استاندارد ERC223
  • عملکرد انتقال (Transfer):

عملکرد موجودی کل(totalSupply) و موجودی حساب (BalanceOf) پیشتر در استاندارد ERC20 توضیح داده شده اند. اما تفاوت در اجرای تابع انتقال جدید رخ می دهد:

استانداردهای اتریوم
تابع انتقال ERc223

در کد بالا و در مقایسه با پارامترهای ذکر شده در ERC 20، تابع انتقال جدید یک پارامتر اضافه به نام data دریافت می کند. اسمبلی از data برای اصلاح اندازه کد در آدرس هدف استفاده می کند زیرا طول کد ادرس قرارداد، بزرگتر از صفر خواهد بود و به همین دلیل تابع ذخیره سازی توکن (tokenFallback) فراخوانی می شود. در صورتی که گیرنده، یک قرارداد باشد انتقال توکن ناموفق خواهد بود اما تابع tokenFallback یا تابع fallback برای دریافت وجه اجرا نمی شود.

  • استاندارد ERC-827

استاندارد ERC-827 با استاندارد ERC-223 رقابت می کند. می توان از این استاندارد اتریوم، برای حل همان مشکلات مطرح برای ERC-223 استفاده کرد. به علاوه، برای انتقال داده ها و توکن ها به قراردادهای هوشمند و اجرای آنها دارای انعطاف پذیری است. این موضوع یعنی می توان از استاندارد اتریوم ERC-827 برای حل مشکلات خاص به غیر از گیر کردن توکن ها در قراردادهای هوشمند استفاده کرد. به نظر می رسد اخیرا ERC-827 در رقابت از ERC-223 پیشی گرفته است زیرا در قرارداد منبع باز Zeppelin گنجانده شده در حالی که ERC-223 هنوز در توکن های آنها گنجانده نشده است.

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

آناتومی استاندارد 827

یک نمونه پیاده سازی ساده قرارداد ERC827 به شرح زیر است:

معرفی استانداردهای شبکه اتریوم
استاندارد ERC827 اتریوم

قرارداد ERC 827، به نوعی وارث ویژگی های استاندارد ERC20 است. از این رو، با سه تابع approve، transfer و transferFrom در قراداد ERC20 سازگار است.

عملکرد تائید:

استانداردهای اتریوم
تابع تائید ERC827

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

  • عملکرد انتقال:
انواع استانداردهای اتریوم
تابع انتقال استاندارد ERC827

این عملکرد، توکن ها را به یک آدرس مشخص ارسال می کند و داده های ارسال شده در همان تراکنش را فراخوان می کند. در صورتی که تابع فراخوانی با موفقیت ارسال شده باشد، مقدار صحیح (True) باز می گردد.

  • تابع TransferFrom
اشتانداردهای شبکه اتریوم
تابع ERC827

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

استاندارد ERC-721

استاندارد اتریوم ERC-721، مفهوم و ایده کاملا متفاوتی با استانداردهای ERC-223 و ERC-827 دارد. برای درک بهتر این استاندارد اتریوم باید با مفهوم اقلام قابل تعویض و غیر قابل تعویض کاملا آشنا باشید.

تفاوت میان کالای قابل تعویض و غیرقابل تعویض چیست؟

کالایی را می توان قابل تعویض دانست که مبادله این کالا با کالایی از دسته مشابه امکان پذیر باشد. این بدان معناست که ارزش دو کالای قابل تعویض در نظر همه افراد یکسان و قابل تعویض است. مثل یک اسکناس 100 روپیه ای. این اسکناس با یک اسکناس 100 روپیه ای دیگر قابل تعویض است، پس جزء اقلام قابل تعویض محسوب می شود.

غیر قابل تعویض (non fungible) از کلمه ” not interchangeable” و به معنای غیر قابل معاوضه، می آید. اجازه دهید این موضوع را با مثالی از یکی از خودروهای کمیاب (Healey Westland) روشن تر کنیم. ارزش دو خودروی متفاوت از این نوع اتومبیل کمیاب ممکن است بسته به سن و شرایط خودرو متفاوت باشد. ممکن است هر کدام بسته به مالک کلکسیون اتومبیل، تفاوت هایی داشته باشد. همین موضوع موجب می شود خودروی Healey Westland یک کالای غیر قابل تعویض محسوب شود.

استاندارد ERC721 و توکن های غیر قابل تعویض

با ذکر این مثال، می توان درک بهتری از توکن های غیرقابل تعویض داشت. نمی توان میان دو توکن مبتنی بر ERC-20 تفاوتی قائل شد اما دارندگان توکن های ERC-721 همانند مجموعه داران کالاهای کمیاب می توانند، تفاوتی را برای توکن های خود قائل شوند که منجر به تفاوت ارزش آنها خواهد شد. نمونه بارز توکن های غیر قابل تعویض، CryptoKitties است. کریپتو کیتی یک توکن بازی است که بازیکنان می توانند این توکن ها را بخرند، بفروشند، ترید کنند و این گربه های دیجیتال را پرورش دهند. هر گربه به نوعی منحصر به فرد است و همین منحصر به فرد بودن، توکن های CryptoKities را کلکسیونی می کند.

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

اهداف استاندارد ERC-721

هدف از ارائه این پروپزال، ایجاد یک توکن غیر قابل تعویض است. در استانداردهای ERC-20 و ERC-223، با عرضه توکن هایی مواجه هستیم که قابل تعویض هستند. (به عبارت دیگر یعنی؛ واحد این توکن برابر با واحد یک توکن دیگر است.) همین موضوع باعث می شود تجارت این توکن ها آسان تر شود زیرا می توان با تمام عرضه توکن ها به شکل مشابهی برخورد کرد.

به هر حال، موارد متنوعی وجود دارد که کاربر به توکن های غیر همسان نیاز دارد که داخل پلتفرم استفاده می شوند. اضافه شدن برخی پارامترها به این توکن ها، قیمت های آنها را متفاوت از هم می سازد. به طور مثال؛ می توانیم توکنی را داشته باشیم که نشان دهنده بخشی از بنگاه معاملاتی باشد و توکن های دیگر پارامترهای مختلف دیگری را به این توکن اضافه می کنند. یا مثلا در مورد پلتفرم WePower، توکن های الکتریسته را نمی توان مشابه یکدیگر دانست زیرا ممکن است هر کدام از آنها نمایانگر محدوده زمانی و مقدار متفاوتی باشند یا حتی نوع انرژی متفاوتی (خورشیدی، بادی، آبی) را نشان دهند. چنین استانداردی، ایجاد بازار برای چندین نوع توکن غیرقابل تعویض را آسان می کند.

مطلب مفید: توکن غیرمثلی یا غیر قابل معاوضه (NFT) چیست و دقیقا به چه معناست؟

آناتومی استاندارد ERC 721

اکنون که می دانیم چرا به توکن های ERC721 نیاز داریم، نگاهی به نحوه عملکرد این استاندارد اتریوم داشته باشیم. در ادامه، رابط ERC 721 را که توسط Zepplin پیاده سازی شده است، مشاهده می کنید:

استانداردهای شبکه اتریوم

    آشنایی با استاندارد ERC721 اتریوم
  • عملکرد موجودی حساب (balanceOf)

در تصویر زیر، ownedTokens، فهرست شناسه آدرس توکن هایی را که متعلق به یک آدرس خاص است، نشان می دهد. تابع balanceOf، تعداد توکن های متعلق به یک ادرس خاص را بر می گرداند.

استاندارد ERC721
تابع موجودی حساب استاندارد ERC721
  • عملکرد دارنده توکن ( OwnerOf)

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

استاندارد ERC721
تابع دارنده توکن استاندارد ERC721
  • عملکرد انتقال (Transfer):

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

استاندارد ERC721
تابع انتقال استاندارد ERC721
  • عملکرد تائید (Approve):

تابع تائید، آدرس دیگری را برای ادعای مالکیت آیدی توکن تائید می کند. این تابع به وسیله onlyOwnerOf محدود شده است و این یعنی فقط دارنده توکن می تواند به این تابع برای توکن خاص دسترسی داشته باشد. عملکرد Variable tokenApproval، نگاشتی از آیدی توکن برای تائید آدرس است. مشابه با تابع انتقال که پیشتر توضیح داده شد، takes in-to و tokenId نیز به عنوان پارامترهای ورودی هستند. این تابع بررسی می کند که مالک جدید با مالک قبلی توکن یکسان نباشد. درصورتی که یکی از آدرس های among-to یا آدرس های تائید شده قبلی، مرحله بررسی آدرس را بگذراند، عملکرد tokenApproval به روز رسانی و رویدادی به نام Approval فعال می شود.

استاندارد ERC721
تابع تائید استاندارد ERC721
  • عملکرد کسب مالکیت ( takeOwnership )

تابع approvedFor بسته به واکنش شرط approvedFor(_tokenId) == _owner، ارزش Boolean را بر می گرداند. تابع takeOwnership، درصورتی که بتواند منطقی مشابه با ادعای مالکیت را بگذراند، توکن آیدی را می گیرد و همان بررسی را روی فرستنده پیام اعمال می کند.

استاندارد ERC721 اتریوم
تابع مالکیت استاندارد ERC721

کلام آخر

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

پاسخ ترک

لطفا نظر خود را وارد کنید
لطفا نام خود را اینجا وارد کنید

spot_img

هیچ خبری رو از دست نده!

محاسبه‌گر ارزهای دیجیتال
ارز معادل
تومان

محاسبه با مبلغ تتر : تومان