
راه اندازی عملی شبکه تست و بررسی فایلهای تولیدشده در هایپرلجرفبریک
در این راهنما، بهصورت گامبهگام نحوه اجرای دستور اصلی network.sh در Hyperledger Fabric، ایجاد کانال با Fabric CA، بررسی ساختار MSP و فایلهای genesis.block و mychannel.tx را بررسی میکنیم.
Table of contents [Show]
اجرای دستور اصلی برای بالا آوردن شبکه
دستور:
./network.sh up createChannel -c mychannel -ca| بخش دستور | معنی |
|---|---|
./network.sh | اسکریپت اصلی راهاندازی شبکه تست است (داخل پوشه test-network). |
up | شبکه را بالا میآورد — یعنی Docker containers مربوط به orderer، peers و CA را اجرا میکند. |
createChannel | پس از بالا آمدن شبکه، یک channel جدید ایجاد میکند. |
-c mychannel | نام کانال را تعیین میکند (پیشفرض mychannel است). |
-ca | به جای cryptogen از Fabric CA برای صدور گواهیها (Certificates) استفاده میکند. |
بررسی فایلها و فولدرهای تولیدشده
بعد از اجرای دستور بالا، چندین پوشه و فایل ایجاد میشود.
organizations/
├── ordererOrganizations/
│ └── example.com/
│ ├── ca/ ← گواهی CA مخصوص orderer
│ ├── msp/ ← MSP سازمان orderer
│ ├── orderers/ ← گواهی مخصوص هر orderer node
│ └── users/ ← گواهی admin سازمان orderer
└── peerOrganizations/
├── org1.example.com/
│ ├── ca/ ← گواهی CA سازمان Org1
│ ├── msp/ ← MSP اصلی Org1 (Member Service Provider)
│ ├── peers/ ← شامل peer0.org1.example.com
│ ├── tlsca/ ← TLS CA (برای ارتباط امن)
│ └── users/ ← admin و userهای Org1
└── org2.example.com/ ... ← مشابه Org1
یشنهاد پیشنهاد ویژه: پروژه بلاکچین
MSP چیست؟
MSP = Membership Service Provider
مجموعهای از گواهیها و پالیسیهاست که تعیین میکند چه کسی عضو شبکه است و به چه منابعی دسترسی دارد.
| فایل | توضیح |
|---|---|
config.yaml | تعریف نقش admin و client در سازمان |
cacerts/ | گواهی CA اصلی سازمان |
tlscacerts/ | گواهی CA مخصوص ارتباطات TLS |
keystore/ | کلید خصوصی کاربر یا نود |
signcerts/ | گواهی امضای دیجیتال کاربر |
بررسی فایلهای کانفیگ شبکه
بعد از ایجاد channel، دو فایل مهم ساخته میشوند:
genesis.block
نخستین بلاک شبکه (Orderer genesis block) شامل اطلاعات مربوط به سیستم ordering service، سازمانهای شرکتکننده و کانالهای مجاز است. مانند DNA شبکه است؛ اولین بلاکی که orderer برای شروع نیاز دارد.
mychannel.tx
فایل کانفیگ کانال (Channel Configuration Transaction) است. مشخص میکند چه سازمانهایی عضو این کانالاند. توسط ابزار configtxgen ساخته میشود.
مسیر معمول:
test-network/channel-artifacts/
├── genesis.block
├── mychannel.tx
└── mychannel.blockدستورات مهم :
تغییر نام کانال
شبکه را پاک می کند :
./network.sh downشبکه را با نام کانال جدید ایجاد می کند :
./network.sh up createChannel -c channeltest -caساخت کانال (Channel Creation)
وقتی دستور بالا را اجرا میکنیم: در پشتصحنه چند اتفاق مهم میافتد:راهاندازی Fabric CA Serverها برای هر سازمان (تا بتوانند گواهیهای هویت را صادر کنند)
راهاندازی نودهای Orderer و Peerها و اجرای دستور:
./scripts/createChannel.sh mychannelاین اسکریپت وظیفه دارد: فایل mychannel.tx را بخواند از طریق CLI یا Fabric SDK، دستور ایجاد کانال را به Orderer بفرستد.
پشت صحنه createChannel.sh بیایید بفهمیم دقیقاً چه اتفاقی میافتد. درون این فایل دستوراتی مانند زیر وجود دارد:
peer channel create \
-o localhost:7050 \
-c mychannel \
-f ./channel-artifacts/mychannel.tx \
--outputBlock ./channel-artifacts/mychannel.block \
--tls true \
--cafile $ORDERER_CA| پارامتر | معنی |
|---|---|
-o localhost:7050 | آدرس سرویس Orderer |
-c mychannel | نام کانال |
-f mychannel.tx | فایل پیکربندی کانال |
--outputBlock mychannel.block | بلاک اولیهای که برمیگردد و برای join شدن peerها استفاده میشود |
--tls true | فعال کردن ارتباط امن |
--cafile $ORDERER_CA | گواهی TLS مربوط به Orderer |
پیوستن Peerها به کانال (Join Channel) بعد از ساخته شدن کانال، هر Peer باید به آن join شود. دستور مشابه زیر برای هر Peer اجرا میشود:
peer channel join -b ./channel-artifacts/mychannel.blockاین دستور باعث میشود Peer: بلاک اولیه را از فایل بخواند، و به دفترکل (ledger) مخصوص کانال اضافه شود.
نکته:
در شبکهٔ تست، برای هر سازمان معمولاً یک Peer (peer0) داریم:
Org1 → peer0.org1.example.com
Org2 → peer0.org2.example.comهر دو به کانال mychannel ملحق میشوند.
بهاشتراکگذاری Anchor Peers
در Fabric، هر سازمان باید یک یا چند Anchor Peer معرفی کند تا بقیه Peerها بتوانند از طریق آن با این سازمان ارتباط بگیرند.
دستور زیر معمولاً بعد از join اجرا میشود:
peer channel update \
-o localhost:7050 \
-c mychannel \
-f ./channel-artifacts/Org1MSPanchors.tx \
--tls true \
--cafile $ORDERER_CAهر سازمان در بلاکچین ثبت میکند که کدام Peer، Anchor Peer است. این اطلاعات در پیکربندی کانال ذخیره میشود.
بررسی وضعیت کانال
بعد از join شدن، میتوانیم با دستور زیر مطمئن شویم Peer عضو کانال است:
peer channel listخروجی باید شامل mychannel باشد.
یا برای دیدن بلاکها:
peer channel getinfo -c mychannelکه شماره بلاک فعلی و هش بلاک قبلی را نشان میدهد.
مفهوم بلاکها (Block Structure)
در Hyperledger Fabric هر بلاک شامل ۳ بخش اصلی است:
Header : اطلاعات بلاک، مثل شماره بلاک و هش قبلی
Data : تراکنشهای تأییدشده در این بلاک
Metadata : امضاها، زمانسنجی (timestamp)، و سایر دادههای تکمیلی
پیشنهاد مطالعه: دستور docker ps -a در هایپر لجر فبریک
مشاهده فایل ها مسیر channel-artifacts
channeltest.block
channeltest.txخلاصه دستورات
| مفهوم | خلاصه |
|---|---|
| network.sh up | بالا آوردن شبکه و containerها |
| createChannel | ایجاد یک کانال جدید |
| organizations/ | گواهیها و MSPهای سازمانها |
| genesis.block | اولین بلاک شبکه (DNA سیستم) |
| mychannel.tx | تراکنش ایجاد کانال |
| cryptogen vs Fabric CA | cryptogen ساده و سریع؛ Fabric CA واقعی و قابلمدیریت |
در مسیر test-network/organizations چند پوشه ساخته میشود که هرکدام نقش مهمی دارند.
بیایید مرحلهبهمرحله بررسی کنیم:
۱. ساختار کلی organizations
درون پوشه organizations دو پوشه اصلی وجود دارد:
organizations/
│
├── ordererOrganizations/
│
└── peerOrganizations/ordererOrganizations:
شامل فایلها و گواهیهای مربوط به سرویسهای Orderer (ترتیبدهنده تراکنشها در شبکه).
peerOrganizations:
شامل فایلها و گواهیهای مربوط به اعضای شبکه (یعنی سازمانهایی که Peer دارند).
ساختار داخل peerOrganizations داخل آن معمولاً دو سازمان وجود دارد:
peerOrganizations/
├── org1.example.com/
└── org2.example.com/هرکدام از این پوشهها شامل چند بخش است:
org1.example.com/
│
├── msp/
├── peers/
├── users/
└── tlsca/توضیح اجزای مهم:
msp/ مخفف Membership Service Provider است. این پوشه هویت سازمان را تعریف میکند — شامل گواهیهای CA و اطلاعات تأیید هویت.
peers/ شامل فایلهای پیکربندی و گواهیهای مخصوص هر peer، مثلاً:
peers/peer0.org1.example.com/users/ شامل کاربران سازمان (مثلاً Admin یا User1).
tlsca/ شامل گواهیهای مربوط به TLS (امنیت ارتباطی بین نودها).
فایلهای کلیدی در هر پوشه MSP در پوشه msp معمولاً فایلهای زیر دیده میشود:
msp/
├── cacerts/
├── tlscacerts/
├── signcerts/
├── keystore/
└── config.yaml| پوشه / فایل | توضیح |
|---|---|
cacerts/ | گواهی صادرکننده (CA اصلی سازمان) |
tlscacerts/ | گواهیهای مربوط به ارتباطات TLS |
signcerts/ | گواهی امضای دیجیتال مربوط به این نود یا کاربر |
keystore/ | کلید خصوصی مربوط به گواهی |
config.yaml | تنظیمات داخلی MSP (مثل NodeOUs برای نقشها) |
genesis.block و mychannel.tx
بعد از راهاندازی شبکه، در مسیر:
test-network/system-genesis-block/
یک فایل به نام genesis.block ساخته میشود.
و در مسیر:
test-network/channel-artifacts/
فایل mychannel.tx قرار دارد. بیایید نقششان را توضیح دهیم
genesis.block
این بلوک اولیه شبکه است.
شامل پیکربندی Orderer و مشخصات اولیه کل شبکه است.
در واقع، Orderer از این فایل برای شروع بلاکچین استفاده میکند.
mychannel.tx
این فایل مربوط به پیکربندی اولیه کانال است.
با دستور createChannel ساخته میشود.
حاوی اطلاعاتی مثل اعضای کانال، سیاستها، و نام کانال (مثلاً mychannel) است.
اگر اسم کانال را تغییر دهی (مثلاً به artachannel)، این فایل دوباره ساخته میشود و متفاوت خواهد بود.
نمونه کد :
بررسی فایلها در مسیر test-network/organizations فایل genesis.block را با دستور زیر باز کنید
configtxgen -inspectBlock ./system-genesis-block/genesis.blockتغییر نام کانال
./network.sh down
./network.sh up createChannel -c artachannel -caدر دمو پیشفرض، دستور:
./network.sh -caباعث میشود بهجای ابزار cryptogen، از Fabric CA برای تولید گواهیها استفاده شود.
| ابزار | توضیح |
|---|---|
| cryptogen | یک ابزار ساده برای تولید گواهیهای تستی و سریع. |
| Fabric CA | یک سرویس کامل CA واقعی که مدیریت هویتها را بهصورت داینامیک انجام میدهد. |
دستور وارد شدن به کانتینر peer
docker exec -it peer0.org1.example.com bashمشاهده عضویت در کانالها:
peer channel listپیشنهاد ویژه: آموزش بلاکچین

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




