블록체인(Hyperledger Fabric)을 통해 인버터 사용 관리

주식회사 히타치 제작소 복중승박

입문


블록체인은 2008년경에 시작된 비트코인에서 기원되었고 현재는 가상 화폐, 암호 화폐를 제외하고는 광범위하고 실용화된 시스템이 거의 없지만 각종 업무에 적용되는 통용 기술로 기대를 받아 세계적으로 연구 개발과 실증 실험을 실시했다.
그 중에서 기업을 대상으로 하는 블록체인 기반 OSS 중 하나인 Hyperledger Fabric은 2016년에 개발을 시작했고 2017년 7월에 구조 업데이트의 v1.0을 발표했다.
이 Hyperledger Fabric을 사용한 응용 프로그램을 설계·개발하고 싶어요!그래서 우리는 "블록체인으로 변기 받침대의 사용 상황을 관리하는 시스템"을 만들기로 했다.
이번에는 그때(2017년 가을경, Hyperledger Fabric v1.0)의 이야기다.

개발 과정


히타치는 예전부터 요코하마 사무소에서 친환경 사무실 활동에 주력해 왔다.
이 행사에서는 "최근의 화장실 변기 받침대는 모두 사용 중에 어려운 경험이 있다"는 직원이 많아 화장실에 센서를 설치하고 사용 상황을 가시화하는 시스템을 개발해 쾌적한 사무환경을 만드는 데 기여했으며'모두의 라스파 대회 2015'우수상을 수상하기도 했다.
https://tech.nikkeibp.co.jp/it/atcl/column/16/060700122/062000022/
다른 한편, 블록체인의 대표적인 용례로 IoT 연합이라는 키워드가 있는데 갑자기 센서 부분에서 너무 비싸게 만들어져서 이 과거 시스템에서 나온 센서의 데이터를 유용할 수 없습니까?내 생각엔
그러나 센서를 설치한 것은 히타치 본사 건물 내의 화장실이다. 이런 환경에서 블록체인을 사용하는 의미는 거의 없다. 그러나 만약에 여러 기업이 사용하는 사무용 빌딩에서 화장실을 공유하는 시스템이라고 가정하면 블록체인을 사용하는 의미는 있다고 생각한다.또한 트레이스 가능성이라는 특성에서 사용 시간과 사용 횟수도 가시화되고 이상 검측과 청소 효율화 등도 구상할 수 있다.
이러한 절차를 통해 개발된 응용 프로그램의 개요를 결정했다.

용례


