آرتا رسانه

آموزش ساخت اولین شبکه Hyperledger Fabric

جدول محتوا

در این مقاله به آموزش ساخت اولین شبکه Hyperledger Fabric خواهیم پرداخت. در ابتدا باید بگوییم که Hyperledger Fabric یکی از پیاده‌سازی‌های بلاک چین است و برای استفاده در زمینه کسب‌وکار در نظر گرفته شده است، جایی که گروهی از سازمان‌ها به شبکه بلاک چین می‌پیوندند (هر سازمان گره‌هایی را در شبکه مشارکت می‌دهد).

به طور خلاصه باید بگوییم که اساسا، بلاک چین یک لیست رمزنگاری مرتبط با بلوک های داده است که پس از یک اجماع خاص، غیر قابل تغییر و غیرمتمرکز می باشد. در Fabric، Orderer اتفاق نظر است، Peer داده های Blockchain را حفظ می کند.

برای آشنایی با آموزش برنامه نویسی بلاک چین پکیج آموزش برنامه نویسی بلاک چین را ملاحظه نمایید.

قرارداد هوشمند (Chaincode) برنامه‌ای است که بر اساس منطق‌های تجاری خاصی با بلاک چین در تعامل است . در Fabric، Peer گره ای است که آن را اجرا می کند.

اگر چندان با بلاک چین آشنایی ندارید، توصیه می کنیم که مقاله برنامه نویسی بلاک چین چیست؟ را مطالعه فرمایید.

Hyperledger Fabric – جریان تراکنش

در اینجا جریان تراکنش ساده شده در Hyperledger Fabric آمده است (چگونه یک تراکنش ارسال و در دفتر کل بلاک چین نوشته می شود، فرض می کنیم هیچ خطایی وجود ندارد):

  • مشتری یک درخواست تراکنش به Backend با Hyperledger Fabric SDK ارسال می کند . (Client → SDK)
  • Backend یک پیشنهاد تراکنش را تشکیل می دهد و آن را به Peer Node ارسال می کند. (SDK → Peer)
  • گره همتا قرارداد هوشمند ( کد زنجیره ای ) را اجرا می کند و نتیجه را به Backend ارسال می کند. (همتا → SDK)
  • Backend تراکنش را به Node Orderer ارسال می کند. (SDK → سفارش دهنده)
  • گره سفارش‌دهنده تعدادی از تراکنش‌ها را جمع‌آوری می‌کند (یا تایم اوت را آغاز می‌کند) و سفارش‌ها را برای آن تراکنش‌ها. سپس، آن تراکنش ها را در یک Block بسته بندی می کند و به گره های Peer پخش می شود . (سفارش → همتا)
  • گره های همتا تراکنش را تأیید می کنند ، تراکنش را در دفتر کل بلاک چین انجام می دهند و اعلان تعهد معامله را به Backend ارسال می کنند. (همتا → SDK)
  • Backend اعلان موفقیت را برای مشتری ارسال می کند. (SDK → Client)
    به طور کلی، جریان: Client → SDK → Peer → SDK → Orderer → Peer → SDK → Client. مسیر تقریبا طولانیه…

بیشتر بخوانید: آموزش Hyperledger Fabric و ساخت بلاکچین خصوصی با نصب Hyperledger Fabric

1. نصب پیش نیازها

ما در این آموزش از Hyperledger Fabric v1.4 استفاده می کنیم.

اول از همه، می توانید پیش نیازها را با دنبال کردن دستورالعمل های رسمی نصب کنید:

  • پیش نیازها را نصب کنید.
  • نمونه ها، برنامه ها و تصاویر داکر را از Hyperledger Fabric نصب کنید.

2. ساختار فایل ها

در این آموزش قسمت 1 قصد معرفی فایل ها در BYFN را داریم. قصد داریم تمامی فایل ها را در 2 قسمت معرفی کنیم. سپس چند گام عملی را ادامه می دهیم.

بیایید به فهرست BYFN برویم (* فرض می‌کنیم که قسمت پیش‌نیاز را تمام کنید، باید همه فایل‌ها و دایرکتوری‌های مورد نیاز را داشته باشید):

cd fabric-samples/first-network >

2.1 docker-compose-cli.yaml

برای توسعه اپلیکیشن بلاک چین، ابتدا باید یک شبکه بلاک چین داشته باشیم، درست است؟ این فایل مربوط به راه اندازی شبکه است.

