İstanbul, TÜRKİYE

Bir Hyperledger Composer blockchain iş ağını Hyperledger Fabric’e dağıtma (birden çok kuruluş) için.

Bu öğretici, birden fazla organizasyona yayılan bir blok zinciri ağının yapılandırılması sürecine ilişkin bir fikir sağlamak için tasarlanmıştır.

Hyperledger Fabric tabanlı birçok organizasyonu blockchain ağına yapılandırmanız için gereken adımları açıklayan bir yönetge oluşturuyoruz. İki organizasyonlu blokzincir ağı, Hyperledger Fabric tarafından sağlanan örnek bir ağa dayanmaktadır. Ayrıca, gerekli güvenlikleri oluşturma ve ağın her iki organizasyonda güvenliğini sağlama adımlarınıda bu içerikte bulacaksınız.

Blockchain ağı yapılandırıldıktan sonra, kendi zincir kodu bilgi kümesinde çalışan ve her iki kuruluşta paylaşılan defter üzerinde başlatılan bir işletme ağının (örneğin, örnek ağlarımızdan bir Emtia ticareti iş ağı) nasıl dağıtılacağını gösterir. Daha sonra, paylaşılan defter ile etkileşimleri, her kuruluşta bir Kimlik sağlayıcı tarafından oluşturulan farklı katılımcılar / kimlikler olarak gösterilir.

Öncelikle beraberindeki dizelerin organizasyon rehberini takip etmeniz önerilir; Bu eğitimde, bir blok zincir ağın birden fazla kuruluş için bir Hyperledger Fabric örneğine nasıl dağıtılacağı gösterilmekte ve bazı kavramlar daha ayrıntılı olarak açıklanmaktadır.

Bu eğitimdeki Hyperledger Fabric blok zinciri ağı (iki kuruluş için), her iki kuruluşun da network ağları ile aynı makinede açıkça, gerçek dünyada ayrı IP ağları veya etki alanlarında olacakları açık docker yuvaları kullanılarak yapılandırılmıştır. Güvenli Bulut ortamları içerisinde oluşturulan bu yuvalar veya konteyner (container) bölümleri ilerleyen süreçte Kubernete kısmında da göreceksiniz.

Eğitimde, kolaylık sağlamak için, ‘hangi organizasyonun’ belirli bir adımı veya sırayı izlemesi gerektiğini veya gerçekten de her iki kuruluş için aynı adımlar gerekliyse, renk kodlu adımları oluşturmak sanırım en mantıklısı olacaktır. Renk birimleri ağ içerisindeki kullanıcılara farklı odaklar sağlayabileceği gibi kişilerin ve network içerisindeki diğer kullanıcıların birbirini ayırt etmesine olanak tanır.

İlk adım, her iki kuruluşun da izlemesi gereken:

Org1 ve Org2’nin izleyeceği bir adım

Organizasyon Org1Yeşil Rekli Bloğu Alice ile temsil edilir:

Org1’in izleyeceği bir adım

Organizasyon Org2, Violet Rekli Block adlı Bob tarafından temsil edilmektedir:

Org2’nin izleyeceği bir adım

Bu adımları kendiniz takip edebilir veya bir arkadaş ya da iş arkadaşınızla eşleştirebilir ve birlikte adımları takip izleyerek sonuç bölümüne ulaşabilirsiniz.

Başlayalım!

Ön şartlar

Composer geliştirme ortamını daha önce kurduysanız, önce geliştirme ortamı tarafından sağlanan Hyperledger Fabric container bölümlerini ortadan kaldırmanız gerekiyor. Yeni katman Fabric tarafından eşleşmeyi engelleyecek veya çakışma oluşturabilecektir bu nedenle down işleminin yapılması gerekir.

cd ~/fabric-dev-servers
export FABRIC_VERSION=hlfv12
./stopFabric.sh
./teardownFabric.sh

Daha sonra, komut satırını kullanarak aşağıdaki GitHub Comp Örnekleri deposunu klonlayın (ÖNEMLİ: Örnekleri Hyperlerger sitesinden Gerekli : bu eğitim için gerekli bazı değişiklikler eksik olduğundan örnek yapıdan faydalanmanız önemli) kopya içerik kullanabilirsiniz.

git clone https://github.com/mahoney1/fabric-samples.git

Biz kullandığınız İlk Ağı Oluşturma bölümü ile bu çoklu org öğreticisi için Composer örnek ağı. Bu Hyperledger Fabric ağına bundan böyle ‘BYFN’ (İlk Ağınızı İnşa Etme) ağı olarak bakacağız. Kuruluşlarınızı farklı fiziksel ağlara ya da farklı IP ağlarında çalışan ayrı sanal makinelere ayırmayı seçerseniz, bu özel eğitimin kapsamı dışında kalır.

Birinci Adım: Bir Hyperledger Fabric ağı başlatma

Bu öğreticiyi takip etmek için, taze bir Hyperledger Fabric ağı başlatmalısınız. Bu eğitim, İlk Ağınızı Kurma Hyperledger Composer ağında sağlanan Hyperledger Composer ağını kullandığınızı varsayacaktır .

  1. dizini değiştir fabric-sampleskopyacd fabric-samples
  2. Bu komutu kullanarak kriptojen dahil, platform ikili dosyalarını indirin (bash komutu için gerekli üç parametre):kopyacurl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.1 1.2.1 0.4.10 Sorunsuz bir şekilde indirilen dosya görüntülerinin listesini doğrulayın.(Çıktıdaki ilk “hata: pathspec v1.xx eşleşmedi” iletisini görmezden gelebileceğinizi lütfen unutmayın bu iletiyi görmeyebilirsiniz)
  3. Daha önce klonladığımız Git deposundaki ‘multi-org’ kolunu kullanmamız gerekiyor (mevcut Composer seviyesiyle çalışmak için):kopyagit checkout multi-org
  4. dizini first-networkörneğe değiştir kopyacd first-network
  5. Daha sonra, BYFN ağını başlatın bayrakları byfn.shveritabanı olarak CouchDB kullandığımızdan (ek olarak aşağıdaki betiğe) ek flag belirtilmelidir (Composer BYFN sayfasında belirtilenden farklı olarak) (CA) her kuruluş için farklı bir tanım verecektir.
  6. Aşağıdaki komutları dizinden sırayla uygulayın first-network:kopya./byfn.sh -m generate ./byfn.sh -m up -s couchdb -a

Komut başarılı bir şekilde çalışırsa, ilk komut Composer ağı / güvenlik artefaktı üretecektir (bu bağlantıya bakın . İkinci komutun ardından (yukarıdaki), BYFN ağı başlatılır ve devam etmeden önce aşağıdaki çıktının göründüğünü doğrulayın.

========= All GOOD, BYFN execution completed ===========


_____   _   _   ____
| ____| | \ | | |  _ \
|  _|   |  \| | | | | |
| |___  | |\  | | |_| |
|_____| |_| \_| |____/

Ardından, cüzdanınızda bulunabilecek ‘eski’ ticari ağ kartlarını önceki Fabric ortamlarından silin. Kartvizit ağ kartlarının bulunamadığını bildiren hataları göz ardı etmek güvenlidir:kopya

composer card delete -c PeerAdmin@byfn-network-org1
composer card delete -c PeerAdmin@byfn-network-org2
composer card delete -c alice@trade-network
composer card delete -c bob@trade-network
composer card delete -c admin@trade-network
composer card delete -c PeerAdmin@fabric-network

Bununla birlikte, diğer herhangi bir başarısızlık türü, Hyperledger Composer’in daha eski bir sürümünden olan kart deposundaki kartlarınız olduğunu ve daha sonra HOME dizininizdeki dosya sistemi kart deponuzu aşağıdaki şekilde silmek zorunda kalacağınızı gösterebilir:kopya

rm -fr $HOME/.composer

İkinci Adım: Hyperledger Fabric ağını keşfetme

Bu adım, BFYN ağ yapılandırmasını ve bileşenlerini inceleyecektir. Yapılandırma detaylarını takip eden adımları tamamlamak için gereklidir.

Organizasyonlar

BYFN ağı iki kuruluştan oluşur: Org1ve Org2. Kuruluş Org1etki alanı adını kullanır org1.example.com. Üyelik Hizmetleri Sağlayıcısı (MSP) Org1denir Org1MSP. Kuruluş Org2etki alanı adını kullanır org2.example.com. İçin MSP Org2denir Org2MSP. Bu eğiticide, hem organizasyonların Org1hem Org2de etkileşime girebilecekleri bir blok zincir iş ağı kuracaksınız .

Ağ bileşenleri

Hyperledger Fabric ağı birkaç bileşenden oluşur:

  • İki eş düğüm Org1, adlandırılmış peer0.org1.example.comve peer1.org1.example.com.
    • İçin istek portu peer07051.
    • İçin olay merkezi bağlantı noktası peer07053’tür.
    • İçin istek portu peer18051.
    • İçin olay merkezi bağlantı noktası peer18053’tür.
  • İçin tek CA (Sertifika Yetkilisi) Org1adında ca.org1.example.com.
    • CA bağlantı noktası 7054’tür.
  • İki eş düğüm Org2, adlandırılmış peer0.org2.example.comve peer1.org2.example.com.
    • İçin istek bağlantı noktası peer09051’dir.
    • İçin olay merkezi bağlantı noktası peer09053’tür.
    • İçin istek bağlantı noktası peer110051’dir.
    • İçin olay merkezi bağlantı noktası peer110053’tür.
  • İçin tek CA (Sertifika Yetkilisi) Org2adında ca.org2.example.com.
    • CA bağlantı noktası 8054’tür.
  • Adında tek bir sipariş düğümü orderer.example.com.
    • Sipariş portu 7050’dir.

Bu bileşenler Docker konteyner içinde çalışıyor olacak. Bir Docker konteyneri içinde Hyperledger Composer’ı çalıştırırken, yukarıdaki adlar (örneğin, peer0.org1.example.com) Hyperledger Fabric ağı ile etkileşimde bulunmak için kullanılabilir.

Bu eğitim, Docker ağ makinesinden değil, Docker ana bilgisayarındaki Hyperledger Composer komutlarını çalıştıracaktır. Bu, Hyperledger Composer komutlarının localhost, ana bilgisayar adı ve açıklanan konteyner portları olarak kullanarak Hyperledger Fabric ağı ile etkileşime girmesi gerektiği anlamına gelir .

Tüm ağ bileşenleri iletişimi şifrelemek için TLS kullanılarak güvence altına alınmıştır. Bu ağ bileşenlerine bağlanmak için tüm ağ bileşenleri için Sertifika Yetkilisi (CA) sertifikalarına ihtiyacınız olacaktır. CA sertifikaları, byfn.sh betiğini içeren dizinde bulunabilir.

Sipariş düğümü için CA sertifikası:

crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt

CA sertifikası Org1:

crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

CA sertifikası Org2:

crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

Bu dosyaları daha sonra Hyperledger Fabric ağı ile etkileşimde bulunmak için kullanacaksınız.

Kullanıcılar

Kuruluş Org1adlı bir kullanıcı ile yapılandırılmıştır Admin@org1.example.com. Bu kullanıcı bir yöneticidir.

Kullanıcı Admin@org1.example.comdizinde kayıtlı bir dizi sertifikaya ve özel anahtar dosyalarına sahiptir. Aşağıdaki komutu çalıştırabilirsiniz.

crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

Kuruluş Org2adlı bir kullanıcı ile yapılandırılmıştır Admin@org2.example.com. Bu kullanıcı bir yöneticidir.

Kullanıcı Admin@org2.example.comdizinde kayıtlı bir dizi sertifikaya ve özel anahtar dosyalarına sahiptir.

crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

Daha sonra Hyperledger Fabric ağı ile etkileşimde bulunmak için bu dosyalardan bazılarını kullanacaksınız.

Yönetici yanı sıra, CA’lar için (Sertifika Yetkilileri) Org1ve Org2varsayılan bir kullanıcı ile yapılandırılmıştır. Bu varsayılan kullanıcının bir kayıt kimliği adminve bir kayıt sırrı vardır adminpw. Ancak, bu kullanıcının bir blockchain iş ağını dağıtma izni yoktur.

Kurucu bağlantı profillerini ve daha sonra birlikte çalışacağımız anahtar / sertifika dosyalarını yönetmek için geçici bir çalışma dizini (ve alt dizinleri) oluşturmanız önerilir.

mkdir -p /tmp/composer/org1

mkdir -p /tmp/composer/org2

Kanal

Bir kanal oluşacaktır mychanneladında nu kanalı takip edeceksiniz. Dört farklı akran düğümleri bu kanala dahil olacaktır (Node)  peer0.org1.example.compeer1.org1.example.compeer0.org2.example.com, ve peer1.org2.example.combu kanala katıldığını göreceksiniz.

Bağlantı profilleri

Daha sonra verilebilecekleri aliceve boborganizasyonları için özelleştirilebilecek bu yapı ağını tanımlayan bir temel bağlantı profiline ihtiyacımız var .

{
    "name": "byfn-network",
    "x-type": "hlfv1",
    "version": "1.0.0",
    "channels": {
        "mychannel": {
            "orderers": [
                "orderer.example.com"
            ],
            "peers": {
                "peer0.org1.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer1.org1.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer0.org2.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer1.org2.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                }
            }
        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                "peer1.org1.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com"
            ]
        },
        "Org2": {
            "mspid": "Org2MSP",
            "peers": [
                "peer0.org2.example.com",
                "peer1.org2.example.com"
            ],
            "certificateAuthorities": [
                "ca.org2.example.com"
            ]
        }
    },
    "orderers": {
        "orderer.example.com": {
            "url": "grpcs://localhost:7050",
            "grpcOptions": {
                "ssl-target-name-override": "orderer.example.com"
            },
            "tlsCACerts": {
                "pem": "INSERT_ORDERER_CA_CERT"
            }
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpcs://localhost:7051",
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org1.example.com"
            },
            "tlsCACerts": {
                "pem": "INSERT_ORG1_CA_CERT"
            }
        },
        "peer1.org1.example.com": {
            "url": "grpcs://localhost:8051",
            "grpcOptions": {
                "ssl-target-name-override": "peer1.org1.example.com"
            },
            "tlsCACerts": {
                "pem": "INSERT_ORG1_CA_CERT"
            }
        },
        "peer0.org2.example.com": {
            "url": "grpcs://localhost:9051",
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org2.example.com"
            },
            "tlsCACerts": {
                "pem": "INSERT_ORG2_CA_CERT"
            }
        },
        "peer1.org2.example.com": {
            "url": "grpcs://localhost:10051",
            "grpcOptions": {
                "ssl-target-name-override": "peer1.org2.example.com"
            },
            "tlsCACerts": {
                "pem": "INSERT_ORG2_CA_CERT"
            }
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "https://localhost:7054",
            "caName": "ca-org1",
            "httpOptions": {
                "verify": false
            }
        },
        "ca.org2.example.com": {
            "url": "https://localhost:8054",
            "caName": "ca-org2",
            "httpOptions": {
                "verify": false
            }
        }
    }
}

Bu temel dosyayı (yukarıda) byfn-network.jsonyeni dizinin altındaki yeni bir dosyaya kopyalayın/tmp/composer içiçne kaydedin.

byfn-network.jsonMetnin tüm örneklerini aşağıdakiler INSERT_ORG1_CA_CERTiçin eş düğümlerin CA sertifikasıyla açıp değiştirin Org1: – sertifikayı .pem dosyasından yukarıdaki bağlantı profiline katıştırılabilmesi için aşağıdaki komutu kullanın.

awk 'NF {sub(/\r/, ""); printf "%s\n",$0;}' crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt > /tmp/composer/org1/ca-org1.txt

Dosyanın içeriğini kopyalayın ve .json dosyasındaki /tmp/composer/org1/ca-org1.txtmetni değiştirin INSERT_ORG1_CA_CERT. Şimdi böyle bir şeye benzemelidir (gösterildiği gibi profil dosyasında tek bir satır olmalıdır)

"pem": "-----BEGIN CERTIFICATE-----\nMIICNTCCAdygAwIBAgIRAMNvmQpnXi7uM19BLdha3MwwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0xNzA2MjYxMjQ5MjZaFw0yNzA2MjQxMjQ5MjZaMGwxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh\nbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJn3QUVcKCp+s6lSPE\nP5KlWmE9rEG0kpECsAfW28vZQSIg2Ez+Tp1alA9SYN/5BtL1N6lUUoVhG3lz8uvi\n8zhro18wXTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMB\nAf8EBTADAQH/MCkGA1UdDgQiBCB7ULYTq3+BQqnzwae1RsnwQgJv/HQ5+je2xcDr\nka4MHTAKBggqhkjOPQQDAgNHADBEAiB2hLiS8B1g4J5Qbxu15dVWAZTAXX9xPAvm\n4l25e1oS+gIgBiU/aBwSxY0uambwMB6xtQz0ZE/D4lyTZZcW9SODlOE=\n-----END CERTIFICATE-----\n"

