کیف پول من
اخبار فوری
استاندارد ERC-165 | پیاده‌سازی کارت شناسایی قرارداد هوشمند

استاندارد ERC-165 چیست؟ پیاده‌سازی کارت شناسایی قراردادهای هوشمند

قراردادهای هوشمند کدهای خودکاری هستند که منطق اجرایی و قلب تپنده اکوسیستم اتریوم را تشکیل می‌دهند. اما نوشتن یک کد بدون نقص و ایمن، به‌تنهایی تضمین‌کننده موفقیت یک پروژه نیست؛ چالشی پنهان در شبکه وجود دارد که بسیاری از توسعه‌دهندگان را در مرحله استقرار نهایی غافلگیر می‌کند، فقدان یک زبان مشترک برای معرفی قابلیت‌ها. این زبان مشترک همان استاندارد ERC-165 است

what-is-erc-165

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

زبان مشترک در شبکه‌ی اتریوم: چرا قراردادهای هوشمند به ارتباط نیاز دارند؟

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

مشکل اساسی شبکه‌ی اتریوم پیش از معرفی استاندارد ERC-165

در روزهای اولیه‌ی شبکه‌ی اتریوم، یک مشکل ساختاری و بزرگ وجود داشت؛ هیچ روش استانداردی وجود نداشت که یک قرارداد هوشمند بتواند از قرارداد دیگر بپرسد: تو دقیقا چه کاری می‌توانی انجام دهی؟ یا تو از چه قوانینی پشتیبانی می‌کنی؟

برای درک بهتر، بیایید به پیامدهای این مشکل نگاهی بیندازیم:

  • نبود یک سیستم استعلام‌گیری: (روشی برای پرس‌وجو کردن اطلاعات از یک سیستم دیگر) برنامه‌ها نمی‌توانستند قبل از انجام یک تراکنش (انتقال وجه یا اجرای یک دستور در بلاک‌چین)، قابلیت‌های برنامه‌ی مقابل را بررسی و تایید کنند.
  • ریسک بالای خطای سیستمی: اگر یک برنامه سعی می‌کرد دستوری را به برنامه‌ی دیگری بفرستد که آن برنامه قادر به درک و اجرای آن نبود، کل عملیات متوقف می‌شد.
  • هدر رفتن هزینه‌ی کاربران: هر بار که چنین خطایی رخ می‌داد، کاربران مجبور بودند هزینه‌ی گس (کارمزد پرداختی به شبکه‌ی اتریوم برای انجام تراکنش‌ها) را پرداخت کنند، در حالی که دارایی آن‌ها جابه‌جا نمی‌شد و هیچ نتیجه‌ای هم نمی‌گرفتند.

مثال: وقتی دو قرارداد هوشمند زبان یکدیگر را نمی‌فهمند و تراکنش‌ها با شکست مواجه می‌شوند

برای اینکه این موضوع کاملا روشن شود، بیایید یک مثال ساده از دنیای واقعی بزنیم.

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

در دنیای دیجیتال و تعاملات قراردادهای هوشمند نیز پیش از این استاندارد، دقیقا همین اتفاق می‌افتاد:

  • قرارداد الف (مثلا یک بازار خرید و فروش اینترنتی) می‌خواهد یک دارایی را به قرارداد ب (مثلا یک برنامه‌ی کیف پول دیجیتال) ارسال کند.
  • قرارداد الف به زبان خودش دستور دریافت را صادر می‌کند.
  • قرارداد ب به دلیل اینکه از استانداردهای لازم پشتیبانی نمی‌کند، این دستور را نمی‌فهمد و نمی‌تواند دارایی را دریافت کند.
  • در نتیجه، تراکنش با شکست مواجه می‌شود، دارایی‌ها قفل یا برگشت داده می‌شوند و فقط کارمزد شبکه‌ی اتریوم از حساب کاربر کم می‌شود.

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

زبان قرارداد هوشمند | صرافی کیف پول من

استاندارد ERC-165 چیست و چه هدفی را دنبال می‌کند؟

همان‌طور که در بخش قبل متوجه شدیم، مشکل اصلی این بود که قراردادها نمی‌توانستند توانایی‌های یکدیگر را پیش از انجام تراکنش‌ها تشخیص دهند. برای حل این چالش بزرگ، توسعه‌دهندگان شبکه‌ی اتریوم استاندارد ERC-165 را معرفی کردند. عبارت ERC (Ethereum Request for Comments - طرح‌های پیشنهادی برای بهبود و استانداردسازی شبکه‌ی اتریوم) نشان‌دهنده‌ی یک قانون و توافق جمعی میان برنامه‌نویسان است.

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

