* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.
상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : )
https://hyperledger.github.io/composer/latest/tutorials/developer-tutorial
이 튜토리얼은 처음부터 Hyperledger Composer 블록체인 솔루션을 작성하는 과정을 안내합니다. 몇 시간 내에 블록체인 혁신에 대한 아이디어, 실제 Hyperledger Fabric 블록체인 네트워크와의 트랜잭션 실행, 블록체인 네트워크와 상호작용하는 샘플 Angular 2 애플리케이션 생성/실행 등의 작업을 수행할 수 있습니다.
이 튜토리얼은 자신의 유즈케이스에 적용할 수 있는 기술 및 리소스에 대한 개요를 제공합니다.
참고: 이 튜토리얼은 Hyperledger Fabric v1.2와 함께 실행되는 Ubuntu Linux의 최신 Hyperledger Composer 빌드에 대해 작성되었으며, Mac 환경에서도 테스트할 수 있습니다.
Step One: Creating a business network structure
Hyperledger Composer의 주요 컨셉은 비즈니스 네트워크 정의 (Business network definition, BND)입니다.이는 블록체인 솔루션을 위한 데이터 모델, 트랜잭션 로직, 접근 제어 규칙을 정의합니다. BND를 생성하기 위해 우리는 적절한 프로젝트 구조를 생성해야 합니다.
가장 쉬운 방법은 Yeoman generator를 사용해서 비즈니스 네트워크 뼈대를 만드는 것입니다. 이렇게 하면 비즈니스 네트워크의 모든 구성 요소를 포함하는 디렉토리가 생성됩니다.
1. Yeoman을 사용해 스비즈니스 네트워크 뼈대를 만듭니다. 이 명령에는 비즈니스 네트워크 이름, 설명, 작성자 이름, 작성자 메일주소, 라이센스 선택 및 네임스페이스가 필요합니다.
yo hyperledger-composer:businessnetwork
2. 네트워크 이름에 tutorial-network를 입력하고, 설명, 작성자 이름, 작성자 메일주소 같은 필요 정보를 입력합니다.
3. 라이센스로 Apache-2.0을 선택합니다.
4. 네임스페이스로 org.example.mynetwork를 선택합니다.
5. 빈 네트워크를 생성할지 말지 물으면 No를 선택합니다.
Step Two: Defining a business network
비즈니스 네트워크는 자산, 참가자, 트랜잭션, 접근 제어 규칙, 그리고 부가적인 이벤트와 쿼리로 구성되어 있습니다. 이전 단계에서 생성된 비즈니스 네트워크 뼈대에는 비즈니스 네트워크의 모든 자산, 참가자, 트랜잭션에 대한 클래스 정의를 포함한 모델(.cto)파일이 있습니다. 비즈니스 네트워크 뼈대는 또한 기본적인 접근 제어(permission.acl) 문서와 트랜잭션 처리 함수를 포함한 기본적인 접근 제어 규칙인 가진 스크립트(logic.js)파일 그리고 비즈니스 네트워크의 메타데이터를 포함한 package.json 파일을 갖고 있습니다.
Modeling assets, participants, and transactions
처음으로 업데이트할 문서는 모델(.cto) 파일입니다. 이 파일은 Hyperledger Composer Modeling Language를 사용해 작성되어 있습니다. 모델 파일은 자산, 트랜잭션, 참가자, 이벤트에 대한 각 클래스의 정의를 포합합니다. 이는 암묵적으로 modeling language 문서에 있는 Hyperledger Composer System Model을 extend합니다.
1. org.example.mynetwork.cto 모델 파일을 여십시오.
2. 모델 파일 내용을 아래와 같이 변경하세요.
/**
* My commodity trading network
*/
namespace org.example.mynetwork
asset Commodity identified by tradingSymbol {
o String tradingSymbol
o String description
o String mainExchange
o Double quantity
--> Trader owner
}
participant Trader identified by tradeId {
o String tradeId
o String firstName
o String lastName
}
transaction Trade {
--> Commodity commodity
--> Trader newOwner
}
3. org.example.mynetwork.cto에 대한 변경사항을 저장하세요.
Adding JavaScript transcation logic
모델 파일에서 자산, 참가자 간 관계를 명시하는 Trade 트랜잭션이 정의되었습니다. 트랜잭션 처리함수 파일은 모델 파일에 정의된 트랜잭션을 실행시키는 JavaScript로직을 갖고 있습니다.
Trade 트랜잭션은 간단하게 거래될 Commodity 자산의 식별자를 가져와서 참가자 Trader의 식별자를 새 소유자로 지정합니다.
1. logic.js 스크립트 파일을 여세요.
2. 파일 내용을 아래와 같이 변경하세요.
/**
* 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;
let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');
await assetRegistry.update(trade.commodity);
}
3. logic.js 변경 내용을 저장하세요.
Adding access control
1. permissions.acl파일에 있는 접근제어규칙을 아래와 같이 변경하세요.
/**
* Access control rules for tutorial-network
*/
rule Default {
description: "Allow all participants access to all resources"
participant: "ANY"
operation: ALL
resource: "org.example.mynetwork.*"
action: ALLOW
}
rule SystemACL {
description: "System ACL to permit all access"
participant: "ANY"
operation: ALL
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}
2. permissions.acl 파일 변경 내용을 저장하세요.
Step Three: Generate a business network archive
이제 비즈니스 네트워크가 정의되었습니다. 이 비즈니스 네트워크는 배포가능한 비즈니스 네트워크 archive(.bna) 파일에 패키징되어야 합니다.
1. 커맨드 라인을 사용해 tutorial-network 폴더로 이동하세요.
2. tutorial-network 폴더에서, 아래 명령어를 실행하세요.
composer archive create -t dir -n .
명령어가 실행되고나면, tutorial-network 폴더에 생성된 tutorial-network@0.0.1.bna라는 비즈니스 네트워크 archive 파일이 호출됩니다.
Step Four: Deploying the business network
.bna파일 생성 후, 비즈니스 네트워크는 Hyperledger Fabric 객체로 배포될 수 있습니다. 일반적으로 PeerAdmin identity를 생성하기 위해 패브릭 관리자 정보가 필요합니다. PeerAdmin은 composerchannel 채널에 있는 체인코드를 실행하고 다른 피어들에게 체인코드를 설치하는 권한을 갖고 있습니다. 하지만, 개발환경설치과정에서 PeerAdmin은 이미 생성되어 있습니다.
비즈니스 네트워크가 설치된 후, 네트워크를 시작할 수 있습니다. 가장 좋은 방법은 배포 후 비즈니스 네트워크를 관리하기 위해 새 ID를 만드는 것입니다. 이 ID를 네트워크 관리자라고 합니다.
Retrieving the correct credentials
올바른 자격 증명을 가진 PeerAdmin 비즈니스 네트워크 카드는 개발환경설치과정에서 이미 생성되어 있습니다.
Deploying the business network
Hyperledger Fabric에 비즈니스 네트워크를 배포하려면 피어에 Hyperledger Composer 비즈니스 네트워크가 설치되어 있어야 합니다. 그리고 나서 비즈니스 네트워크를 시작할 수 있습니다. 네트워크 관리자가 되기 위해서는 새로운 참가자, 신원 및 관련 카드를 생성해야 합니다. 마지막으로 네트워크 관리자 비즈니스 네트워크 카드는 사용을 위해 import되어야 합니다. 그리고 그 네트워크가 응답하는지 확인하기 위해 ping을 수행할 수 있습니다.
1. 비즈니스 네트워크 설치를 위해 tutorial-network 폴더에서 아래 명령어를 실행하세요.
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
composer network install 커맨드는 PeerAdmin 비즈니스 네트워크 카드와 비즈니스 네트워크를 정의하고 있는 .bna 파일 경로를 필요로 합니다. (이 경우에는 이미 생성 및 import 되어 있습니다.)
2. 비즈니스 네트워크 실행을 위해 아래 명령어를 실행하세요.
composer network start 커맨드는 비즈니스 네트워크 카드와 비즈니스 네트워크의 관리자 이름, 비즈니스 네트워크 이름 및 버전, 그리고 비즈니스 네트워크 카드로 import될 파일 이름을 필요로 합니다.
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
3. 사용가능한 비즈니스 네트워크 카드로 네트워크 관리자 ID를 가져오려면 다음 명령어를 실행하세요.
composer card import --file networkadmin.card
composer card import 커맨드는 카드 생성을 위해 composer network start에 몇시된 파일 이름을 필요로 합니다.
4. 비즈니스 네트워크가 성공적으로 배포되었는지 확인하기 위해 아래 명령어를 실행해 네트워크에 ping을 날려보세요.
composer network ping --card admin@tutorial-network
composer network ping 커맨드는 network ping을 확인하기 위해 비즈니스 네트워크 카드를 필요로 합니다.
Step Five: Generating a REST server
Hyperledger Composer는 비즈니스 네트워크를 기반으로 맞춤형 REST API를 생성할 수 있습니다. REST API는 웹 애플리케이션을 개발할 때 유용한 언어중심 추상화 계층을 제공합니다.
1. REST API 생성을 위해 tutorial-network 폴더로 이동해 아래 명령어를 실행하세요.
composer-rest-server
2. 카드 이름에 admin@tutorial-network를 입력하세요.
3. 생성된 API에서 네임스페이스를 사용할지 물으면 'never use namespaces'를 선택하세요.
4. 생성된 API를 보호할지 물으면 No를 선택하세요.
5. 이벤트 게시를 사용할지 물으면 Yes를 선택하세요.
6. TLS 보안을 사용할지 물으면 No를 선택하세요.
생성된 API는 배포된 블록체인 및 비즈니스 네트워크에 연결됩니다.
Step Six: Generating a skeleton Angular application
Hyperledger Composer는 REST API를 실행하는 Angular 4 응용프로그램을 생성할 수도 있습니다.
1. Angular 4 애플리케이션을 생성하기 위해 tutorial-network 폴더로 이동해 아래 명령어를 실행하세요.
yo hyperledger-composer:angular
2. 실행중인 비즈니스 네트워크에 연결할지 물으면 Yes를 선택하세요.
3. 일반적인 package.json 질문에 대해 입력하세요. (프로젝트명, 설명, 저자명, 이메일, 라이센스)
4. 비즈니스 네트워크 카드로 admin@tutorial-network를 입력하세요.
5. Connect to an existing REST API를 선택하세요.
6. REST 서버 주소로 http://localhost를 입력하세요.
7. 서버 포트로 3000를 입력하세요.
8. Namespaces are not used를 선택하세요.
Angular generator는 그리고나서 프로젝트 기반을 생성하고 모든 의존성을 설치합니다. 애플리케이션을 실행하기 위해 angular 프로젝트 폴더로 가서 npm start를 실행하세요. 이 명령어는 http://localhost:4200의 REST API를 실행하는 Angular 4 애플리케이션을 실행시킬 것입니다.
참고: Yo Angular application generator는 단순하고 기본적인 비즈니스 네트워크 모델 정의 (여기서는 trade-network 네트워크 모델 같은)에 기반한 웹 애플리케이션 뼈대를 만들기 위한 것입니다. Angular generator에 관한 상세 설명은 아래 링크를 참고하세요.
https://hyperledger.github.io/composer/latest/applications/web.html
'● STUDY ● > Hyperledger' 카테고리의 다른 글
Queries Tutorial using the Composer Query language and REST APIs (0) | 2019.07.17 |
---|---|
Hyperledger Caliper 시작하기 (0) | 2019.07.16 |
Fabric Performance and Scalability & Conclusion (0) | 2019.07.14 |
Fabric Pluggable Consensus (0) | 2019.07.13 |
Fabric Privacy and Confidentiality (0) | 2019.07.12 |