Aynı .json dosyasında – metnin tüm örneklerini INSERT_ORG2_CA_CERTeşdüzey düğümleri için CA sertifikasıyla değiştirmeniz gerekir Org2: – .pem dosyasını yukarıdaki bağlantı profiline gömülebilecek bir şeye dönüştürmek için aşağıdaki komutu kullanın.

awk 'NF {sub(/\r/, ""); printf "%s\n",$0;}' crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt > /tmp/composer/org2/ca-org2.txt

Dosyanın içeriğini kopyalayın ve /tmp/composer/org2/ca-org2.txtçağrılan metni değiştirin INSERT_ORG2_CA_CERT. Bir kez daha, hepsi aynı satırda görmeniz gerekmektedir.

Metnin tüm örneklerini INSERT_ORDERER_CA_CERTsipariş düğümü için CA sertifikasıyla değiştirin : .pem dosyasını yukarıdaki bağlantı profili json dosyasına gömülebilecek bir şeye dönüştürmek için aşağıdaki komutu kullanın.

awk 'NF {sub(/\r/, ""); printf "%s\n",$0;}' crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt > /tmp/composer/ca-orderer.txt

Dosyanın içeriğini kopyalayın ve /tmp/composer/ca-orderer.txt metni değiştirin INSERT_ORDERER_CA_CERT. Bir kez daha, hepsi aynı satırda olmlalı.

Tamamlandığında, bu dosyayı olarak kaydedin /tmp/composer/byfn-network.json.

Bu bağlantı profili şimdi ağın kurulumunu, ağın bir parçası olan tüm meslektaşları, sipariş verenleri ve sertifika yetkililerini açıklar, ağa katılan tüm kuruluşları tanımlar ve kanalın bu ağdaki kanallarını tanımlar. Hyperledger Composer yalnızca tek bir kanalla etkileşime girebilir, bu nedenle yalnızca bir kanal tanımlanmalıdır.

Üçüncü Adım: Org1 için bağlantı profilini kişiselleştirme

Bu organizasyon belirterek sadece bir durumdur alice aittir clientisteğe bağlı aşımları ile bölümünde, yukarıdaki bağlantı profiline aşağıdaki bloğu ekleyin /tmp/composer/byfn-network.json arasında, versionmülkiyet ve hemen önce channel, bir kez yapılacak işlem adında bir YENİ dosyası olarak kaydedin – mülk/tmp/composer/org1/byfn-network-org1.json.

    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300",
                    "eventHub": "300",
                    "eventReg": "300"
                },
                "orderer": "300"
            }
        }
    },