مفهوم تشخیص رابط یا Interface Detection به زبان ساده برای برنامه‌نویسان

برای درک این بخش، ابتدا باید بدانیم رابط یا Interface (فهرستی از ویژگی‌ها و کارهایی که یک برنامه به دنیای بیرون ارائه می‌دهد تا بقیه بتوانند با آن ارتباط برقرار کنند) چیست. مفهوم تشخیص رابط دقیقا به معنای بررسی کردن همین فهرست است.

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

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

کارت شناسایی دیجیتال برای قراردادها: من چه کسی هستم و چه توابعی را پشتیبانی می‌کنم؟

بهترین راه برای توصیف کارکرد استاندارد ERC-165، تشبیه آن به یک کارت شناسایی دیجیتال است. وقتی شما یک قرارداد هوشمند می‌نویسید و این استاندارد را در آن قرار می‌دهید، در واقع دارید یک بخش ویژه به کد خود اضافه می‌کنید که شبیه یک تابلوی راهنما یا کارت شناسایی عمل می‌کند.

این کارت شناسایی به تمام سیستم‌های دیگر می‌گوید: سلام! من یک قرارداد هوشمند هستم و این لیست توابع (Functions - قطعه کدهای کوچکی که هر کدام یک وظیفه‌ی خاص مثل انتقال پول یا بررسی موجودی را انجام می‌دهند) من است.

با این کار، پلتفرم‌های بزرگ، کیف پول‌ها و سایر قراردادها می‌توانند با یک پرسش ساده، کارت شناسایی برنامه‌ی شما را بخوانند و متوجه شوند که دقیقا با چه نوع قراردادی روبه‌رو هستند. این شفافیت باعث می‌شود تا شبکه‌ی اتریوم با نظم و امنیت بسیار بیشتری کار کند.

تفاوت استاندارد ERC-165 با استانداردهای ایجاد توکن مانند ERC-20

یکی از سوالات رایج برای افراد تازه‌کار این است که این استاندارد چه فرقی با استانداردهای معروفی مثل ERC-20 (قالب استاندارد اتریوم برای ساخت توکن‌های یکسان و قابل تعویض مانند ارزهای دیجیتال معمولی) دارد. برای درک بهتر تفاوت این دو، به این دسته‌بندی ساده توجه کنید:

  • استانداردهای ساخت توکن: استانداردهایی مثل ERC-20 مانند یک کارخانه‌ی چاپ پول عمل می‌کنند. آن‌ها به ما می‌گویند یک توکن چگونه باید ساخته شود، چگونه منتقل شود و موجودی افراد چگونه محاسبه گردد. تمرکز آن‌ها کاملا روی خلق و مدیریت یک دارایی دیجیتال است.
  • استاندارد ارتباطی: استاندارد ERC-165 هیچ توکنی تولید نمی‌کند. بلکه مانند یک زبان مشترک یا کتابچه‌ی راهنما برای سیستم‌ها است تا بتوانند یکدیگر را بشناسند.

به زبان ساده‌تر، استاندارد ساخت توکن به شما می‌گوید ماشین را چگونه بسازید، اما استاندارد ERC-165 پلاک آن ماشین است که به پلیس راهنمایی و رانندگی و سایر بخش‌های شبکه‌ی اتریوم می‌گوید این چه نوع ماشینی است و مجوز ورود به چه جاده‌هایی را دارد.

تفاوت استاندارد ERC-165 با استانداردهای ایجاد توکن | صرافی کیف پول من

استاندارد ERC-165 چگونه کار می‌کند؟

حالا که متوجه شدیم استاندارد ERC-165 مانند یک کارت شناسایی عمل می‌کند، وقت آن است که کمی عمیق‌تر شویم و ببینیم زیر کاپوت این ماشین چه می‌گذرد. نگران نباشید، قرار نیست وارد کدهای پیچیده و خسته‌کننده شویم؛ بلکه می‌خواهیم با یک نگاه ساده و مهندسی، متوجه شویم این سیستم هوشمند چگونه در پس‌زمینه کار خود را انجام می‌دهد.

آشنایی با قلب تپنده‌ی این استاندارد: تابع Support Interface

