سرمایه‌گذاری روی آینده
برنامه‌نویسی زنجیره‌بلوکی چیست و چرا آینده‌دار است؟
اگر بگوییم زنجیره‌بلوکی آینده است، اغراق نکرده‌ایم؛ زیرا این فناوری در تاروپود زیرساخت‌های مهمی مثل وب 3، زنجیره تامین، مبادلات تجاری، فراجهان، صنعت امنیت، دنیای شبکه، صنایع و بسیاری دیگر از حوزه‌ها نقش تاثیرگذاری خواهد داشت. زنجیره‌بلوکی یک نوع سیستم ثبت اطلاعات و گزارش است. تفاوت آن با سیستم‌های دیگر این است که اطلاعات ذخیره‌‌شده روی این نوع سیستم، میان همه اعضای یک شبکه به‌اشتراک گذاشته می‌شود. با استفاده از رمزنگاری و توزیع داده‌ها، امکان هک، حذف و دستکاری اطلاعات ثبت‌ شده، تقریباً از بین می‌رود و تراکنش‌ها شفاف انجام می‌شوند. زنجیره‌های بلوکی می‌توانند به‌شکل خصوصی و برای اهداف خاص در یک سازمان استفاده شوند که به آن‌ها زنجیره‌بلوکی سازمانی (Enterprise Blockchain) گفته می‌شود. البته در حالت سازمانی، زنجیره‌های بلوکی سازمانی نمی‌توانند هدف اصلی این فناوری که تمرکززدایی است را پوشش دهند. یکی از مباحث مهمی که این روزها در حوزه زنجیره‌بلوکی مورد توجه قرار گرفته، برنامه‌نویسی زنجیره‌بلوکی است. هنگامی‌که تصمیم می‌گیرید یادگیری زنجیره‌بلوکی را آغاز کنید، پرسش‌های زیادی به ذهن‌تان خطور می‌کند. به‌طور مثال، انواع مختلف برنامه‌نویسی زنجیره‌بلوکی چیست؟ چه زبان‌های برنامه‌نویسی عملکرد بهتری در ارتباط با این فناوری دارند و چه پلتفرم‌هایی برای کدنویسی زنجیره‌بلوکی وجود دارند؟ این‌ها پرسش‌هایی هستند که هر توسعه‌دهنده یا کاربر علاقه‌مند به دنیای برنامه‌نویسی زنجیره‌بلوکی مطرح می‌کند. در این مقاله قصد داریم اطلاعاتی را که برای ورود به دنیای برنامه‌نویسی زنجیره‌بلوکی به آن‌ها نیاز دارید بررسی کنیم.

shabake-mag.jpg

انواع برنامه‌نویسی زنجیره‌بلوکی 

قبل از آن‌که یک شبکه مبتنی بر زنجیره‌بلوکی منتشر شود باید ویژگی‌های مهمی که معماری و پروتکل‌های آن‌را تشکیل می‌دهند پیاده‌سازی شوند. این ویژگی‌ها از طریق کدنویسی تعریف می‌شوند. به‌طور مثال، قبل از انتشار زنجیره‌بلوکی بیت‌کوین در سال 2009، قوانین و مقررات حاکم بر وضعیت آن با زبان برنامه‌نویسی سی‌پلاس‌پلاس نوشته شدند. با این‌حال، بخشی از کدنویسی ویژگی‌های مهم و زیربنایی این زنجیره‌بلوکی با زبان‌های دیگری مثل سی و جاوا نیز انجام شد. 

برنامه غیرمتمرکز (DApp)

در یک برنامه معمولی متمرکز، کد‌های بک‌اند روی سرورهای متمرکز میزبانی و اجرا می‌شوند؛ در حالی که کدهای بک‌اند یک برنامه DApp، روی یک شبکه همتابه‌همتای غیرمتمرکز اجرا می‌شوند. مشابه یک برنامه کاربردی، در ارتباط با کدنویسی فرانت‌اند یک DApp، مشکل خاصی وجود ندارد و امکان کدنویسی رابط کاربری با هر زبانی که توانایی برقراری ارتباط با کدهای بک‌اند را داشته باشد وجود دارد. 

