کارکرد اصلی

ساخت وبلاگ

یک رابط استاندارد برای نشانه های غیرقانونی (NFT). یعنی نشانه هایی که هر کدام یک شناسه منحصر به فرد دارند.

انگیزه

در سه سال از زمان تصویب ERC-721 توسط جامعه اتریوم ، نشانه های غیرقانونی خود را به عنوان یک فرصت جدید باورنکردنی در طیف گسترده ای از رشته ها ثابت کرده اند: کلکسیون ، هنر ، بازی ، امور مالی ، واقعیت مجازی ، املاک و مستغلات و موارد دیگربشر

این استاندارد دروس آموخته شده در این آزمایش اولیه را ایجاد می کند و با استفاده از ویژگی های منحصر به فرد از blockchain نزدیک ، امکانات را بیشتر می کند:

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

با توجه به این ویژگی ها ، این استاندارد NFT می تواند با یک تعامل کاربر انجام شود که سایر blockchains به دو یا سه نیاز دارند. قابل توجه ترین NFT_TRANSFER_CALL است که توسط آن یک کاربر اساساً می تواند یک نشانه را به یک تماس با یک قرارداد جداگانه وصل کند. سناریوی مثال:

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

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

  • ERC-721
  • EIP-1155 برای چند توکنی
  • استاندارد توکن قارچ نزدیک ، که برای اولین بار پیشگام تکنیک "انتقال و تماس" بود

توضیح در سطح مرجع

یادداشت :

  • تمام مبالغ ، مانده و کمک هزینه توسط U128 محدود است (حداکثر مقدار 2 ** 128 - 1).
  • Token Standard از JSON برای سریال سازی آرگومان ها و نتایج استفاده می کند.
  • مقادیر در آرگومان ها و نتایج به صورت رشته های Base-10، به عنوان مثال."100". این کار برای جلوگیری از محدودیت JSON در حداکثر مقدار صحیح 2**53 انجام می شود.
  • قرارداد باید تغییر در فضای ذخیره سازی را هنگام افزودن و حذف از مجموعه ها دنبال کند. این در این استاندارد توکن قابل تعویض اصلی نیست، بلکه در استاندارد ذخیره سازی گنجانده شده است.
  • برای جلوگیری از تغییر یا حذف قرارداد مستقر، نباید هیچ کلید دسترسی در حساب خود داشته باشد.

رابط NFT