هر استانداردی در برنامه‌نویسی از کدهای مختلفی تشکیل شده است، اما تمام قدرت و جادوی ERC-165 در یک تابع بسیار مهم به نام support Interface خلاصه می‌شود. این تابع دقیقا همان بخشی است که وظیفه‌ی پاسخگویی به سوالات دیگران را بر عهده دارد.

وقتی یک قرارداد هوشمند می‌خواهد بداند که آیا قرارداد شما از قانون خاصی پشتیبانی می‌کند یا خیر، مستقیما به سراغ این تابع می‌آید. تابع supportsInterface یک سوال ساده می‌پرسد: آیا تو از این رابط خاص پشتیبانی می‌کنی؟ و پاسخی که برمی‌گرداند یک متغیر از نوع بولین (Boolean - یک نوع داده‌ی کامپیوتری که پاسخ آن فقط می‌تواند درست یا غلط باشد) است. یعنی سیستم در نهایت فقط کلمه‌ی بله یا خیر را دریافت می‌کند که همین دو کلمه برای تایید یا لغو یک تراکنش کافی است.

شناسه رابط یا Interface ID چیست و فرمول محاسبه‌ی آن چگونه است؟

برای اینکه سیستم‌ها بتوانند با هم صحبت کنند، نمی‌توانند نام‌های طولانی و توضیحات متنی را برای یکدیگر ارسال کنند؛ زیرا این کار در شبکه‌ی بلاک‌چین بسیار هزینه‌بر و کند است. به جای این کار، از یک شناسه رابط (Interface ID) استفاده می‌شود. شناسه رابط مانند یک بارکد اختصاصی است که به صورت منحصر‌به‌فرد به یک مجموعه‌ی خاص از قوانین اختصاص داده می‌شود.

اما این بارکد چگونه ساخته می‌شود؟

برنامه‌نویسان برای ساخت این شناسه، از تمام توابع موجود در آن قرارداد یک هش (Hash - فرآیندی که اطلاعات طولانی را به یک رشته حروف و اعداد ثابت، رمزنگاری‌شده و یکتا تبدیل می‌کند) می‌گیرند. سپس این کدها را با استفاده از یک عملگر ریاضی به نام XOR (یک عملگر منطقی در کامپیوتر که چند کد مختلف را با هم ترکیب می‌کند تا یک کد نهایی و کاملا جدید بسازد) با یکدیگر ترکیب می‌کنند. نتیجه‌ی این عملیات، یک کد کوتاه ۴ بایتی است که شناسه‌ی دقیق و تکرارنشدنی آن قرارداد محسوب می‌شود.

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

بیایید ببینیم وقتی دو سیستم می‌خواهند در بستر شبکه‌ی اتریوم با هم تعامل کنند، این فرآیند پرسش و پاسخ دقیقا در چه مراحلی انجام می‌شود:

  • ارسال درخواست (در زدن): قرارداد الف تصمیم می‌گیرد توکنی را به قرارداد ب بفرستد. قبل از ارسال، قرارداد الف به در خانه‌ی قرارداد ب می‌رود و شناسه‌ی ۴ بایتی مورد نظر خود را به تابع supportsInterface در قرارداد ب می‌دهد.
  • بررسی سوابق (نگاه کردن به لیست): قرارداد ب، شناسه‌ی دریافتی را با لیست شناسه‌هایی که در دل خود ذخیره کرده است مقایسه می‌کند.
  • اعلام نتیجه (پاسخ دادن): اگر شناسه در لیست قرارداد ب وجود داشته باشد، پاسخ درست را برمی‌گرداند و اگر وجود نداشته باشد پاسخ غلط ارسال می‌شود.
  • تصمیم‌گیری نهایی (اجرا یا لغو): اگر پاسخ درست باشد، دارایی با امنیت کامل منتقل می‌شود. اگر پاسخ غلط باشد، قرارداد الف فرآیند را ریورت (Revert - لغو کامل تراکنش و بازگرداندن همه‌چیز به حالت اول برای جلوگیری از قفل شدن دارایی) می‌کند.

برای درک بهتر ارزش این استاندارد، جدول زیر به صورت واضح نشان می‌دهد که حضور یا عدم حضور این کارت شناسایی، چه تاثیری در رفتار شبکه‌ی اتریوم دارد:

ویژگی و شرایط اجرای تراکنش