این یک فایل کامپوزی Docker است که شبکه Fabric (مجازی) شما را تعریف می‌کند ، مانند گره‌های موجود در شبکه، نام دامنه استفاده داخلی آنها و غیره.

در زیر آمده استdocker-compose-cli.yaml

networks: byfn: services: orderer.example.com: extends: file: base/docker-compose-base.yaml service: orderer.example.com container_name: orderer.example.com networks: - byfn peer0.org1.example.com: container_name: peer0.org1.example.com extends: file: base/docker-compose-base.yaml service: peer0.org1.example.com networks: - byfn peer1.org1.example.com: container_name: peer1.org1.example.com extends: file: base/docker-compose-base.yaml service: peer1.org1.example.com networks: - byfn peer0.org2.example.com: container_name: peer0.org2.example.com extends: file: base/docker-compose-base.yaml service: peer0.org2.example.com networks: - byfn peer1.org2.example.com: container_name: peer1.org2.example.com extends: file: base/docker-compose-base.yaml service: peer1.org2.example.com networks: - byfn cli: container_name: cli image: hyperledger/fabric-tools:$IMAGE_TAG tty: true stdin_open: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - FABRIC_LOGGING_SPEC=INFO - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_TLS_ENABLED=true - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: /bin/bash volumes: - /var/run/:/host/var/run/ - ./../chaincode/:/opt/gopath/src/github.com/chaincode - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/ - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts depends_on: - orderer.example.com - peer0.org1.example.com - peer1.org1.example.com - peer0.org2.example.com - peer1.org2.example.com networks: - byfn

خط 1 نام شبکه داکر ما را تعریف می کند ، به طوری که گره های ما می توانند “مکانی” برای صحبت با یکدیگر داشته باشند. و این “مکان” byfn نامگذاری شده است .

خط 4 لیستی از گره ها را در شبکه تعریف می کند.

خط 5 یک گره را در شبکه ما تعریف می کند – Orderer ، که به تصمیم گیری در مورد نحوه ترتیب تراکنش ها و بلاک ها در شبکه بلاک چین کمک می کند.

در خط 6 مشاهده می کنید که یک extension وجود دارد که برای استفاده مجدد از یک فایل کامپوزی پایه Docker دیگر است.

خط 9 نام این گره را در شبکه تعریف می کند. در نهایت خط 10 مشخص می کند که این گره به کدام شبکه تعلق دارد.

و خطوط 13 تا 43 مشابه هستند، اما آنها نوع دیگری از گره ها را در شبکه ما تعریف می کنند – Peer ، که عبارت است از نگهداری دفتر کل بلاک چین، اعتبارسنجی تراکنش، اجرای قرارداد هوشمند (کد زنجیره ای) در شبکه بلاک چین .

خط 45 cli، یعنی رابط خط فرمان را برای کنترل (ارسال دستورات به) گره های شبکه تعریف می کند . خط 47 تصویر این cli را نشان می دهد، درست مانند تصویر ویندوز 10 برای ماشین مجازی ویندوز 10.

خط 48 tty برای اطمینان از اینکه cli به کار خود ادامه می دهد است.

خط 50 ما در حال تعریف برخی از متغیرهای محیطی هستیم که توسط برخی برنامه ها برای cli استفاده می شود، مانند GOPATH – جایی که کتابخانه go در آن قرار دارد.

خط 62 مشخص می کند که هنگام دسترسی به cli مکان پیش فرض چیست.

خط 63 مشخص می کند که وقتی cli شروع می شود، این دستور لینوکس را به طور خودکار اجرا می کند.

خط 64 نقاط اتصال را برای cli تعریف می کند. یعنی، ما برخی از دایرکتوری ها را در ماشین محلی خود، احتمالاً لینوکس شما، به برخی دایرکتوری ها در cli (که یک ماشین مجازی است، به نام Container در Docker) ثبت می کنیم .

خط 70 مشخص می کند که cli به چند کانتینر دیگر بستگی دارد.

base/docker-compose-base.yaml 2.2 

اکنون به base/docker-compose-base.yaml نگاه می کنیم:

