نشانه های ERC-20 دارایی های مبتنی بر blockchain هستند که در شبکه Ethereum صادر می شوند که دارای ارزش هستند و می توانند ارسال و دریافت شوند. این نشانه ها قارچ هستند ، به این معنی که می توان آنها را با نشانه دیگری از همان نوع رد و بدل کرد زیرا خاصیت یکسان دارند و یک مقدار برابر وجود دارد. به عنوان مثال ، نشانه ERC-20 آلیس دقیقاً مشابه نشانه ERC-20 باب است. آنها می توانند نشانه خود را بدون عواقب مبادله کنند.
نمونه هایی از دارایی های قارچ ، ارز ، سهام یک شرکت ، اوراق قرضه ، طلا و سایر فلزات گرانبها است.
قرارداد هوشمند ERC-20 استاندارد مناسبی برای سازماندهی یک جمعیت است و به شرکت ها اجازه می دهد بودجه خود را برای راه اندازی پروژه خود جمع کنند.
ویژگی های قرارداد هوشمند ERC-20
از یک قرارداد هوشمند ERC-20 برای ایجاد نشانه های قارچ و آوردن آنها به blockchain استفاده می شود. این فرآیند مینینگ نامیده می شود. همچنین در هنگام مبادله نشانه های خود ، کل عرضه و همچنین تعادل کاربران را پیگیری می کند.
قرارداد هوشمند ERC-20 در پلت فرم SettleMint ویژگی های زیر را دارد:
- نام سفارشی ، نماد و عرضه اولیه که توسط کاربر قابل انتخاب است.
- قابلیت های مینتینگ که به سرپرست سوی معطر Smart Mint (یعنی ایجاد) نشانه های جدید اجازه می دهد.
- قابلیت های مکث که اجازه می دهد مدیر در صورت اضطراری قرارداد را مکث کند.
- قابلیت های سوزنی که به کاربران اجازه می دهد نشانه خود را بسوزانند (یعنی نابود کنند).
به طور پیش فرض ، حسابی که قرارداد هوشمند ERC-20 را مستقر می کند ، 1،000،000 توکن دریافت می کند. شما می توانید این رفتار را با اصلاح "سازنده" در "generictoken. sol" تغییر دهید. اگر نشانه های نعناع را در سازنده ندارید ، حتما پس از استقرار مقداری را نعناع کنید.
قرارداد بطور کلی is ERC20, ERC20BURABLE, مکث, کنترل سازنده(رشته خاطره نام_, رشته خاطره سمبل_) ERC20(نام_, سمبل_) _SetUprole(Default_Admin_Role, مگس.فرستنده); _mint(مگس.فرستنده, 1000000 * 10**اعداد اعشاری()); >
استقرار یک قرارداد هوشمند ERC-20
برای تنظیم نام و نماد برای نشانه خود ، به پوشه "استقرار" و در "00_deploy_generictoken. ts" بروید ، مقادیر موجود در "args" را در عملکرد "استقرار" تغییر دهید.
در انتظار مستقر کردن("Genictoken", از جانب: مستقر, استدلال: ["Genictoken", 'GT'], ورود به سیستم: درست است، واقعی, >);
به محض اینکه از تغییراتی که ایجاد کرده اید خوشحال شدید ، فقط روی "استقرار" در "دونده کار" IDE کلیک کنید و پس از چند ثانیه ، قرارداد هوشمند ERC-20 شما باید در شبکه مورد نظر شما مستقر شود.
اسکریپت "generictoken. ts" در پوشه "تست" تمام ویژگی های استاندارد ERC-20 را به نمایش می گذارد. این به شما نشان می دهد که چگونه می توانید از قرارداد هوشمند در DAPP خود استفاده کنید.
ERC-20 با معاملات متا
پلتفرم SettleMint همچنین یک مجموعه قالب ERC-20 را با قابلیت های متا تراکنش ارائه می دهد. تراکنش های متا برای رفع نیاز به قراردادهای مبتنی بر EVM برای پذیرش تراکنش های حساب های تحت مالکیت خارجی که آواکس برای پرداخت هزینه گاز ندارند، استفاده می شود. به طور خلاصه، اجرای چنین رابطی نیاز کاربر نهایی به پرداخت هزینه گاز را حذف می کند. با تراکنش های متا، گاز توسط یک رله کننده گاز پرداخت می شود و یک قرارداد هوشمند، که به عنوان یک فورواردر مورد اعتماد شناخته می شود، تراکنش ها را به قرارداد گیرنده، یعنی قراردادی که کاربر نهایی می خواهد در وهله اول با آن تعامل داشته باشد، ارسال می کند.
راه اندازی تراکنش های متا
هنگامی که به قرارداد هوشمند GenericTokenMeta. sol در IDE نگاه می کنیم، می توانیم تفاوت های اصلی را با ERC20 اساسی مشاهده کنیم:
... سازنده( ... نشانی حمل و نقل مورد اعتماد ) ERC20(نام_, سمبل_) ERC2771Context(trustedForwarder_) ... تابع _msgSender() درونی؛ داخلی چشم انداز نادیده گرفتن(متن نوشته, ERC2771Context) برمی گرداند (نشانی فرستنده) فرستنده = ERC2771Context._msgSender(); > تابع _msgData() درونی؛ داخلی چشم انداز نادیده گرفتن(متن نوشته, ERC2771Context) برمی گرداند (بایت ها داده های تماس) برگشت ERC2771Context._msgData(); >
بیایید این را باز کنیم:
- ما در سازنده یک آدرس اتریوم، trustedForwarder را به سازنده ERC2771Context منتقل می کنیم. این قرارداد هوشمند را قادر می سازد تا تراکنش هایی را که از طرف Trusted Forwarder انجام می شود بپذیرد.
- تابع _msgSender() نوعی نام مستعار برای msg. sender است. هنگامی که فراخوانی می شود msg. sender را برای تراکنش های معمولی برمی گرداند، اما برای تراکنش های متا کاربر نهایی را برمی گرداند (به جای انتقال دهنده یا ارسال کننده مورد اعتماد).
- تابع _msgData() دوباره یک نام مستعار برای msg. data است. برای تراکنش های متا، داده های تراکنش خام را از دیدگاه کاربر نهایی به جای رله باز می گرداند.
ارسال یک تراکنش متا به قرارداد ERC-20
ارسال یک تراکنش متا کمی با ارسال یک تراکنش معمولی متفاوت است، اما مجموعه قالب با مثالی همراه است که در آن 10 توکن بین دو کیف پول بدون آواکس منتقل می شود.
ابتدا برای ارسال تراکنش های متا با استفاده از فورواردر، باید سه شی به نام EIP712Domain، دامنه و انواع را به صورت زیر تعریف کنیم:
پایان دامنه EIP712 = [ نام: 'نام', نوع: "رشته" >, نام: "نسخه", نوع: "رشته" >, نام: 'chainId', نوع: 'uint256' >, نام: "تأیید قرارداد", نوع: 'نشانی' >, ]; پایان دامنه = نام: "MinimalForwarder", نسخه: '0. 0. 1', chainId: parseInt(در انتظار getChainId()), تایید قرارداد: آدرس حمل و نقل, >; پایان انواع = دامنه EIP712, ForwardRequest: [ نام: 'از جانب', نوع: 'نشانی' >, نام: 'به', نوع: 'نشانی' >, نام: 'ارزش', نوع: 'uint256' >, نام: 'گاز', نوع: 'uint256' >, نام: "nonce", نوع: 'uint256' >, نام: 'داده ها', نوع: "بایت" >, ], >;
نام و نسخه دامنه باید مطابق با پیامدهای Forwarder باشد (به Contract Forward. sol مراجعه کنید).
سپس ، ما باید داده های عملکرد را به شرح زیر تولید کنیم:
پایان عملکرد = نشانه.رابط.رمزعاری('انتقال', [ Wallettwoaddress, ایترز.سود.پارسوئیت('10'), ]); در این عبارت ، انتقال عملکرد ERC-20 است که می خواهیم اجرا کنیم ، WallettWoadDress حسابی است که نشانه ها را دریافت می کند و آخرین پارامتر مقدار نشانه های منتقل شده است.
آخرین مرحله قبل از ارسال معامله متا ایجاد و امضای پیام حاوی معامله اساسی به شرح زیر است:
پایان کیف پول = عدد(در انتظار خواندن('Forwarder', "GetNonce", کیف پول)); پایان رفیق = از جانب: کیف پول, to: نشانه.نشانی, ارزش: '0', گاز: '100000', غیر معذب: کیف پول, داده ها: عملکرد, >; پایان امضا شده = اخلاق.SignTypedData( کلید خصوصی: کیف پول.کلید GetPrivate(), داده ها: انواع: انواع, دامنه: دامنه, نوع اصلی: "ForwardeRequest", پیام: رفیق, >, نسخه: اخلاق.یبوست.V4, >); سرانجام ، پس از امضاء معامله ، می توانیم آن را به Forwarder ارسال کنیم:
در انتظار حمل کننده.اجرا کردن(رفیق, امضا شده, بنزین: '100000' >);
ERC-20 Crowdsale
Crowdsales به شرکت کنندگان یک شبکه اجازه می دهد تا نشانه ها را معمولاً در ازای Avax خریداری کنند. یک جمعیت می تواند اشکال مختلفی به خود بگیرد ، و الگوهای قدرتمند ما به شما امکان انعطاف پذیری را در شکل گیری و استقرار جمعیت با توجه به نیازهای شما می دهد.
مرحله 1: ایجاد عرضه توکن های فروخته شده
این کار در قالب با استفاده از قرارداد ERC-20 انجام می شود.
مرحله 2: پیکربندی و استقرار جمعیت
هنگام استقرار یک جمعیت ، مشخصات مختلفی در نظر گرفته می شود:
- نرخ جمعیت - قیمت فروش در حال فروش است
- اعتبار سنجی - چه کسی در واقع می تواند نشانه ها را خریداری کند؟
- توزیع - در واقع توزیع توکن ها چه زمانی صورت می گیرد؟
- انتشار توکن - چه کسی در واقع نشانه ها را به ذینفعان منتقل می کند؟
- مراحل جمعیت - آیا همه نشانه ها به صورت یک طرف توزیع می شوند یا قرار است در مراحل مختلف توزیع شوند؟
الگوهای Crowdsale ERC-20 که ما ارائه می دهیم به گونه ای طراحی شده است که انعطاف پذیری کامل را برای اصلاح این پارامترهای مختلف با توجه به نیازهای شما فراهم می کند.
قیمت نشانه فروش
در قالب Crowdsale ما ، می توانید قیمت نشانه را در میدان _Usdrate در قرارداد Crowdsale اصلاح کنید.
مقدار آن تعداد نشانه های یک دلار است.
اعتبار سنجی
اعتبار سنجی به اطمینان از اینكه خریداران شرایط خاصی را قبل از خرید نشانه ها برآورده كنند ، اشاره دارد.
Templateset ما قابلیت Whitelisting KYC / AML را از جعبه فراهم می کند. خریداران باید قبل از خرید نشانه ها ، لیست سفید شوند.
این با استفاده از دسترسی OpenZepellin's AccessControl اجرا می شود. آدرس با Default_Admin_Role قبل از خرید نشانه ها ، Whitelisted_Role را به خریداران اعطا می کند.
خرید نشانه ها
خریداران را می توان از دو طریق به نشانه ها اختصاص داد.
روش اول جایی است که خریداران سفیدپوست می توانند AVAX را مستقیماً به قرارداد ارسال کنند. مقدار معادل نشانه ها به صورت خودکار محاسبه می شود. این محاسبه با تبدیل اول Avax به USD leveranging juminlink oracle انجام می شود. سپس ، USD با استفاده از _usdrate تنظیم شده در جمعیت ، به مقدار معادل توکن تبدیل می شود.
از طرف دیگر ، مدیر Crowdsale می تواند با فراخوانی عملکرد خارجی Buytokens به طور مستقیم نشانه ها را به برخی از خریداران اختصاص دهد. این عملکرد فقط توسط آدرس هایی که به صورت پیش فرض_ادمین_رول اعطا شده است ، می توان فراخوانی کرد. در اینجا توکن ها از فرستنده معامله به آدرس ذینفع ذکر شده به عنوان یک پارامتر منتقل می شوند. دلیل ارائه چنین عملکردی ، پشتیبانی از تخصیص نشانه ها به خریداران است:
- چه کسی نمی داند چگونه Avax را به یک قرارداد ارسال کند
- پشتیبانی از پرداخت ها در اشکال دیگر به غیر از Avax. به عنوان مثال ، می توان از پرداخت های فیات پشتیبانی کرد. خریدار فیات را به مدیر Crowdsale می فرستد. مدیر Crowdsale سپس این عملکرد را برای اختصاص مقدار معادل نشانه ها به خریدار فراخوانی می کند.
توزیع
الگوهای ما وقتی می خواهید واقعاً نشانه ها را به ذینفع اعتبار دهید ، انعطاف پذیری را به شما می دهد.
این کار می تواند بلافاصله پس از خرید توکن ها یا مدت زمان مشخصی پس از خرید ، به نام دوره واگذاری انجام شود.
برای انتقال بلافاصله نشانه ها ، حین استقرار قرارداد ، زمینه _vestingenddate را در قرارداد Crowdsale 0 قرار دهید.
هنگامی که تاریخ پایان واگذاری تنظیم نشده است ، نشانه های خریداری شده بلافاصله به آدرس ذینفع منتقل می شوند.
انتقال نشانه ها پس از خرید با استفاده از دو قطعه زمان مشخصی: تنظیم _vestingdate در قرارداد به زمان بندی در پایان دوره واگذاری با استفاده از قرارداد ولینگ ولو و شروع زمینه _vestingvault در قرارداد جمعیتی که آدرس آن است
ذینفع در این مورد قرارداد VestingVault است. تمام نشانه های خریداری شده توسط خریداران در قرارداد VestingVault ذخیره می شوند.
نکته ای که در اینجا باید به آن توجه داشت این است که برای ذخیره توکن ها در قرارداد VestingVault، فرستنده تراکنش باید VAULT_CONTROLLER_ROLE از VestingVault را فعال داشته باشد. این را می توان در مراحل استقرار که در زیر توضیح داده شده است مشاهده کرد.
خریداران با فراخوانی روش انتشار در VestingVault قرارداد فروش جمعی، توکن هایی را که خریداری کرده اند پس از پایان دوره واگذاری پس می گیرند.
انتشار نشانه
انتشار توکن به معامله واقعی انتقال توکن ها به ذینفع اشاره دارد. در مجموعه قالب ما، توکن ها از خود قرارداد فروش جمعی به ذینفع منتقل می شوند.
انتقال واقعی از قرارداد به ذینفع در تابع deliverTokens در قرارداد CrowdSale اتفاق می افتد. این روش استاندارد برای انتشار توکن است.
2 الگوی دیگر برای انتشار توکن وجود دارد - می توانید اطلاعات بیشتری در مورد آنها در اینجا بخوانید: https://docs. openzeppelin. com/contracts/2. x/crowdsales#token-emission
مراحل فروش جمعی
فروش های جمعی به دو دسته کلی تقسیم می شوند. فروش های جمعی که در آن توکن ها همه در یک فروش توزیع می شوند. یا، فروش های جمعی با فازهای مختلف، که در هر مرحله از فروش جمعی، معمولاً ژتون فروخته شده قیمت متفاوتی دارد. همچنین محدودیتی برای تعداد توکن هایی که می توان در یک فاز خاص فروخت وجود دارد.
برای اجرای یک فروش جمعی که در آن فقط یک مرحله وجود دارد، باید فقط یک قرارداد CrowdSale را مستقر کنید.
برای سازماندهی یک فروش جمعی با چند فاز، باید چندین قرارداد CrowdSale را مستقر کنید. در اینجا، شما یک قرارداد CrowdSale را برای هر فاز مستقر می کنید.
اکنون که مشخصات مختلف مورد نیاز برای فروش انبوه را می دانیم، نحوه پیکربندی آنها و استقرار نمونه مجموعه قالب را به شما آموزش خواهیم داد.
ما در حال استقرار ExampleCrowdSale هستیم که می خواهد ExampleTokens را با نرخ 250 توکن به قیمت 1 دلار بفروشد. توکن ها مستقیماً به ذینفع منتقل نمی شوند، آنها به مدت 30 ماه در ExampleVestingVault قرار می گیرند.
در اینجا ما می خواهیم استقرار دهیم:
- یک توکن ERC20، توکنی که باید فروخته شود در مرحله 00_deploy_token، ExampleToken را به کار می گیریم که توکن واقعی برای فروش است.
- یک قرارداد VestingVault برای ذخیره توکن ها برای دوره استقرار در مرحله 02_deploy_vestingvault، ExampleVestingVault را برای ذخیره توکن ها برای دوره استقرار مستقر می کنیم.
- یک قرارداد CrowdSale که فروش انبوه واقعی است در مرحله 03_deploy_crowdsale ما قرارداد ExampleCrowdSale را که همان فروش واقعی است، مستقر می کنیم. ما آدرس توکنی که قرار است فروخته شود، آدرس صندوق سرمایه گذاری، همراه با سایر پارامترها مانند نرخ دلار را ارسال می کنیم.
- ExampleCrowdSale را برای ذخیره توکن ها در ExampleVestingVault فعال کنید در مرحله 04_enable_crowdsale، به ExampleCrowdSale crowdsale یک VAULT_CONTROLLER_ROLE می دهیم که به crowdsale اجازه می دهد تا توکن ها را در خزانه نگهداری کند.
- برای شروع فرآیند فروش جمعی، توکن ها را به ExampleCrowdSale منتقل کنید.
ادغام با Middleware
کار با داده های پیچیده یا بزرگ در dApp شما می تواند یک چالش باشد. در پلتفرم SettleMint ما یک راه حل میان افزاری در اختیار شما قرار می دهیم که به شما امکان می دهد این داده ها را به راحتی و کارآمد فهرست و پرس و جو کنید.
- ویژگی های قرارداد هوشمند ERC-20
- استقرار قرارداد هوشمند ERC-20
- ERC-20 با تراکنش های متا
- راه اندازی تراکنش های متا
- ارسال یک تراکنش متا به قرارداد ERC-20
- مرحله 1: ایجاد عرضه توکن های در حال فروش
- مرحله 2: پیکربندی و استقرار crowdsale
استراتژی برای تجارت گزینه های...
ما را در سایت استراتژی برای تجارت گزینه های دنبال می کنید
برچسب :
نویسنده : فریبا کامران
بازدید : 19
تاريخ : پنجشنبه
26 مرداد
1402 ساعت: 17:20