시스템 Chaincode 플러그인

시스템 Chaincode는 user의 Chaincode같이 분리된 Docker 컨테이너에서 실행되는 것과는 달리 피어 프로세스의 일부로 특별하게 작동하는 Chaincode입니다.

그러므로 시스템 Chaincode는 피어의 리소스에 더 많이 접근 할 수 있고, 유저 chaincode로 실행하기 어렵거나 불가능한 특징들을 실행하는 것에 사용됩니다.

시스템 Chaincode의 예시로는 Endorsing 제안의 ESCC(Endorser System Chaincode), 원장과 다른 fabric과 관련된 쿼리의 QSCC(Query System Chaincode) 마지막으론 커밋이 일어난 시점에 동시에 실행되는 VSCC(Validation System Chaincode)가 있습니다.

다른 유저 Chaincode들과는 달리, 시스템 Chaincode는 SDK나 CLI의 제안을 통해서 설치되거나 인스턴스화 되지 않습니다. 피어가 시작되는 순간에 등록되고 실행됩니다.

시스템 Chaincode가 피어와 연결되는 방법은 두가지가 있습니다.

Go 플러그인에서 정적이거나 동적으로 연결될 수 있습니다.

이번 튜토리얼은 시스템 Chaincode를 플러그인으로서 어떻게 개발하고 불러오는지를 배울 계획입니다.

플러그인 개발하기

시스템 Chaincode는 Go언어로 쓰여지고 Go 플러그인으로 불려집니다.

플러그인은 외부의 심볼와 main 패키지를 포함하고, 아래의 커맨드로 빌드합니다.

go build -buildmode=plugin

이미 존재하는 QSCC같은 Chaincode는 접근 관리 같은 전형적으로 시스템 Chaincode를 통해 실행되는 확실한 특징을 위한 탬플릿으로 취급 받습니다.

존재하는 시스템 Chaincode는 또한 로깅이나 테스팅 같은 최고의 예시로 참고할 수 있도록 취급받습니다.

- 주의 사항

임포트 된 패키지: Go 스탠다드 라이브러리는 플러그인이 반드시 호스트 어플리케이션에서 요구되는 버전과 같은 것을 포함해야합니다.

플러그인 설정하기

플러그인은 chaincode.systemPlugin 섹션에서 core.yaml로 설정 할 수 있습니다.

chaincode:
  systemPlugins:
    - enabled: true
      name: mysyscc
      path: /opt/lib/syscc.so
      invokableExternal: true
      invokableCC2CC: true

시스템 Chaincode는 반드시 chaincode.system 섹션에 core.yaml로 리스트가 될 수 있습니다.

chaincode:
  system:
    mysyscc: enable


출처 : http://hyperledger-fabric.readthedocs.io/en/release-1.1/systemchaincode.html

+ Recent posts