services: orderer.example.com: container_name: orderer.example.com image: hyperledger/fabric-orderer:$IMAGE_TAG environment: - FABRIC_LOGGING_SPEC=INFO - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_GENESISMETHOD=file - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # enabled TLS - ORDERER_GENERAL_TLS_ENABLED=true - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1 - ORDERER_KAFKA_VERBOSE=true working_dir: /opt/gopath/src/github.com/hyperledger/fabric command: orderer volumes: - ../channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block - ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp - ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls - orderer.example.com:/var/hyperledger/production/orderer ports: - 7050:7050 peer0.org1.example.com: container_name: peer0.org1.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer0.org1.example.com - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls - peer0.org1.example.com:/var/hyperledger/production ports: - 7051:7051 - 7053:7053 peer1.org1.example.com: container_name: peer1.org1.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer1.org1.example.com - CORE_PEER_ADDRESS=peer1.org1.example.com:7051 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls - peer1.org1.example.com:/var/hyperledger/production ports: - 8051:7051 - 8053:7053 peer0.org2.example.com: container_name: peer0.org2.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer0.org2.example.com - CORE_PEER_ADDRESS=peer0.org2.example.com:7051 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051 - CORE_PEER_LOCALMSPID=Org2MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls - peer0.org2.example.com:/var/hyperledger/production ports: - 9051:7051 - 9053:7053 peer1.org2.example.com: container_name: peer1.org2.example.com extends: file: peer-base.yaml service: peer-base environment: - CORE_PEER_ID=peer1.org2.example.com - CORE_PEER_ADDRESS=peer1.org2.example.com:7051 - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051 - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051 - CORE_PEER_LOCALMSPID=Org2MSP volumes: - /var/run/:/host/var/run/ - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls - peer1.org2.example.com:/var/hyperledger/production ports: - 10051:7051 - 10053:7053

فایل پایه مشابه docker-compose-cli.yaml است.

خطوط 3 تا 28 یک گره الگو به نام orderer.example.com را تعریف می کنند و docker-compose-cli.yaml آن را گسترش می دهد و برخی تنظیمات اضافی را بر اساس این الگو اضافه می کند.

خط 5 مشخص می کند که این گره از کدام تصویر استفاده می کند. در مورد ما، گره از تصویری از Hyperledger official – hyperledger/fabric-orderer استفاده می کند. آن $IMAGE_TAG نسخه تصویر است، مانند 1.4.

سایر کلمات کلیدی و تنظیمات مشابه docker-compose-cli.yaml هستند. هدف از داشتن یک فایل پایه فقط گروه بندی پیکربندی های رایج در یک فایل پایه برای قابل استفاده مجدد است.

توجه داشته باشید که در خط 32، یک کلمه کلیدی extends نیز وجود دارد، یعنی دوباره برای گسترش یا استفاده مجدد از یک فایل پایه دیگر، base/peer-base.yaml، که به سرعت نگاهی به آن خواهیم انداخت.

2.3 base/peer-base.yaml

services: peer-base: image: hyperledger/fabric-peer:$IMAGE_TAG environment: - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock # the following setting starts chaincode containers on the same # bridge network as the peers # https://docs.docker.com/compose/networking/ - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_byfn - FABRIC_LOGGING_SPEC=INFO #- FABRIC_LOGGING_SPEC=DEBUG - CORE_PEER_TLS_ENABLED=true - CORE_PEER_GOSSIP_USELEADERELECTION=true - CORE_PEER_GOSSIP_ORGLEADER=false - CORE_PEER_PROFILE_ENABLED=true - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: peer node start

سینتکس این فایل کم و بیش مشابه docker-compose-cli.yaml و base/peer-base.yaml است. حالا شاید سوال پیش بیاید، چرا ما به این فایل های پایه نیاز داریم؟ به دلیل قابلیت استفاده مجدد، اگرچه اجباری نیست.

2.4 channel-artifacts/

توجه داشته باشید که این دایرکتوری در حال حاضر خالی است. این دایرکتوری برای ذخیره برخی از تراکنش های پیکربندی و یک بلوک پیدایش استفاده خواهد شد.

2.5 crypto-config.yaml

این فایلی برای تعریف گواهینامه ها و کلیدهایی است که باید در شبکه تولید و استفاده شوند.

در Hyperledger Fabric مجموعه ای از گواهینامه ها و کلیدها برای کاربران و گره ها داریم. برای مثال، Peer باید مجموعه‌ای از گواهی‌ها و کلیدها را برای انجام تایید اثبات خود به عنوان عضوی در شبکه بلاک چین، انجام امضا و غیره داشته باشد.

