* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger.github.io/composer/latest/tutorials/invoke-composer-network

 

Interacting with other business networks | Hyperledger Composer

Interacting with other business networks Hyperledger Composer includes functionality that can be used by a business network to access an asset, participant, or transaction that is recorded in another business network. This tutorial will demonstrate the ste

hyperledger.github.io

하이퍼레저 컴포저에는 비즈니스 네트워크에서 다른 비즈니스 네트워크게 기록된 자산, 참가자 혹은 트랜잭션에 액세스할 수 있는 기능이 포함되어 있습니다.

 

이 튜토리얼은 다른 비즈니스 네트워크에서 하이퍼레저 컴포터 비즈니스 네트워크를 호출하기 위해 비즈니스 네트워크 개발자가 수행해야하는 단계를 보여줍니다. 이 튜토리얼에서는 동일한 비즈니스 네트워크를 두 번 배포합니다. 여기서 두 개의 비즈니스 네트워크는 동일한 채널에 있지만, 서로 다른 채널에 있을 수도 있습니다. 현재 튜토리얼에서 사용하는 비즈니스 네트워크는 developer tutorial에 있는 tutorial network입니다. 여기서 사용할 두 개의 비즈니스 네트워크는 각각 A와 B라고 부릅니다.

 

 

Prerequisites

시작하기 전, 아래 링크를 따라 개발환경설치가 완료되었는지 확인해주세요.

https://ralee-world.tistory.com/entry/Hyperledger-Composer-Installing?category=719808

 

Composer Installing

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다. 상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) http..

ralee-world.tistory.com

Step One: Starting a Hyperledger Fabric network

이 튜토리얼을 따라하려면 하이퍼레저 패브릭 네트워크를 시작해야 합니다. 개발 환경에서 제공하는 간단한 하이퍼레저 패브릭 네트워크를 사용해도 좋고, 하이퍼레저 패브릭 docs를 따라 만든 네트워크를 사용해도 좋습니다.

 

이 튜토리얼에서는 개발환경에서 제공하는 기본 하이퍼레저 패브릭 네트워크를 사용한다고 가정합니다. 스스로 만든 하이퍼레저 패브릭 네트워크를 사용할 경우 아래 구성 및 설정을 매핑시켜줘야 합니다.

 

1. 아래 커맨드를 사용해 하이퍼레저 패브릭 clean을 시작하세요.

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

2. 지갑에 있을 수 있는 비즈니스 네트워크 카드를 삭제하세요. 비즈니스 네트워크 카드가 존재하지 않는다는 경고는 무시해도 좋습니다.

composer card delete -c PeerAdmin@hlfv1

위 커맨드가 실패하면 이전 버전의 비즈니스 네트워크 카드가 존재할 수도 있으므로 파일 시스템 내 카드 저장소를 삭제해주세요.

    rm -fr ~/.composer

 

1. 아래 커맨드를 사용해 PeerAdmin 카드를 생성하세요.

./createPeerAdminCard.sh

 

 

Step Two: Define the business networks

1. developer tutorial에 있는 step 1, 2를 따라하세요. 이는 네트워크 A가 될 것입니다.

https://ralee-world.tistory.com/entry/Developer-Tutorial?category=719808

 

Composer Developer Tutorial

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다. 상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) http..

ralee-world.tistory.com

2. developer tutorial 내 step 1, 2를 한 번 더 반복하되, 비즈니스 네트워크 이름을 other-tutorial-network라고 지으세요. 이 네트워크는 B가 될 것입니다.

 

3. 네트워크 A의 트랜잭션 로직은 업데이트되어야 합니다. 이는 비즈니스 네트워크 B에 있는 자산에 쿼리하고 A 자산의 quantity 속성을 업데이트 할 것입니다.

 

logic.js 스크립트 파일의 트랜잭션 처리 함수를 아래와 같이 수정하세요.

        /**
         * Track the trade of a commodity from one trader to another
         * @param {org.example.mynetwork.Trade} trade - the trade to be processed
         * @transaction
         */
        async function tradeCommodity(trade) {
            trade.commodity.owner = trade.newOwner;

            const otherNetworkData = await getNativeAPI().invokeChaincode('other-tutorial-network', ['getResourceInRegistry', 'Asset', 'org.example.mynetwork.Commodity', trade.commodity.tradingSymbol], 'composerchannel');                    
            const stringAsset = new Buffer(otherNetworkData.payload.toArrayBuffer()).toString('utf8');
            const asset = getSerializer().fromJSON(JSON.parse(stringAsset));

            trade.commodity.quantity = asset.quantity;

            const assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');
            await assetRegistry.update(trade.commodity);
        }

4. developer tutorial 내 step 3를 따라하세요.

 

 

Step Three: Deploy the business networks

