سالیدیفا

آیا برنامه نویسی قرارداد هوشمند مثل وب یا موبایله؟

smart-contract-1

پاسخ سریع به این پرسش نه ه. توی این مقاله سعی میکنیم توضیح بدیم چرا بهته به برنامه نویسی اسمارت کانترکت نگاهی متفاوت داشته باشیم.

بیشتر بخوانید: آیا برنامه نویسی قرارداد هوشمند مثل وب یا موبایله؟

سینتکس زبان سالیدیتی شباهت زیادی به C++ و جاوا اسکریپت داره و کسی که یکی از اینارو بلد باشه با نگاه کردن به کد سالیدیتی احساس غریبی نمی کنه. اما موارد مهمی وجود داره که با وقتی در نظرشون میگیریم به کل موضوع عوض می شه. اینجا به سه مورد از اونا اشاره می کنیم.

قرارداد های هوشمند غیر قابل حذف یا تغییرن

وقتی قرارداد هوشمند رو تو بلاکچین دیپلوی کردین، دیگر به هیچ عنوان امکان هر گونه تغییر با حذف وجود نداره. هرچند میشه با پیاده سازی هایی مثل استفاده از پروکسی ها یا توابعی برای توقف تا حدی روی این موضوع غلبه کرد، اما باید توجه داشت که این کار اونقدراهم ساده نیست. پس باید قبل از دیپلوی قرارداد هوشمند، از اطمینان بالایی بابت کارایی درست، امنیت و … آن اطمینان حاصل کنیم.

هزینه هک شدن اونها میتونه به شدت بالا باشه

البته حتی در نرم افزار های وب و موبایل هم موضوع امنیت میتونه خیلی حساس باشه، اما چون قرارداد های هوشمند اکثرا با پول و سرمایه سر و کار دارن، هرگونه نفوذ امنیتی به اونها، پول درون قرارداد و همچین پول ولت های متصل به اونها رو به خطر میندازه.

هزینه بهینه نبودن کد میتونه به شدت بالا باشه

از اون که اکثر عملیات تو اسمارت کانترکت ها باعث مصرف گاز (گس فی) میشه، چنانچه خطایی تو کد رخ بده یا تو یه لوپ بی نهایت بیفته، میتونه کل حساب اون قراردادو صفر کنه. برای مثال حلقه ای که شرط توقفش به درستی اجرا نشه، تا اونجایی پیش میره تا کل موجودی حساب قراردادو صفر کنه.

اگه با این سه مورد قانع شدین که چقدر حساسیت تو کد نویسی قرارداد هوشمند بالاست، پس اهمیت کد ایمن نوشتن، کد تمیز و بهینه نوشتن، استفاده از دیزاین پترن هارو هم درک کردین.