# --------------------------------------------------------------------------- # "OrdererOrgs" - Definition of organizations managing orderer nodes # --------------------------------------------------------------------------- OrdererOrgs: # --------------------------------------------------------------------------- # Orderer # --------------------------------------------------------------------------- - Name: Orderer Domain: example.com Specs: - Hostname: orderer # --------------------------------------------------------------------------- # "PeerOrgs" - Definition of organizations managing peer nodes # --------------------------------------------------------------------------- PeerOrgs: # --------------------------------------------------------------------------- # Org1 # --------------------------------------------------------------------------- - Name: Org1 Domain: org1.example.com EnableNodeOUs: true Template: Count: 2 # --------------------------------------------------------------------------- # "Users" # --------------------------------------------------------------------------- # Count: The number of user accounts _in addition_ to Admin # --------------------------------------------------------------------------- Users: Count: 1 # --------------------------------------------------------------------------- # Org2: See "Org1" for full specification # --------------------------------------------------------------------------- - Name: Org2 Domain: org2.example.com EnableNodeOUs: true Template: Count: 2 Users: Count: 1

خط 4 OrdererOrgs گواهینامه ها و تولید کلید را برای سازمان مربوط به گره های Orderer تعریف می کند.

Line 22 Template > Count تعداد گره ها را در Org1 (سازمان 1) مشخص می کند، در حالی که 29 Users > Count تعداد کاربران را در Org1 مشخص می کند.

2.6 configtx.yaml

این فایلی برای تعریف تنظیمات شبکه بلاک چین است، اگرچه بعداً می توان آنها را به روز کرد.

این یک فایل طولانی است، برای دیدن فایل به این صفحه مراجعه کنید.

برخی از بخش‌های این فایل را بررسی می‌کنیم:

- &Org1 Name: Org1MSP ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.example.com/msp Policies: Readers: Type: Signature Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')" Writers: Type: Signature Rule: "OR('Org1MSP.admin', 'Org1MSP.client')" Admins: Type: Signature Rule: "OR('Org1MSP.admin')" AnchorPeers: - Host: peer0.org1.example.com Port: 7051

در اینجا، ما یک سازمان را تعریف می کنیم – Org1 در شبکه بلاک چین، همراه با برخی از سیاست ها.

خط 15 Anchor Peer of Org1 را مشخص می‌کند، که نقش ویژه‌ای از گره همتا برای عمل به عنوان نماینده برای صحبت با سازمان‌های دیگر است.

خط 4 محل گواهینامه ها و کلیدهای org1 را مشخص می کند.

Orderer: &OrdererDefaults OrdererType: solo Addresses: - orderer.example.com:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 99 MB PreferredMaxBytes: 512 KB

در اینجا، ما تنظیمات مربوط به نحوه تشکیل یک بلوک برای بلاک چین را تعریف می کنیم، مانند MaxMessageCount، که تعداد تراکنش ها در هر بلوک است.

بنابراین، به طور کلی، سه سازمان وجود دارد، OrdererOrg، Org1، و Org2.

2.7 byfn.sh

این یک فایل اسکریپت مناسب توسط Hyperledger Fabric برای راه اندازی شبکه است.

ما از این روش برای نمایش شبکه استفاده می کنیم:

./byfn.sh up

اساساً موارد زیر را انجام می دهد:

  • گواهی ها و کلیدها را بر اساس crypto-config.yaml تولید کنید.
  • آرتیفکت های کانال را بر اساس configtx.yaml ایجاد کنید، خروجی ها در channel-artifacts ذخیره می شوند/
  • شبکه Fabric (مجازی) را بر اساس docker-compose-cli.yaml مطرح کنید.
  • کانال Hyperledger Fabric، mychannel ایجاد کنید.
  • به گره های Peer در کانال بپیوندید.
  • قرارداد هوشمند (Chaincode) را در گره های همتا نصب کنید.
  • قرارداد هوشمند (Chaincode) را در یکی از گره های Peer نمونه سازی کنید

Channel in Hyperledger Fabric یک گروه خصوصی در یک شبکه بلاک چین است. و هر شبکه بلاک چین می‌تواند شامل چندین کانال باشد، که در آن هر کانال مستقل از کانال‌های دیگر است، دفتر کل خود را دارد و شامل (چندین) سازمان (های) است.

2.8 scripts/script.sh & scripts/utils.sh

scripts/script.sh اسکریپتی است که توسط byfn.sh برای مراحل 4 تا 7 بالا استفاده می شود.

scripts/utils.sh اسکریپتی است که توسط scripts/script.sh استفاده می شود. در ادامه برخی از توابع کاربردی رایج مانند نصب قرارداد هوشمند (Chaincode)
را مطرح خواهیم کرد.

3. شبکه را بیاورید

ادامه مراحل را ببینید:

3.1 به فهرست BYFN بروید

cd fabric-samples/first-network

3.2 شبکه را بالا بیاورید

./byfn.sh up

س از اجرای این اسکریپت، ممکن است لازم باشد یک لحظه صبر کنید…

همچنین به یاد داشته باشید که Docker را قبل از اجرای دستور بالا راه اندازی کنید.

*در صورت ایجاد اشتباه، می توانید دستورات زیر را اجرا کنید تا شبکه را خاموش کنید و دوباره بالا بیاورید (و مراقب باشید):

./byfn.sh پایین
./byfn.sh بالا

کاری که انجام می دهد:

  • تولید گواهینامه ها و کلیدها بر اساسcrypto-config.yaml
  • ایجاد مصنوعات کانال بر اساس ، خروجی ها در channel-artifacts/configtx.yaml ذخیره می شوند.
  • شبکه Fabric (مجازی) را بر اساسdocker-compose-cli.yaml
  • کانال Hyperledger Fabric، mychannel ایجاد کنید.
  • به گره های Peer در کانال بپیوندید.
  • قرارداد هوشمند (Chaincode) را در گره های همتا نصب کنید.
  • قرارداد هوشمند (Chaincode) را در یکی از گره های Peer نمونه سازی کنید.

پس از اتمام byfn.sh ، همچنین باید متوجه شوید که فایل‌هایی در channel-artifacts/ وجود دارد .

و اگر دستور “docker ps” را اجرا کنید، باید ببینید که چند کانتینر در حال اجرا وجود دارد که همان گره ها در شبکه بلاک چین هستند.

4. تأیید

چگونه می توانیم تأیید کنیم که شبکه فعال است؟

4.1 به Cli دسترسی پیدا کنید

یک Cli Docker Container وجود دارد که به طور خودکار ایجاد می شود، این یک رابط خط فرمان برای کنترل گره ها است .

یک Cli Docker Container وجود دارد که به طور خودکار ایجاد می شود، این یک رابط خط فرمان برای کنترل گره ها است .

بیایید به cli دسترسی پیدا کنیم:

docker exec -it cli bash

سپس، متغیرهای محیطی که توسط برخی از برنامه ها استفاده می شود را تنظیم کنید :

صادرات CHANNEL_NAME=صادرات کانال من CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp_ADDDRESS=PEER org1.example.com:7051 صادرات CORE_PEER_LOCALMSPID="Org1MSP" صادرات CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.exaer.1. .com/tls/ca.crt

شما فقط می توانید همه آنها را کپی کنید، سپس در ترمینال خود قرار دهید و “Enter” را فشار دهید.

برای تأیید، ما یک معامله انجام می دهیم. بیایید موجودی حساب a را بررسی کنیم:

جستار کد زنجیره ای همتا -C mychannel -n mycc -c '{"Args":["query","a"]}'

شما باید 90 را ببینید . اکنون 10 دلار را از a به b منتقل می کنیم :

کد زنجیره ای همتا فراخوانی -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example. com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric /peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/ github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a ""b"،"10"]}'

سپس، دوباره موجودی حساب a را بررسی می کنیم:

جستار کد زنجیره ای همتا -C mychannel -n mycc -c '{"Args":["query","a"]}'

شما باید 80 را ببینید (90 – 10 = 80). شبکه بلاک چین در حال کار است!

حالا از cil خارج شده و شبکه را کم کنید:

خروج ./byfn.sh پایین

بعداً، برای توسعه قرارداد هوشمند (Chaincode)، می‌توانیم از این BYFN برای آزمایش عملکردها استفاده کنیم. همچنین می‌توانیم از چنین شبکه مجازی Docker استفاده نماییم.

 

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آرتا رسانه
آرتا رسانه
دیجیتال مارکتینگ چیست؟
Loading
/
پیمایش به بالا