پلتفرم های محبوب برنامه‌نویسی زنجیره‌بلوکی 

هایپرلجر (Hyperledger)

هایپرلجر با هدف استانداردسازی فناوری زنجیره‌بلوکی با دنیای تجارت، توسعه پیدا کرد. این پروژه توسط بنیاد لینوکس توسعه داده شد و سعی دارد مشکلات رایج را حل کند. به‌طور معمول، کسب‌و‌کارها هنگام استفاده از زنجیره‌بلوکی باید خط‌مشی‌های تجاری‌شان را با شبکه هدف هماهنگ کنند و مشکلات مختلف را حل کنند تا بتوانند از مزایای زنجیره‌بلوکی در راستای اهداف تجاری استفاده کنند. برای حل این مشکل، هایپرلجر زنجیره‌های بلوکی اختصاصی برای حوزه‌های مختلف طراحی کرده تا جواب‌گوی نیازهای صنایع مختلف باشد. هایپرلجر یک شرکت، ارز دیجیتال یا یک زنجیره‌بلوکی نیست، بلکه شبیه به قطب توسعه‌ زنجیره‌بلوکی صنعتی است. هایپرلجر در وب‌سایت رسمی خود (hyperledger.org) این‌گونه عملکردهای خود را شرح داده است: «هایپرلجر یک تلاش متن‌باز مشترک در راستای فناوری‌های پیشرفته‌ صنعتی مبتنی بر زنجیره‌بلوکی است. این پروژه‌ جهانی با تلاش جمعی از پیشگامان حوزه‌ مالی، بانک‌داری، اینترنت اشیاء و زنجیره‌ تامین پدید آمده است.» زنجیره‌های بلوکی طراحی‌شده توسط هایپرلجر، ظرفیت پیاده‌سازی و پشتیبانی از نسل جدیدی از تراکنش‌های مبتنی بر اعتماد، حساب‌دهی و شفافیت را در عین تسهیل فرآیندهای تجاری و رعایت دستورالعمل‌های قانونی ارائه می‌کنند. 

همان‌گونه که مشاهده می‌کنید، هایپرلجر پروژه‌ای است که سعی دارد به پیشرفت زنجیره‌های بلوکی متن‌باز کمک کند و از طریق ارائه ابزارها، آموزش‌ها و برگزاری رویدادهای مختلف از توسعه مشترک دفتر کل توزیع شده مبتنی بر زنجیره‌بلوکی پشتیبانی کند. هدف این پروژه، ارائه فناوری زنجیره‌بلوکی ماژولار است که شامل یک رابط برنامه‌نویسی کاربردی (API) غنی و آسان برای استفاده است. یکی از نکات مهمی که هایپرلجر روی آن تاکید خاصی دارد، کاهش مخاطرات امنیتی است، به‌طوری که تنها طرف‌های حاضر در یک معامله با یک‌دیگر در ارتباط باشند و شخص ثالثی به‌شکل مخفیانه فعالیت‌های آن‌ها را ردیابی نکند. بنابراین هایپرلجر تمام ویژگی‌های معماری زنجیره‌بلوکی، حفظ حریم خصوصی داده‌ها، اشتراک‌گذاری اطلاعات و تغییرناپذیری را ارائه می‌کند. 

اتریوم (Ethereum) 

اتریوم یک پلتفرم زنجیره‌بلوکی متن‌باز برای توسعه برنامه‌های غیرمتمرکز (DApp) است که قرار است روی فناوری زنجیره‌بلوکی اجرا شوند. پلتفرم زنجیره‌بلوکی اتریوم، فرآیند اسکریپت‌نویسی یا نوشتن قراردادهای هوشمند که از طریق گره‌های شبکه اجرا می‌شوند را تسهیل می‌کند. این موضوع تنها در ارتباط با ردیابی وضعیت تراکنش‌ها نیست، بلکه مبحث برنامه‌ریزی را نیز شامل می‌شود. اتریوم به توسعه‌دهندگان مسلط به زبان‌های برنامه‌نویسی سی‌پلاس‌پلاس، گو، پایتون، جاوا و غیره اجازه می‌دهد برنامه‌های کاربردی برای این سکو را بدون مشکل توسعه دهند. لازم به توضیح است که قراردادهای هوشمند با استفاده از Solidity که یک زبان برنامه‌نویسی قراردادگرا و سطح بالا است ساخته می‌شوند.

5 زبان برتر برای برنامه‌نویسی زنجیره‌بلوکی 

زبان‌های برنامه‌نویسی مختلفی برای توسعه برنامه‌های کاربردی مبتنی بر زنجیره‌بلوکی در دسترس قرار دارند، اما تنها برخی از آن‌ها قابلیت‌های موردنیاز برای توسعه این زبان‌ها را ارائه می‌کنند. در ادامه با 5 مورد از این زبان‌ها آشنا می‌شویم.

1. زبان برنامه‌نویسی سی‌پلاس‌پلاس (++C)

اجازه دهید کار را با قدیمی‌ترین و تحسین‌شده‌ترین زبان دنیای فناوری، سی‌پلاس‌پلاس پراقتدار آغاز کنیم. تقریباً همه می‌دانیم که سی‌پلاس‌پلاس نسخه توسعه‌یافته زبان سی است. در سی‌پلاس‌پلاس، توسعه‌دهندگان می‌توانند توابع، اشیاء، نوع‌های داده‌ای و هر آن چیزی که نیاز دارند را طراحی کنند، بدون مشکل آن‌ها را فراخوانی کنند و از کدهای نوشته شده در پروژه‌های دیگر استفاده کنند تا زمان کدنویسی پروژه‌های مشابه کمتر شود. با این‌حال، امروزه زبان‌های پیشرفته زیادی توسعه پیدا می‌کنند که دردسرهای سی‌پلاس‌پلاس را ندارند؛ پس چرا باید به سراغ سی‌پلاس‌پلاس برویم؟ سی‌پلاس‌پلاس، ویژگی‌های خاصی دارد که آن‌را جذاب می‌کند. فرآیند توسعه زنجیره‌بلوکی با چالش‌های زیادی همراه است؛ به‌طوری که باید مثل یک قلعه امن طراحی شود و مدیریت کارآمدی بر نحوه مصرف منابع داشته باشد. یک زنجیره‌بلوکی، قرار است با بسیاری از گره‌های غیرقابل‌اعتماد تعامل داشته باشد و در عین حال به همه آن‌ها خدمات سریع ارائه دهد. این فناوری برای موفقیت یک ارز دیجیتال نقش حیاتی بازی می‌کند. برای پاسخ‌گویی به این نیازهای زیربنایی و مهم و ارائه خدمات سطح بالا به کاربران، زنجیره‌بلوکی باید کنترل کاملی بر نحوه استفاده از پردازنده مرکزی و حافظه داشته باشد. سی‌پلاس‌پلاس به توسعه‌دهندگان اجازه می‌دهد بالاترین سطح از نظارت بر این منابع حیاتی را داشته باشند. 

یکی دیگر از ویژگی‌های جالب‌توجه سی‌پلاس‌پلاس، معناشناسی حرکتی (Move semantics) است. معناشناسی حرکتی راهی برای انتقال محتوا میان اشیاء به‌جای کپی کردن آن‌ها است؛ به‌طوری که تنها زمانی‌که نیازمند محتوایی هستید یک کپی از آن‌را دریافت کنید. مزیت معناشناسی حرکتی این است که می‌توانید کپی‌هایی از داده‌های خاص را تنها زمانی که به آن‌ها نیاز دارید دریافت کنید و با کاهش افزونگی کد، عملکرد را بهبود بخشید. از این رو، مدیریت کارآمد حافظه و عملکرد بالا که از ملزومات مهم شبکه‌های مبتنی بر زنجیره‌بلوکی هستند را در اختیار دارید. 

چالش دیگری که می‌توانم در رابطه با برنامه‌نویسی زنجیره‌بلوکی به آن اشاره کنم، ادغام وظایفی است که به‌خوبی موازی می‌شوند و کارهایی که موازی نیستند. اکثر زبان‌ها در یک کار مشخص تخصص دارند، با این حال، توانایی سی‌پلاس‌پلاس در مدیریت ریسمان‌ها (Threads) و پیاده‌سازی وظایف موازی و غیرموازی عالی است. سی‌پلاس‌پلاس امکانات چندریسمانی با تمرکز بر پیاده‌سازی یک مکانیزم ارتباطی موثر و  عملکرد تک‌ریسمانی بهینه ارائه می‌کند. سی‌پلاس‌پلاس بیشتر در ارزهای دیجیتال و پروژه‌های مهم زنجیره‌بلوکی مثل بیت‌کوین، ریپل، بیت‌کوین کش، لایت‌کوین، استلار و مونرو استفاده می‌شود.

2. جاوااسکریپت (JavaScript)

جاوااسکریپت یکی از محبوب‌ترین زبان‌ها برای توسعه نرم‌افزارهای کاربردی است. تقریبا همه توسعه‌دهندگان نرم‌افزار معتقد هستند که جاوااسکریپت به‌همراه کتابخانه‌ها و چارچوب‌های قدرتمند آن مثل jQuery، React، Angular و Node به موتور توسعه وب مدرن تبدیل شده است. جاوااسکریپت در تعامل با HTML و CSS، به توسعه‌دهندگان اجازه می‌دهد انعطاف‌پذیرترین برنامه‌های کاربردی را طراحی کنند. به‌طور معمول، برنامه‌نویسان از جاوا‌اسکریپت برای ساخت صفحات وب تعاملی استفاده می‌کنند. 

یکی از ویژگی‌های اصلی جاوااسکریپت که آن‌را به گزینه مناسبی برای برنامه‌نویسی زنجیره‌بلوکی تبدیل می‌کند، مدیریت برنامه‌نویسی غیرهمزمان است. با افزایش تعداد کاربران در زنجیره‌بلوکی، بخش عمده‌ای از تراکنش‌ها در زمان یکسانی انجام می‌شود؛ جاوا‌اسکریپت می‌تواند ارتباطات بین گره‌های مختلف زنجیره‌بلوکی را به‌شکل کارآمدی مدیریت کند. با این‌حال، نباید این نکته را نادیده بگیریم که توانایی جاوا‌اسکریپت در زمینه مدیریت منابع کلیدی سامانه‌ها، مثل پردازنده مرکزی به اندازه سی‌پلاس‌پلاس نیست. 

امروزه، وب‌سایت‌هایی مثل web3.js و ethereum.js به توسعه‌دهندگان کمک می‌کنند تا فرانت‌اند برنامه خود را به شبکه اتریوم و قراردادهای هوشمند متصل کنند. یکی دیگر از کاربردهای خوب جاوا‌اسکریپت در زنجیره‌بلوکی Hyperledger Fabric SDK در ارتباط با Node.js است. Node.js یکی از چارچوب‌های بزرگ حوزه وب است؛ بنابراین اگر در زمینه کار با چارچوب فوق مهارت‌های کافی دارید، جاوااسکریپت می‌تواند گزینه مناسبی برای برنامه‌نویسی زنجیره‌بلوکی باشد. 

3. پایتون (Python)

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

