با هایپر لجر کامپوزر در عرض ده دقیقه یک بلاک چین اثبات مفهوم (PoC) بسازید
اکثر مردم بلاک چین را از طریق رمز ارزهایی مثل بیت کوین میشناسند، سیستم پرداخت همتا به همتایی که تنظیمنشده و در برابر کنترل مرکزی مقاوم است. در سالهای اخیر، بلاک چین، یا فناوری دفترکل توزیع شده که زیربنای بیت کوین است، در کسب و کارهای مختلفی پذیرفته شده و به جز رمز ارزها، در بسیاری از موارد دیگر نیز به کار رفته است. در این مقاله، توضیح میدهم که کسب و کارهای مختلف از بهکارگیری بلاک چین در موسسات خود چه انتظاری دارند، و هایپر لجر کامپوزر، چگونه در ساخت آسان بلاک چینهای کامپلینگ برای سازمانها به توسعهدهندگان نرمافزار کمک میکند.
بلاک چین، یا فناوری دفترکل توزیع شده (DLT) که زیربنای بیت کوین است، در کسب و کارهای مختلفی پذیرفته شده و به جز رمز ارزها، در بسیاری از موارد دیگر نیز به کار رفته است. برای ترسیم داراییها، اعضاء و تراکنشهای هر بلاک چین در وقایع فنی سیستمهای بلاک چینی، با چالشهایی روبهرو هستیم. هایپر لجر کامپوزر (Hyperledger Composer)، یکی از پروژههای هایپر لجر که توسط بنیاد لینوکس (Linux ) اجرا میشود، میخواهد این مشکل را حل کند. برای نشان دادن نحوه بکار بردن هایپر لجر کامپوزر، مثالی از مزایده یک ماشین را در یک بلاک چین میسازیم.
تعهدات بلاک چین به کسب و کارها، بسیار متفاوت از الزامات عمومی است: هویت شرکتکنندگان باید مشخص باشد؛ بلاک چینهای نیازمند مجوز (permissioned) به اثبات کار نیاز ندارند؛ و اهداف بلاک چینهای نیازمند مجوز نیز متفاوت است. کاربردهای سازمانی بلاک چین به شکل داراییها، اعضاء و تراکنشهایی که در شبکه کسب و کار به اشتراک گذاشته میشوند، نشان داده میشود. روی هم رفته، این مولفهها در سیستمهای پردازش توزیع شدهای به نام فابریک، عمل میکنند و این سیستمها بر عملکرد بلاک چین نظارت میکنند. قراردادهای هوشمند، که قوانین حاکم بر کسب و کار را بر روی تراکنشها پیادهسازی میکنند، فرمانهای پردازشی موثر و ذخیرهشدهای هستند که در نودهای مختلف شبکه اجرا میشوند و خروجی آنها از طریق فرآیند اجماع، مورد تایید همهی اعضای شبکه قرار گرفته است.
رشد بلاک چین در خدمت مشاغل
بیت کوین اولین کاربرد اصلی بلاک چین است که در سال ۲۰۰۸، در وایت پیپر ساتوشی ناکاموتو معرفی شد. از آن زمان به بعد، استفاده از بلاک چین به طور چشمگیری افزایش پیدا کرد و بیشتر این کاربردها به موضوع دفتر کلهای توزیع شده اختصاص یافته بود. در این مقاله میخواهم این دفتر کلها را معرفی کنم.
کاربردهای بلاک چین در هر دو زمینهی شبکههای عمومی و شبکههای نیازمند مجوز (کسب و کار) محبوبیت پیدا کرده است. با این که هر دو چارچوب کاری فواید ارزشمندی دارند، تعهدات بلاک چین به کسب و کارها، به ۳ دلیل عمده، با الزامات عمومی متفاوت است:
۱) کسب و کارها میخواهند در فضای تنظیم مقررات کار کنند و الزاماتی مانند ضد پولشویی بودن (AML) و شناسایی مشتری (KYC) برای شناسایی هویت اعضاء و طرفین تراکنشها، مهم هستند. بیت کوین به ناشناس بودن (یا شبه ناشناس) معروف است؛ یعنی شما میتوانید تراکنشها را ببینید ولی از طرفین آن تراکنش اطلاعی نخواهید داشت. در حالی که در کسب و کارها دقیقا به چیزی برعکس این موضوع نیاز داریم: امنیت، چیزی که به کاربران کمک کند هویت اعضاء خود در شبکه را بشناسند و لزومی برای ردیابی تراکنشها نیست.
۲) در بلاک چینهای شبه ناشناس، جلوگیری از ورود اعضاء غیر قابل اعتماد به شبکه، امری ضروری است. امروز، بیت کوین و دیگر بلاک چینها از مفهومی به نام “اثبات کار” استفاده میکنند. این مفهوم با اضافه کردن هزینهی مجازی برای تراکنشها، که همان مصرف برق است، محرکهای رفتارهای فریبآمیز را حذف کند. ماینرها با پاسخ به مسائل پیچیده رمزنگاری شده، به تراکنشها اعتبار میدهند. این روش شاید روش هوشمندانهای برای جلب اعتماد به نظر برسد ولی در عمل بسیار ناکارآمد است. در مقابل، بلاک چینهای نیازمند مجوز به هیچ یک از اینها نیاز ندارند زیرا اعضای شناختهشده و مورد اعتمادی دارند. اگر عضوی از شبکه کسب و کار تراکنش نامعتبری را معتبر اعلام کند، از لحاظ مالی یا حیثیتی به خطر میافتد.
۳) اهداف بلاک چینهای نیازمند مجوز نیز متفاوت است. بلاک چینهای عمومی مثل بیت کوین، از ابتدا برای پرداختهای همتا به همتا ساخته شده اند. ولی کسب و کارها به دفتر کلهایی که بتوانند با آنها هر چیز باارزشی را تعریف کنند نیاز دارند. شبکههای کسب و کار به سیستمهای کوچکتر و بسته نیاز دارند (به عنوان مثال به حجم شبکه زنجیره تامین نگاه کنید). این موضوع با بلاک چینهای غیر شغلی متفاوت است؛ آنها برای هر کسی که یک کامپیوتر داشته باشد در دسترس هستند.
این الزامات را میتوان با نگاه به عملکرد شبکههای کسب و کاری ترسیم کرد. ثروت از طریق کالاها و خدماتی که در یک شبکهی کسب و کاری ارائه میشود، تولید میشود. مبادلات این کالاها و خدمات به شکل تراکنشها بر روی دفتر کلها ثبت میشود. دفتر کلها سیستمهای ثبت بسیاری مفیدی هستند، آنها همهی ورودیها و خروجیهای یک کسب و کار و متعاقبا، وضعیت مالی خود را توصیف میکنند. دفتر کلها در اشکال مختلفی ساخته شده اند و قدمت آنها به قرن ۱۵ برمیگردد.
بلاک چین میخواهد شکل اصلی کسب و کارها را مدلسازی کند. امروزه، هر موسسهای دفتر کل و قوانین کسب و کار خودش را دارد و آن را به ارائهی کالاها و خدمات خود اختصاص داده است. با کمک بلاک چین، هم دفتر کلها و هم قوانین کسب و کار در اعضای شبکه توزیع میشود و هزینه و زحمت آن بین همه پخش میشود.
داراییها، اعضاء و تراکنشها
کاربردهای سازمانی بلاک چین به شکل داراییها، اعضاء و تراکنشهایی که در شبکهی کسب و کار به اشتراک گذاشته میشود، تعریف میشوند:
– دارایی، هر چیز باارزش، قابل انتقال یا اشتراکگذاری را شامل میشود؛ از داراییهای لمسشدنی مثل ماشین، خانه یا الماس، تا داراییهای لمسنشدنی مثل اوراق بهادار، مایملک ذهنی یا دادههای مرجع. پول نیز شکلی از دارایی است.
– اعضاء، کنشگرانی در شبکه کسب و کار هستند که باید اطلاعات تراکنشها را به اشتراک بگذارند. معمولا اعضاء شبکه، کسب و کارها هستند ولی میتوانند مردم، تنظیمگران یا دیگر سهامداران هم باشند.
– تراکنشها تعیین میکنند که چه بر سر داراییهای موجود در شبکه میآید. روی هم رفته، این مولفهها در سیستمهای پردازش توزیع شدهای که به آنها فابریک میگویند و بر نحوهی کار بلاک چین نظارت میکنند، کار میکنند. قراردادهای هوشمند، که قوانین حاکم بر کسب و کار را بر روی تراکنشها پیادهسازی میکنند، فرمانهای پردازشی موثر و ذخیرهشدهای هستند که در نودهای مختلف شبکه اجرا میشوند و خروجی آنها از طریق فرآیند اجماع، مورد تایید همهی اعضای شبکه قرار گرفته است.
برای ترسیم داراییها، اعضاء و تراکنشهای هر بلاک چین در وقایع فنی سیستمهای بلاک چینی، با چالشهایی روبهرو هستیم. مثل هزینهی بالای پیادهسازی بلاک چین و زحمت زیادی که نیاز است تا از خدمات بلاک چین (اشیاء و قراردادهای هوشمند در کسب و کار) به بیشترین میزان بهرهبرداری شود.
هایپر لجر کامپوزر (Hyperledger Composer)
هایپر لجر کامپوزر، یکی از پروژههای هایپر لجر که در بنیاد لینوکس اجرا میشود، میخواهد این مشکل را حل کند. به کمک این پروژه، توسعهدهندگان بلاک چین، داراییها، اعضاء و تراکنشهای کسب و کار را مدلسازی میکنند و این مدلها را در بلاک چینهای مختلف به کار میگیرند. هایپر لجر در دسامبر ۲۰۱۵ با هدف پیشبرد فناوریهای متنباز بلاک چین سازمانی در میان صنایع، راهاندازی شد. این پروژه بیشترین رشد را در تاریخ بنیاد لینوکس داشته و هم اکنون، بسیاری از فناوریها، از چارچوبهای کاری بلاک چین مانند هایپر لجر فابریک و هایپر لجر Sawtooth، تا ابزارهایی برای خدمات پایش، شناسایی، توسعه و اجرا را در بر گرفته است. هایپر لجر کامپوزر یکی از این ابزارها است.
هایپر لجر کامپوزر کاملا متنباز است و مدل حکمرانی بازی هم دارد که به هر کسی اجازه میدهد تا در جهت آن تغییر ایجاد کند.
هایپر لجر کامپوزر یک زبان سادهی مخصوص-به-محدوده برای مدلسازی داراییها، اعضاء و تراکنشها ارائه میدهد و همچنین با معرفی جاوا اسکریپت، به توسعهدهندگان این امکان را میدهد که روشهایی برای پیادهسازی منطق تراکنشها بنویسند. این فایلها در هر محیطی قابل نگارش هستند یک “Playground” تحت وب که به توسعه، بستهبندی، اجرا و آزمایش این پروژهها و دستورهای command-line کمک میکند. این اپلیکیشنها یا باید روی نمونههای هایپر لجر فابریک اجرا شوند یا باید در مرورگر وب شبیهسازی شوند.
هایپر لجر کامپوزر همچنین توانایی ساخت skeleton command-line یا اپلیکیشنهای Angular2 و Loopback برای حمایت از تعاملات RESTful را دارد و با این امکان، بلاک چینها را به سیستم ثبت فعلی، یا به میانافزارهایی مانند Node.RED یا IBM Integration Bus متصل میکند.
طراحی یک مزایده بلاک چینی ماشین
میخواهیم با نمونهای از مزایدهی ماشین در یک بلاک چین، تواناییهای هایپر لجر کامپوزر را نشان دهیم. مزایدهی ماشین کاربرد مناسبی برای بلاک چین است زیرا در آن، یک شبکه کسب و کار مشخص، یک نوع دارایی باارزش و یک درخواست برای اعتمادی انکارناپذیر وجود دارد، برای رفع ابهام از اینکه (الف) چه کسی صاحب ماشین در زمانی مشخص است و (ب) گردش پول اعضاء به چه صورت است. نحوهی گسترش چنین کاربردی و پوششدهی آن از داراییهای باارزش نیز به آسانی قابل مشاهده است.
برای شروع، داراییها، اعضاء و تراکنشهایی از این شبکه کسب و کار را در نظر بگیرید:
– داراییها: دو نوع دارایی داریم: خودرو، که یک نمود دیجیتال از دستگاهی است که مالکیت آن مد نظر ما است، و یک فهرست که ماشینِ به فروش گذاشته شده و تمام پیشنهاداتی را که دریافت کرده است، نشان میدهد.
– اعضاء: اعضاء مردم یا نهادهایی هستند که مالک یا خریدار خودرو اند، و یک گردش حساب دارند. مزایدهگر هم میتواند یکی از اعضاء باشد زیرا میتواند قیمت را روی هر آیتم ببندد. این شبکه میتواند آن قدر گسترده شود که بیمهگران و یا تنظیمگران هم بتوانند در آن عضو شوند.
– تراکنشها: ۲ نوع تراکنش مهم داریم: یکی پیشنهاد قیمت روی یک خودرو و دیگری بستن قیمت روی آن.
شکل ۱- داراییها، اعضاء و تراکنشها برای مزایده ماشین
به این ترتیب مولفههای بلاک چین تعریف میشود. برای آزمایش بلاک چینمان، میتوانیم مثالهایی از این انواع را که در بایگانی ذخیره میشوند، بسازیم و این یکی دیگر از مفاهیمی است که هایپر لجر کامپوزر آن را در بر میگیرد. خودرو، فهرستبندی خودرو، مزایدهگر و اعضای مزایده را در بایگانی ثبت میکنیم و هر یک از دو نوع تراکنش مورد نظر را تایید میکنیم. همهی مثالها و دادههای تراکنش در یک بلاک چین ذخیره و قابل دسترسی میشوند. بلاک چین، دادهها را پخش میکند و به تایید اعضای شبکه میرساند. توسعه دهنده راهکار می تواند با طراحی لیست های نظارت بر دسترسی، تعیین کند که کدام عضو به چه دارایی دسترسی دارد.
مدلسازی مزایده بلاک چینی ماشین
همه جنبههای هایپر لجر کامپوزر میتواند دانلود و اجرا شود و علاوه بر این، یک نسخه از Playground آنلاین نیز هست که میتوانید بدون نصب کردن، از آن بهره ببرید. برای شروع کار، دستورالعملهای سریع را در صفحه هایپر لجر کامپوزر بخوانید. برای Playground آنلاین، از صفحه Hyperledger Composer Playground دیدن کنید.
یک Playground را برای بار اول شروع کنید، صفحهی خوشآمدگویی را کنار بزنید؛ با صفحهای مشابه صفحهی قبل روبهرو خواهید شد (مانند همه پروژههای در حال، این هم ممکن است تغییر کند!).
بالا سمت چپ، فایلی که پروژه بلاک چین شما را ساخته را مشاهده میکنید.
– یک فایل About: یک فایل readme به فرمت markdown؛ محتوای این فایل به طور پیشفرض نمایش داده میشود.
– یک فایل Model: توضیحاتی در مورد داراییها، اعضاء و تراکنشهای موجود در این پروژه
– یک فایل Script: پیادهسازی منطق تراکنشها به کمک جاوا اسکریپت
– یک فایل Access Control: این فایل مشخص میکند که هر یک از اعضاء کدام داراییها را میتوانند ببینند
– یک دکمهی Add: در صورت لزوم فایلهای مختلف را به پروژه اضافه میکند
– یک دکمهی Deploy: این دکمه، انجام هر ویرایشی را بر روی بلاک چین پروژهیتان (یا شبیهسازی آن) امکانپذیر میکند.
– قابلیت Import برای جابهجایی محتوای Playground ها با یک دیگر
– قابلیت Export یک راهکار را در فایلی ذخیره میکند تا بتوان آن را به محیطهای دیگر فرستاد
در منطقهی اصلی صفحه نمایشگر، میتوانید فایلی که انتخاب کرده اید را مشاهده یا ویرایش کنید. با انتخاب هر یک از تبهای Define/Test در بالای صفحه، امکان آزمایش و یا توسعهی فایل را خواهید داشت. در نهایت، سمت راست و بالای صفحه، میتوانید هویت یک کاربر در یک بلاک چین دیگر را فرض کنید، آن را به مثال بلاک چین زنده خود متصل کنید یا در مرورگر وب آن را شبیهسازی کنید. در حال حاضر، Playground آنلاین تنها در حالت شبیهسازی کار میکند.
فایلهای موجود در پنجرهی Playground را با فایلهای پیادهسازی مزایدهی ماشین خود جابهجا میکنیم. از یک نمونهی پیشساخته استفاده میکنیم. برای توسعهی شبکهی خودتان هم بهتر است از نمونههای ساده شروع کنید.
دکمهی ‘Import/Replace’ را بزنید. ابتدا از شما میخواهند به GitHub وارد شوید و نمونههای موجود را از مرکز آنلاین، به طور مستقیم دانلود کنید. در صورت نیاز، میتوانید شبکههایتان را بازنویسی کنید. ‘carauction-network’ را انتخاب کنید و با کلیک روی Deploy، فایلهای موجود در Playground را با فایلهای پروژهی مزایدهی ماشین جایگزین کنید.
با انتخاب مدل فایل، توضیحاتی در مورد داراییها، اعضاء و تراکنشها مشاهده میکنید. به طور مشابه، اسکریپت فایلها هم پیادهسازی هر دو نوع تراکنش در جاوا اسکریپت را در بر میگیرد.
از همه مهمتر این است که در تنها ۵۰ خط از یک زبان خاص دامنهی ساده و ۱۰۰ خط از جاوا اسکریپت، میتوانیم همهی المانهای مورد نیاز برای پیادهسازی یک راهکار بلاک چینی را تعریف کنیم.
آزمایش مزایده ماشین بلاک چینی
بر روی تب Test در بالای Playground کلیک کنید تا بتوانید با بایگانیهای دارایی و اعضاء تعامل و تراکنشها را در بلاک چین وارد کنید. هر چیزی در این تب، به شکل پویایی از مدل فایل استخراج شده است.
در بایگانی ‘Member’ چند تایی عضو بسازید: یک بالانس اولیه (که اینجا به شکل یک عدد صحیح ساده نشان داده میشود)، یک آدرس ایمیل که به آنها هویت یکتایی ببخشد، اسم کوچک و اسم فامیل برایشان بسازید.
در بایگانی ‘Vehicle’ یک خودرو بسازید: شماره شناسایی خودرو (vin) یک شناسندهی رشتهای یکتا است و ‘initial owner’ باید آدرس ایمیل یکی از اعضا باشد زیرا مدل، آدرس ایمیل را به عنوان شناسندهی یکتا میشناسد.
در نهایت یک Vehicle Listing بسازید: یک ID فهرست یکتا به آن بدهید، قیمت و توضیحات را مشخص کنید. حالت باید “FOR_SALE” باشد و من پیشنهاد میکنم که با دستور (“offers” : []) آرایهی پیشنهادات را پاک کنید. Vehicle Field باید رشتهی vin خودرویی که ساخته اید را در بر بگیرد، زیرا مدل vin field را به عنوان شناسندهی یکتا میشناسد.
با پر شدن بایگانیها، میتوانید تراکنشها را تایید کنید و پیشنهادات خود در مورد خودرو را به آن اضافه کنید. روی ‘Submit transaction’ کلیک کرده، نوع تراکنش را در ‘Offers’ تایپ کنید و بخشهای قیمت پیشنهادی، فهرستبندی (همان فهرست IDهایی که در مراحل قبل ساخته بودید) و عضو (آدرس ایمیل عضوی که در پیشنهاد قید شده است) را پر کنید. به این ترتیب، جاوا اسکریپتی که به تراکنش Offer مرتبط است اجرا میشود و به موجب آن، به آرایهی پیشنهادهایِ فهرستبندی مربوطه، پیشنهادهای جدید اضافه میشود.
به محض این که چند پیشنهاد جدید را اضافه کردید، سعی کنید قیمت مزایده را ببندید. تراکنش دیگری را ارائه دهید ولی این بار نوع آن را ‘CloseBidding’ انتخاب کنید؛ باید ID فهرستبندی یکتا را مشخص کنید. ارائهی این تراکنش، جاوا اسکریپت مربوط به تراکنش CloseBidding را اجرا میکند. این تراکنش به دنبال یافتن بالاترین قیمت در مزایده است، مقدار برنده را به حساب فروشنده اضافه میکند، از حساب خریدار کم میکند و مالکیت خودرو را منتقل میکند. اگر به بایگانیهای Vehicle و Member مراجعه کنید، میبینید که همهی این فعلوانفعالات رخ داده اند.
گامهای بعدی
با برداشتن گامهای قبل، میبینید که با صرف زمان کوتاه و تعداد کمی کد، میتوانید یک کامپلینگ بلاک چین بسازید. اگر بخواهید مفاهیمی که اینجا ارائه شد را بر روی پروژههای بلاک چینی خودتان اعمال کنید، تقریبا همین کارها را باید انجام دهید. باید ابتدا یک چالش واقعی کسب و کار که بلاک چین بتواند آن را حل کند داشته باشید: داشتن یک شبکهی کسب و کار با اعتماد متقابل بین اعضاء، یک امر ضروری است. سپس باید داراییها، تراکنشها و اعضاء را تعریف کنید. سعی کنید آنها را در هایپر لجر کامپوزر مدلسازی کنید، آزمایش کنید و تکرار کنید.
البته، ارزش واقعی در کاربرد نهایی برای کاربر است، که میتواند تراکنشهای کاری واقعی را تایید و یا درخواست کند. برای شروع به نگارش یکی از اینها، به بخش تولیدکنندهی اپلیکیشنهای آغازین در هایپر لجر کامپوزر مراجعه کنید. این بخش شبکه کسب و کار را آرشیو میکند و یک Angular2 یا اپلیکیشن command-line میسازد. این بخش در نهایت به هیچ وجه یک اپلیکیشن کامل به شما نمیدهد ولی به جای تمرکز بر تعاملات بلاک چینی، فرصتی برای توسعهی منطق اپلیکیشن نهایی به شما میدهد.
فایدهی هایپر لجر کامپوزر تنها افزایش سرعت تولید راهکارهای بلاک چینی نیست، بلکه این است که به شما اجازه را میدهد که به سرعت، تعهدات اضافی را پیاده کنید و با ارائهی واژگان جدید، به راحتی میتوان به همه توضیح داد که چه اتفاقی دارد میافتد.
هایپر لجر کامپوزر یک پروژه انجمنی است و موفقیت آن به انجمن فعال توسعهدهندگان بستگی دارد. اگر موردی هست که دوست داشتید یا دوست نداشتید، با تیم هایپر لجر در میان بگذارید و به به وبسایت هایچرلجر مراجعه کنید.
جمعبندی: پتانسیل بلاک چین
بلاک چین پتانسیل بسیار بالایی دارد. IBM معتقد است که کاری که بلاک چین برای تراکنشها انجام میدهد، مشابه همان کاری است که اینترنت برای ارتباطات و جریان اطلاعات انجام داده است. در نتیجه انتظار داریم بلاک چین تاثیرات عمیق و مثبتی بر کسب و کارها بگذارد. و به عنوان یک فعال در حوزهی بلاک چین، میگویم که میتوان این امر را محقق کرد.