مینی پروژه تبادل توکن در سالیدیتی
این پروژه چالش برانگیز است.
باور کنید یا نه، شما حالا دانش مقدماتی کافی برای ساخت یک قرارداد هوشمند بسیار ساده برای تبادل توکن را دارید! مأموریت شما این است:
دو قرارداد ERC20 بسازید: یکی به نام RareCoin
و دیگری SkillsCoin
(میتوانید نام ها را به دلخواه تغییر دهید). هر کسی باید بتواند SkillsCoin
را مینت کند، اما تنها راه به دست آوردن RareCoin
این است که SkillsCoin
را به قرارداد RareCoin
ارسال کند. بنابراین باید محدودیت مینت فقط توسط مالک را از SkillsCoin
حذف کنید.
روند انجام کار:
mint()
کردنSkillsCoin
برای خودتان- از
SkillsCoin.approve(address rareCoinAddress, uint256 yourBalanceOfSkillsCoin)
استفاده کنید تاRareCoin
بتواند کوینها را از شما بگیرد. RareCoin.trade()
را فراخوانی کنید؛ این باعث میشودRareCoin
، تابعSkillsCoin.transferFrom(address you, address RareCoin, uint256 yourBalanceOfSkillsCoin)
را اجرا کند.
یادتان باشد کهRareCoin
میتواند آدرس خودش را باaddress(this)
بداند.RareCoin.balanceOf(address you)
باید مقدار کوینی را که ابتدا ازSkillsCoin
مینت کرده بودید، بازگرداند.
یادتان باشد که توکن های ERC20 (یعنی قراردادها) میتوانند مالک توکن های ERC20 دیگر باشند. بنابراین وقتی RareCoin.trade()
را فراخوانی میکنید، این تابع باید SkillsCoin.transferFrom
را صدا بزند و SkillsCoin
شما را به خودش (یعنی address(this)
) منتقل کند.
اگر آدرس SkillsCoin
را ذخیره کرده باشید، چیزی شبیه این خواهد بود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function trade(uint256 amount) public { // some code // you can pass the address of the deployed SkillsCoin contract as a parameter // to the constructor of the RareCoin contract as 'source' (bool ok, bytes memory result) = source.call( abi.encodeWithSignature( "transferFrom(address,address,uint256)", msg.sender, address(this), amount ) ); // this will fail if there is insufficient approval or balance require(ok, "call failed"); // more code } |
این قراردادها را در Remix مستقر (Deploy) کرده و تست کنید که درست کار میکنند.
اگر در Solidity تازهکار هستید، چند روز برای این پروژه کنار بگذارید. بسیاری از برنامه نویس ها در ابتدا با این موضوع که موجودی ها (balances) در قراردادهای هوشمند ذخیره میشوند نه در کیف پول ها، سردرگم میشوند؛ پس ممکن است کمی طول بکشد تا به این موضوع عادت کنید. همچنین باور کنید که از فراخوانی بین قراردادها (Cross Contract Calls) سردرگم خواهید شد.
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۴ اردیبهشت ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس