* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.
상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : )
https://hyperledger.github.io/composer/latest/tutorials/playground-tutorial
이번 단계별 튜토리얼에서는 비즈니스 네트워크 설정, 자산정의, 참가자 및 트랜잭션 정의, 참여자 및 자산 생성을 통한 네트워크 테스트, 그리고 트랜잭션 제출을 통해 자산 소유권을 변경하는 방법에 대해 설명합니다. 이 튜토리얼은 Playground 환경을 사용하여 Hyperledger Composer 개념을 소개하기 위한 것입니다.
Step One: Open the Hyperledger Composer Playground
Composer Playground를 켭니다. (https://composer-playground.mybluemix.net/)
사용자의 비즈니스 네트워크 화면이 나타날 것입니다. 비즈니스 네트워크 페이지에는 연결할 수 있는 비즈니스 네트워크 및 연결에 사용할 수 있는 ID에 대한 요약 정보가 표시됩니다. 우리는 우리 네트워크를 생성할 예정이므로 이 부분에 대해 너무 신경쓰지 않아도 됩니다.
Step Two: Creating a new business network
다음으로 우리는 새로운 비즈니스 네트워크를 만들 것입니다. 비즈니스 네트워크에는 이름이나 옵션 등 몇 가지 정의된 속성이 있습니다. 우리는 새 비즈니스 네트워크를 생성할 때 기존 템플릿을 기반으로 하거나, 혹은 자신의 템플릿을 가져올 수도 있습니다.
- 웹 브라우저 제목 아래에 Deploy a new business network를 클릭하세요.
- 새 비즈니스 네트워크에는 이름이 필요합니다. tutorial-network라고 합시다.
- 원하는 경우, 비즈니스 네트워크에 대한 설명을 입력할 수 있습니다.
- 다음으로 우리는 비즈니스 네트워크 기반을 선택해야 합니다. 우리는 처음부터 네트워크를 구축하므로 empty-business network를 클릭하세요.
- 이제 네트워크가 정의되었습니다. Deploy를 클릭하세요.
참고 : Playground를 로컬에서 사용하고 실제 Fabric에 연결하는 경우에는 하단 추가 참고사항을 참고하십시오.
Step Three: Connecting to the business network
이제 비즈니스 네트워크를 만들고 배포했으므로 지갑에서 tutorial-network용 admin이라는 비즈니스 네트워크 카드를 볼 수 있습니다. 지갑에는 여러 개의 배포된 비즈니스 네트워크에 연결할 수 있는 비즈니스 네트워크 카드가 포함될 수 있습니다.
외부 블록체인에 연결할 때 비즈니스 네트워크 카드는 비즈니스 네트워크에 연결하는데 필요한 모든 것을 나타냅니다. 여기에는 연결에 대한 세부정보, 인증방식 및 메타데이터가 포합됩니다.
비즈니스 네트워크에 연결하려면 비즈니스 네트워크 카드 아래의 Connect now를 클릭하세요.
Step Four: Adding a model file
우리는 지금 Define 탭에 있습니다. 이 탭은 Test 탭을 사용해 비즈니스 네트워크를 배포하고 테스트하기 전에 비즈니스 네트워크 정의를 구성하는 파일을 생성하고 편집하는 탭입니다.
우리는 empty business network 템플릿을 선택했기 때문에 제공된 템플릿 파일을 수정해야 합니다. 첫 번째 단계는 모델 파일을 업데이트하는 것입니다. 모델파일은 비즈니스 네트워크의 자산, 참가자, 트랜잭션 그리고 이벤트를 정의합니다.
모델링 언어에 대한 더 상세한 정보는 아래 링크를 참고하세요.
https://hyperledger.github.io/composer/latest/reference/cto_language.html
- 먼저 모델 파일을 선택하세요.
- 모델 파일에 있는 내용을 지우고 아래 내용을 입력하세요.
/**
* 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
}
이 도메인 모델은 단일 유형의 자산인 Commodity와 단일 참가자 유형인 Trader그리고 단일 트랜잭션유형인 Trade를 정의하며, 이것들은 commodity의 소유자를 변경할 때 사용됩니다.
Step Five: Adding a transaction processor script file
도메인 모델이 정의되었으므로, 이제 비즈니스 네트워크용 트랜잭션 로직을 정의할 수 있습니다. Composer는 JavaScript 함수를 사용해 비즈니스 네트워크용 로직을 표현합니다. 이 함수들은 트랜잭션이 처리를 위해 제출되면 자동으로 실행됩니다.
트랜잭션 처리 함수에 관련된 상세한 내용은 하단 링크를 참고하세요.
https://hyperledger.github.io/composer/latest/reference/js_scripts.html
- Add a file 버튼을 클릭하세요.
- Script file을 클릭한 후 Add를 누르세요.
- 스크립트 파일에 있는 코드를 지우고 아래 코드를 입력하세요.
/**
* 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);
}
이 함수는 단순히 들어오는 Trade 트랜잭션의 newOwner 속성을 기반으로 commodity의 owner 속성을 변경합니다. 그리고 나서 변경된 Commodity는 asset registry로 다시 들어오고 Commodity 인스턴스를 저장하는데 사용됩니다.
Step Six: Access control
Access control 파일은 비즈니스 네트워크의 접근 제어 규칙을 정의합니다. 우리 네트워크는 단순하기 때문에 default access control 파일을 수정할 필요가 없습니다. 기본 파일은 현재 참가자인 networkAdmin에게 비즈니스 네트워크와 시스템 레벨에서의 동작에 대한 전체 접근 권한을 부여합니다.
여러 개의 모델이나 스크립트 파일을 갖고 있어도, access control 파일은 한 개만 가질 수 있습니다.
access control 파일에 대한 상세한 정보는 하단 링크를 참고하세요.
https://hyperledger.github.io/composer/latest/reference/acl_language.html
Step Seven: Deploying the updated business network
이제 모델, 스크립트, access control file을 생성했으므로 비즈니스 네트워크를 배포하고 테스트해야 합니다.
비즈니스 네트워크를 업그레이드 하기 위해 Deploy changes를 클릭하세요.
참고 : Playground를 로컬에서 사용하고 실제 Fabric에 연결하는 경우에는 하단 추가 참고사항을 참고하십시오.
Step Eight: Testing the business network definition
이제 우리는 참가자(Traders)와 자산(Commodity)를 생성하고 Trade 트랜잭션을 사용해 Commodity의 소유자를 변경하는 테스트를 진행할 것입니다.
Test탭을 클릭하세요.
Step Nine: Creating participants
1. 먼저 비즈니스 네트워크에 두 명의 참가자를 추가해야 합니다.
2. 왼쪽의 Trader 탭을 클릭하고, 오른쪽 상단의 Create New Participants를 선택하세요.
3. Trader 참가자의 자료구조를 볼 수 있습니다. 우리는 쉽게 인식가능한 데이터를 원하므로 작성된 코드를 지우고 아래 내용을 입력하세요.
{
"$class": "org.example.mynetwork.Trader",
"tradeId": "TRADER1",
"firstName": "Jenny",
"lastName": "Jones"
}
참가자를 생성하기 위해 Create New를 클릭하세요.
방금 생성한 새로운 Trader 참가자를 볼 수 있을 것입니다. 우리는 Trade 트랜잭션을 테스트 하기 위해 또 한 명의 참가자가 필요하므로 또 다른 Trader를 생성합니다. 이번에는 아래 내용을 입력하세요.
{
"$class": "org.example.mynetwork.Trader",
"tradeId": "TRADER2",
"firstName": "Amy",
"lastName": "Williams"
}
옮기기 전에 두 참가자 모두 Trader 화면에 있는지 확인하세요.
Step Ten: Creating an asset
이제 우리는 두 명의 참가자를 가지고 있습니다. 이제 두 참가자 간 거래할 무언가가 필요합니다. 자산을 생성하는 것은 참가자를 생성하는 것과 매우 유사합니다. 우리가 생성할 Commodity는 owner 속성을 가지고 있으며 이는 TRADE!이라는 tradeId를 가진 Trader가 소유하고 있음을 의미합니다.
1. 먼저 Assets 아래 Commodity 탭을 클릭한 후 Create New Asset을 클릭하세요.
2. asset data 내용을 지우고 아래 내용을 입력하세요.
{
"$class": "org.example.mynetwork.Commodity",
"tradingSymbol": "ABC",
"description": "Test commodity",
"mainExchange": "Euronext",
"quantity": 72.297,
"owner": "resource:org.example.mynetwork.Trader#TRADER1"
}
3. 이 자산이 생성되고 나면 Commodity 탭에서 이를 확인할 수 있어야 합니다.
Step Eleven: Transferring the commodity between the participants
우리는 두 명의 참가자와 그들 간 거래할 수 있는 Commodity를 갖고 있습니다. 이제 Trade 트랜잭션을 테스트 해보겠습니다.
트랜잭션은 Hyperledger Composer의 비즈니스 네트워크에서 일어나는 모든 변화의 기본이 되는 것입니다. 이 튜토리얼 후에 스스로 연습해보고 싶다면 My Business Network화면에서 다른 비즈니스 네트워크를 생성하고 좀 더 고급 비즈니스 네트워크 템플릿을 사용해 보세요.
Trade 트랜잭션 테스트를 위해
1. 왼쪽의 Submit Transaction 버튼을 클릭하세요.
2. 트랜잭션 타입이 Trade인지 확인하세요.
3. 트랜잭션 데이터 내용을 아래와 같이 변경하세요.
{
"$class": "org.example.mynetwork.Trade",
"commodity": "resource:org.example.mynetwork.Commodity#ABC",
"newOwner": "resource:org.example.mynetwork.Trader#TRADER2"
}
4. Submit을 클릭하세요.
5. 자산의 data 섹션으로 넘어가 우리가 보유한 자산의 소유자가 TRADER1에서 TRADER2로 변경되었는지 확인하세요. 아마 resource:org.example.mynetwork.Trader#TRADER2와 같은 문구를 확인할 수 있을 것입니다.
6. 비즈니스 네트워크 내 모든 트랜잭션 기록을 보기 위해 왼쪽의 All Transactions를 클릭하세요. 여기에는 제출된 모든 트랜잭션의 리스트가 있습니다. UI를 사용해 Trader같은 참가자를 생성하거나, Commodity같은 자산을 생성하거나 한 행동은 우리 비즈니스 네트워크 모델에서 트랜잭션으로 정의되어있지 않더라도 모두 트랜잭션으로 기록됩니다. 이런 트랜잭션을 '시스템 트랜잭션'이라고 부르며 모든 비즈니스 네트워크에 공통으로 적용됩니다. 이는 Hyperledger Composer Runtime에 정의되어 있습니다.
Logging out of the business network
이제 트랜잭션이 성공적으로 동작했으므로 비즈니스 네트워크 접속을 종료해야 합니다. 우리가 처음 시작했던 My Business Network 화면에서 끝나야 합니다.
우측 상단의 admin이라는 버튼을 클릭하세요. 이 버튼은 로그아웃할 사용자의 현재 신원 리스트를 보여줍니다. 드롭다운 메뉴를 펼치기 위해 admin을 클릭하고 My Business Network를 클릭하세요.
Deploying a Business Network to a real Fabric
Playground를 로컬에서 사용하면 로컬 저장소에서 동작하는 "웹 브라우저"에 연결할 수 있습니다. 혹은 일반적으로 "hlfv1"이라 불리는 그룹에서 실제 Fabric에 연결할 수 있습니다.
실제 Fabric에 연결하는 경우 PeerAdmin 및 ChannelAdmin 역할을 가진 카드를 생성했을 가능성이 싰습니다. 이 카드는 보통 PeerAdmin이라고 합니다. 이는 Composer로 네트워크를 배포 및 업데이트 하는 데 사용됩니다.
네트워크를 실제 패브릭에 배포할 때 배포 버튼을 클릭하기 전에 완료해야할 추가 필드가 있습니다. 바로 네트워크 관리자의 세부 정보를 제공하는 것입니다.
배포 화면의 맨 아래로 스크롤하면 CREDENTIALS FOR NETWORK ADMINISTRATOR를 찾을 수 있습니다. 간단한 패브릭 개발 및 테스트 네트워크의 경우 ID와 비밀번호를 제공할 수 있습니다. (ID : admin / Secret : adminpw)
ID와 Secret이 지정되면 배포 버튼을 클릭하고 Step Three에서 튜토리얼을 시작할 수 있습니다.
사용자 정의 혹은 패브릭 제품을 사용하는 경우 패브릭 관리자에게 네트워크 관리자에 대한 자세한 내용을 문의하십시오.
Updating a Business Network when connected to a real Fabric
실제 Fabric을 사용하고 변경사항 배포를 클릭하면 드롭다운 목록에서 Installation 카드 및 Upgrade 카드를 지정하라는 팝업창이 나타납니다. 일반적으로 초기 네트워크 배포에 사용된 것과 동일한 PeerAdmin 카드를 지정합니다. 확실치 않은 경우 패브릭 관리자에게 문의하십시오.
카드를 선택하고 업그레이드 버튼을 클릭하세요. 실제 패브릭에서는 완료하는 데 몇 분이 걸리 수 있습니다.
이제 Step Eight을 다시 시작하십시오.
'● STUDY ● > Hyperledger' 카테고리의 다른 글
Fabric Pluggable Consensus (0) | 2019.07.13 |
---|---|
Fabric Privacy and Confidentiality (0) | 2019.07.12 |
Composer Installing (0) | 2019.07.10 |
Composer Key Concepts (0) | 2019.07.09 |
Composer Introduction (0) | 2019.07.08 |