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 Org1
Yeş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 .
- dizini değiştir
fabric-samples
kopyacd fabric-samples
- Bu komutu kullanarak kriptojen dahil, platform ikili dosyalarını indirin (bash komutu için gerekli üç parametre):kopya
curl -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) - Daha önce klonladığımız Git deposundaki ‘multi-org’ kolunu kullanmamız gerekiyor (mevcut Composer seviyesiyle çalışmak için):kopya
git checkout multi-org
- dizini
first-network
örneğe değiştir kopyacd first-network
- Daha sonra, BYFN ağını başlatın bayrakları
byfn.sh
veritabanı 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. - 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: Org1
ve Org2
. Kuruluş Org1
etki alanı adını kullanır org1.example.com
. Üyelik Hizmetleri Sağlayıcısı (MSP) Org1
denir Org1MSP
. Kuruluş Org2
etki alanı adını kullanır org2.example.com
. İçin MSP Org2
denir Org2MSP
. Bu eğiticide, hem organizasyonların Org1
hem Org2
de 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.com
vepeer1.org1.example.com
.- İçin istek portu
peer0
7051. - İçin olay merkezi bağlantı noktası
peer0
7053’tür. - İçin istek portu
peer1
8051. - İçin olay merkezi bağlantı noktası
peer1
8053’tür.
- İçin istek portu
- İçin tek CA (Sertifika Yetkilisi)
Org1
adındaca.org1.example.com
.- CA bağlantı noktası 7054’tür.
- İki eş düğüm
Org2
, adlandırılmışpeer0.org2.example.com
vepeer1.org2.example.com
.- İçin istek bağlantı noktası
peer0
9051’dir. - İçin olay merkezi bağlantı noktası
peer0
9053’tür. - İçin istek bağlantı noktası
peer1
10051’dir. - İçin olay merkezi bağlantı noktası
peer1
10053’tür.
- İçin istek bağlantı noktası
- İçin tek CA (Sertifika Yetkilisi)
Org2
adındaca.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ş Org1
adlı 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.com
dizinde 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ş Org2
adlı 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.com
dizinde 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) Org1
ve Org2
varsayılan bir kullanıcı ile yapılandırılmıştır. Bu varsayılan kullanıcının bir kayıt kimliği admin
ve 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 mychannel
adında nu kanalı takip edeceksiniz. Dört farklı akran düğümleri bu kanala dahil olacaktır (Node) peer0.org1.example.com
, peer1.org1.example.com
, peer0.org2.example.com
, ve peer1.org2.example.com
bu kanala katıldığını göreceksiniz.
Bağlantı profilleri
Daha sonra verilebilecekleri alice
ve bob
organizasyonları 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.json
yeni dizinin altındaki yeni bir dosyaya kopyalayın/tmp/composer
içiçne kaydedin.
byfn-network.json
Metnin tüm örneklerini aşağıdakiler INSERT_ORG1_CA_CERT
iç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.txt
metni 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_CERT
eş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_CERT
sipariş 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 client
isteğ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, version
mü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 Org2
ve 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ı signcerts
alt 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ı keystore
alt 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ı signcerts
alt 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ı keystore
alt 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.json
dö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 create
bağ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.card
geç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 create
bağ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.card
geç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ı Org1
cü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-org1
cü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ı Org2
cü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-org2
cü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.bna
Testi 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 install
bu öğ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 install
Komutun 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ü Org2
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-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.json
Aş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 Org1
ve Org2
onlar blockchain taahhüt edilmeden önce iş ağında işlemlerin onaylanması gerekiyor. Eğer Org1
veya Org2
iş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 Org1
ve Org2
eş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 Org1
Alice, iş ağı yöneticisi için Org2
Bob 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 request
Alice’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 admin
Ve -s adminpw
bu komuta seçenekleri Hyperledger CA (Sertifika Yetkilisi) kayıtlı varsayılan kullanıcı karşılık gelmektedir.
Sertifikalar alice
geç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.pem
dosya diğer kuruluşlarla paylaşmak için uygundur. admin-priv.pem
O 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 request
Bob’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 admin
Ve -s adminpw
bu komuta seçenekleri Hyperledger Fabric CA (Sertifika Yetkilisi) kayıtlı varsayılan kullanıcı karşılık gelmektedir.
Sertifikalar bob
geç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.pem
dosya diğer kuruluşlarla paylaşmak için uygundur. admin-priv.pem
O 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 Org1
bu işlemi yapmak gerekiyor. Bu komut, /tmp/composer/endorsement-policy.json
on üç adımda oluşturulan dosyayı ve admin-pub.pem
hem 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 Org1
eriş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 import
Yeni 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 ping
Blockchain 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 add
komut 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-org1
ile composer issue identity
aş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 jdoe
zaten Besteci Playground yüklü olup olmadığını, yanı bağlanmak alternatif (veya jdoe@trade-network
etmek trade-network
JSON snippet’tir – varlık ‘EMA’ yaratmak aşağıda gösterilen ).
CLI kullanarak varlık oluşturmak için – transaction submit
aş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 list
iş 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 Org2
eriş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 import
Yeni 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 ping
Blockchain 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 add
komut 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-org2
ile composer issue identity
aş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 list
varlı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