Blockchain (Hyperledger Fabric)/Composer Server

Hyperledger Fabric 웹 앱으로 실행

김야키 2019. 1. 22. 21:13

웹 앱으로 실행 시키는 방법

- 설치 된 폴더로 이동

- 터미널 창에 아래의 명령어 입력

"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를 선택 했으므로 첫 번째로 모델을 정의 해야 함
    • 모델링 언어에 대한 설명 : 설명서
    1. FILES 목록에 있는 Model File 클릭

    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 }

    • 이 도메인 모델은 단일 자산 유형 Commodity및 단일 참여자 유형 TraderTrade상품 소유자를 수정하는 데 사용하는 모델을 정의 함


05. 트랜잭션 프로세서 스크립트 파일 추가

    • 모델이 정의 되었다는 가정 하에 비즈니스 네트워크에 대한 트랜잭션 논리를 정의할 수 있음
    • JavaScript 함수를 사용하여 비즈니스 네트워크에 대한 논리를 표현
    • 트랜잭션 처리를 위해 제출 될 때 자동으로 실행 됨
    • 트랜잭션 프로세서 기능 작성에 대한 설명 : 설명서
    1. Add a file 버튼 클릭

    2. Script File(.js) 선택 후 Add 버튼 클릭

    3. 스크립트 파일에서 코드 줄을 삭제하고 다음 코드로 바꿉니다.

      /**
       * 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);
      }
    • 해당 함수는 들어오는 트랜잭션 ownernewOwner 속성을 기반으로 상품의 속성을 변경
    • 속성의 정보는 모델에서 선언 된 Trade 트랜잭션을 기반으로 함
    • 그 다음 수정 된 내용 CommodityCommodity인스턴스를 저장하는 데 사용되는 asset 레지스토리에 보관


06. 액세스 제어

    • 액세스 제어 파일은 비즈니스 네트워크에 대한 액세스 제어 규칙 정의
    • 현재 네트워크는 간단하므로 기본 액세스 제어 파일은 편집 필요가 없음
    • 기본 파일은 현재 참여자 networkAdmin에게 비즈니스 네트워크 및 시스템 수준 작업에 대한 모든 액세스 권한을 제공
    • 모든 비즈니스 네트워크 에서는 단 하나의 액세스 제어 파일 만을 만들 수 있음
    • 액세스 제어 파일에 대한 설명 : 설명서


07. 업데이트 된 비즈니스 네트워크 배포

    • 모델과 스크립트 및 액세스 제어 파일을 만들었으므로 비즈니스 네트워크를 배포하고 테스트를 해야 함
    • Deploy changes 버튼을 클릭 하여 비즈니스 네트워크를 업그레이드


08. 비즈니스 네트워크 정의 테스트

    • 다음으로 일부 참가자(해당의 경우 Trader)를 만들고 Asset(Commodity)를 생성 한 다음 Trade를 사용
    • Commodity의 소유권을 변경 함으로써 비즈니스 네트워크를 테스트


09. 참가자 생성 - Trader

    • 두 명의 참가자 생성
    1. 왼쪽에 Trader 탭이 선택되어 있는지 확인하고 오른쪽 상단에서 Create New Participant 를 클릭

    2. Trader 참가자 의 데이터 구조를 볼 수 있음

      { "$class": "org.example.mynetwork.Trader", "tradeId": "TRADER1", "firstName": "지하", "lastName": "김" }

    1. 참여자를 작성하려면 Create New Participant 클릭

    2. Trader탭 에서 또 다른 참가자의 정보 생성

      { "$class": "org.example.mynetwork.Trader", "tradeId": "TRADER2", "firstName": "야키", "lastName": "김" }

    • 생성된 두 참가자가 Trader 탭에 있는지 확인


10. 저장물(상품) 만들기 - Commodity

    • 참가자가 두 명이 되었으므로 Trade가 가능
    • Commodity이 소유자(Trader)에게 속한다는 것을 나타내는 특성 TradertraderIdTRADER1로 지정하여 생성

      1. ASSETS 아래 에서 Commodity 탭을 클릭하고 Create New Asset클릭

      2. 기존의 Commodity가 있다면 데이터를 삭제하고 다음으로 대체

        {
          "$class": "org.example.mynetwork.Commodity",
          "tradingSymbol": "ABC",
          "description": "Test commodity",
          "mainExchange": "Euronext",
          "quantity": 72.297,
          "owner": "resource:org.example.mynetwork.Trader#TRADER1"
        } 
      3. Commodity 탭에 생성한 ABC의 정보가 있어야 함


    11. 참가자 간 상품 이전 - Trade

      • 현 시점에서 두 Trader와 그들 사이에서 거래되기 위한 Commodity의 정보가 있으므로 Trade를 테스트 할 수 있음
      • 트랙잭션은 Hyperledger Composer 비즈니스 네트워크의 모든 변경 사항의 기초
      • Trade 태스트
      1. 왼쪽의 Submit Transaction 버튼을 클릭

      2. Transaction Type에서 Trade인지 확인

      3. 거래 데이터를 다음으로 바꾸거나 세부 정보를 변경

        {
          "$class": "org.example.mynetwork.Trade",
          "commodity": "resource:org.example.mynetwork.Commodity#ABC",
          "newOwner": "resource:org.example.mynetwork.Trader#TRADER2"
        } 
      4. Submit 버튼 클릭

      5. ASSETS에서 Commodity의 데이터 섹션을 확장하여 저작물의 소유권이TRADER1에서 TRADER2로 변경 되었는지 확인 

        • owner의 정보가 resource:org.example.mynetwork.Trader#TRADER2로 변경 되어 있어야 함

      6. 비즈니스 네트워크의 전체 거래 내역을 보려면 왼쪽의 All Transactions 를 클릭

      7.  다음은 제출 된 각 트랜잭션의 목록

      8. UI를 사용하여 수행 한 특정 Trade(예 : Trader 참가자 및 ASSET에서 Commodity 만들기)는 비즈니스 네트워크 모델에서 Trade로 정의되지는 않았지만 Trade로 기록

      9. 이러한 트랜잭션은 'System Transactions'으로 알려져 있으며 모든 비즈니스 네트워크에 공통적이며 Hyperledger Composer 런타임에서 정의 됨



    비즈니스 네트워크에서 로그아웃
      • 트랜잭션이 성공적으로 실행 되었으므로 비즈니스 네트워크에서 로그아웃 해야 시작한 My Business Network 화면으로 끝남
      • 화면 오른쪽 상단 admin 레이블이 붙은 단추를 클릭
      • 현재 로그인 된 ID를 나열하고, 로그아웃 할 수 있음
      • admin을 클릭하여 드롭 다운 메뉴를 열고 My Business Network를 클릭



    Real Fabric에 Business Network 배치
      • Playground를 로컬에서 사용하면 브라우저 로컬 장소에서 작동하는 "웹 브라우저"에 대한 연결을 사용 하거나 일반적으로 "hlfv1"이라는 그룹에서 Real Fabric에 대한 연결을 사용할 수 있음
      • Real Fabric에 연결하는 경우 PeerAdminChannelAdmin 역할을 가진 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 클릭하면 드롭 다운 
        • 목록에서 설치 카드 및 업그레이드 카드를 지정하라는 추가 팝업창 출력