// ساختار پایه ای که برای یک توکن برگردانده می شود. اگر قرارداد استفاده می شود // برنامه های افزودنی مانند مدیریت تأیید، فراداده یا موارد دیگر ویژگی های // ممکن است در این ساختار گنجانده شود. نوع رمز =   token_id: رشته,  مالک_id: رشته, >  /******************/ /* تغییر روش ها */ /******************/  // انتقال ساده. انتقال یک «token_id» از مالک فعلی به // `receiver_id`. // // الزامات // * تماس گیرنده روش باید برای اهداف امنیتی 1 یوکت Ⓝ ودیعه را ضمیمه کند // * اگر توسط شخصی غیر از مالک توکن تماس گرفته شود، قرارداد باید وحشت زده شود، // در صورت استفاده از مدیریت تایید، یکی از حساب های تایید شده // * «approval_id» برای استفاده با پسوند مدیریت تأیید است، ببینید // آن سند برای توضیح کامل. // * اگر از مدیریت تأیید استفاده می کنید، قرارداد باید حساب های تأیید شده را باطل کند // انتقال موفقیت آمیز // // استدلال ها: // * `receiver_id`: حساب معتبر NEAR که رمز را دریافت می کند // * `token_id`: نشانه انتقال // * `approval_id` (اختیاری): شناسه تایید مورد انتظار. عددی کوچکتر از // 2^53، و بنابراین به عنوان JSON قابل نمایش است. به مدیریت تایید مراجعه کنید // استاندارد برای توضیح کامل. // * `یادداشت` (اختیاری): برای موارد استفاده که ممکن است از نمایه سازی یا // ارائه اطلاعات برای انتقال تابع nft_transfer(  گیرنده_id: رشته,  token_id: رشته,  تایید_id: عدد|خالی,  یادداشت: رشته|خالی, ) >  // انتقال رمز و فراخوانی متدی در قرارداد گیرنده. یک موفق // گردش کار به یک نتیجه اجرای موفقیت آمیز به فراخوان در NFT ختم می شود // قرارداد با روش «nft_resolve_transfer». // // می توانید این را شبیه به پیوست کردن توکن های بومی NEAR به a در نظر بگیرید // فراخوانی تابع. این به شما امکان می دهد تا هر توکن غیر قابل تعویض را در یک تماس به یک متصل کنید // قرارداد گیرنده. // // الزامات: // * تماس گیرنده روش باید برای امنیت 1 یوکت Ⓝ ودیعه را ضمیمه کند // اهداف // * اگر توسط شخصی غیر از مالک توکن تماس گرفته شود، قرارداد باید وحشت زده شود، // در صورت استفاده از مدیریت تایید، یکی از حساب های تایید شده // * قرارداد دریافت کننده باید "nft_on_transfer" را مطابق با اجرا کند // استاندارد. اگر اینطور نیست، قرارداد FT «nft_resolve_transfer» باید انجام شود // با شکست قرارداد متقابل حاصل تماس بگیرید و انتقال را به عقب برگردانید. // * قرارداد باید رفتاری را که در «nft_resolve_transfer» توضیح داده شده است، اجرا کند // * «approval_id» برای استفاده با پسوند مدیریت تأیید است، ببینید // آن سند برای توضیح کامل. // * اگر از مدیریت تأیید استفاده می کنید، قرارداد باید حساب های تأیید شده را باطل کند // انتقال موفقیت آمیز // // استدلال ها: // * `receiver_id`: حساب معتبر NEAR که رمز را دریافت می کند. // * `token_id`: رمزی برای ارسال. // * `approval_id` (اختیاری): شناسه تایید مورد انتظار. عددی کوچکتر از // 2^53، و بنابراین به عنوان JSON قابل نمایش است. به مدیریت تایید مراجعه کنید // استاندارد برای توضیح کامل. // * `یادداشت` (اختیاری): برای موارد استفاده که ممکن است از نمایه سازی یا // ارائه اطلاعات برای انتقال. // * `msg`: اطلاعات مورد نیاز قرارداد دریافت کننده را مشخص می کند // به منظور انجام صحیح انتقال. می تواند هر دو تابع را نشان دهد // فراخوانی و پارامترهایی که باید به آن تابع منتقل شوند. تابع nft_transfer_call(  گیرنده_id: رشته,  token_id: رشته,  پیام: رشته,  تایید_id: عدد|خالی,  یادداشت: رشته|خالی, ): وعده >   /****************/ /* مشاهده روش ها */ /****************/  // توکن را با «token_id» یا «null» در صورت عدم وجود چنین نشانه ای برمی گرداند. تابع nft_token(token_id: رشته): رمز|خالی > 

رفتار زیر لازم است، اما نویسندگان قرارداد ممکن است نام این تابع را غیر از nft_resolve_transfer معمولی که در اینجا استفاده می شود، بگذارند.

