ایجاد عرضه ERC20

ساخت وبلاگ

در این راهنما یاد خواهید گرفت که چگونه یک نشانه ERC20 با مکانیسم تأمین سفارشی ایجاد کنید. ما برای این منظور دو روش ایدیوماتیک برای استفاده از قراردادهای OpenZeppelin را به نمایش می گذاریم که شما قادر خواهید بود در عمل توسعه قرارداد هوشمند خود اعمال کنید.

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

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

عرضه ثابت

بیایید بگوییم که ما می خواهیم یک نشانه با عرضه ثابت 1000 ، در ابتدا به حسابی که قرارداد را مستقر می کند اختصاص داده شود. اگر از قراردادهای V1 استفاده کرده اید ، ممکن است کد کتبی مانند موارد زیر داشته باشید:

قرارداد ERC20FixedSupply ERC20 است>

شروع با قراردادهای v2 این الگوی نه تنها دلسرد می شود بلکه مجاز نیست. متغیرها به طور کامل و توازن در حال حاضر جزئیات اجرای خصوصی ERC20 هستند و شما نمی توانید مستقیماً برای آنها بنویسید. در عوض ، یک عملکرد داخلی _mint وجود دارد که دقیقاً این کار را انجام می دهد:

قرارداد ERC20FixedSupply ERC20 است>

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

پاداش معدنچیان

عملکرد داخلی _mint بلوک اصلی ساختمان است که به ما امکان می دهد پسوند ERC20 را که یک مکانیسم تأمین را اجرا می کنند ، بنویسیم.

مکانیسمی که ما اجرا خواهیم کرد ، پاداش نشانه ای برای معدنچیان است که بلوک های اتریوم را تولید می کنند. در استحکام می توانیم به آدرس معدن بلوک فعلی در بلوک متغیر جهانی. coinbase دسترسی پیدا کنیم. ما هر زمان که کسی با عملکرد MintminerReward () روی نشانه ما تماس بگیرد ، پاداش نشانه ای را به این آدرس نعناع خواهیم داد. این مکانیسم ممکن است احمقانه به نظر برسد ، اما شما هرگز نمی دانید که این چه نوع پویایی ممکن است منجر شود ، و ارزش آن را دارد که تجزیه و تحلیل و آزمایش کنید!

قرارداد ERC20WithMinerReward ERC20 است>

همانطور که می بینیم ، _mint انجام این کار را به راحتی بسیار آسان می کند.

مدولار سازی مکانیسم

یک مکانیسم عرضه در حال حاضر در قراردادها وجود دارد: ERC20Mintable. این یک مکانیسم عمومی است که در آن مجموعه ای از حسابها نقش Minter را اختصاص داده و به آنها اجازه می دهد تا یک عملکرد نعناع ، یک نسخه خارجی _MINT را فراخوانی کنند.

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

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

پیمانکار قراردادعملکرد mintminerreward () عمومی<_token.mint(block.coinbase, 1000);>>

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

خودکار کردن پاداش

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

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

قرارداد ERC20WithAutominerReward ERC20 استعملکرد _transfer (آدرس ، آدرس به ، مقدار uint256) داخلی<_mintMinerReward(); super._transfer(from, to, value);>>

توجه داشته باشید که چگونه ما _transfer را برای اولین بار از پاداش معدنچی نادیده می گیریم و سپس با فراخوانی Super. _Transfer اجرای اصلی را اجرا می کنیم. این مرحله آخر برای حفظ معنایی اصلی نقل و انتقالات ERC20 بسیار مهم است.

پیچیدن

ما دو روش برای اجرای مکانیسم های تأمین ERC20 مشاهده کرده ایم: داخلی از طریق _MINT و خارج از طریق ERC20Mintable. امیدوارم این امر به شما در درک نحوه استفاده از OpenZeppelin و برخی از اصول طراحی در پشت آن کمک کند و می توانید آنها را در قراردادهای هوشمند خود اعمال کنید.

راهنمای تجارت فارکس...
ما را در سایت راهنمای تجارت فارکس دنبال می کنید

برچسب : نویسنده : نسیم خاکسار بازدید : <-PostHit-> تاريخ : چهارشنبه 4 مرداد 1402 ساعت: 22:24