ham3dsal3hi
ham3dsal3hi
خواندن ۴ دقیقه·۷ سال پیش

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


خروجی Genesis پس از تغییر در خط 9
خروجی Genesis پس از تغییر در خط 9

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

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

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

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



منبع: codeburst
بلاک‌چینبرنامه نویسیرمزارزهاماهیت بلاکچینبیت کوین
Telegram: @ham3ds - Twitter: @ham3dsal3hi
شاید از این پست‌ها خوشتان بیاید