01 / شرح پروژه
مسئله چه بود؟
در مبادله رمزارز، انتخاب توکن بهتنهایی کافی نیست؛ شبکه، موجودی، مقدار ورودی، آدرس دریافت و وضعیت کیف پول نیز باید هماهنگ باشند. بعد از برآورد مبادله، درخواست به سرویس ارسال میشود و پرداخت روی شبکه انجام میگیرد؛ نتیجه باید به همان درخواست مرتبط و قابل پیگیری باشد. مسئله این پروژه، تبدیل این مراحل به یک مسیر روشن از انتخاب دارایی تا ثبت و مشاهده نتیجه بود.
نقش من در پروژه
در این پروژه، مسئول توسعه فرانتاند و قراردادهای هوشمند Solidity بودم. رابط React، اتصال کیف پول، انتخاب شبکه و دارایی، دریافت برآورد مبادله و نمایش وضعیت عملیات از بخشهای کار بودند. ارتباط قرارداد با رابط از طریق ethers.js و Web3 انجام میشود و جریان مبادله، سرویسهای API را نیز در کنار عملیات روی زنجیره به هم متصل میکند. سال پروژه بر اساس نسخه سورس ارائهشده، ۱۴۰۱ است.
انتخاب دارایی و مسیر مبادله
توکن و شبکه مبدأ و مقصد
انتخاب دارایی ارسال و دریافت، همراه با شبکه هر طرف و آدرس دریافتکننده. رابط، اطلاعات توکن و شناسه شبکه را به درخواست تحلیل مبادله منتقل میکند.
موجودی و مقدار ورودی
نمایش موجودی کیف پول و امکان انتخاب حداکثر مقدار موجود؛ ورود مقدار ارسالی و مدیریت نمایش دقت اعداد در رابط، با استفاده از ابزارهای پردازش مقادیر رمزارزی.
برآورد و تازهسازی
دریافت مقدار برآوردی دریافتی از سرویس تحلیل و نمایش آن پیش از ادامه مبادله. رابط، تازهسازی دستی و کنترل زمان تازهسازی اطلاعات را نیز در اختیار کاربر قرار میدهد.
کیف پول و هماهنگی شبکه
اتصال کیف پول
اتصال MetaMask و WalletConnect، شناسایی حساب و نمایش وضعیت اتصال؛ با یک لایه مشترک برای استفاده از کیف پول در اجزای برنامه.
تغییر و افزودن شبکه
درخواست تغییر شبکه کیف پول متناسب با انتخاب کاربر و پشتیبانی از اطلاعات اتصال شبکه. تغییر حساب، تغییر شبکه و قطع اتصال نیز در منطق کیف پول مدیریت میشوند.
امضای درخواستها
گرفتن امضای پیام از کیف پول و همراهکردن آن با آدرس حساب در درخواست ایجاد مبادله، تأیید تراکنش و دریافت سابقه؛ برای اتصال درخواست سرویس به حساب کیف پول.
پرداخت روی زنجیره و تأیید مبادله
جریان پیادهشده، رابط کاربری، API و تراکنش شبکه را در مراحل جدا به هم متصل میکند.
ایجاد درخواست مبادله
ارسال توکنها، شبکهها، مقدار و اطلاعات حساب به سرویس ایجاد مبادله؛ دریافت اطلاعات پرداخت و استفاده از آن برای مرحله تراکنش.
دارایی بومی و توکن
مسیرهای جدا برای انتقال دارایی بومی شبکه و توکن وجود دارند. در مسیر دارایی بومی، ارسال مستقیم یا فراخوانی تابع پرداخت قرارداد بر اساس پاسخ سرویس انجام میشود.
قرارداد Solidity و تأیید نتیجه
نقش من شامل توسعه قراردادهای هوشمند Solidity بود. در رابط قرارداد ارائهشده، توابع پرداخت و انتقال دیده میشوند؛ پس از ارسال، هش تراکنش به سرویس تأیید منتقل و نتیجه در برنامه نمایش داده میشود.
پیگیری و تجربه کاربر
سابقه مبادلات
دریافت فهرست تراکنشهای مرتبط با کیف پول و نمایش آن در پنجره سابقه؛ برای مرور عملیات قبلی بدون خروج از مسیر مبادله.
نتیجه و کد پیگیری
نمایش پیام نتیجه و کد پیگیری مبادله، همراه با امکان کپی کد؛ برای دسترسی دوباره به شناسه عملیات و پیگیری آن.
وضعیت انتظار و خطا
نمایش حالت انتظار هنگام اجرای مراحل و پیامهایی مانند موجودی ناکافی، رد تغییر شبکه یا خطای پرداخت. کنترل دسترسی به دکمه مبادله بر اساس کاملبودن انتخابها و وجود برآورد انجام میشود.