// زنجیره «nft_transfer_call» از تماس های متقابل را نهایی کنید. // // فرآیند «nft_transfer_call»: // // 1. فرستنده «nft_transfer_call» را در قرارداد NFT فرا می خواند // 2. قرارداد NFT توکن را از فرستنده به گیرنده منتقل می کند // 3. قرارداد NFT «nft_on_transfer» را در قرارداد گیرنده فراخوانی می کند // 4+.[قرارداد گیرنده ممکن است تماس های متقابل دیگری برقرار کند] // N. قرارداد NFT زنجیره وعده را با "nft_resolve_transfer" حل می کند و ممکن است // انتقال رمز به فرستنده // // الزامات: // * قرارداد باید تماس با این تابع توسط هر حسابی به جز خود را ممنوع کند // * اگر زنجیره وعده شکست خورد، قرارداد باید انتقال توکن را برگرداند // * اگر زنجیره وعده با «true» حل شود، قرارداد باید به توکن برگردد // "owner_id". // // استدلال ها: // * "previous_owner_id": مالک اصلی NFT. // * "receiver_id": آرگومان "receiver_id" داده شده به "nft_transfer_call" // * "token_id": آرگومان "token_id" داده شده به "nft_transfer_call" // * "acproved_account_ids" (اختیاری): در صورت استفاده از مدیریت تایید، قرارداد باید ارائه شود // ضبط حساب های تأیید شده اصلی در این استدلال ، و این موارد را بازیابی کنید // حساب های تأیید شده و شناسه های تأیید آنها در صورت بازگشت. // // اگر توکن با موفقیت به "reciver_id" منتقل شود ، درست باز می گردد. تابع nft_resolve_transfer(  prior_owner_id: رشته,  گیرنده_id: رشته,  token_id: رشته,  تأیید شده_ ACCOUNT_IDS: خالی|رکوردرشته, عدد>, ): بولی > 

رابط گیرنده

قراردادهایی که می خواهند از nft_transfer_call استفاده کنند باید موارد زیر را اجرا کنند:

// بعد از دریافت یک نشانه غیر قابل استفاده ، برخی از اقدامات را انجام دهید // // الزامات: // * قرارداد باید تماس های این عملکرد را به مجموعه ای از NFT سفید شده محدود کند // قراردادها // // استدلال ها: // * `sender_id`: فرستنده` nft_transfer_call` // * `قبلی_OWNER_ID`: حسابی که قبل از آن صاحب NFT بود // به این قرارداد منتقل شده است ، که در صورت استفاده می تواند با `sender_id` متفاوت باشد // گسترش مدیریت تأیید // * "token_id": آرگومان "token_id" داده شده به "nft_transfer_call" // * `msg`: اطلاعات لازم برای این قرارداد برای دانستن نحوه پردازش // درخواست. این ممکن است شامل نام روش و/یا استدلال باشد. // // اگر توکن باید به "sender_id" برگردانده شود ، درست برمی گردد تابع nft_on_transfer(  شناسه فرستنده: رشته,  prior_owner_id: رشته,  token_id: رشته,  پیام: رشته, ): وعدهبولی>; 

اره

  • 2022-11-21: پارامتر APPROVEL_ID را به عنوان اختیاری در توضیحات عملکرد نیز اختیاری کنید.
  • 2022-02-03: نام فیلد ساختار توکن به روز شده. شناسه به token_id تغییر یافت. این مطابق با اجرای فعلی اسناد استاندارد و Rust SDK است.
  • 2021-12-20: آرگومان به روز شده nft_resolve_transfer تأیید شده_Account_ids به عنوان نوع null | ضبط به جای null | رشته []. این به قراردادها راهی برای بازگرداندن حساب های تأیید شده اصلی و شناسه های تأیید آنها می دهد. اطلاعات بیشتر را می توان در این بحث یافت.
  • 2021-07-16: به روز شده NFT_TRANSFER_CALL ARGRAPOVAL_ID به شماره نوع | تهی به جای رشته | تهی. همانطور که گفته شد ، انتظار نمی رود که شناسه های تصویب از حد JSON 2^53 فراتر رود.
فارکس را از کجا شروع کنیم...
ما را در سایت فارکس را از کجا شروع کنیم دنبال می کنید

برچسب : نویسنده : لیما اصغرپورسازونی بازدید : 42 تاريخ : دوشنبه 2 مرداد 1402 ساعت: 17:13