웹 앱으로 실행 시키는 방법
- 설치 된 폴더로 이동
- 터미널 창에 아래의 명령어 입력
"Playground" 실행 명령문 :
composer-playground
-> 명령어를 실행 시키면 웹 브라우저가 열리며, 다음 주소를 입력해도 접속이 가능 함: http://localhost:8080/login (localhost대신 IP주소로 입력해도 가능)
-> 웹 응용 프로그램의 "My Business Netowrks"화면에서 스크립트로 PeerAdmin@hlfv1 의 카드가 보임
-> createPeerAdminCard 가 보이지 않으면 런타임을 제대로 시작할 수 없음
Playground 튜토리얼 목록
- Business Network 설정
- defining our assets(자산 정의)
- participants and transactions(참가자 및 트랜잭션 정의)
- 일부 참여자 및 자산 작성을 통한 네트워크 테스트 및 자산 소유권을 하나에서 다른 것으로 변경하는 트랜잭션 제출 방법을 설명 함
Playground 튜토리얼
01. Hyperledger Composer Playground 열기
- 위에서 설명한 명령어로 실행
02. 새로운 비즈니스 네트워크 만들기
- 웹 브라우저에 출력 된 Deploy a new business network 선택
- 새로운 비즈니스 네트워크 이름 설정 (tutorial-network)
- Give your new Business Network a name: 부분
- 원하는 경우 비즈니스 네트워크에 대한 설명을 입력할 수 있음
- Describe what your Business Network will be used for. 부분
- 처음부터 네트워크를 구축할 것임
- 2. MODEL NETWORK START TEMPLATE
- empty-business-network 선택
- 네트워크가 정의 되었으므로 Deploy를 클릭
03. 비즈니스 네트워크에 연결
- 이제 비즈니스 네트워크를 만들고 배포 했으므로 My Business Networks에 새로운 카드가 만들어 짐
- 외부 블록 체인에 연결할 때 비즈니스 네트워크 카드는 비즈니스 네트워크에 연결하는 데 필요한 모든것을 나타 냄
- 여기에는 연결 세부 정보, 인증 자료 및 메타 데이터가 포함 됨
- 비즈니스 네트워크에 연결하려면 네트워크 카드 아래의 Connect now를 클릭
04. 모델 파일 추가
- 현제 연결 한 네트워크있는 Define탭 에서 네트워크를 구성하는 파일을 만들고 편집 할 수 있음
- Test탭을 사용하여 테스트를 할 수 있음
- empty-business-network를 선택 했으므로 첫 번째로 모델을 정의 해야 함
- 모델링 언어에 대한 설명 : 설명서
FILES 목록에 있는 Model File 클릭
모델 파일에서 코드 줄을 삭제하고 다음 코드로 바꿉니다.
/** * 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상품 소유자를 수정하는 데 사용하는 모델을 정의 함
05. 트랜잭션 프로세서 스크립트 파일 추가
- 모델이 정의 되었다는 가정 하에 비즈니스 네트워크에 대한 트랜잭션 논리를 정의할 수 있음
- JavaScript 함수를 사용하여 비즈니스 네트워크에 대한 논리를 표현
- 트랜잭션 처리를 위해 제출 될 때 자동으로 실행 됨
- 트랜잭션 프로세서 기능 작성에 대한 설명 : 설명서
Add a file 버튼 클릭
Script File(.js) 선택 후 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); }
- 해당 함수는 들어오는 트랜잭션 owner의 newOwner 속성을 기반으로 상품의 속성을 변경
- 속성의 정보는 모델에서 선언 된 Trade 트랜잭션을 기반으로 함
- 그 다음 수정 된 내용 Commodity를 Commodity인스턴스를 저장하는 데 사용되는 asset 레지스토리에 보관
06. 액세스 제어
- 액세스 제어 파일은 비즈니스 네트워크에 대한 액세스 제어 규칙 정의
- 현재 네트워크는 간단하므로 기본 액세스 제어 파일은 편집 필요가 없음
- 기본 파일은 현재 참여자 networkAdmin에게 비즈니스 네트워크 및 시스템 수준 작업에 대한 모든 액세스 권한을 제공
- 모든 비즈니스 네트워크 에서는 단 하나의 액세스 제어 파일 만을 만들 수 있음
- 액세스 제어 파일에 대한 설명 : 설명서
07. 업데이트 된 비즈니스 네트워크 배포
- 모델과 스크립트 및 액세스 제어 파일을 만들었으므로 비즈니스 네트워크를 배포하고 테스트를 해야 함
- Deploy changes 버튼을 클릭 하여 비즈니스 네트워크를 업그레이드
08. 비즈니스 네트워크 정의 테스트
- 다음으로 일부 참가자(해당의 경우 Trader)를 만들고 Asset(Commodity)를 생성 한 다음 Trade를 사용
- Commodity의 소유권을 변경 함으로써 비즈니스 네트워크를 테스트
09. 참가자 생성 - Trader
- 두 명의 참가자 생성
왼쪽에 Trader 탭이 선택되어 있는지 확인하고 오른쪽 상단에서 Create New Participant 를 클릭
Trader 참가자 의 데이터 구조를 볼 수 있음
{ "$class": "org.example.mynetwork.Trader", "tradeId": "TRADER1", "firstName": "지하", "lastName": "김" }
참여자를 작성하려면 Create New Participant 클릭
Trader탭 에서 또 다른 참가자의 정보 생성
{ "$class": "org.example.mynetwork.Trader", "tradeId": "TRADER2", "firstName": "야키", "lastName": "김" }
- 생성된 두 참가자가 Trader 탭에 있는지 확인
10. 저장물(상품) 만들기 - Commodity
- 참가자가 두 명이 되었으므로 Trade가 가능
- Commodity이 소유자(Trader)에게 속한다는 것을 나타내는 특성 Trader와 traderId를 TRADER1로 지정하여 생성
ASSETS 아래 에서 Commodity 탭을 클릭하고 Create New Asset클릭
기존의 Commodity가 있다면 데이터를 삭제하고 다음으로 대체
{ "$class": "org.example.mynetwork.Commodity", "tradingSymbol": "ABC", "description": "Test commodity", "mainExchange": "Euronext", "quantity": 72.297, "owner": "resource:org.example.mynetwork.Trader#TRADER1" }
Commodity 탭에 생성한 ABC의 정보가 있어야 함
11. 참가자 간 상품 이전 - Trade
- 현 시점에서 두 Trader와 그들 사이에서 거래되기 위한 Commodity의 정보가 있으므로 Trade를 테스트 할 수 있음
- 트랙잭션은 Hyperledger Composer 비즈니스 네트워크의 모든 변경 사항의 기초
- Trade 태스트
왼쪽의 Submit Transaction 버튼을 클릭
Transaction Type에서 Trade인지 확인
거래 데이터를 다음으로 바꾸거나 세부 정보를 변경
{ "$class": "org.example.mynetwork.Trade", "commodity": "resource:org.example.mynetwork.Commodity#ABC", "newOwner": "resource:org.example.mynetwork.Trader#TRADER2" }
Submit 버튼 클릭
ASSETS에서 Commodity의 데이터 섹션을 확장하여 저작물의 소유권이
TRADER1
에서TRADER2
로 변경 되었는지 확인owner의 정보가
resource:org.example.mynetwork.Trader#TRADER2
로 변경 되어 있어야 함비즈니스 네트워크의 전체 거래 내역을 보려면 왼쪽의 All Transactions 를 클릭
다음은 제출 된 각 트랜잭션의 목록
UI를 사용하여 수행 한 특정 Trade(예 : Trader 참가자 및 ASSET에서 Commodity 만들기)는 비즈니스 네트워크 모델에서 Trade로 정의되지는 않았지만 Trade로 기록
이러한 트랜잭션은 'System Transactions'으로 알려져 있으며 모든 비즈니스 네트워크에 공통적이며 Hyperledger Composer 런타임에서 정의 됨
비즈니스 네트워크에서 로그아웃
- 트랜잭션이 성공적으로 실행 되었으므로 비즈니스 네트워크에서 로그아웃 해야 시작한 My Business Network 화면으로 끝남
- 화면 오른쪽 상단 admin 레이블이 붙은 단추를 클릭
- 현재 로그인 된 ID를 나열하고, 로그아웃 할 수 있음
- admin을 클릭하여 드롭 다운 메뉴를 열고 My Business Network를 클릭
Real Fabric에 Business Network 배치
- Playground를 로컬에서 사용하면 브라우저 로컬 장소에서 작동하는 "웹 브라우저"에 대한 연결을 사용 하거나 일반적으로 "hlfv1"이라는 그룹에서 Real Fabric에 대한 연결을 사용할 수 있음
- Real Fabric에 연결하는 경우 PeerAdmin 및 ChannelAdmin 역할을 가진 ID용 카드를 이미 만들었을 가능성이 있음
- 이 카드는 보통 PeerAdmin이라고 함
- 해당 카드는 Composer로 네트워크를 배포 및 업데이트하는 데 사용하는 카드
- 네트워크를 Real Fabric에 배치 할 때 Deploy 버튼을 클릭하기 전에 완료 할 추가 필드가 있음
- Network Administrator의 세부 정보를 제공 해야 함
- Deploy Screen(배포 화면)의 맨 아래로 스크롤 하여 CREDENTIALS FOR NETWORK ADMINISTRATOR로 이동
- 개발 Fabric 및 많은 테스트 네트워크의 경우 ID와 Password를 제공할 수 있음
- ID - admin, Password - adminpw로 등록 됨
Real Fabric에 연결된 상태에서 비즈니스 네트워크 업데이트
- Real Fabric을 사용하고 Deploy Changes 클릭하면 드롭 다운
- 목록에서 설치 카드 및 업그레이드 카드를 지정하라는 추가 팝업창 출력
'Blockchain (Hyperledger Fabric) > Composer Server' 카테고리의 다른 글
Hyperledger Composer Developer 솔루션 (0) | 2019.01.23 |
---|---|
Hyperledger Fabric 실행 및 중지 (0) | 2018.12.24 |