나는 각양각색의 패턴이 있다고 생각하는데, 이번에는 가능한 한 간단하게 다음과 같은 두 가지를 했다.
  • 업데이트: 센서 데이터에서 휴대용 기기의 사용 상황을 가져와 블록체인에 저장합니다.
  • 참조: 블록체인에서 인버터의 사용 상황을 얻어 화면으로 출력합니다.
  • 또한 센서는 초음파 거리 센서를 사용하여 정기적으로 현재 거리의 정보를 얻고 발송한다.
    센서에 대한 상세한 설명, 이번에는 내가 사랑을 베는 것을 허락해 주세요.

    개발 범위


    갑자기 제로부터 모든 것을 구축하는 문턱이 높아 지역사회에서 제공하는 샘플인 Balance-Tranfer를 활용하기로 했다.
    이 견본 자체의 상세한 상황에 관해서는 아래의 문서를 참조하십시오.
    https://github.com/hyperledger/fabric-samples/blob/v1.0.2/balance-transfer/README.md
    이번에는 최소한의 샘플을 바꾸기 위해 아래의 규칙에 따라 응용 프로그램 개발을 진행했다.
  • Docker 컨테이너(CA·Orderer·Peer): 그대로
  • 스마트 구축: 자체 개발 프로그램으로 변경
  • 클라이언트 어플리케이션(SDK): 필요에 따라 최소 변경
  • Chaincode의 디자인 및 개발


    Chaincode는 블록 체인에 저장된 데이터의 입력과 출력을 담당합니다.
    Hyperledger Fabric은 Key-Value형 데이터 저장소(KVS)를 사용하기 때문에 SQL처럼 복잡한 검색을 할 수 없습니다.
    (문서형 DB인 CouchDB로 바꾸면 어느 정도 풍부한 조회가 가능하지만 이번에는 샘플에 따라 표준적인 KVS형 LevelDB를 사용했다.)
    우선 이 KVS 구조에 맞추어 다음과 같이 데이터 설계를 진행하였다.
  • Key: 각 화장실의 각 변기에 할당된 고유 ID
  • Value: 좌변기 사용(켜거나 끄기)
  • 업데이트할 때 입력된 센서 데이터는 거리의 정보이기 때문에 반드시 설치가 한도값보다 짧은 상황에서 열기, 장거리 상황에서 닫기 처리로 판단해야 한다.
    다른 한편, 참조할 때 모든 키와 그에 대응하는 가치를 얻고 클라이언트 응용 프로그램에 반환해야 한다.이 경우 JSON 형식의 데이터를 만드는 것이 좋습니다.문서형 DB인 CouchDB를 사용할 때 Value를 JSON 형식으로 설정해야 하며, Chaincode 이외의 참조 API의 출력 데이터도 JSON 형식으로 확장할 때 적합합니다.
    구현 시 로컬 환경에서 다음 샘플 Chaincode를 수정했습니다.
    https://github.com/hyperledger/fabric-samples/blob/v1.0.2/balance-transfer/artifacts/src/github.com/example_cc/example_cc.go

    클라이언트 응용 프로그램의 설계와 개발


    클라이언트 응용 프로그램은 기본적으로 견본의 REST 서버를 직접 사용하지만 반드시 변경해야 하는 부분으로서 Chaincode의 참조 처리에서의 출력은 Balance-Tranfer 전용이기 때문에 다음과 같이 앞뒤의 불필요한 정보를 삭제해야 한다.
  • 수정처: https://github.com/hyperledger/fabric-samples/blob/v1.0.2/balance-transfer/app/query.js#L49-L50
  • 이전: return args[0]+' now has ' + response_payloads[i].toString('utf8') + ' after the move';
  • 이후: return response_payloads[i].toString('utf8');
  • 위의 변경 사항을 통해 REST 서버는 멋진 JSON 형식의 데이터를 반환합니다.
    참고용 화면 프로그램은 정기적으로 REST 서버에 연결하여 JSON 데이터를 분석하고 각 휴대용 기기의 사용 상황을 출력합니다.
    또한 사용자가 로그인할 때 발행하는 영패(JWT)를 화면 프로그램에 미리 건네주어야 한다.
    센서 데이터의 투입 프로그램도 마찬가지다.표시 만료 시간 (기본값은 10시간) 에 유의하십시오.

    총결산


    블록체인은 용례를 결정하는 것이 가장 중요하고 과제이다.
    어떤 블록체인 기반이 좋습니까?원래 블록체인이 필요해요?나는 각양각색의 의문이 생길 것이라고 생각한다.
    그러나 실제 제작 응용 프로그램을 통해 블록체인과 Hyperledger Fabric에 대한 이해를 깊이 있게 할 수 있다.
    나는 해결된 의문도 있고 반대로 새로 쏟아져 나오는 의문도 있다고 생각한다. 그러나 어쨌든 큰 진보가 아닐까.
    예를 들어 블록 체인에 저장된 데이터는 이번의 경우 좌변기의 사용 상황을 나타내는 데이터는 변조하기 어려운 데이터이지만 입력된 센서 데이터 자체가 정확한지 여부는 또 다른 문제로 블록 체인의 바깥쪽에서 해결해야 한다.
    생각해보면 당연한 일이지만 가상화폐에서는 특별히 고려할 필요가 없는 부분으로 실제로 가시화 센서가 고장났을 때의 데이터를 통해 알 수 있다.
    여러분도 상술한 절차를 참고하여 반드시 실제적으로 응용 프로그램을 제작하시기 바랍니다.
    나는 반드시 어떤 새로운 주의를 얻을 수 있을 것이라고 생각한다.
    당신의 응용 프로그램은 무엇부터 시작합니까?변기에서 나올게요!

    참고 자료


    블록체인의 특징, 용례, 일립의 조합에 관하여 (일립의 블록체인 사이트)
    https://www.hitachi.co.jp/products/it/blockchain/index.html

    좋은 웹페이지 즐겨찾기