اسکریپت در بلاکچین چیست؟
اسکریپت در دنیای بلاکچین به نوعی کد برنامهنویسی اشاره دارد که نقش کلیدی در اجرای عملیاتهایی مانند قراردادهای هوشمند، مدیریت انتقال توکنها، و ایجاد منطقهای پیچیده برای اپلیکیشنهای غیرمتمرکز (DApps) ایفا میکند.
توسعهدهندگان این حوزه با بهکارگیری زبانهای اسکریپتنویسی متنوع مانند پایتون با فریمورک Brownie، جاوا اسکریپت با فریمورکهای Truffle و HardHat، و سالیدیتی با فریمورک Foundry، به تقویت و گسترش قابلیتهای شبکههای بلاکچین میپردازند. در این مقاله، به بررسی انواع عملیاتهایی که به کمک اسکریپت در بلاکچین امکانپذیر شدهاند میپردازیم و همچنین نگاهی به روشهای سوءاستفاده هکرها از این کدها خواهیم داشت. همراه ما باشید تا با این موضوعات بیشتر آشنا شوید.
نقشهای کلیدی اسکریپت در بلاکچین
اسکریپت در بلاکچین به عنوان ابزاری برای ساخت و اجرای کدهایی به کار میرود که تعیینکننده نحوه انجام تراکنشها و مدیریت تعاملات در یک شبکه بلاکچینی هستند. برخی از مهمترین نقشها و کاربردهای اسکریپت در این فناوری عبارتند از:
قراردادهای هوشمند
بسیاری از شبکههای بلاکچینی از قراردادهای هوشمند بهره میبرند و اسکریپتها به توسعهدهندگان کمک میکنند تا این قراردادها را طراحی، تست و در شبکهها پیادهسازی کنند. این قراردادها به صورت خودکار و بر اساس شرایط از پیش تعیینشده فعال میشوند. برای نمونه، اسکریپتی میتواند برای مدیریت فروش یک توکن طراحی شود که پس از تایید پرداخت کاربر، توکنها را به او منتقل کند.
رباتهای معاملاتی
اسکریپتها برای ایجاد رباتهای معاملاتی که بهطور خودکار استراتژیهای مختلف را اجرا میکنند، استفاده میشوند. رباتهای آربیتراژ یکی از نمونههای کاربردی هستند که با بررسی تفاوت قیمتها در صرافیهای مختلف، تراکنشهایی را برای کسب سود ثبت میکنند. به عنوان مثال، رباتی که بیتکوین را با قیمت کمتر در یک صرافی خریداری کرده و سپس آن را با قیمت بالاتر در صرافی دیگری به فروش میرساند.
زبانهای اسکریپتنویسی
توسعه و بهبود بلاکچینها از طریق زبانهای اسکریپتنویسی امکانپذیر است. به عنوان مثال، زبان بیتکوین اسکریپت (Bitcoin Script) که برای بلاکچین بیتکوین به کار میرود، امکان تراکنشهای پیشرفتهای مانند تراکنشهای چندامضایی را فراهم کرده است.
پردازش تراکنشها
اسکریپتها نقش مهمی در خودکارسازی فرآیند پردازش تراکنشها دارند. یک اپلیکیشن غیرمتمرکز میتواند با استفاده از اسکریپت، فرآیندهایی نظیر معاملات، وامدهی و وامگیری را خودکار کند. این اتوماسیون نه تنها کارایی را افزایش میدهد بلکه خطای انسانی را نیز به حداقل میرساند.
اسکریپت صرافی ارز دیجیتال
توسعهدهندگان میتوانند با استفاده از اسکریپتها، پلتفرمهای معاملاتی جدید ایجاد کنند. برای مثال، یک اسکریپت برای صرافی غیرمتمرکز میتواند بازار معاملاتی همتا به همتا را فراهم کند و بستری برای مبادلات ایمن و مستقیم میان کاربران ایجاد نماید.
سوءاستفاده از اسکریپت در بلاکچین
اسکریپت در بلاکچین اگرچه ابزاری قدرتمند برای نوآوری و اتوماسیون در پروژههای غیرمتمرکز به شمار میرود، اما برای هکرها نیز ابزاری کاربردی محسوب میشود که با استفاده از آن میتوانند از نقاط ضعف اسکریپتهای دارای مشکلات امنیتی بهرهبرداری کنند. این آسیبپذیریها ممکن است امنیت قراردادهای هوشمند، اپلیکیشنهای غیرمتمرکز و حتی کل شبکههای بلاکچینی را تهدید کنند. هکرها با استفاده از تکنیکهای پیچیده اسکریپتنویسی میتوانند به فعالیتهای مخربی مانند سرقت داراییها و دستکاری دادههای بلاکچینی دست بزنند. نتیجه چنین حملاتی، زیانهای چندصد میلیون دلاری برای حوزه کریپتو و کاربران آن خواهد بود. در ادامه به برخی از رایجترین روشهای سوءاستفاده اشاره میکنیم:
حمله ریاینترنسی (Reentrancy)
این نوع حمله به وسیله فراخوانی مکرر تابعی در یک قرارداد هوشمند انجام میشود و به هکر امکان میدهد تا به صورت پیدرپی از قرارداد برداشت کند. نمونه بارز این حمله، هک DAO در سال ۲۰۱۶ بود که در آن هکرها با استفاده از این روش موفق به سرقت حدود ۶۰ میلیون دلار اتریوم شدند. این حمله به دلیل ضعف در طراحی قرارداد و عدم قفلگذاری داراییها رخ داد.
نقص در منطق (Logic Flaws)
حتی کوچکترین اشتباه در کدنویسی اسکریپتهای بلاکچین میتواند منجر به از دست رفتن داراییهای هنگفتی شود. برای مثال، اسکریپتی که نتواند به درستی دسترسیهای غیرمجاز را محدود کند، میتواند خطرآفرین باشد. به عنوان نمونه، یک ایراد در منطق قرارداد هوشمند کیف پول پریتی (Parity Wallet) منجر به فریز شدن بیش از ۳۰۰ میلیون دلار اتریوم شد که فعالیت هزاران کاربر را با مشکل مواجه کرد.
سرریز و پاریز عدد صحیح (Integer Overflow/Underflow)
محاسبات مربوط به اعداد صحیح در زبان سالیدیتی میتواند در صورتی که به درستی مدیریت نشود، از محدوده تعیینشده خارج گردد. این ضعف میتواند به هکرها امکان دهد اطلاعات قرارداد را دستکاری کنند. برای نمونه، حمله Underflow یا پاریز میتواند به هکرها اجازه تولید توکنهای جدید و فروش فوری آنها را بدهد که منجر به کاهش شدید قیمت و اختلال در بازار میشود.
آشنایی با برخی از بزرگترین حملات در بلاکچین
اگرچه حملات سایبری و هک در دنیای کریپتو موضوع تازهای نیست، برخی از مهمترین این حملات به دلیل نقاط ضعف در کدهای بلاکچینی رخ دادهاند. در اینجا به بررسی ۴ حمله بزرگ و معروف در این حوزه میپردازیم:
هک دائو (The DAO)
در سال ۲۰۱۶، ضعف امنیتی موجود در سازمان خودگردان غیرمتمرکز اتریوم به از دست رفتن بیش از ۶۰ میلیون دلار دارایی منجر شد و سرنوشت شبکه اتریوم را به طرز چشمگیری تغییر داد. این رویداد سبب شد تا اتریوم یک هاردفورک را تجربه کند که نتیجه آن ایجاد دو بلاکچین مجزا به نامهای اتریوم و اتریوم کلاسیک بود.
هک پریتی والت (Parity Wallet)
در سال ۲۰۱۷، دو آسیبپذیری بزرگ در اسکریپت کیف پول پریتی کشف شد. نخستین ضعف در سیستم چندامضایی این کیف پول بود که منجر به سرقت ۳۰ میلیون دلار شد. مدتی بعد، یک باگ دیگر در این کیف پول باعث فریز شدن بیش از ۳۰۰ میلیون دلار اتر (ETH) شد و فعالیت هزاران کاربر را مختل کرد.
حمله به پروتکل bZx
در سال ۲۰۲۰، پروتکل دیفای bZx چندین بار مورد حمله با استفاده از فلش لون (Flash Loan) قرار گرفت. در این حملات، هکرها با بهرهگیری از اسکریپتها توانستند قیمتها را در پروتکل دستکاری کنند و سود کلانی به دست آورند.
اکسپلویت پالی نتورک (Poly Network)
در سال ۲۰۲۱، پلتفرم چندزنجیرهای پالی نتورک قربانی یکی از بزرگترین حملات سایبری در تاریخ بلاکچین شد. ضعف امنیتی در بخشی که وظیفه تایید تراکنشهای بین زنجیرهای را داشت، به هکرها اجازه داد تا معادل ۶۱۰ میلیون دلار ارز دیجیتال از این پلتفرم برداشت کنند.
اسکریپت در بلاکچین؛ ابزاری توانمند یا یک شمشیر دولبه؟
نقش اسکریپت در بلاکچین بسیار گسترده است و از مدیریت تراکنشهای ساده تا توسعه اپلیکیشنهای غیرمتمرکز پیشرفته را شامل میشود. با پیشرفت زبانهای برنامهنویسی مانند سالیدیتی، بلاکچین از یک سیستم ساده برای تراکنشهای همتا به همتا به بستری کامل برای نوآوری و توسعه توسط برنامهنویسان ماهر تبدیل شده است. با این حال، این اتکا به اسکریپت و فرآیندهای اتوماتیک، چالشهای امنیتی جدیدی را به همراه داشته است.
ماهیت متنباز بلاکچین و شفافیت بالای آن، فرصتهای زیادی برای سوءاستفاده ایجاد میکند و باعث میشود هکرها با استفاده از روشهای پیچیدهتر به دنبال نفوذ و سرقت داراییها باشند. این حملات میتوانند شامل شناسایی نقاط ضعف در اسکریپتها و بهرهبرداری از آنها یا اجرای اسکریپتهای پیشرفته برای حملاتی همچون فرانت رانینگ باشند. از این رو، همزمان با پیشرفت زبانهای اسکریپتنویسی و توسعه قابلیتهای بلاکچین، توجه به ایمنسازی و رفع آسیبپذیریها امری ضروری است. انجام حسابرسیهای منظم (Audit) برای اسکریپتهای کلیدی بلاکچین میتواند به جلوگیری از این آسیبها و حفظ امنیت شبکه کمک کند.