ارز دیجیتال > استخراج > آموزش > چرا برنامه نویسان باید با بلاکچِین آشنایی کامل داشته باشند؟
آموزش آموزش بلاکچین

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

چرا برنامه نویسان باید با بلاکچِین آشنایی کامل داشته باشند؟
چرا برنامه نویسان باید با بلاکچِین آشنایی کامل داشته باشند؟Reviewed by حامد صالحی on Feb 9Rating: 5.0

شاید شما هم شانس تبدیل صدها دلار به میلیون ها دلار با استفاده از بیت کوین را از دست داده باشید. اما نگران نباشید، تا امروز تقریباً هزار رمزارز دیگر با پتانسیل واقعی، به وجود آمده اند. هرچند، شما به عنوان یک توسعه دهنده نباید فقط به سرمایه گذاری بر روی رمزارزها  تمرکز داشته باشید. مهم تر از آن، بلاکچِین است، نرم افزاری که به رمزارزها  و قراردادهای هوشمند، قدرت می بخشد.

به بیان ساده، بلاکچِین(BlockChain) چیست؟

بلاکچِین، یک دفترکل غیرمتمرکز و توزیع شده از تراکنش ها(بلاک ها) است که هر بلاک، به بلاک قبلی متصل است. به همین دلیل این دفترکل، بلاکچِین نامیده شده که به اتصال یا زنجیره ی بلاک ها، اشاره دارد.

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

اقتصاد تراکنش های متمرکز

این مقاله، صحبت های بتینا واربرگ (Bettina Warburg) در یکی از سخنرانی های TED است که در ارتباط با ماهیت بلاکچِین ارائه شده و مرور مختصری بر نقش عدم قطعیت هنگام انجام تراکنش ها دارد.

برای مثال، هنگام خرید یک محصول، هم خریدار و هم فروشنده باید اطمینان حاصل کنند که:

  • طرف مقابل، همان فردی است که ادعا می کند
  • محصول دقیقاً آنچه در تبلیغات بوده است، می باشد (قلابی نباشد)
  • خریدار هزینه ی محصول را به فروشنده می دهد
  • فروشنده محصول را تحویل خریدار می دهد و مرجعی وجود دارد تا در صورتی که هر یک از شروط تراکنش برآورده نشد، بتوان به آن رجوع کرد

در حال حاضر، اقتصاد ما بر مؤسسات و نهادهایی نظیر بانک ها، دولت ها و شرکت ها، به عنوان مراجع مرکزی برای کاهش این شبهات (عدم قطعیت) در تراکنش ها متکی می باشد.

اینترنت متمرکز

مدل فعلی اینترنت ما نیز یک سیستم متمرکز است
اطلاعات بر روی وب سرورها ذخیره می شوند و هنگامی که ما می خواهیم اطلاعاتی را از اینترنت دریافت کنیم، مانند بازدید از یک وب سایت یا دانلود یک فایل، مرورگر ما، درخواستی به وب سروری که میزبان (host) این اطلاعات است ارسال می کند و وب سرور با فراهم آوردن اطلاعات درخواستی به آن درخواست پاسخ می دهد.
اینترنت متمرکز، یک سیستم تحمل پذیر در برابر خطا نیست: اگر یک سِرور از کار افتد(down)، کل سیستم تحت تأثیر قرار می گیرد.

به بیان فنی، بلاکچِین چیست؟

بلاکچِین ، یک پایگاه داده ی امنِ رمزنگاری شده است که حاوی تاریخچه ی تراکنش ها است که غیرقابل تغییر می باشد و هر تراکنش حاوی یک امضای دیجیتالی(digital signature) است. امضای دیجیتالیِ یک بلاک با استفاده از تابع هش(hash function) تولید می شود که بلاک جدید را به بلاک قبلی متصل می کند.
در اصل، بلاکچِین ، یک دفترکل بزرگ از تاریخچه ی تراکنش ها است.

بلاکچِین از دیدگاه برنامه نویسان

قطعه کد زیر مربوط به آموزشی است که در مورد چگونگی کدنویسی یک بلاکچِین ساده در جاوا توسط ایوان تحت عنوان Ivan on Tech در یوتیوب ارائه شده است.
یک بلاک، سه فیلد را ذخیره می کند:

  • مقدار هش بلاک قبلی
  • آرایه ای از رشته ها حاوی فهرست تراکنش ها
  • و مقدار هشِ خودش

