حقیقتا برای منی که یک برنامه نویس به حساب میآم و تقریبا کل زندگیم رو به برنامه نویسی و توسعه اپلیکیشنها اختصاص دادم، وجود هر موضوع جدیدی توی دنیای برنامه نویسی یک چالش و در نهایت یک لذت بزرگ به حساب میآد. بدون هیچگونه تعارفی باید بگم که توی یک دهه اخیر موضوعی هم جذابتر و چالش برانگیزتر از بحث بلاکچین، کریپتوکارنسی، بیتکوین و بحثهایی از این دست وجود نداشته و خب منم به عنوان یک گیک و در واقع خوره دنیای تکنولوژی خیلی دوست داشتم که از این موضوعات سر در بیارم.
اما بحث اصلی من با بیتکوین و رمز ارزها بحث ترید کردن و تجارت و سود و حرفهایی از این دست نبوده و نیست چون واقعا در ارتباط با سرمایهگذاری و سود و چیزهایی از این دست هیچگونه هیجانی ندارم و دغدغه اصلی من این بوده که بفهمم این سیستم دقیقا چطوری کار میکنه و مهمتر از همه چگونه به فردی تبدیل بشم که میتونم کمکی به توسعه چنین سیستمهایی بکنم.
اول از همه – بلاکچین چیه؟
به زبان ساده میتوان گفت که بلاکچین یک دیتابیس توزیع شده است که در بین نودهای (کلاینت) مختلف در یک شبکه کامپیوتری به اشتراک گذاشته میشود. اهمیت بالایی که بلاکچین پیدا کرده برای پیادهسازی سیستم رمز ارزها است که در بین تمامشان بیتکوین بزرگترین نقش در معرفی بلاکچین را به دنیا داشته است.
همیشه یکی از اشتباهاتی که برای افراد مبتدی پیش میاد اینه که رمز ارزها رو از بلاک چین جدا میدونن و از این موضوع مهم اطلاعی ندارند که در واقع رمزارزها (بیتکوین، اتریوم، دوج و…) در واقع براساس شبکه بلاکچین کار میکنند و بدون اون وجود خارجی ندارند.
هدف اصلی که بلاک چین دنبال میکنه دادن سطح بالایی از امنیت و ضمانت برای کاربرانی هستش که ازش استفاده میکنن. دادههایی که در این شبکه ثبت و ذخیره میشن از امنیت بالایی برخوردارند و برای تایید یا Verifey کردنشون نیاز به یک شخص ثالث وجود نخواهد داشت.
به همین دلیله که شما وقتی مقداری از پولتون رو به صورت رمز ارز برای دوستان ارسال میکنید نیازی به این ندارید که پول رو به واسطه بانک ارسال کنید.
پس در نتیجه هدف ما در این مطلب پیدا کردن راههایی برای توسعه بلاکچین و اپلیکیشنهای مبتنی بر اونه!
فرایند توسعه بلاکچین
دو دسته توسعهدهنده در زمینه برنامه نویسی بلاکچین وجود داره که عبارت هستند از: توسعهدهنده هسته یا Core Developer و توسعهدهنده اپلیکیشن یا App Developer. هر کدوم از این دو دسته هدف و موضوع جداگانهای رو بررسی میکنن که در ادامه باهاشون آشنا میشیم.
توسعه دهنده هسته یا Core Developer
توی فرایند توسعه هسته، برنامه نویس تلاش میکنه تا با استفاده از زبانهای برنامه نویسی معمولا سطح میانی یا حتی پایین، توسعه خود ساختار بلاکچین رو به عنوان یک Blockchain Client پیش ببره. برنامه نویسهای این دسته از زبانهایی مثل سی/سیپلاسپلاس، Golang و Rust در کنار دانش عمیقشون از سیستم عامل، فایل سیستم، شبکه، دیتابیس و… برای توسعه هسته بلاکچین استفاده میکنن. که من شخصا خودم سراغ این مرحله از کار نرفتم چرا که واقعا درک عمیقی از تمام مباحث بلاکچین، سیستم عامل و به صورت کلی علم کامپیوتر نیاز داره. یکی از بزرگترین توسعه دهندگانی که میشه در این زمینه هم اسمش رو بُرد و قطعا میشناسیدش ساتوشی ناکاماتو هستش که بنیانگذار بیتکوین به حساب میآد.
توسعه دهنده اپلیکیشن یا App Developer
معمولا وقتی به کسی میگن برنامه نویس بلاکچین منظورشون کسی هستش که برای ساختار و شبکه بلاکچین اپلیکیشن مینویسیه. این دستهبندی برنامه نویسهای بیشتری رو به نسبت دسته بندی قبل داره و توسعه دهندگان در آن بجای نوشتن کل ساختار بلاکچین از ابتدا، اپلیکیشنهای مبتنی بر بلاکچین را توسعه میدهند.
اما سوالی که پیش میاد این هستش که برنامه نویسی که قصد توسعه اپلیکیشن مبتنی بر بلاکچین رو داره باید از کدوم کلاینت استفاده کنه؟ اینجاست که کلاینتهای مختلف بلاکچین رو باید براساس مقیاسبندی یا بزرگیشون، هزینه تراکنشها، سرعت، امنیت بالاتر و… مقایسه بکنیم. در حال حاضر بلاکچین اتریوم بیشترین تعداد برنامه نویس و اپلیکیشن رو داره و به شما هم پیشنهاد میکنم که بهتره برای توسعه اپلیکیشنهای مبتنی بر بلاکچین سراغ اون برید.
البته بلاکچینهای دیگری هم مثل Binance smart chain و Tron blockchain وجود دارن که البته خودشون هم براساس کلاینت اتریوم کار میکنند و ممکنه براساس ویژگیهاشون کاربردهای دیگری رو هم ارائه بدن اما در هر صورت اتریوم به نظر میرسه که برنامه نویسهای بسیاری رو به سمت خودش کشونده و خیلی پرطرفداره.
ادامه این مطلب هم براساس این پیشفرض نوشته خواهد شد که شما از بلاکچین مربوط به اتریوم استفاده کنید. این موضوع رو بگم چون من دارم براساس اتریوم پیش میرم نتیجه این نمیشه که بهترین کلاینت هستش و ممکنه که موارد بهتری وجود داشته باشن اما به عنوان تجربه شخصی من باهاش خیلی حال کردم چون مستندات بسیار بزرگ و جامعی رو ارائه میده.
خب بیایید بریم سر وقت این قضیه که به عنوان برنامه نویس میتونید با استفاده از چه ابزارها و چه دانشی، سفرتون رو به سمت توسعه بلاکچین شروع بکنید.
آشنایی با بلاکچین
در مرحله اول شما باید به فهم عمیقی از چگونگی کارکرد شبکه بلاکچین برسید. این مورد هم به تنها یک توضیح ساده ختم نمیشود بلکه باید بتونید توضیح بدید که دقیقا یک شبکه غیرمتمرکز چگونه کار میکند، روشهای ارتباط برقرار کردن با آن چگونه است و اساسا فلسفه ساخت آن چیست. بعد از این موارد شما میتوانید با دید واضحتری به شبکه بلاکچین نگاه بکنید و در آخر مسیر روشنی رو برای خودتون ترسیم بکنید.
دونستن یک زبان برنامهنویسی به صورت عمیق
درسته که زبانهای برنامه نویسی بسیار زیادی در دنیا وجود دارند اما در نهایت همه اونها از یکسری قواعد مشترک پیروی میکنند. قواعد دنیای برنامه نویسی شامل دستورات پایهای، ساختمانهای داده، الگوریتم و… خواهند بود که شما در ابتدای کار نیاز دارید باهاشون آشنایی داشته باشید.
اما یک نکته مهم: هر زبان برنامه نویسی برای توسعه بلاکچین مناسب نخواهد بود. زبانهایی که میتونید در زمینه توسعه اپلیکیشنهای مبتنی بر بلاکچین ازشون استفاده کنید به ترتیب اهمیت در زیر لیست شدهاند:
· Solidity· Python· Javascript· Java· C++· Go·
البته لیست بالا ممکنه کمی دقیق نباشه چون آمار استفاده ازشون مدام تغییر میکنه اما زبان اصلی که برای توسعه بلاکچین وجود داره Solidity هستش. اما زبانهایی مثل پایتون، جاوا، Go و… با قابلیتها و ابزارهایی که دارند هم برای توسعه بلاکچین مورد استفاده قرار میگیره و من به شخصه از پایتون برای اینکار استفاده میکنم.
اما در بین تمام این زبانها همانطور که گفتم Solidity از اهمیت بالایی برخوردار هستش و برنامهنویسهای اصلی بلاکچین از این زبان استفاده میکنند. حقوق سالیانه توسعه دهندگان این زبان در کشوری مانند آمریکا بین ۱۵۰ هزار تا ۲۵۰ هزار دلار هستش که رقم بسیار قابل توجهی بین دیگر حوزه های توسعه و برنامه نویسی به حساب میآد.
برنامهنویسی Smart contract یا قرارداد هوشمند و ماشین مجازی اتریوم
مهمترین بخش توسعه اپلیکیشنهای بلاکچین برنامهنویسی Smart Contract به حساب میاد که ترجمهش به فارسی میشه قرارداد هوشمند. در واقع بخش بزرگی از کاری که توسعه دهندگان Solidity انجام میدن توسعه همین موضوعه. اما قرارداد هوشمند چیه؟
قرارداد هوشمند برنامهای هستش که براساس شبکه بلاکچین کار میکنه و هدفش تشکیل یکسری قواعد بین افراد مختلف برای دریافت یک مقدار پول هستش. به صورت کلیتر شما میآید یکسری قواعد رو در نظر میگیرید که اگر اون قواعد اجرایی شدند افراد شریک در اون قرارداد میتونن سهم ببرند.
به زبان برنامه نویسی چیزی شبیه به یک دستور شرطی هستش که در صورت اتفاق افتادن اون شرط یا در واقع True شدنش برنامه شما کاری رو انجام میده و در صورتی که شرط انجام نشه اون قرارداد هوشمند کارش رو انجام نخواهد داد.
خب یکی از وظایف شما به عنوان توسعه دهنده بلاکچین ایجاد چنین قراردادهای هوشمندی خواهد بود که زبان برنامه نویسی Solidity در این زمینه بیشترین کمک رو بهتون میکنه.
اتریوم به عنوان یک کلاینت بلاکچین اولین رمز ارزی بود که ماشین مجازی خودش رو معرفی کرد. در واقع ماشین مجازی وظیفه پردازشهای مربوط به یک قرارداد هوشمند رو به عهده داره و بین خود قرار داد هوشمند و دستگاهی که اتریوم روی اون اجرا میشه به صورت یک لایه انتزاعی قرار میگیره.
برای تبدیل شدن به یک توسعه دهنده بلاکچین حتما نیاز دارید که با ساختار ماشین مجازی اتریوم آشنایی پیدا بکنید.
وظایف توسعه دهنده بلاکچین چیست؟
خب وقتی که به عنوان یک توسعه دهنده بلاکچین استخدام شدیم چه کارهایی رو قراره انجام بدیم؟ در ادامه ما لیستی از کارهایی که احتمال داره برای اونها استخدام بشید و بررسی میکنیم.
مورد اول: توسعه قرارداد هوشمند: مهمترین وظیفهای که یک توسعه دهنده بلاکچین خواهد داشت توسعه قراردادهای هوشمندی خواهد بود که در ارتباط با آنها توضیحاتی رو دادم. برای این موضوع بهترین روش استفاده از زبان برنامهنویسی Solidity خواهد بود.
مورد دوم: توسعه سمت سرور: وبسایتهایی که براساس شبکه بلاکچین ایجاد میشوند مهمترین موضوعی بودند که من رو به بلاکچین علاقهمند کرد. چون تخصص خود بنده توسعه سمت سرور بود به همین دلیل تصمیم گرفتم تا در این حوزه بلاکچین بیشتر کار بکنم. پایتون رو بیشتر برای این دوست دارم چون توی این زمینه تقریبا بی رقیبترین ابزارها رو ارائه میده.
مورد سوم: توسعه اپلیکیشن موبایل: برای افرادی که علاقهمند به توسعه اپلیکیشنهای موبایلی هستند این مورد مطمئنا جذاب خواهد بود. توسعه اپلیکیشن مبتنی بر شبکه بلاکچین با به کار بردن زبانهای برنامه نویسی مثل جاوا یا کاتلین میتونه یک وظیفه و در واقع چالش جدی و خیلی جذاب باشه.
بیشتر صرافیهای معتبر در دنیا برای توسعه اپلیکیشنهاشون در لایههای مختلف مبتنی بر شبکه بلاکچین در این زمینهها فعالیت دارند و توسعهدهندگان این موارد رو استخدام میکنند. پس بهتره که با یادگیری این موارد رزومه کاریتون رو تکنیکال تر و جذابتر بکنید.
برای مشاهده تعدادی از اپلیکیشنهای محبوبی که براساس شبکه بلاکچین ایجاد شدند میتونید وارد این لینک بشید و چند مورد از اونها همراه با توضیحات مربوط به شکل کارکردشون رو مشاهده بکنید.
دورههای آموزشی بسیار خوب در این زمینه
تقریبا برای هر زبان برنامه نویسی که شما در حال استفاده از اون هستید فریمورکها و کتابخونههای مختلفی توسعه پیدا کردند که ازشون میشه در فرایند توسعه اپلیکیشنهای مبتنی بر بلاکچین استفاده کرد. به همین دلیل نمیتونم تمام دورههای آموزشی رو اینجا بذارم و مواردی رو به شما معرفی میکنم که جامع هستند و افراد بسیار زیادی ازشون استفاده کردن تا به درک درستی از چیستی بلاکچین و روش توسعه اون برسند.
Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial
جامعترین دوره آموزشی که میشه برای بحث بلاکچین و توسعه اپلیکیشن با این شبکه پیدا کرد مطمئنا این دوره خواهد بود. توی این دوره Solidity رو به صورت صفر تا صد یاد میگیرید و همچنین در جاهایی که نیاز باشه سراغ زبان برنامهنویسی پایتون خواهید رفت. این دوره ۱۶ ساعته و واقعا بعد از مشاهدش کلا درکتون از دنیای بلاکچین تغییر میکنه.
یک دوره استاندارد از طرف آکادمی Udacity که براساس سرفصلهای معتبر ضبط شده و فعلا در مرحله پیش ثبت نام قرار گرفته که خودم ثبت نام کردم و منتظرم تا محتوای آموزشی و تستها قرار بگیره. با تجربهای که از Udacity دارم مطمئنا دوره جذابی خواهد بود.
Build Your First Blockchain App Using Ethereum Smart Contracts and Solidity
اگه دنبال یک دوره سریع و پروژه محور هستید پس این آموزش رو از دست ندید چرا که قراره کلی چیزها راجع به فرایند توسعه اپلیکیشن با بلاکچین اتریوم یاد بگیرید.
در پایان
بدون شک آینده بسیار هیجان برانگیزی در انتظار بشریت است و تمام این موارد نیز به لطف بلاکچین اتفاق خواهد افتاد. در جدیدترین تلاشهایی که البته تا حدی نیز عملی شده است ما مبحث Web 3 را داریم که ممکن است آینده را متحول کند و شکل تعامل ما با دنیای اینترنت را تغییر دهد. این تنها بخشی از ماجراست. فناوریهایی که براساس بلاکچین کار میکنند شکل تازهای داشته و مطمئنا آینده پُر از آنها خواهد بود.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید