پس از خواندن این مبحث و درک مفهوم سیاست ها، درک کاملی از تصمیماتی که سازمان ها برای ایجاد سیاست هایی که شبکه هایپرلجر فابریک مستقر شده را کنترل می کنند باید اتخاذ کنند، خواهید داشت.
همچنین متوجه خواهید شد که سازمانها چگونه تکامل شبکه را با استفاده از سیاستهای اعلامی مدیریت میکنند – یکی از ویژگیهای کلیدی Hyperledger Fabric. به طور خلاصه، اجزای فنی اصلی Hyperledger Fabric و تصمیماتی که سازمان ها باید در مورد آنها بگیرند را درک خواهید کرد. جهت تهیه دوره آموزش هایپرلجر فابریک می توانید همین الان اقدام کنید.
توجه: در این مبحث به ساختار شبکهای اشاره خواهیم کرد که «کانال سیستم» ندارد، کانالی که توسط سرویس سفارشدهی اجرا میشود و گرههای سفارشدهنده با آن بوت استرپ میشوند. برای نسخه ای از این موضوع که از کانال سیستم استفاده می کند، شبکه بلاک چین را بررسی کنید.
پیشنهاد ویژه: آموزش بلاکچین
Table of contents [Show]
همتایان یک عنصر اساسی شبکه هستند زیرا آنها دفتر کل و زنجیره کد (که حاوی قراردادهای هوشمند هستند) را میزبانی می کنند و بنابراین یکی از نقاط فیزیکی هستند که در آن سازمان هایی که در یک کانال تراکنش می کنند به کانال متصل می شوند (دیگری یک برنامه است). یک همتا میتواند به تعداد کانالهایی که سازمان مناسب میداند تعلق داشته باشد (بسته به عواملی مانند محدودیتهای پردازش غلاف همتا و قوانین اقامت دادهای که در یک کشور خاص وجود دارد). برای اطلاعات بیشتر در مورد همتایان، همتایان را بررسی کنید.
از سوی دیگر، سرویس سفارش، تراکنشهای تایید شده را از برنامهها جمعآوری میکند و آنها را به بلوکهای تراکنش سفارش میدهد، که متعاقباً در هر گره همتا در کانال توزیع میشود. در هر یک از این همتاهای متعهد، تراکنشها ثبت میشوند و کپی محلی دفتر کل بهطور مناسب بهروزرسانی میشود. یک سرویس سفارش برای یک کانال خاص منحصر به فرد است و گره هایی که به آن کانال سرویس می دهند به عنوان “مجموعه رضایت” نیز شناخته می شود. حتی اگر یک گره (یا گروهی از گره ها) چندین کانال را سرویس دهد، سرویس سفارش هر کانال به عنوان یک نمونه متمایز از سرویس سفارش در نظر گرفته می شود. برای اطلاعات بیشتر در مورد خدمات سفارش، سرویس سفارش را بررسی کنید.
برای کسب اطلاعات در مورد نحوه ایجاد گره های همتا و سفارش، به استقرار یک شبکه تولید مراجعه کنید.
از آنجایی که R1، R2 و R0 در پیکربندی کانال فهرست شدهاند، به آنها اجازه داده میشود که همتایان (در مورد R1 و R2) یا گرههای سفارشی (در مورد R0) را به کانال بپیوندند.
همتای R1، P1 و همتای R2، P2، همراه با سرویس سفارش R0، O، از طریق فرآیندی که در آموزش ایجاد کانال توضیح داده شده است، به کانال می پیوندند. توجه داشته باشید که در حالی که تنها یک گره سفارش، 1، به این کانال متصل شده است، در سناریوی تولید، یک سرویس سفارش باید حداقل شامل سه گره باشد. با این حال، برای اهداف این مبحث، مفهومسازی تعاملات سرویس سفارشدهی و سایر اجزای شبکه مهمتر از درک چگونگی تأثیر نیازهای دسترسی بالا بر تصمیمگیریهای پیکربندی است. گره های متعلق به هر سازمان دارای گواهی x.509 هستند که توسط مرجع صدور گواهی مرتبط با آن سازمان برای آنها ایجاد شده است. گواهیهای P1 توسط CA1 ایجاد میشوند، گواهیهای P2 توسط CA2 و غیره ایجاد میشوند.
هر گره در کانال یک کپی از دفتر کل کانال، L1 را ذخیره می کند، که با هر بلوک جدید به روز می شود (توجه داشته باشید که سرویس سفارش فقط شامل بخش بلاک چین یک دفتر است و نه پایگاه داده ایالتی). به همین دلیل، میتوانیم L1 را بهعنوان میزبانی فیزیکی در P1 در نظر بگیریم، اما به طور منطقی در کانال C1 میزبانی میشود. بهترین روش این است که R1 و R2 همتایان خود، P1 و P2 را به همتایان لنگر تبدیل کنند، زیرا این کار باعث بوت استرپ ارتباط در شبکه بین R1 و R2 می شود.
پس از اضافه شدن سرویس سفارش به کانال، امکان پیشنهاد و انجام بهروزرسانیهای پیکربندی کانال وجود دارد، اما چیز دیگری کم است. در مرحله بعد، شما باید یک کد زنجیره ای را در یک کانال نصب، تایید و متعهد کنید.
کدهای زنجیره ای روی همتایان نصب می شوند و سپس در یک کانال تعریف و اجرا می شوند:
پس از انعقاد قرارداد هوشمند، برنامههای مشتری میتوانند از طریق سرویس Fabric Gateway (دروازه) برای فراخوانی تراکنشها بر روی یک کد زنجیرهای استفاده شوند. این ساختاری را که در تصویر اول نشان دادیم کامل می کند:
درست مانند همتایان و سفارش دهندگان، یک برنامه مشتری هویتی دارد که آن را با یک سازمان مرتبط می کند. در مثال ما، برنامه مشتری A1 با سازمان R1 مرتبط است و به C1 متصل است.
با شروع نسخه Fabric 2.4، برنامه مشتری (که با استفاده از Gateway SDK v1.x توسعه یافته است) یک اتصال gRPC به سرویس دروازه ایجاد می کند، که سپس پروپوزال تراکنش و فرآیند تایید را از طرف برنامه مدیریت می کند. پیشنهاد تراکنش به عنوان ورودی به کد زنجیره ای عمل می کند که از آن برای ایجاد پاسخ تراکنش استفاده می کند.
می بینیم که سازمان های همتای ما، R1 و R2، به طور کامل در کانال شرکت می کنند. برنامههای آنها میتوانند از طریق قرارداد هوشمند S5 به دفتر کل L1 دسترسی پیدا کنند تا تراکنشهایی ایجاد کنند که توسط سازمانهای مشخصشده در خطمشی تأیید تأیید شده و در دفتر نوشته میشوند.
توجه: Fabric v2.3 SDK منطق سرویس v2.4 Fabric Gateway را در برنامه کلاینت جاسازی می کند — برای جزئیات به مبحث نسخه 2.3 Applications and Peers مراجعه کنید.
برای کسب اطلاعات بیشتر در مورد نحوه توسعه یک برنامه، برنامه توسعه برنامه ها را بررسی کنید.
اکنون که فرآیند نحوه ایجاد یک کانال و همچنین ماهیت تعاملات سطح بالا بین سازمانها، گرهها، خطمشیها، کدهای زنجیرهای و برنامهها را نشان دادیم، بیایید با افزودن یک سازمان جدید و یک کانال جدید، دیدگاه خود را گسترش دهیم. سناریوی ما برای نشان دادن اینکه چگونه اجزای Fabric را میتوان به چندین کانال متصل کرد، R2 و همتای آن، P2 را به کانال جدید ملحق میکنیم، در حالی که R1 و P1 متصل نمیشوند.
همانطور که دیدیم، اولین قدم در ایجاد یک کانال، ایجاد پیکربندی آن است. این کانال نه فقط R2 و R0 را شامل می شود، بلکه یک سازمان جدید به نام R3 را شامل می شود که هویت و گواهینامه های آن توسط CA3 ایجاد شده است. R1 هیچ حقی بر روی این کانال نخواهد داشت و نمیتواند اجزایی را به آن بپیوندد. در واقع، هیچ راهی برای دانستن وجود آن وجود ندارد!
مانند قبل، اکنون که پیکربندی کانال، CC2 ایجاد شده است، می توان گفت که کانال به طور منطقی وجود دارد، حتی اگر هیچ مؤلفه ای به آن متصل نشده باشد.
پس بیایید چند مولفه به آن اضافه کنیم!
همانطور که با C1 انجام دادیم، اجازه دهید اجزای ما به C2 بپیوندند. از آنجایی که قبلاً نشان دادهایم که چگونه همه کانالها دارای دفتر کل هستند و چگونه کدهای زنجیرهای روی همتایان نصب میشوند و به یک کانال متعهد میشوند (در این مورد، کد زنجیرهای S6 نامیده میشود)، فعلاً از این مراحل برای نشان دادن وضعیت پایانی C2 صرفنظر میکنیم. توجه داشته باشید که این کانال دارای دفتر کل خود L2 است که کاملاً از دفتر کل C1 جدا است. این به این دلیل است که حتی اگر R2 (و همتای آن، P2) به هر دو کانال متصل هستند، این دو کانال کاملاً دامنه های اداری جداگانه هستند.
توجه داشته باشید که در حالی که هر دو C1 و C2 هر دو دارای یک سازمان سفارش دهنده هستند که به آن ملحق شده است، R0، گره های سفارش دهنده مختلف در حال سرویس دهی به هر کانال هستند. این یک پیکربندی اجباری نیست زیرا حتی اگر گرههای سفارشدهنده یکسانی به چندین کانال متصل شوند، هر کانال نمونه جداگانهای از سرویس سفارشدهنده دارد و در کانالهایی که در آن سازمانهای سفارشدهنده متعدد گرد هم میآیند تا گرهها را به یک سرویس سفارشدهنده کمک کنند، رایجتر است. . توجه داشته باشید که فقط گره سفارش دهنده که به یک کانال خاص ملحق شده است دفتر کل آن کانال را دارد.
در حالی که R2 می تواند یک همتای جدید را برای پیوستن به کانال C2 مستقر کند، در این مورد آنها P2 را در C2 مستقر کرده اند. توجه داشته باشید که P2 هم دفتر کل C1 (به نام L1) و هم دفتر کل C2 (به نام L2) را در سیستم فایل خود دارد. به طور مشابه، R2 برنامه خود را تغییر داده است، A2، تا بتواند با C2 استفاده شود، در حالی که برنامه R3، A3، با C2 استفاده می شود.
از نظر منطقی، همه اینها بسیار شبیه به ایجاد C1 است. دو سازمان همتا با یک سازمان سفارش دهنده گرد هم می آیند تا یک کانال ایجاد کنند و اجزا و یک کد زنجیره ای را به آن بپیوندند.
در مورد این پیکربندی از نقطه نظر R2 که به هر دو کانال متصل است فکر کنید. از دیدگاه آنها، آنها ممکن است در مورد هر دو C1 و C2 و همچنین اجزایی که به هر دو متصل شده اند، به عنوان “شبکه” فکر کنند، حتی اگر هر دو کانال از یکدیگر متمایز باشند. از این نظر، یک «شبکه» را میتوان بهعنوان «همه کانالهایی که من در آن عضو هستم و همه اجزایی که مالک آنها هستم» در چشمانداز یک سازمان خاص وجود دارد.
اکنون که نشان دادیم چگونه سازمانها و اجزای آنها را میتوان به کانالهای متعدد ملحق کرد، بیایید در مورد چگونگی افزودن یک سازمان و اجزای آن به یک کانال موجود صحبت کنیم.
همانطور که کانال ها بالغ می شوند، طبیعی است که پیکربندی آن نیز بالغ می شود و منعکس کننده تغییراتی در جهان است که باید در کانال منعکس شود. یکی از رایجترین روشهای اصلاح یک کانال، افزودن سازمانهای جدید به آن است. در حالی که امکان افزودن سازمانهای سفارشدهنده بیشتری نیز وجود دارد (که ممکن است گرههای خود را مشارکت دهند یا ندهند)، در این مثال، فرآیند اضافه شدن یک سازمان همتا، R3، به پیکربندی کانال CC1 کانال C1 را شرح میدهیم.
توجه داشته باشید که حقوق و مجوزها در سطح کانال تعریف می شوند. فقط به این دلیل که یک سازمان مدیر یک کانال است به این معنی نیست که مدیر کانال دیگری خواهد بود. هر کانال یک منطقه اداری مجزا است و کاملاً قابل تنظیم برای موارد استفاده است.
اگرچه بهروزرسانی نمودار یک مرحله ساده به نظر میرسد، افزودن یک سازمان جدید به یک کانال، در سطح بالایی، یک فرآیند سه مرحلهای است:
در مورد مجوزها و نقش سازمان جدید تصمیم بگیرید. دامنه کامل این حقوق باید قبل از اضافه شدن R3 به C1 مورد توافق قرار گیرد و خارج از محدوده این مبحث است، اما شامل همان نوع سؤالاتی است که در وهله اول هنگام ایجاد یک کانال باید به آنها پاسخ داده شود. R3 چه نوع مجوزها و حقوقی در C1 خواهد داشت؟ آیا ادمین کانال خواهد بود؟ آیا دسترسی آن به منابع کانال محدود خواهد شد (برای مثال، R3 ممکن است فقط بتواند در C1 بنویسد، به این معنی که می تواند تغییراتی را پیشنهاد کند اما آنها را امضا نکند)؟ R3 چه کدهای زنجیره ای را روی همتایان خود نصب خواهد کرد؟
برای انعکاس این تصمیمات، کانال را از جمله کدهای زنجیره ای مربوطه به روز کنید.
سازمان گره های همتای خود (و به طور بالقوه گره های سفارش دهنده) را به کانال می پیوندد و شروع به مشارکت می کند.
در این مبحث، فرض می کنیم که R3 با همان حقوق و وضعیتی که R1 و R2 از آن برخوردار هستند، به C1 می پیوندد. به طور مشابه، R3 نیز بهعنوان تأییدکننده کد زنجیرهای S5 ملحق میشود، به این معنی که R1 یا R2 باید S5 (به طور خاص، بخش سیاست تأیید تعریف کد زنجیرهای) را دوباره تعریف کرده و آن را در کانال تأیید کند.
به روز رسانی پیکربندی کانال یک بلوک پیکربندی جدید به نام CC1.1 ایجاد می کند که تا زمانی که دوباره به روز شود به عنوان پیکربندی کانال عمل می کند. توجه داشته باشید که اگرچه پیکربندی تغییر کرده است، کانال همچنان وجود دارد و P1 و P2 هنوز به آن متصل هستند. نیازی به اضافه کردن مجدد سازمان ها یا همتایان به کانال نیست.
برای اطلاعات بیشتر در مورد فرآیند افزودن یک سازمان به یک کانال، افزودن یک سازمان به یک کانال را بررسی کنید.
برای اطلاعات بیشتر در مورد خطمشیها (که نقشهای سازمانها را در یک کانال مشخص میکند)، به سیاستها مراجعه کنید.
برای اطلاعات بیشتر در مورد ارتقاء یک کد زنجیره ای، به ارتقاء یک کد زنجیره ای مراجعه کنید.
افزودن اجزای موجود به کانالی که به تازگی به آن ملحق شده است
اکنون که R3 می تواند به طور کامل در کانال C1 شرکت کند، می تواند اجزای خود را به کانال اضافه کند. به جای انجام این یک جزء در یک زمان، اجازه دهید نشان دهیم که چگونه همتای آن، کپی محلی آن از یک دفتر کل، یک قرارداد هوشمند و یک برنامه مشتری میتوانند به یکباره به آن ملحق شوند!
در این مثال، R3 P3 را که قبلاً به C2 متصل شده بود، به C1 اضافه می کند. وقتی این کار را انجام می دهد، P3 دفتر کل C1، L1 را می کشد. همانطور که در قسمت قبل اشاره کردیم، R3 با حقوقی معادل R1 و R2 به C1 اضافه شده است. به طور مشابه، به دلیل اینکه کد زنجیره ای S5 مجدداً تعریف و در کانال تأیید شد تا R3 را شامل شود، R3 اکنون می تواند S5 را نصب کند و تراکنش ها را شروع کند. همانطور که R2 برنامه A2 خود را تغییر داد تا بتواند با کانال C2 استفاده شود، A3 نیز اکنون می تواند تراکنش ها را در C1 فراخوانی کند.
ما در این مبحث مطالب زیادی را پوشش داده ایم. ما از یک پیکربندی ساده با دو سازمان که در یک کانال تراکنش میکنند به چندین سازمان که در کانالهای متعدد تراکنش میکنند و همچنین فرآیند پیوستن به یک سازمان به کانالی که قبلاً وجود دارد، رفتهایم.
در حالی که این موضوع یک مورد نسبتاً ساده را نشان میدهد، ترکیبات بیپایانی از توپولوژیهای پیچیده وجود دارد که دستیابی به آنها در Fabric امکانپذیر است، از تعداد بیپایانی از اهداف عملیاتی پشتیبانی میکند، و هیچ محدودیت نظری برای اینکه یک شبکه چقدر میتواند بزرگ شود، وجود ندارد. استفاده دقیق از خط مشی های شبکه و کانال باعث می شود حتی شبکه های بزرگ به خوبی اداره شوند.