یک بلاک جدید با قرار دادن مقدار هش بلاک قبلی و آرایه ی تراکنش ها در سازنده ی بلاک، ایجاد می شود. مقدار هش این بلاک نیز با قرار دادن مقدار هش قبلی و هش آرایه ی تراکنش ها در تابع هش، تولید می شود. بلاکچِین از زمانی که ساخته شود دیگر تغییرناپذیر است، فیلدهای آن به صورت محفوظی در بلاک قرار داده شده و فقط از طریق متدهای getter قابل دسترسی هستند.
یک بلاکچِین ، به عنوان لیست آرایه ای (ArrayList) بلاک ها نمایش داده شده است. اولین بلاک در بلاکچِین ، بلاک ریشه (genesis block) نامیده می شود. برای ساخت بلاک genesis، به آسانی مقدار صفر را به عنوان مقدار هش قبلی به علاوه ی آرایه ی تراکنش های مربوطه، در نظر می گیریم. پس از ساخت بلاک ریشه، آن را به بلاکچِین اضافه می کنیم. سپس، دومین بلاک با استفاده از مقدار هش بلاک ریشه و آرایه ی تراکنش ساخته می شود.

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

تست برنامه ی نوشته شده به زبان جاوا

با اجرای این برنامه، خروجی زیر را تولید می شود:

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

تست برنامه نوشته شده به زبان جاوا

تصور بر این است که یک تراکنش از زمانی که ایجاد شد، نمی تواند تغییر داده شود. حتی تغییر یک کاراکتر، مانند تغییرgenesis transaction (خط ۹ قطعه کد بالا) از ۱۰ سکه به ۱۰۰ سکه (که فقط یک صفر اضافه شده) سبب می شود خروجی کاملاً متفاوتی از تابع هش تولید شود.

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

تغییر در خط ۹ تست جاوا

 

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

خروجیgenesis  پس از تغییر در خط ۹

تمرکززدایی از طریق بلاکچِین

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

شرکت های بزرگ درگیر بلاکچِین شده اند

فناوری بلاکچِین ، پتانسیل حل مشکلات اقتصادی مبادلات را دارد. بنابراین جای تعجب نیست که بلاکچِین توجه بانک ها و شرکت های بزرگ را به خود جلب کرده است. مایکروسافت یکی از چندین شرکتی است که در طرح DIF شرکت کرده است (DIF از چند شرکت در صنایع مختلف با تمرکز بر ایجاد یک ساختار غیر متمرکز جهانی برای داده ها تشکیل شده است که می تواند توسط مؤسسات و افراد مختلف برای تأیید هویت اشخاص مورد استفاده قرار گیرد). مأموریت این پروژه، حل مشکلات مربوط به تأیید هویت آنلاین با استفاده از فناوری بلاکچِین است. این پروژه، تنها یکی از نمونه های بی شمار است. در حال حاضر، بسیاری از شرکت ها نظیر IBM و مایکروسافت، به دنبال استخدام توسعه دهندگان بلاکچِین هستند. این مقاله را هم مطالعه کنید تا فهرست دیگر شرکت هایی که در فناوری بلاک چین مشارکت دارند را مشاهده نمایید.

 

 

نظر شما در اینباره چیست؟ تکنولوژی بلاکچین چه فرصت هایی را برای ایران خواهد داشت؟ آیا تعدادی از مهمترین معضلات حال حاضر ایران توسط این تکنولوژی به سمت بهبود خواهد رفت؟ سرعت حاکمیت و شرکت های خصوصی در این زمینه چه مقدار تعیین کننده خواهد بود؟ نظرات و ایده های خود را با ما در میان بگذارید.

 

 

منبع: codeburst
print

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

درباره نویسنده

حامد صالحی

حامد صالحی

کنجکاو، دانش جو و علاقمند به فن آوری و ایده های آزادی خواهانه
V.For.V

4
دیدگاه کابران

avatar
3 Comment threads
1 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
حامد صالحیعلیKuroky Recent comment authors
  اشتراک  
جدید ترین قدیمی ترین بیشترین امتیاز
اطلاع از
Kuroky
Kuroky

جالب بود … لایک

Kuroky
Kuroky

جالب بود لایک …

علی
علی

سلام میشه یه مقاله درباره برنامه نویسی بلاکچین بزارین