هرچه تلاش کنید، نمی‌توانید پایتون را از این فهرست کنار بگذارید؛ زیرا تقریباً هر اکوسیستم زنجیره‌بلوکی یک یا چند ابزار عمومی دارد که به‌زبان پایتون نوشته شده‌اند. توسعه‌دهندگان می‌توانند از پایتون برای نوشتن قراردادهای هوشمند برای Hyperledger استفاده کنند. بسیاری از پروژه‌های محبوب مثل Ethereum Pyethereum که پیاده‌سازی خاص خود را دارند از پایتون برای ساخت قراردادهای هوشمند استفاده می‌کنند. 

4. گو (Go)

زبان برنامه‌نویسی GoLang که به‌اختصار Go نامیده می‌شود، یک زبان همه‌منظوره مدرن است که توسط گوگل در سال 2007 توسعه یافت و در سال 2012 برای استفاده عموم ارائه شد. گو یک زبان برنامه‌نویسی Statically-type است که ترکیب نحوی آن شبیه به زبان سی است. این زبان سعی دارد قابلیت‌های کاربردی پایتون و جاوااسکریپت را به ‌ساده‌ترین شکل در اختیار توسعه‌دهندگان قرار دهد. از این‌رو، هنگامی‌که از گو برای کدنویسی بخش‌های مختلف یک پروژه زنجیره‌بلوکی استفاده کنید با پیچیدگی‌های مرسوم کدنویسی روبرو نمی‌شوید. 

در گو، متدهایی به‌نام Goroutines وجود دارد که اجرای چند بخش از یک برنامه را به‌صورت غیرهمزمان یا به‌صورت موازی امکان‌پذیر می‌کند که یک ویژگی مهم و کلیدی در پروژه‌های زنجیره‌بلوکی است. زبان گو از ریسمان‌ها برای مدیریت دقیق‌تر پردازه‌های در حال اجرا استفاده می‌کند؛ رویکردی که زبان‌های مطرح مثل جاوا از آن استفاده می‌کنند. فهرست طولانی از پروژه‌های مرتبط با Golang وجود دارد، اما چند مورد از آن‌ها اهمیت بیشتری نسبت به نمونه‌های مشابه دارد. Go-Ethereum یکی از مهم‌ترین پروژه‌هایی است که به زبان Golang نوشته شده است. پروژه مهم دیگر زنجیره‌بلوکی که به زبان گو  نوشته شده، Hyperledger Fabric نام دارد. این پروژه یکی از محبوب‌ترین راه‌حل‌های زنجیره‌بلوکی است که شرکت‌های بزرگ از آن استفاده می‌کنند. Loom Network که این روزها بازار داغی پیدا کرده و بازی‌های آنلاین غیرمتمرکز را هدف قرار داده و شامل Chaincode است، به ‌زبان برنامه‌نویسی گو نوشته شده است. 

5. Solidity 

Solidity یک زبان دامنه‌-خاص شی‌ءگرا و سطح بالا شبیه جاوااسکریپت است که توسط تیم اتریوم (گاوین وود، کریستین ریتویسنر و دیگران) ساخته شده است. Solidity با الهام گرفتن از زبان‌های برنامه‌نویسی کاربردی مثل سی‌پلاس‌پلاس، پایتون و جاوااسکریپت نوشته شده و برای ساخت برنامه‌های غیرمتمرکز در پلتفرم اتریوم و ماشین مجازی اتریوم (EVM) سرنام Ethereum Virtual Machine طراحی شده است. لازم به توضیح است که ماشین مجازی اتریوم، محیط زمان اجرا برای قراردادهای هوشمند ارائه می‌کند که مبتنی بر پلتفرم اتریوم هستند. Solidity یک زبان تایپ ایستا است و از وراثت، کتابخانه‌ها و انواع داده‌های پیچیده تعریف شده توسط کاربر پشتیبانی می‌کند. Solidity سازگارترین زبان برنامه‌نویسی با پلتفرم اتریوم و فناوری زنجیره‌بلوکی است.

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