* 본 포스팅은 하이퍼레저 패브릭 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

 

+ Recent posts