آشنایی با زبانهای برنامهنویسی بلاک چین
با چه زبان برنامهنویسی میتوان پروژه بلاکچینی پیادهسازی کرد؟

برای پیادهسازی اپلیکیشن و شبکههای مبتنی بر بلاکچین نیازمند استفاده از زبان برنامهنویسی هستیم. بعضی از این شبکهها دارای زبان برنامهنویسی اختصاصی میباشند که در این مقاله به آن اشاره خواهیم کرد.
اگر بخواهم در آینده به یک توسعهدهندهی بلاکچین تبدیل بشوم باید از کجا شروع کنم؟ چه زبانی برای شروع برنامه نویسی بلاک چین بهتر است؟
اگر ایدهای در حوزهی ارزهای دیجیتال و سیستمهای توزیعشده داشته باشم با چه زبانی میتوانم آن را پیادهسازی کنم؟ اینها سؤالاتی است که ممکن است این روزها به ذهن بسیاری از علاقهمندان فناوری بلاکچین برسد.
فهرست مطالب
بهترین زبان برای برنامهنویسی بلاکچین چیست؟
پاسخ این است که زبان یکتایی وجود نداشته و بر اساس اینکه چه پروژهای میخواهید انجام دهید کاملا متغیر است. زبانهای برنامهنویسی متعددی برای اینکار وجود دارد. ابتدا باید ببینید کدامیک از ارزهای دیجیتال، پلتفرم پایهی پروژهی شما را تشکیل داده و چه عملکردی از آن انتظار دارید. شما میتوانید لیست محبوبترین زبانهای برنامهنویسی در سال ۲۰۲۱ را از وبسایتهای ieee و یا tiobe ببینید. ممکن است توسعهدهندهای زبان C# را برای کار خود انتخاب کند درحالیکه توسعهدهندهی دیگری اسکریپتهای پایتون و یا جاوا اسکریپت همیشه محبوب را ترجیح دهد. میبینید کاملا بستگی به هدف شما دارد.
به طور کلی برنامهنویسی بلاک چین چهار حوزهی زیر را پوشش میدهد:
- راهاندازی یک ICO
- ساخت یک قرارداد هوشمند و یا برنامه غیرمتمرکز (Dapp)
- ارتقاء یک بلاک چین موجود و یا ایجاد یک بلاک چین جدید
- ساخت یک دفتر کل غیرمتمرکز نظیر هایپرلجر فابریک (fabric)
اگر قصد برنامهنویسی در هر یک از حوزههای بالا را داشته باشید، ابتدا باید فناوری بلاکچین را کاملا درک کرده باشید. منابع بسیاری برای درک این فناوری بر بستر اینترنت موجود است. پیشنهاد میشود ابتدا مفاهیم پایهای بلاک چین و کاربردهای آن را مطالعه کرده و سپس حوزهی مورد علاقهی خود را انتخاب نمایید. ما دو کتاب زیر را برای آشنایی با مفاهیم کلی پیشنهاد میکنیم:
- تسلط بر بلاک چین: Mastering Blockchain by Imran bashir
- تسلط بر بیت کوین: Mastering bitcoin By Andreas M Antonopolos
پس از مطالعهی مبانی این کار، قادر به تصمیمگیری خواهید بود. اگر قصد توسعهی کامل یک بلاک چین جدید را داشته باشید، احتمالا به زبان برنامهنویسی ++C نیاز خواهید داشت. اما ممکن است تصمیم بگیرید به جای توسعهی یک بلاک چین از صفر، از پروژههای متنبازی مانند بیتکوین و یا اتریوم استفاده کنید.
اگر قصد ساختن یک قرارداد هوشمند (Smart Contract) بر بستر اتریوم را داشته باشید، به یادگیری زبان برنامهنویسی سالیدیتی (Solidity) نیاز خواهید داشت. برای اینکار میتوانید.
برای توسعهی پروژههایی نظیر هایپرلجر فابریک، به زبانهای برنامهنویسیای نظیر زبان گو (Go) نیاز خواهید داشت.
این نکته را در نظر داشته باشید که بلاک چین تنها فناوری زیرساختی شما بوده و به برنامهنویسی فرانتاند (Front end) نیز برای امکان تعامل کاربران با برنامهی خود نیاز خواهید داشت. برای فرانتاند شاید زبان جاوا اسکریپت بهترین گزینه برای شما باشد. پیش از اینکه به معرفی زبانهای برنامهنویسی بهصورت مجزا بپردازیم، برخی از چالشهایی را که ممکن است پیش روی شما بهعنوان یک برنامهنویس بلاک چین قرار بگیرد را بیان کرده تا با دانستن آنها بهتر بتوانید برای انتخاب زبان برنامهنویسی مناسب تصمیم بگیرید.
معیارهای انتخاب زبان
امنیت (Security)
دیوید شوارتز (David Schwartz) بیان کرده است که بلاکچینها باید همانند دژهای نظامی مستحکم باشند. اول آن که کد آنها عمومی بوده و برای همگی قابل رویت است. همه میتوانند کد مربوط به آنها را بررسی کرده و نقاط ضعف امنیتی و باگها را پیدا کنند. با این وجود برخلاف سایر پروژههای منبعباز (Opensource)، یافتن آسیبپذیری در یک بلاک چین تبعات زیانبار بیشتری دارد. پیدا کردن چنین باگهایی میتواند منجر به هک سیستم و سرقت میلیونها دلار و یا اطلاعات مهم شود. درست به همین دلیل پروسهی توسعهی یک بلاک چین معمولا بسیار آهسته پیش میرود.
مدیریت منبع (Resource management)
توسعه باید همگام با نیازهای شبکه باشد. نمیتوان این نیازها را از ابتدا در نظر نگرفته و بعدا به آنها پرداخت. شما باید به خوبی سیستم خود را برای پرسشهای (queries) و از راه دور (Remote) آماده کنید.
کارایی (Performance)
یک بلاک چین باید همیشه بالاترین قابلیتهای خود را به نمایش بگذارد. برای این هدف زبان برنامهنویسی که انتخاب میشود باید بسیار انطباقپذیر باشد. نکتهی مهم اینجاست که بسیاری از دستورالعملهایی که در بلاک چین انجام میشوند قابلیت اجرا به صورت موازی را داشته و تعدادی از آنها چنین قابلیتی را ندارند.
یکی از وظایفی که قابلیت موازیسازی در بلاک چین دارد، تایید امضای دیجیتال (digital signature) است چراکه تنها چیزی که برای تایید نیاز دارید یک کلید، یک تراکنش و یک امضا است. تنها با استفاده از سه داده، میتوانید تاییدات را به موازات وظایف دیگر انجام دهید.
تمام توابع یک بلاک چین، چنین خاصیتی ندارند به عنوان مثال اجرای یک تراکنش را در نظر بگیرید. چندین تراکنش برای جلوگیری از مشکلاتی نظیر دوبار خرج کردن (Double spend) نمیتوانند به صورت کاملا موازی اجرا شوند. برخی زبانهای برنامهنویسی برای پیادهسازی توابع به شکل موازی مناسبتر هستند.
جداسازی (Isolation)
اگر (A + B = C) باشد، بدون در نظر گرفتن هیچ پیششرطی، همواره عبارت (A+B) برابر با C خواهد بود. توابع هش (Hash function) نیز قطعی هستند. این بدین معنا است که هش متغیر A، همواره برابر با HA خواهد بود. بنابراین در یک بلاکچین، تمامی عملیات مربوط به تراکنشها باید قطعی باشند. یک تراکنش نمیتواند در دو روز رفتاری متفاوت داشته باشد. همچنین یک قرارداد هوشمند نیز نمیتواند در دو ماشین رفتاری متفاوت داشته باشد.
پیادهسازی چنین المانی تنها از طریق جداسازی و یا ایزوله کردن تراکنشها و قراردادهای هوشمند از عناصری است که عدم قطعیت در آنها وجود دارد.
تا اینجا راجع به چالشهایی که برنامهنویسان بلاک چین با آنها روبهرو هستند صحبت کردیم در ادامه دستهبندی زبانهای برنامهنویسی خواهیم پرداخت.
زبانهای برنامهنویسی بلاک چین
سی پلاس پلاس (++C)
این زبان نخستین بار در سال ۱۹۸۵ توسط بیارنه استراستروپ به عنوان افزونهی زبان برنامهنویسی C به وجود آمد. ایدهی استراستروپ این بود که انعطافپذیری (flexibility)، امنیت (security) و کارایی (efficiency) زبان C را حفظ کرده اما به شیءگرایی آن بیفزاید. از همین رو زبان برنامهنویسی C به عنوان یک زبان برنامهنویسی ساخت یافته و ++C یک زبان شیءگرا تلقی میشود.
++C زبان برنامهنویسی قدرتمند، قدیمی و چندمنظورهای است که استفاده از آن برای برنامهنویسی هستهی بلاک چین بسیار متداول است. با این وجود به توسعهدهندگان تازه وارد هشدار داده میشود که یادگیری این زبان نسبت به بقیه زبانها به علت وابستگی زیاد به نوع متغیر و دستورات قدیمیاش سخت است. با این وجود اگر سختی این راه را تحمل کرده و این زبان را به خوبی یاد بگیرید، درک عمیقی به شما خواهد داد که هیچ زبان دیگری قادر به ایجاد آن نیست.
خبر خوش آنکه منابع بسیاری برای یادگیری این زبان در اختیار شما قرار دارد که تعدادی از آنها را در ادامه آوردهایم.
جاوا اسکریپت (Javascript)
جاوا اسکریپت یک زبان برنامهنویسی برای وب بوده و تمامی مرورگرها از آن پشتیبانی میکنند.
جاوا اسکریپت اولین زبانی بود که برای بهبود صفحات ایستای HTML ،CSS و ایجاد واسطهای کاربری تکامل یافته به وجود آمده است. تعدادی از این واسطهای کاربری شامل انیمیشنها، منوهای کاربران، کادرهای گفتگو و نقشههای تعاملی هستند.
جاوا اسکریپت رفتارهای صفحات وب در مرورگرهای مدرن را پیشرفتهتر ساخته است. تصور نمیشد روزی جاوا اسکریپت لایهی نمایش (presentation layer) وب را ترک کند اما این اتفاق با روی کار آمدن Node JS که آن را به سمت سرور برد و فریمورک انگولار (Angular) و یا سکوی کاربردی تحت وب، کتابخانهی متنباز ری اکت (React) و چارچوب متنباز ویو (Vue)، این اتفاق افتاده و پشتهی HTML/CSS سمت کاربر از نو نوشته شد و جاوا اسکریپت فول استک (هم سمت سرور و هم سمت کاربر) قدرتمندتر از قبل روی کار آمد.
جاوا اسکریپت برای تازه واردان زبانی نسبتا آسان بوده و در حال تکامل است و همچنین در تمامی بخشهای وب مدرن خود را ثابت کرده است.
پروژهی مبتنی بر بلاک چین لیسک (Lisk)، از جاوا اسکریپت استفاده میکند. صفحهی فرود (landing page) آنها اعتقادشان در خصوص اینکه میتوان با جاوا اسکریپت اکوسیستم کامل بلاکچینی را پیادهسازی کرد را بازگو میکند. لیسک به توسعهدهندگان امکان ساخت و استقرار برنامههای مبتنی بر بلاک چین با زبان جاوا اسکریپت را میدهد.
جاوا (Java)
جاوا زبان دیگری است که دانشمندان کامپیوتر و برنامهنویسان برای توسعهی مهارتهای برنامهنویسیشان از آن استفاده میکنند. جاوا شاهکلید صفحات وب HTML/Css است. شاید همین مساله آن را به یک گزینهی هوشمندانه برای سازگاری با وبسایتهای سنتی و فناوری وب ۳ (بلاک چین) تبدیل کرده است.
زبان جاوا برای ساخت بلاک چینهایی که بر خاصیت محرمانگی تمرکز دارند، مناسب است. غیرقابل تغییر بودن (immutability) فاکتور مهمی برای جلوگیری از هک و تقلب است.
پایتون (Python)
پایتون زبان نسبتا مدرنی است که تازهواردان به آن بسیار علاقه دارند. این زبان توسط خیدو فان روسوم (Guido van Rossum) با هدف سادگی و خوانایی دستورات به وجود آمد. پایتون از زمان انتشارش به عنوان یک زبان ساده و در عینحال قدرتمند و همراه با یک جامعهی پشتیبانی گسترده شناخته شده است. این منجر به یکپارچه شدن پایتون با تقریبا همهی پلتفرمها از کتابخانههای واسط کاربری تحت وب نظیر فلسک (Flask) گرفته تا بستهی نرمافزاری (NumPy) در یادگیری ماشین گردید.
با اینکه نمیتوان با زبان پایتون به تنهایی یک بلاک چین جدید نوشته و یا به قابلیتهای یک بلاک چین موجود افزود، برنامهی غیرمتمرکز نوشت و یا یک ICO برگزار کرد. اما حذف این زبان از چنین لیستی اشتباه است چراکه در تقریبا تمامی بلاک چینها، یک یا چند ابزار عمومی با پایتون و یا برای این زبان وجود دارد.
گو (Go)
زبان Go که فرم اختصاری واژهی Golang است، یک زبان برنامهنویسی عمومی نسبتا جدید است که در سال ۲۰۰۷ در گوگل توسعه یافته و برای کاربرد عموم در سال ۲۰۱۲ رونمایی شد. زبان Go ، یک زبان قوی و چندمنظوره است که با هدف ترکیب سادگی و کاربر پسند بودن زبانهای مدرنی مانند پایتون و جاوا اسکریپت، و کارایی و امنیت زبانهای قدیمیتری نظیر C توسعه یافت.
زبان Go یک زبان مفسری است و این بدین معنی است که میتواند به صورت مستقیم با سیستم عامل کار کند. این ویژگی انعطافپذیری بالایی را به هنگام استفاده از این زبان در بخشهای مختلف توسعهی یک پروژهی مبتنی بر بلاک چین میدهد. اگر قصد تغییر یک بلاک چین موجود را داشته باشید، اتریوم SDK پروتکلی دارد که به زبان Go نوشته شده است. اگر قصد نوشتن یک قرارداد هوشمند را نیز داشته باشید، بنیاد لینوکس پروژهی هایپرلجر فابریک را با زبان Go توسعه داده است.
سالیدیتی (Solidity)
سالیدیتی یک زبان با دامنه خاص مشابه جاوا اسکریپت است. این زبان توسط تیم اتریوم برای ساخت اپلیکیشنهای غیرمتمرکز در پلتفرم اتریوم ایجاد شده است. سالیدیتی تا به امروز سازگارترین و محبوبترین زبان دامنه خاص (DSL) است که از سوی جامعهی اتریوم و صنعت بلاک چین مورد پذیرش قرار گرفته است.
هر فردی که قصد ساختن یک اپلیکیشن غیرمتمرکز (Dapp) و یا برگزاری یک ICO را داشته باشد، زبان سالیدیتی یکی از مستقیمترین و بهترین راههایی است که میتواند از آن استفاده کند. از آنجایی که سالیدیتی پیش از هاردفورک اتریوم توسعه یافته، اتریوم و اتریوم کلاسیک هر دو از آن پشتیبانی میکنند. تیم کاردانو نیز به تازگی پشتیبانی خود از سالیدیتی را اعلام کرده است.
سالیدیتی به مرور به زبان دامنه خاص برنامهنویسی که توسط بسیاری از بلاک چینها پشتیبانی میشود تبدیل خواهد شد. این زبان با اولویت دادن به توسعهدهنده طراحی شده و دستورات آن شباهت زیادی به جاوا اسکریپت دارد.
جمع بندی
بیت کوین و فناوری بلاک چین راه خود را در دگرگون کردن انتقال دادهها و داراییها ادامه خواهند داد. واضح است که این تاثیر جهانی بوده و تمامی صنایع را تحت تاثیر قرار خواهد داد. مهم نیست از کجا شروع کنید. اولین گام را برای یادگیری یکی از این زبانها بردارید. اگر بگوییم تعداد توسعهدهندگان امروزه از میزان افرادی که صنایع بدان نیاز دارند بسیار کمتر است، اغراق نکردهایم. پس فرصت را غنیمت شمرده و اگر به این حوزه علاقه دارید هر چه سریعتر به آن بپردازید تنها کافی است از خودتان بپرسید قصد انجام چه نوع پروژهای را داشته و چه مشکلی را میخواهید برطرف سازید.