Yani profilin bölümü gibi görünmeli

    ...
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300",
                    "eventHub": "300",
                    "eventReg": "300"
                },
                "orderer": "300"
            }
        }
    },
    "channel": {
    ...

Dördüncü Adım: Org2 için bağlantı profili oluşturma

Aynı işlemi tekrarlayın bob ancak bu sefer organizasyonu belirtin Org2ve sonra dosyayı şu şekilde kaydedin /tmp/composer/byfn-network-org2.json– böylece profilin bölümü şöyle görünmelidir:

    ...
    "version": "1.0.0",
    "client": {
        "organization": "Org2",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300",
                    "eventHub": "300",
                    "eventReg": "300"
                },
                "orderer": "300"
            }
        }
    },
    "channel": {
    ...

Beşinci Adım: Org1 için Hyperledger Fabric yöneticisi için sertifika ve özel anahtarı bulma

Hyperledger Fabric Org1 ağımızın yöneticisi, adı verilen bir kullanıcıdır Admin@org1.example.com. Bu kullanıcının sertifikaları ve özel anahtar dosyaları dizinde saklanır:

crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

Önce bu kullanıcı için sertifika dosyasını bulmalısınız. Sertifika kimliğin ortak kısmıdır. Sertifika dosyası signcertsalt dizinde bulunur ve adlandırılır Admin@org1.example.com-cert.pem.

Daha sonra, bu kullanıcı için özel anahtar dosyasını bulmalısınız. Özel anahtar, işlemleri bu kimlik olarak imzalamak için kullanılır. Özel anahtar dosyası keystorealt dizinde bulunabilir. Özel anahtar dosyasının adı, _skörneğin: ekine sahip uzun bir dizedir 78f2139bfcfc0edc7ada0801650ed785a11cfcdef3f9c36f3c8ca2ebfa00a59c_sk. İsim, konfigürasyon her oluşturulduğunda değişecektir, bu nedenle aşağıdaki joker karakter gösterilecektir.

Bu dosyaların her ikisinin yolunu da unutmayın – veya onları /tmp/composer/org1/byfn-network-org1.json‘Üçüncü Adımda’ oluşturduğunuz bağlantı profili dosyasıyla aynı dizine kopyalayın . Bu dosyalara sonraki adımlarda ihtiyacınız olacak.

Bunu yapmak için aşağıdaki komutları kullanın:

export ORG1=crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

cp -p $ORG1/signcerts/A*.pem /tmp/composer/org1

cp -p $ORG1/keystore/*_sk /tmp/composer/org1

Altıncı Adım: Org2 için Hyperledger Fabric yöneticisi için sertifika ve özel anahtarı bulma

Hyperledger Fabric ağımızın yöneticisi, adı verilen bir kullanıcıdır Admin@org2.example.com. Bu kullanıcının sertifikaları ve özel anahtar dosyaları dizinde saklanır:kopya

crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

Önce bu kullanıcı için sertifika dosyasını bulmalısınız. Sertifika kimliğin ortak kısmıdır. Sertifika dosyası signcertsalt dizinde bulunur ve adlandırılır Admin@org2.example.com-cert.pem.

Daha sonra, bu kullanıcı için özel anahtar dosyasını bulmalısınız. Özel anahtar, işlemleri bu kimlik olarak imzalamak için kullanılır. Özel anahtar dosyası keystorealt dizinde bulunabilir. Özel anahtar dosyasının adı, _skörneğin sonekiyle uzun onaltılı bir dizedir d4889cb2a32e167bf7aeced872a214673ee5976b63a94a6a4e61c135ca2f2dbb_sk. Yapılandırma her oluşturulduğunda ad değişecektir.

Her iki dosyanın da yolunu hatırlayın veya /tmp/composer/byfn-network-org2.jsondördüncü adımda oluşturduğunuz bağlantı profili dosyasıyla aynı dizine kopyalayın . Bu dosyalara sonraki adımlarda ihtiyacınız olacak.

Bunu yapmak için aşağıdaki komutları kullanın:kopya

export ORG2=crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

cp -p $ORG2/signcerts/A*.pem /tmp/composer/org2

cp -p $ORG2/keystore/*_sk /tmp/composer/org2

Yedinci Adım: Org1 için Hyperledger Fabric yöneticisi için kartvizit ağ kartları oluşturma

Bu adımda, blockchain iş ağını Hyperledger Fabric ağına dağıtmak için yöneticinin kullanması için iş ağ kartları oluşturacaksınız.

İçin composer card createbağlantı profilini kullanarak bir işletme ağ kartı oluşturmak için komutu çalıştırın Org1. Oluşturduğunuz veya önceki adımlarda bulunan üç dosyanın yolunu da belirtmelisiniz: (not: sk dosyası farklı olacaktır.)kopya

composer card create -p /tmp/composer/org1/byfn-network-org1.json -u PeerAdmin -c /tmp/composer/org1/Admin@org1.example.com-cert.pem -k /tmp/composer/org1/*_sk -r PeerAdmin -r ChannelAdmin -f PeerAdmin@byfn-network-org1.card

Komut başarıyla çalışırsa, çağrılan bir işletme ağ kartı dosyası PeerAdmin@byfn-network-org1.cardgeçerli dizine yazılır.

Sekizinci Adım: Org2 için Hyperledger Fabric yöneticisi için kartvizit ağ kartları oluşturma

Bu adımda, blockchain iş ağını Hyperledger Fabric ağına dağıtmak için yöneticinin kullanması için iş ağ kartları oluşturacaksınız.

İçin composer card createbağlantı profilini kullanarak bir işletme ağ kartı oluşturmak için komutu çalıştırın Org2. Oluşturduğunuz veya önceki adımlarda bulunan üç dosyanın yolunu da belirtmelisiniz:

composer card create -p /tmp/composer/org2/byfn-network-org2.json -u PeerAdmin -c /tmp/composer/org2/Admin@org2.example.com-cert.pem -k /tmp/composer/org2/*_sk -r PeerAdmin -r ChannelAdmin -f PeerAdmin@byfn-network-org2.card

Komut başarıyla çalışırsa, çağrılan bir işletme ağ kartı dosyası PeerAdmin@byfn-network-org2.cardgeçerli dizine yazılır.

Dokuzuncu Adım: Org1 için Hyperledger Fabric yöneticisi için kartvizit ağ kartlarını içe aktarma

composer card importİş ağı kartını Org1cüzdanına aktarmak için komutu çalıştırın :

composer card import -f PeerAdmin@byfn-network-org1.card --card PeerAdmin@byfn-network-org1

Komut başarıyla çalışırsa, adı verilen bir iş ağı kartı PeerAdmin@byfn-network-org1cüzdanınıza aktarılır.

Onuncu Adım: Org2 için Hyperledger Fabric yöneticisi için iş ağ kartlarını içe aktarma

composer card importİş ağı kartını Org2cüzdanına aktarmak için komutu çalıştırın :

composer card import -f PeerAdmin@byfn-network-org2.card --card PeerAdmin@byfn-network-org2

Komut başarıyla çalışırsa, adı verilen bir iş ağı kartı PeerAdmin@byfn-network-org2cüzdanınıza aktarılır.

Onbir Adım: İş ağının Org1 için Hyperledger Fabric eş düğümlerine kurulması

composer network installİş ağını Org1, ‘Üç Adımda’ oluşturduğunuz bağlantı profili dosyasında belirttiğiniz tüm Hyperledger Fabric eş düğümlerine yüklemek için komutu çalıştırın :

composer network install --card PeerAdmin@byfn-network-org1 --archiveFile trade-network.bna

Yukarıdan görebileceğiniz gibi, trade-networkçoklu kuruluş ortamımızı test etmek için adlandırılan bir Hyperledger Fabric iş ağı kullanıyoruz . trade-network.bnaTesti yapmak için bir dosyaya (iş ağı arşivi, bizim örnek ağlarımıza) ihtiyacınız olacak. Buna sahip değilseniz, https://composer-playground.mybluemix.net/ adresine gidin ve trade-networkörneği çevrimiçi Oyun Alanında dağıtın , ardından işletme ağına ‘connected’ olan kısmı ‘admin’ olarak sürüm numarasını değiştirin. 0.1.14 Sol altta, geçerli dizine olarak verin trade-network.bna. İşletme ağında bir dosyada belirtilen version özelliği var package.json. Bu sürüm, işletme ağı composer startÖn eki Adımdaki komutu kullanarak başlatıldığında belirtilmelidir . Eğer doğru sürüm kullanıyorsanız trade-network Örnek ağı, sürüm 0.1.14 şeklinde sonuç döndürecektir.  (Not: tutorial-networkİş ağınız olarak belirleyici öğretici ağı gibi farklı bir ağ kullanmayı planlıyorsanız, network installbu öğreticinin yanı sıra iş ağı arşivi olarak yukarıdaki ve sonraki komutlarda bu dosyayı belirtmeniz gerekir. Bu işletme ağı için doğru sürüm numarası son sürüm olarak belirlenmelidir).

network installKomutun yararlı bir özelliği , işletme ağının adını ve henüz kurulmuş olan sürüm numarasını vermesidir ve bunları daha sonra ‘Onyedi Adımda Öğrenim’ içerisinde kullanmak için not edebilirsiniz.

İş ağının Org2 için Hyperledger Fabric eş düğümlerine kurulması

composer network installİş ağını, dördüncü Org2adımda oluşturduğunuz bağlantı profili dosyasında belirttiğiniz tüm Hyperledger Fabric eş düğümlerine yüklemek için komutu çalıştırın :

composer network install --card PeerAdmin@byfn-network-org2 --archiveFile trade-network.bna

On Üçüncü Adım: İş ağı için onay politikasının tanımlanması

Çalışan bir işletme ağının, kuruluşların blok zincirine karar vermeden önce işlemleri onaylamaları gerektiği kurallarını tanımlayan bir onay politikası vardır. Varsayılan olarak, bir iş ağı, yalnızca bir kuruluşun blok zincirine bağlı olmadan önce bir işlemi onaylaması gerektiğini belirten bir onay politikasıyla dağıtılır.

Gerçek dünya blockchain iş ağlarında, birden fazla kuruluş, blockchain’e bağlanmadan önce işlemleri onaylamalarını sağlamak ister ve bu nedenle varsayılan onay politikası uygun bir yol değildir. Bunun yerine, bir iş ağını başlattığınızda özel bir onay politikası belirleyebilirsiniz.

Onay politikaları hakkında daha fazla bilgiyi Köprü Dokümanları belgesinde Onay politikalarında bulabilirsiniz .

Bir işletme ağı için kullanılan onay ilkelerinin Hyperledger Fabric Node.js SDK tarafından kullanılan JSON formatında olması gerektiğini lütfen unutmayın. Bu, Hyperledger Fabric CLI tarafından kullanılan ve Hyperledger Fabric belgelerinde göreceğiniz basit onay ilkesi biçiminden farklı bir biçimdir.

/tmp/composer/endorsement-policy.jsonAşağıdaki içeriklerle çağrılan bir onay politikası dosyası oluşturun ve diske kaydedin. Bu dosyayı daha sonraki adımlarda kullanacaksınız, bu yüzden nereye koyduğunuzu unutmayın!

{
    "identities": [
        {
            "role": {
                "name": "member",
                "mspId": "Org1MSP"
            }
        },
        {
            "role": {
                "name": "member",
                "mspId": "Org2MSP"
            }
        }
    ],
    "policy": {
        "2-of": [
            {
                "signed-by": 0
            },
            {
                "signed-by": 1
            }
        ]
    }
}

Az önce oluşturduğunuz ciro politikası neyi belirtiyor Org1ve Org2onlar blockchain taahhüt edilmeden önce iş ağında işlemlerin onaylanması gerekiyor. Eğer Org1veya Org2işlemleri onaylama veya bir işlemin sonucuna fikirde değilim diyorsa, o zaman işlem iş ağı tarafından reddedilecektir.

On Dördüncü Adım: İş ağı yöneticilerini anlama ve seçme

Bir iş ağı başlatıldığında, iş ağı bir dizi ilk katılımcı ile yapılandırılmalıdır. Bu katılımcılar, iş ağını önyüklemekten ve diğer katılımcıları iş ağına yerleştirmekten sorumlu olacaktır. Hyperledger Fabric’de, bu ilk katılımcılara iş ağı yöneticileri diyoruz.

Bizim iş ağında, organizasyonlar Org1ve Org2eşit haklara sahiptir. Her kuruluş, iş ağı için bir iş ağı yöneticisi sağlayacaktır ve bu iş ağı yöneticileri, kuruluşlarındaki diğer katılımcılara katılacaktır. İş ağı yöneticisi için Org1Alice, iş ağı yöneticisi için Org2Bob olacaktır.

İş ağı başlatıldığında, tüm iş ağı yöneticilerinin sertifikalarının (kimliğin genel kısmı), iş ağını başlatmak için komutları uygulayan kuruluşa iletilmesi gerekir. İş ağı başlatıldıktan sonra, tüm iş ağı yöneticileri, iş ağı ile etkileşim kurmak için kimliklerini kullanabilir.

İş ağı yöneticileri hakkında daha fazla bilgiyi İş Ağlarını Dağıtma bölümünde bulabilirsiniz .

On Beşinci Adım: Org1 için işletme ağı yöneticisi sertifikalarının alınması

composer identity requestAlice’in iş ağı yöneticisi olarak kullanacağı sertifikaları almak için komutu çalıştırın Org1:

composer identity request -c PeerAdmin@byfn-network-org1 -u admin -s adminpw -d alice

-u adminVe -s adminpwbu komuta seçenekleri Hyperledger CA (Sertifika Yetkilisi) kayıtlı varsayılan kullanıcı karşılık gelmektedir.

Sertifikalar alicegeçerli çalışma dizininde adı verilen bir dizine yerleştirilecektir . Oluşturulan üç sertifika dosyası var, ancak yalnızca ikisi önemlidir. Bunlar admin-pub.pem, sertifika (genel anahtar dahil) ve admin-priv.pemözel anahtardır. Sadece admin-pub.pemdosya diğer kuruluşlarla paylaşmak için uygundur. admin-priv.pemO veren örgüt adına işlem imzalamak için kullanılabilir gibi dosya gizli tutulmalıdır.

On Altı Adım: Org2 için işletme ağı yöneticisi sertifikalarının alınması

composer identity requestBob’un işletme ağı yöneticisi olarak kullanacağı sertifikaları almak için komutu çalıştırın Org2:kopya

composer identity request -c PeerAdmin@byfn-network-org2 -u admin -s adminpw -d bob

-u adminVe -s adminpwbu komuta seçenekleri Hyperledger Fabric CA (Sertifika Yetkilisi) kayıtlı varsayılan kullanıcı karşılık gelmektedir.

Sertifikalar bobgeçerli çalışma dizininde adı verilen bir dizine yerleştirilecektir . Oluşturulan üç sertifika dosyası var, ancak yalnızca ikisi önemlidir. Bunlar admin-pub.pem, sertifika (genel anahtar dahil) ve admin-priv.pemözel anahtardır. Sadece admin-pub.pemdosya diğer kuruluşlarla paylaşmak için uygundur. admin-priv.pemO veren örgüt adına işlem imzalamak için kullanılabilir gibi dosya gizli tutulmalıdır.

Onyedi Adım: İşletme ağının başlatılması

composer network startİş ağını başlatmak için komutu çalıştırın . Sadece Org1bu işlemi yapmak gerekiyor. Bu komut, /tmp/composer/endorsement-policy.jsonon üç adımda oluşturulan dosyayı ve admin-pub.pemhem on beş hem de on altı adımda hem Alice hem de Bob tarafından oluşturulan dosyaları kullanır , bu nedenle bu dosyaların tümüne bu komuta erişilebilir olmasını sağlamalısınız:kopya

composer network start -c PeerAdmin@byfn-network-org1 -n trade-network -V 0.1.14 -o endorsementPolicyFile=/tmp/composer/endorsement-policy.json -A alice -C alice/admin-pub.pem -A bob -C bob/admin-pub.pem

Bu komut tamamlandığında, iş ağı başlatılmış olacak. Hem Alice hem de Bob iş ağına erişebilecek, iş ağını kurmaya başlayacak ve ilgili katılımcılardan diğer katılımcılara katılacaklar. Ancak, hem Alice hem de Bob, iş ağına erişebilmeleri için önceki adımlarda oluşturdukları sertifikalarla yeni iş ağı kartları oluşturmalıdır.

On sekizinci Adım: İş ağına Org1 olarak erişmek için bir iş ağı kartı oluşturma

composer card createİş ağı yöneticisi olan Alice’in iş ağına Org1erişmek için kullanabileceği bir iş ağı kartı oluşturma komutunu çalıştırın :

composer card create -p /tmp/composer/org1/byfn-network-org1.json -u alice -n trade-network -c alice/admin-pub.pem -k alice/admin-priv.pem

composer card importYeni oluşturduğunuz kartvizit ağ kartını almak için komutu çalıştırın :kopya

composer card import -f alice@trade-network.card

composer network pingBlockchain iş ağına olan bağlantıyı test etmek için komutu çalıştırın :kopya

composer network ping -c alice@trade-network

Komut başarılı bir şekilde tamamlanırsa, komuttaki org.hyperledger.composer.system.NetworkAdmin#aliceçıktıda tam nitelikli katılımcı tanımlayıcısını görmelisiniz . Artık bu iş ağı kartını, blockchain iş ağı ile ve kuruluşunuzdaki diğer katılımcılara dahil olmak üzere kullanabilirsiniz.

Bir katılımcı oluşturalım, bir kimlik verelim (o katılımcı ile eşleştirildim) ve blockchain ağında bu kimlik olarak bir varlık yaratalım.

Çalıştırmak için composer participant addkomut satırına kopyalayarak aşağıdaki komutu çalıştırın:kopya

composer participant add -c alice@trade-network -d '{"$class":"org.example.trading.Trader","tradeId":"trader1-org1", "firstName":"Jo","lastName":"Doe"}'

Sonraki kimliğini oluşturmak trader1-org1ile composer issue identityaşağıda komutu:kopya

composer identity issue -c alice@trade-network -f jo.card -u jdoe -a "resource:org.example.trading.Trader#trader1-org1"

Kartı alın ve test edinkopya

composer card import -f jo.card

composer network ping -c jdoe@trade-network

Sonra bir varlık yaratacak – Komut satırından katılımcısı olarak bir Emtia varlık oluşturmak için bir işlem sunacak jdoezaten Besteci Playground yüklü olup olmadığını, yanı bağlanmak alternatif (veya jdoe@trade-networketmek trade-networkJSON snippet’tir – varlık ‘EMA’ yaratmak aşağıda gösterilen ).

CLI kullanarak varlık oluşturmak için – transaction submitaşağıdaki diziyi kopyalayın – sizin için bir Mal varlığı oluşturur:kopya

composer transaction submit --card jdoe@trade-network -d '{"$class": "org.hyperledger.composer.system.AddAsset", "targetRegistry" : "resource:org.hyperledger.composer.system.AssetRegistry#org.example.trading.Commodity", "resources": [{"$class": "org.example.trading.Commodity","tradingSymbol":"EMA", "description":"Corn commodity","mainExchange":"EURONEXT", "quantity":"10","owner":"resource:org.example.trading.Trader#trader1-org1"}]}'

Veya alternatif olarak, Oyun Alanında oluşturmak için – aşağıdakileri kopyalayın:kopya

{
  "$class": "org.example.trading.Commodity",
  "tradingSymbol": "EMA",
  "description": "Corn commodity",
  "mainExchange": "EURONEXT",
  "quantity": 10,
  "owner": "resource:org.example.trading.Trader#trader1-org1"
}

Son olarak, composer network listiş ağında üretilen eserler onaylamak için bir yapın:kopya

composer network list -c jdoe@trade-network

Ondokuzuncu Adım: İşletme ağına Org2 olarak erişmek için bir işletme ağı kartı oluşturma

composer card createİşletme ağı yöneticisi Bob’un işletme ağına Org2erişmek için kullanabileceği bir işletme ağı kartı oluşturma komutunu çalıştırın :kopya

composer card create -p /tmp/composer/org2/byfn-network-org2.json -u bob -n trade-network -c bob/admin-pub.pem -k bob/admin-priv.pem

composer card importYeni oluşturduğunuz kartvizit ağ kartını almak için komutu çalıştırın :kopya

composer card import -f bob@trade-network.card

composer network pingBlockchain iş ağına olan bağlantıyı test etmek için komutu çalıştırın :kopya

composer network ping -c bob@trade-network

Komut başarılı bir şekilde tamamlanırsa, komuttaki org.hyperledger.composer.system.NetworkAdmin#bobçıktıda tam nitelikli katılımcı tanımlayıcısını görmelisiniz . Org 2 için bu sefer başka bir Trader’a gidelim:

Bir kez daha bir katılımcı oluşturun, bir kimlik verin (o katılımcıya eşlenir) – blockchain ağında zaten bir varlığımız olduğundan, mülkiyeti değiştirmek için bir işlem kullanacağız (Org1 işlemcisinden bir Org2 işlemcisine):

Çalıştırmak için composer participant addkomut satırına kopyalayarak aşağıdaki komutu çalıştırın:kopya

composer participant add -c bob@trade-network -d '{"$class":"org.example.trading.Trader","tradeId":"trader2-org2", "firstName":"Dave","lastName":"Lowe"}'

Sonraki kimliğini oluşturmak trader2-org2ile composer issue identityaşağıda komutu:kopya

composer identity issue -c bob@trade-network -f dave.card -u dlowe -a "resource:org.example.trading.Trader#trader2-org2"

Kartı alın ve test edinkopya

composer card import -f dave.card

composer network ping -c dlowe@trade-network

Son olarak, daha önce yaratılan Emtia varlığının mülkiyetini değiştirmek için bir işlem gönderin. İşlemi varlık sahibi Jon Doe olarak sunacağız ve bunu ‘Dave Lowe’ yatırımcısına transfer edeceğiz. Daha sonra, mülkiyet değişikliğinin Kimliğe eşlenen Org 2 yatırımcısı katılımcısı olarak gerçekleştiğini doğrulayacağız dlowe: Aşağıdaki adımı uygulayın.

composer transaction submit --card jdoe@trade-network -d '{"$class":"org.example.trading.Trade","commodity":"resource:org.example.trading.Commodity#EMA","newOwner":"resource:org.example.trading.Trader#trader2-org2"}'

Son olarak, composer network listvarlık üzerindeki mülkiyet değişikliğini onaylamak için Org 2 yatırımcı katılımcısı olarak şunları yapın:kopya

composer network list -c dlowe@trade-network

Sonuç

Bu derste, çok organizasyonlu bir kurulumda Hyperledger Fabric’e dayalı bir blockchain ağının nasıl yapılandırıldığını gördünüz. Ayrıca, bir iş ağının (Emtia alım satım ağımız gibi) bu blok zinciri ağına nasıl dağıtılacağını ve her iki kuruluştaki Yetki Belgesi tarafından verilen kimlikleri kullanarak, her kuruluşta katılımcı olarak bazı basit işlemlerin nasıl yapıldığını da öğrendiniz.

Bu makale ingilizceden çevrilmiş ve düzenlenmiştir.

Kaynak: https://hyperledger.github.io/composer/latest/tutorials/deploy-to-fabric-multi-org.html

Related Posts