در صورت عدم استفاده از ERC-165

در صورت استفاده از استاندارد ERC-165

وضعیت استعلام‌گیری

قراردادها به صورت کورکورانه دارایی ارسال می‌کنند

قراردادها پیش از ارسال، توانایی مقصد را بررسی می‌کنند

سرنوشت تراکنش‌های اشتباه

دارایی ارسال شده و برای همیشه در مقصد قفل می‌شود

تراکنش متوقف شده و دارایی در کیف پول مبدا باقی می‌ماند

هزینه‌ی خطای کاربر

کاربر هم دارایی خود را از دست می‌دهد و هم کارمزد شبکه را

کاربر فقط مقدار ناچیزی کارمزد برای بررسی اولیه می‌پردازد

امنیت یکپارچگی برنامه‌ها

ریسک بالا برای پلتفرم‌های تعاملی و صرافی‌ها

امنیت بسیار بالا و تضمین اجرای صحیح دستورات

جلوگیری از تداخل شناسه‌های رابط در برنامه‌های کاربردی پیچیده

یکی از نگرانی‌های منطقی توسعه‌دهندگان این است که آیا ممکن است دو قرارداد کاملا متفاوت، به صورت تصادفی شناسه‌ی یکسانی تولید کنند؟ آیا ممکن است بارکد آن‌ها تکراری شود؟

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

چرا دنیای توکن‌های غیرمثلی (NFT) به ERC-165 وابسته است؟

دنیای توکن‌های غیرمثلی (NFT - دارایی دیجیتال منحصربه‌فرد و غیرقابل تعویض مانند یک اثر هنری دیجیتال یا سند مالکیت) یکی از جذاب‌ترین و پرطرفدارترین بخش‌های بازار رمزارزها است. اما آیا تا به حال فکر کرده‌اید که کیف پول‌های دیجیتال و بازارهای معاملاتی چگونه به سرعت می‌فهمند یک کد برنامه‌نویسی شده، در واقع یک تصویر یا اثر هنری ارزشمند است و یک توکن معمولی نیست؟ راز این هوشمندی و سرعت عمل، دقیقا در همین کارت شناسایی یعنی استاندارد ERC-165 نهفته است. در واقع بدون این استاندارد ارتباطی، بازار پررونق توکن‌های غیرمثلی فلج می‌شد.

پیوند حیاتی ERC-165 با استانداردهای پیشرفته‌ی توکن مانند ERC-721 و ERC-1155

برای ساخت توکن‌های غیرمثلی در شبکه‌ی اتریوم، استانداردهای بسیار مهمی وجود دارند؛ از جمله استاندارد ERC-721 (قالب اصلی و پایه‌ای اتریوم برای ساخت دارایی‌های دیجیتال کاملا یکتا) و ERC-1155 (نسخه‌ی پیشرفته‌تری که اجازه می‌دهد توکن‌های یکتا و توکن‌های معمولی را همزمان در یک قرارداد مدیریت کنیم).

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

پلتفرم‌هایی مانند OpenSea چگونه از این کد برای تایید اصالت یک NFT استفاده می‌کنند؟

پلتفرم اوپن‌سی (OpenSea - بزرگ‌ترین بازار آنلاین برای خرید و فروش دارایی‌های دیجیتال و هنری) روزانه میزبان هزاران مجموعه‌ی جدید است. قطعا این پلتفرم بزرگ نمی‌تواند کدهای مربوط به هر توکن را به صورت دستی و توسط انسان‌ها بررسی کند. به همین دلیل از یک بازرس کاملا خودکار استفاده می‌کند.

نحوه‌ی کار به این شکل است:

  • استعلام سریع: وقتی یک توسعه‌دهنده قرارداد جدیدی را در شبکه ثبت می‌کند، پلتفرم اوپن‌سی از طریق مکانیزم ERC-165 مستقیما در خانه‌ی آن قرارداد را می‌زند و می‌پرسد: آیا تو واقعا قوانین ساخت یک توکن غیرمثلی را رعایت کرده‌ای؟
  • ارائه‌ی کارت شناسایی: قرارداد هوشمند با نشان دادن شناسه‌ی مخصوص خود (Interface ID) به این پلتفرم پاسخ مثبت می‌دهد.
  • تایید و نمایش: اوپن‌سی بلافاصله متوجه اصالت کد می‌شود و در کسری از ثانیه، تصاویر و اطلاعات آن اثر هنری را در سایت خود برای فروش به نمایش می‌گذارد. به همین سادگی و بدون نیاز به هیچ واسطه‌ای، کدهای ناشناس به آثار هنری قابل معامله تبدیل می‌شوند.