1. 아래 커맨드를 사용해 비즈니스 네트워크 A를 설치하고 시작하세요.

composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkA.card
composer card import --file networkA.card --card networkA

2. 아래 커맨드를 사용해 비즈니스 네트워크 B를 설치하고 시작하세요.

composer network install --card PeerAdmin@hlfv1 --archiveFile other-tutorial-network@0.0.1.bna
composer network start --networkName other-tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkB.card
composer card import --file networkB.card --card networkB

3. 비즈니스 네트워크가 성공적으로 배포되었는지 확인하기 위해 아래 커맨드를 사용해 ping을 날려보세요.

composer network ping --card networkA
composer network ping --card networkB

 

 

Step Four: Create the assets

1. 아래 커맨드를 사용해 비즈니스 네트워크 A에 참가자를 생성하세요.

composer participant add --card networkA -d '{"$class": "org.example.mynetwork.Trader", "tradeId": "bob@example.com", "firstName": "Bob", "lastName": "Jones"}'

2. 비즈니스 네트워크 A에 자산을 생성하세요.

composer transaction submit --card networkA -d '{"$class": "org.hyperledger.composer.system.AddAsset", "targetRegistry" : "resource:org.hyperledger.composer.system.AssetRegistry#org.example.mynetwork.Commodity", "resources": [{"$class": "org.example.mynetwork.Commodity","tradingSymbol": "Ag","owner": "resource:org.example.mynetwork.Trader#bob@example.com","description": "a lot of gold", "mainExchange": "exchange", "quantity" : 250}]}'

3. 아래 커맨드를 사용해 비즈니스 네트워크 B에 참가자를 생성하세요.

composer participant add --card networkB -d '{"$class": "org.example.mynetwork.Trader", "tradeId": "fred@example.com", "firstName": "Fred", "lastName": "Bloggs"}'

4. 비즈니스 네트워크 B에 자산을 생성하세요. A와 quantity 속성이 다름에 주의하세요.

composer transaction submit --card networkB -d '{"$class": "org.hyperledger.composer.system.AddAsset", "targetRegistry" : "resource:org.hyperledger.composer.system.AssetRegistry#org.example.mynetwork.Commodity", "resources": [{"$class": "org.example.mynetwork.Commodity","tradingSymbol": "Ag","owner": "resource:org.example.mynetwork.Trader#fred@example.com","description": "a lot of gold", "mainExchange": "exchange", "quantity" : 500}]}'

 

 

Step Five: Bind the identity on network A to the participant on network B

1. 자격증명을 얻기 위해 네트워크 A 카드를 export 하세요.

composer card export -c networkA

2. 카드의 압축을 풀고 networkA.card를 networkA.zip으로 이름을 변경하세요.

 

3. 아래 커맨드를 사용해 참가자의 신원을 바인딩하세요.

composer identity bind --card networkB --participantId resource:org.hyperledger.composer.system.NetworkAdmin#admin --certificateFile ./networkA/credentials/certificate           

4. 바인딩한 신원으로 카드를 생성하세요.

composer card create -p ~/.composer/cards/networkB/connection.json --businessNetworkName other-tutorial-network -u admin -c ./networkA/credentials/certificate  -k ./networkA/credentials/privateKey -f newNetworkB.card

5. 카드를 import 하세요.

composer card import --file newNetworkB.card --card newNetworkB

6. 신원을 활성화시키기 위해 네트워크에 ping을 날리세요.

composer network ping --card newNetworkB

 

 

Step Six: Review the asset data

자산을 보고 quantity가 250임을 확인합니다.

    composer network list --card networkA -r org.example.mynetwork.Commodity -a Ag        

 

 

Step Seven: Submit a transaction

다른 비즈니스 네트워크의 자산에 쿼리한 결과를 보기 위해 트랜잭션을 제출합니다. 네트워크B는 쿼리를 받을 뿐 quantity는 변화되지 않음에 주의하세요.

    composer transaction submit --card networkA -d '{"$class": "org.example.mynetwork.Trade", "commodity": "resource:org.example.mynetwork.Commodity#Ag", "newOwner": "resource:org.example.mynetwork.Trader#bobId"}'

 

 

Step Eight: Check the updated asset

업데이트된 자산을 보고 quantity가 500이 되었음을 확인합니다.

    composer network list --card networkA -r org.example.mynetwork.Commodity -a Ag

 

여름 한정판으로

보라색 허니버터칩

이 나왔습니다.

 

디자인은 정말 예쁜데

왠지 노란색 허니버터칩이 익숙해서 그런지

어색한 느낌이 드는(?) 것 같네요.

 

허니버터라벤더맛 시즈닝, 

블루베리, 라벤더허브차가 

소량....함유되어 있습니다.

 

봉지를 처음 뜯었을 때 드는 느낌은

꽃향기ㅇ_ㅇ????

