نکات کلیدی
- توابع قراردادهای هوشمند نقش مهمی در تعاملات بلاک چینی دارند، اما امکان دستکاری آنها توسط اسکمرها هم وجود دارد.
- درک عملکرد چنین توابعی برای مقابله با اسکم ضروری است.
- برخی از توابع مهمی که باید با آنها آشنا باشید، عبارتند از: SetApprovalForAll، SafeTransferFrom و SendETH.
آشنایی با توابع قراردادهای هوشمند
توابع قراردادهای هوشمند قسمتهایی از کد هستند که امکان انجام کارهایی خاص را در قراردادهای هوشمند ایجاد میکنند. این توابع، تعاملات بین والت کاربر و پلتفرم بلاک چین مورد استفاده را آغاز میکنند.
برای مثال، تأیید یک تابع خاص به قرارداد هوشمند اجازه میدهد که کار خاصی را با والت کاربر انجام دهد. این توابع ذاتاً مخرب نیستند اما امکان دستکاری آنها توسط اسکمرها وجود دارد.
تابع SetApprovalForAll و ریسکهای آن
معمولاً هنگام لیست شدن NFTها برای فروش در یک بازار تابع SetApprovalForAll مشاهده میشود. این تابع امکان انتقال NFT را از والت کاربر به والتی دیگر پس از فروش آن فراهم میکند.
اما این تابع ریسکهای خاصی به همراه دارد؛ چون امکان دسترسی به همه توکنهای ERC20 یا NFTهای یک قرارداد هوشمند خاص در والت کاربر را فراهم میکند. اسکمرها زیاد از این تابع سوء استفاده میکنند به همین دلیل باید بتوانید تشخیص دهید که چه مواقعی امضای این قراردادها امن است و در چه مواقعی احتمال تعامل با قرارداد هوشمندی مخرب وجود دارد.
تابع SafeTransferFrom و ریسکهای آن
تابع SafeTransferFrom معمولاً در تراکنشهایی مشاهده میشود که در آنها یک NFT از والتی به والت دیگر ارسال میشود.
این تابع زمانی مجاز است که در آن یک NFT منتقل میشود اما مشاهده آن در سایر شرایط نگران کننده است. به همین دلیل لازم است پیش از تأیید این تابع به این نکته توجه داشته باشید که با این کار توکنی از والت شما برای والت فردی دیگر منتقل میشود.
تابع Transfer و ریسکهای آن
تابع Transfer تابع استاندارد ارسال اتر در اتریوم است. این تابع زمانی مناسب است که قصد خرید دیجیتال یا ارسال اتر بین والتهای مختلف را داشته باشید.
اما مواجه با توابع غیر استاندارد مثل SendETH میتواند یک نشانه هشدار باشد.
تشخیص توابع مخرب در قراردادهای هوشمند
برای پیشگیری از اینکه قربانی چنین اسکمهایی شوید، باید پیش از تأیید هر تراکنشی، توابع فراخوانی شده در آن ارزیابی کنید. مثلاً اگر قرار است مینت انجام شود، باید تابع مخصوص این کار فراخوانی شود نه تابع انتقال. اگر قرار است انتقال انجام شود، نباید تابع SetApprovalForAll مشاهده شود. وجود هر تابعی به غیر از تابع مورد انتظار، یک نشانه هشدار است. لازم به ذکر است که در رابطه با فراخوانی توابع قراردادهای هوشمند، انتظار میرود همان چیزی که در باکس تابع نوشته شده، انجام شود.
فعالیت در دنیای قراردادهای هوشمند پیچیدگیهای خاصی دارد اما درک توابع و ریسکهای بالقوه آنها به مقابله با اسکم کمک میکند. ضروری است که پیش از تأیید هر تراکنشی مجاز بودن فراخوانی تابع را بررسی کرده و مراقب توابعی که با اقدام مربوطه همسو نیستند باشید. با رعایت این نکات میتوانید به شکل امن با پلتفرمهای بلاک چین تعامل برقرار کرده و از داراییهای خودتان حفاظت کنید.