نقش این استاندارد در جلوگیری از قفل شدن و از دست رفتن دائمی توکن‌ها در قراردادهای اشتباه

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

اما به لطف کارت شناسایی دیجیتال، قابلیت فوق‌العاده‌ای به نام انتقال امن (Safe Transfer) برای توکن‌های غیرمثلی ایجاد شده است. این سیستم مانند یک محافظ هوشمند عمل می‌کند:

  • بررسی مقصد پیش از ارسال: قبل از اینکه دارایی از کیف پول شما خارج شود، کد انتقال امن با استفاده از استاندارد ERC-165 از قرارداد مقصد یک سوال حیاتی می‌پرسد: آیا تو ساختار لازم برای دریافت و نگهداری توکن‌های غیرمثلی را در دل خود داری؟
  • تضمین سلامت سرمایه: اگر قرارداد مقصد، قابلیت دریافت این توکن‌ها را در کارت شناسایی خود ثبت کرده باشد، دارایی منتقل می‌شود. اما اگر گیرنده این قابلیت را نداشته باشد، شبکه‌ی اتریوم تراکنش را در همان لحظه‌ی اول متوقف می‌کند.

به این ترتیب، این زبان مشترک و ارتباط هوشمندانه مانع از قفل شدن دارایی‌ها شده و سرمایه‌ی شما را از خطرات ناشی از اشتباهات سیستمی در امان نگه می‌دارد.

جلوگیری از قفل شدن و از دست رفتن دائمی توکن‌ها در قراردادهای اشتباه | صرافی کیف پول من

نحوه پیاده‌سازی و کدنویسی ERC-165

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

پیاده‌سازی استاندارد از صفر در زبان برنامه‌نویسی سالیدیتی (Solidity)

زبان برنامه‌نویسی سالیدیتی (Solidity - زبان برنامه‌نویسی اصلی شبکه‌ی اتریوم که مخصوص نوشتن قراردادهای هوشمند طراحی شده است) تمام ابزارهای لازم برای ساخت این سیستم ارتباطی را به ما می‌دهد. اگر بخواهید این استاندارد را کاملا از صفر بنویسید، باید دو قدم اصلی را در کدهای خود بردارید:

  • تعریف ساختار اصلی: ابتدا باید یک قالب کلی بسازید که به شبکه‌ی بلاک‌چین بگوید من تابعی به نام supportsInterface دارم. این تابع وظیفه دارد یک کد دریافتی را بررسی کند و با یک جواب ساده‌ی بله یا خیر پاسخ دهد.
  • ثبت شناسه‌های معتبر: در مرحله‌ی بعد، باید کدی بنویسید که لیستی از شناسه‌های مورد تایید شما را در خود نگه دارد. به این ترتیب، اگر قرارداد دیگری شناسه‌ی خاصی را درخواست کرد، قرارداد شما می‌تواند آن را با لیست خود مقایسه کند و پاسخ درست را ارائه دهد.

میانبر امن و استاندارد: نحوه استفاده از کتابخانه‌های آماده مانند OpenZeppelin

نوشتن کدها از صفر برای یادگیری و درک عمیق‌تر بسیار عالی است، اما در پروژه‌های واقعی و حساس که پای سرمایه‌ی افراد در میان است، برنامه‌نویسان حرفه‌ای معمولا از یک راهکار مطمئن‌تر استفاده می‌کنند. در اینجا پای مفهومی به نام کتابخانه (Library - مجموعه‌ای از کدهای از پیش نوشته شده، تست‌شده و آماده که کار برنامه‌نویسان را سریع‌تر و ایمن‌تر می‌کند) به میان می‌آید.

پلتفرم اوپن زپلین (OpenZeppelin - یک مجموعه‌ی بزرگ و بسیار معتبر از کدهای استاندارد برای توسعه‌دهندگان بلاک‌چین) یکی از بهترین ابزارها در این زمینه است. استفاده از این کتابخانه‌ی آماده دقیقا مثل استفاده از قطعات خانه‌سازی لگو است. به جای اینکه پلاستیک را ذوب کنید و قطعه را از اول بسازید، از قطعات استانداردی استفاده می‌کنید که قبلا بارها توسط مهندسان خبره بررسی و آزمایش شده‌اند.

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