과자에서 꽃향기가 나는게 묘합니다.

 

개인적으로는 사실 꽃향기가 과자랑

그렇게 잘 어울리는 조합이라고는 

생각하지 않아요...ㅠ_ㅠ

 

여튼 향은 좀 익숙하지 않지만

맛은 나쁘지 않습니다.

 

기존 허니버터칩에 블루베리 사탕물 더한맛

이랄까요?

허니버터칩 좋아하시던 분이라면

크게 거부감은 없을 듯 합니다만,

 

아마 가장 큰 진입장벽은

꽃.향.기.

가 아닐까 생각되네요 ㅋㅋㅋㅋ

오늘은 어스본 사료 2가지 종류

내 돈내고 내가 산!!!!

리얼 후기입니다.

 

키튼 사료가 끝나갈 무렵

새 사료는 어떤걸로 선택할까

고민이 많았답니다.

무럭무럭 자라는 우리 귀탱뽀짝이를 위해

세상에서 가장 안전한 사료라는(?)

어스본 사료를 선택했습니다.

 

저는 파랑이(씨캐치)를 먼저 사용하다가

지금은 빨강이(프리머티브)도 구매해서 섞어주고 있습니다.

 

두 가지의 가장 큰 차이점은

생선베이스육고기베이스

그리고 오메가3, 6 함량차이?

정도인 것 같아요.

 

두 가지 모두 1등급 홀리스틱 그레인프리

전연령 고양이 사료입니다.

 


와일드 씨 캐치 (연어&청어)

6.3kg 44,500원

 

사료 성분

조단백질 44.00%, 조지방 20.00%, 조섬유 3.00%,

수분 10.00%, 칼슘 1.00%, 인 0.80%, 마그네슘 0.10%,

타우린 0.20%, 비타민E 300IU/kg, 비타민C 100mg/kg,

오메가6 3.40%, 오메가 3 2.00%, DHA 0.05%

 

사료 원료

연어, 청어, 카놀라유, 완두콩, 감자, 닭고기,

완두콩 단백질, 칠면조, 계란, 완두콩 섬유,

천연 향료, 아마씨, 블루베리섬유, 크랜베리섬유,

염화콜린, 사과, 블루베리, 당근, 시금치, 크랜베리,

타우린, DL-메티오닌, L-라이신, 염화칼륨,

비타민, 유카, 로즈마리, 미네랄, 유산균

 

프리머티프 필라인 (칠면조&닭고기)

6.3kg 44,500원

사료 성분

조단백질 44.00%, 조지방 20.00%, 조섬유 3.00%,

수분 10.00%, 칼슘 1.00%, 인 0.80%, 마그네슘 0.10%,

타우린 0.20%, 비타민E 300IU/kg, 비타민C 100mg/kg,

오메가6 3.50%, 오메가 3 0.80%, DHA 0.05%

 

사료 원료

칠면조, 닭고기, 완두콩 단밸질, 닭고기 지방, 완두콩,

감자, 계란, 청어, 연어, 아마씨, 완두콩 섬유,

천연 향료, 고구마, 숭어, 블루베리 섬유, 크랜베리 섬유,

사과, 블루베리, 당근, 시큼치, 크랜베리,

카톨라유, 비타민E, 타우린, DL-메티오닌, L-라이신,

염화 칼륨, 칼슘, 비타민, 유카, 로즈마리, 미네랄, 유산균


씨캐치와 프리미티브 알갱이 비교샷입니다.

위는 프리미티브

아래는 씨캐치입니다.

 

일단 둘다 알갱이는 작은편!

프리미티브가 좀더 단단한 느낌이구요.

두께가 좀 더 얇아요.

씨캐치는 좀 더 건조한? 무른? 느낌에

두께가 좀 더 두껍습니다.

 

사료가루는 뭐 이미 다른 블로그에서도

많이 나오는 내용이지만

저는 개인적으로 괜찮아요.

체에 한 번 걸러서 주기때문에!!!!

안전하기만 하다면야 사료가루쯤이야

걸러주면 되는 것이죠 ㅋㅋㅋㅋㅋㅋ

 

아 그리고 좋은 점은 안에 지퍼백?

비슷하게 처리가 되어 있어요.

락앤락통으로 이미 주방이 가득하기 때문에

덜 수 있는만큼 덜고 나머지는 붙여둡니다.

 

 

어스본 사료는 무엇보다도

우리 귀탱뽀짝이에게 안전하다니까

그 점이 가장 마음에 들구요.

소화 흡수율이 좋다고 합니다.

 

기호성이 별로라는 평도 봤었는데

저희 아이들은 하루 정도 거부하다가

적응하니깐 굉장히 잘 먹어서 ㅋㅋㅋㅋㅋ

좋은 것 같아요!

+ Recent posts