
انواع توابع در سالیدیتی
هنگام نوشتن یک قرارداد هوشمند، باید اطمینان حاصل کنید که پول به قرارداد و همچنین خارج از قرارداد ارسال می شود. Payable این کار را برای شما انجام می دهد، هر تابعی در Solidity با اصلاح کننده Payable تضمین می کند که تابع می تواند اتر را ارسال و دریافت کند.
تابع قابل پرداخت (payable) در سالیدیتی چیست؟
می تواند تراکنش هایی با مقادیر اتر غیر صفر را پردازش کند و هر تراکنش با مقدار اتر صفر را رد می کند. علاوه بر این، اگر تابعی را برای پردازش تراکنشها میخواهید و کلمه کلیدی قابل پرداخت را در آن وارد نکردهاید، تراکنش بهطور خودکار رد میشود.
پیشنهاد مطالعه: آموزش رایگان سالیدیتی
یک مثال از این فرض اینکه شما یک تابع ()receive با اصلاح کننده قابل پرداخت دارید، به این معنی که این تابع می تواند در قرارداد پول دریافت کند و حالا تصور کنید که یک تابع send() بدون تغییر دهنده قابل پرداخت وجود داشته باشد، وقتی شما تراکنش را رد می کند. می خواهید از قرارداد پول بفرستید.
توابع قابل پرداخت بازگشتی نیز کمک بزرگی در Solidity هستند. تصور کنید که اگر شخصی وجوهی را بدون تعدیل کننده قابل پرداخت به قرارداد شما ارسال کند، می توانید چنین تابعی را برای داشتن یک تابع قابل پرداخت بازگشتی تعریف کنید که تضمین می کند که تراکنش بدون توجه به آن انجام می شود. به همین دلیل است که استفاده از نسخهای از یک تابع بدون نام و یک اصلاحکننده قابل پرداخت، عمل خوبی در نظر گرفته میشود.
توجه داشته باشید که در اینجا نام تابع “noname” است و قابل پرداخت نیست، قابل پرداخت اصلاح کننده است.


مریم گوهرزاد
مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین و توسعهدهنده بلاکچین | متخصص Solidity | توسعهدهنده وب Full-Stackمن یک توسعهدهنده علاقهمند به فناوریهای بلاکچین و وب ۳ هستم و در زمینه Solidity، توسعه قراردادهای هوشمند و ساخت برنامههای غیرمتمرکز (DApps) فعالیت میکنم. تمرکز من بر طراحی و پیادهسازی راهکارهایی است که در کنار بهرهگیری از فناوریهای نوین، عملکرد مناسب، امنیت و تجربه کاربری مطلوبی ارائه دهند.در کنار تخصص در حوزه بلاکچین، به عنوان یک توسعهدهنده وب Full-Stack نیز در طراحی و توسعه وبسایتها و برنامههای تحت وب فعالیت میکنم. تجربه کار در بخشهای Front-End و Back-End به من این امکان را داده است که پروژهها را از مرحله ایده و طراحی تا توسعه و اجرا، با دیدی جامع دنبال کنم. در فرآیند توسعه، توجه ویژهای به کدنویسی تمیز، معماری مناسب، طراحی واکنشگرا، عملکرد مطلوب و تجربه کاربری روان دارم.



