پس از دانلود تصاویر و نمونههای Hyperledger Fabric Docker، میتوانید با استفاده از اسکریپتهایی که در مخزن پارچه نمونهها ارائه میشوند، یک شبکه آزمایشی راهاندازی کنید. شبکه آزمایشی برای یادگیری Fabric با اجرای گرهها در ماشین محلی شما ارائه شده است.
پس از دانلود تصاویر و نمونههای Hyperledger Fabric Docker، میتوانید با استفاده از اسکریپتهایی که در مخزن پارچه نمونهها ارائه میشوند، یک شبکه آزمایشی راهاندازی کنید. شبکه آزمایشی برای یادگیری Fabric با اجرای گرهها در ماشین محلی شما ارائه شده است. توسعه دهندگان می توانند از شبکه برای آزمایش قراردادهای هوشمند و برنامه های کاربردی خود استفاده کنند. قرار است از این شبکه فقط به عنوان ابزاری برای آموزش و آزمایش استفاده شود و نه به عنوان مدلی برای نحوه راه اندازی یک شبکه. به طور کلی، تغییرات در اسکریپت ها ممنوع است و می تواند شبکه را خراب کند. این بر اساس یک پیکربندی محدود است که نباید به عنوان یک الگو برای استقرار یک شبکه تولید استفاده شود:
این شامل دو سازمان همتا و یک سازمان سفارش دهنده است. برای سادگی، یک سرویس سفارش Raft تک گره پیکربندی شده است. برای کاهش پیچیدگی، یک مرجع صدور گواهی TLS (CA) مستقر نشده است. همه گواهی ها توسط CAهای ریشه صادر می شوند. شبکه نمونه یک شبکه Fabric را با Docker Compose مستقر می کند. از آنجایی که گره ها در یک شبکه Docker Compose ایزوله هستند، شبکه آزمایشی برای اتصال به سایر گره های Fabric در حال اجرا پیکربندی نشده است. برای یادگیری نحوه استفاده از Fabric در تولید، به استقرار یک شبکه تولید مراجعه کنید. توجه: این دستورالعملها تأیید شدهاند تا با جدیدترین تصاویر ثابت Fabric Docker و ابزارهای راهاندازی از پیش کامپایلشده در فایل tar ارائهشده کار کنند. اگر این دستورات را با تصاویر یا ابزارهای شاخه اصلی فعلی اجرا کنید، ممکن است با خطا مواجه شوید.
پیشنهاد ویژه: خدمات برنامه نویسی بلاکچین
cd fabric-samples/test-network
Usage:
network.sh <Mode> [Flags]
Modes:
up - Bring up Fabric orderer and peer nodes. No channel is created
up createChannel - Bring up fabric network with one channel
createChannel - Create and join a channel after the network is created
deployCC - Deploy a chaincode to a channel (defaults to asset-transfer-basic)
down - Bring down the network
Flags:
Used with network.sh up, network.sh createChannel:
-ca - Use Certificate Authorities to generate network crypto material
-bft - Use Orderers with consensus type BFT (Not available in Fabric v2.x)
-c <channel name> - Name of channel to create (defaults to "mychannel")
-s <dbtype> - Peer state database to deploy: goleveldb (default) or couchdb
-r <max retry> - CLI times out after certain number of attempts (defaults to 5)
-d <delay> - CLI delays for a certain number of seconds (defaults to 3)
-verbose - Verbose mode
Used with network.sh deployCC
-c <channel name> - Name of channel to deploy chaincode to
-ccn <name> - Chaincode name.
-ccl <language> - Programming language of the chaincode to deploy: go, java, javascript, typescript
-ccv <version> - Chaincode version. 1.0 (default), v2, version3.x, etc
-ccs <sequence> - Chaincode definition sequence. Must be an integer, 1 (default), 2, 3, etc
-ccp <path> - File path to the chaincode.
-ccep <policy> - (Optional) Chaincode endorsement policy using signature policy syntax. The default policy requires an endorsement from Org1 and Org2
-cccg <collection-config> - (Optional) File path to private data collections configuration file
-cci <fcn name> - (Optional) Name of chaincode initialization function. When a function is provided, the execution of init will be requested and the function will be invoked.
-h - Print this message
Possible Mode and flag combinations
up -ca -r -d -s -verbose
up -bft -r -d -s -verbose
up createChannel -ca -c -r -d -s -verbose
up createChannel -bft -c -r -d -s -verbose
createChannel -bft -c -r -d -verbose
deployCC -ccn -ccl -ccv -ccs -ccp -cci -r -d -verbose
Examples:
network.sh up createChannel -ca -c mychannel -s couchdb
network.sh createChannel -c channelName
network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-javascript/ -ccl javascript
network.sh deployCC -ccn mychaincode -ccp ./user/mychaincode -ccv 1 -ccl javascript
هر گره و کاربری که با یک شبکه Fabric در تعامل است باید به یک سازمان تعلق داشته باشد تا بتواند در شبکه شرکت کند. شبکه آزمایشی شامل دو سازمان همتا، Org1 و Org2 است.
همچنین شامل یک سازمان سفارش دهنده است که خدمات سفارش شبکه را حفظ می کند. همتایان اجزای اساسی هر شبکه فابریک هستند. همتایان دفتر کل بلاک چین را ذخیره می کنند و تراکنش ها را قبل از اینکه به دفتر کل متعهد شوند تأیید می کنند. همتایان قراردادهای هوشمندی را اجرا می کنند که حاوی منطق تجاری است که برای مدیریت دارایی های دفتر کل بلاک چین استفاده می شود. هر همتا در شبکه باید به یک سازمان تعلق داشته باشد. در شبکه آزمایشی، هر سازمان هر کدام یک همتا، peer0.org1.example.com و peer0.org2.example.com را اجرا می کند.
هر شبکه Fabric یک سرویس سفارش نیز دارد. در حالی که همتایان تراکنش ها را تأیید می کنند و بلوک های تراکنش را به دفتر کل بلاک چین اضافه می کنند، در مورد ترتیب تراکنش ها تصمیم نمی گیرند یا آنها را در بلوک های جدید وارد می کنند. در یک شبکه توزیع شده، همتایان ممکن است از یکدیگر دور باشند و دیدگاه مشترکی از زمان ایجاد تراکنش نداشته باشند. رسیدن به اجماع در مورد ترتیب تراکنش ها فرآیندی پرهزینه است که برای همتایان سربار ایجاد می کند. یک سرویس سفارشدهی به همتایان اجازه میدهد تا روی اعتبارسنجی تراکنشها و تعهد آنها به دفتر کل تمرکز کنند. پس از سفارش گره ها، تراکنش های تایید شده را از مشتریان دریافت می کنند، در مورد ترتیب تراکنش ها به توافق می رسند و سپس آنها را به بلوک ها اضافه می کنند.
سپس بلوکها به گرههای همتا توزیع میشوند که بلوکها را به دفتر کل بلاک چین اضافه میکنند. شبکه نمونه از یک سرویس سفارش Raft تک نود استفاده می کند که توسط سازمان سفارش دهنده اداره می شود. میتوانید گره سفارش را بهعنوان orderer.example.com روی دستگاهتان در حال اجرا ببینید. در حالی که شبکه آزمایشی فقط از یک سرویس سفارش گره استفاده می کند، یک شبکه تولیدی دارای چندین گره سفارش است که توسط یک یا چند سازمان سفارش دهنده اداره می شود. گره های سفارش دهنده مختلف از الگوریتم اجماع Raft برای توافق بر سر ترتیب تراکنش ها در سراسر شبکه استفاده می کنند.
پس از ایجاد یک کانال، می توانید از قراردادهای هوشمند برای تعامل با دفتر کل کانال استفاده کنید. قراردادهای هوشمند حاوی منطق تجاری است که بر دارایی های دفتر کل بلاک چین حاکم است. برنامه های اجرا شده توسط اعضای شبکه می توانند قراردادهای هوشمند را برای ایجاد دارایی در دفتر کل و همچنین تغییر و انتقال آن دارایی ها فراخوانی کنند. برنامهها همچنین قراردادهای هوشمند را برای خواندن دادههای دفتر کل جستجو میکنند. برای اطمینان از معتبر بودن تراکنشها، تراکنشهای ایجاد شده با استفاده از قراردادهای هوشمند معمولاً باید توسط چندین سازمان امضا شوند تا به دفتر کل کانال متعهد شوند. چندین امضا جزء لاینفک مدل اعتماد فابریک هستند. نیاز به تأییدهای متعدد برای یک تراکنش، مانع از دستکاری یک سازمان در یک کانال در دفتر همتای خود یا استفاده از منطق تجاری که با آن موافقت نشده است، می شود. برای امضای یک تراکنش، هر سازمان باید قرارداد هوشمند را با همتای خود فراخوانی و اجرا کند، که سپس خروجی تراکنش را امضا می کند.
اگر خروجی سازگار باشد و توسط سازمان های کافی امضا شده باشد، می توان معامله را به دفتر کل متعهد کرد. خط مشی ای که سازمان های مجم وعه ای را در کانال مشخص می کند که نیاز به اجرای قرارداد هوشمند دارند، به عنوان خط مشی تایید نامیده می شود که برای هر کد زنجیره ای به عنوان بخشی از تعریف کد زنجیره ای تنظیم می شود. در Fabric، قراردادهای هوشمند بر روی شبکه در بسته هایی که به آنها کد زنجیره ای گفته می شود، مستقر می شوند. یک Chaincode بر روی همتایان یک سازمان نصب می شود و سپس در یک کانال مستقر می شود، جایی که می توان از آن برای تایید تراکنش ها و تعامل با دفتر کل بلاک چین استفاده کرد. قبل از اینکه یک کد زنجیره ای در یک کانال مستقر شود، اعضای کانال باید در مورد تعریف کد زنجیره ای که حاکمیت کد زنجیره ای را ایجاد می کند، توافق کنند. هنگامی که تعداد مورد نیاز سازمان موافقت کردند، تعریف کد زنجیره ای را می توان به کانال متعهد کرد و کد زنجیره ای آماده استفاده است.
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
فرمان فرعی deployCC، کد زنجیره ای انتقال دارایی (پایه) را در peer0.org1.example.com و peer0.org2.example.com نصب می کند و سپس کد زنجیره ای را در کانال مشخص شده با استفاده از پرچم کانال (یا کانال mychannel اگر کانال مشخص نشده است) مستقر می کند).
اگر برای اولین بار است که یک کد زنجیره ای را نصب می کنید، اسکریپت وابستگی های کد زنجیره ای را نصب می کند.
میتوانید از پرچم زبان، -ccl، برای نصب نسخههای Go، تایپ اسکریپت یا جاوا اسکریپت کد زنجیرهای استفاده کنید. میتوانید کد زنجیرهای asset-transfer (basic) را در پوشه asset-transfer-basic فهرست پارچه نمونهها بیابید.
این پوشه حاوی کد زنجیره ای نمونه است که به عنوان نمونه ارائه شده و توسط آموزش ها برای برجسته کردن ویژگی های Fabric استفاده می شود.