میانبر امن و استاندارد | صرافی کیف پول من

مزایا، چالش‌ها و نکات بهینه‌سازی در استفاده از استاندارد ERC-165

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

افزایش چشمگیر امنیت شبکه و کاهش خطاهای ارتباطی میان برنامه‌های غیرمتمرکز (DApps)

یکی از بزرگترین دستاوردهای این استاندارد، ایجاد یک محیط امن و قابل پیش‌بینی است. برنامه‌های غیرمتمرکز (DApps - اپلیکیشن‌هایی که روی شبکه‌ی بلاک‌چین اجرا می‌شوند و تحت کنترل هیچ شخص یا نهاد مرکزی و خاصی نیستند) دائما در حال تعامل و تبادل اطلاعات با یکدیگر هستند.

با استفاده از این استاندارد، خطاهای ناشی از ارتباطات ناشناخته به شدت کاهش می‌یابد. مزایای این سیستم هوشمند شامل موارد زیر است:

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

بررسی تاثیر استفاده از تابع supportsInterface بر هزینه‌های گس (Gas Fee) و محدودیت 30 هزار گس

در شبکه‌ی اتریوم، هیچ کاری رایگان انجام نمی‌شود. هر پردازشی در این شبکه نیازمند پرداخت هزینه‌ی گس (Gas Fee - کارمزدی که کاربران به شبکه پرداخت می‌کنند تا کدهای آن‌ها توسط کامپیوترهای شبکه پردازش، اجرا و تایید شود) است.

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

در قوانین پایه‌ای استاندارد ERC-165 به صراحت مشخص شده است که فرآیند اجرای تابع supportsInterface برای بررسی شناسه‌ها، نباید بیشتر از 30,000 واحد گس مصرف کند. این محدودیت سخت‌گیرانه با دو هدف بسیار مهم تعیین شده است:

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

آیا پیاده‌سازی این استاندارد برای توسعه تمام قراردادهای هوشمند الزامی است؟

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

اما در چه شرایطی استفاده از آن ضروری و حیاتی است؟

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

جمع‌بندی: آینده استانداردسازی ارتباطات در توسعه بلاک‌چین

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

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

مرور نقش کلیدی ERC-165 در توسعه پایدار اکوسیستم برنامه‌های غیرمتمرکز اتریوم

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

بیایید به صورت خلاصه مرور کنیم که چرا این استاندارد برای آینده‌ی شبکه‌ی اتریوم و حوزه‌ی دیفای (DeFi - سیستم‌های مالی غیرمتمرکز که خدمات بانکی و مالی را بدون نیاز به واسطه‌ها بر بستر بلاک‌چین ارائه می‌دهند) تا این حد ارزشمند است:

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

در نهایت، می‌توان گفت که استاندارد ERC-165 تنها یک راه‌حل موقت فنی نیست؛ بلکه یک الگو و زیربنای مستحکم است که به همه‌ی ما نشان می‌دهد چگونه می‌توانیم با ایجاد شفافیت و ارتباطات هوشمندانه، آینده‌ی امن‌تر، سریع‌تر و کارآمدتری را برای دنیای رمزارزها رقم بزنیم.

منبع خبر:
واکنش شما به این خبر چیست؟ نظر خود را با ری‌اکشن ثبت کنید.
21
0

سوالات متداول

4.9/5
writer image
فائزه آذری
نویسنده

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

مشاهده پروفایل

دیدگاه‌های کاربران

تا کنون 0 کاربر در مورد استاندارد ERC-165 چیست؟ پیاده‌سازی کارت شناسایی قراردادهای هوشمند دیدگاه و تحلیل ثبت کرده اند
نظری ثبت نشده است!شما اولین باشید

افزودن دیدگاه

با ثبت‌نام در صرافی کیف پول من و ارسال تحلیل و نظر در سایت ارز دیجیتال رایگان هدیه بگیرید. نظر یا تحلیل شما حداقل باید ۱۰ کلمه باشد و تکراری نباشد.
به این مطلب چند امتیاز می‌دهید؟
انتخاب کنید

ویدئو رسانه

در بخش ویدئو رسانه، می‌توانید به آموزش‌ها، تحلیل‌ها و محتوای ویدیویی جذاب درباره ارزهای دیجیتال و خدمات ما دسترسی پیدا کنید.