원서 : https://hyperledger-fabric.readthedocs.io/en/release-2.1/whatsnew.html

Fabric v2.0 으로의 메이져 릴리즈에서는 사용자 및 운영자에게, 신기능과 중요한 변경사항이 제공됩니다.
(새로운 응용프로그램, 개인정보보호 패턴지원, smart-contracts관련 향상된 관리, 노드운영 신규옵션 등등)

Fabric v2.x 식에 각각의 마이너 릴리즈는, Fabric v2.0 기반에서 약간의 기능개선 및 버그수정 정도로 이루어집니다.

  • Decentralized governance for smart contracts
    • Fabric v2.0 에서는 peer-node에 chaincode를 인스톨하고 channel에서 실행하는~ "탈중앙화된 smart-contracts 관리"를 위한, 새로운 프로세스를 제공합니다.
    • 이런 새로운 chaincode-lifecycle을 통해서, 여러 organization들이 ('endorsement 정책' 같은) chaincode 파라미터 동의과정에 효과적으로 개입 할 수 있습니다.
    • 이 새로운 모델에서는 아래와 같은 몇몇 측면이 향상 되었습니다.
    • Multiple organizations must agree to the parameters of a chaincode
      • Fabric v1.x 에서는, 오직 하나의 organization에서만 'chaincode 파라미터 셋팅'을 관장했습니다.
      • 그리고 해당 channel의 다른 member는 오직 해당 chaincode의 인스톨 거부 정도만 할수있었습니다.
      • (그결과로 해당 chaincode의 transaction 호출에 참여하지 않는 수준)
      • 그래서 이번 새로운 chaincode-lifecycle은 좀더 유연하지기 위해, 기존의 "중앙화된 모델" 및 "탈중앙화된 모델"을 지원하게 되었습니다.
      • 탈중앙화란? 충분한 수의 organization에 동의가 있어야~ chaincode가 channel에서 동작할수있게되는것 입니다.
    • More deliberate chaincode upgrade process
      • 기존의 chaincode-lifecycle에서는 '업그래이드 transaction'을 하나의 organization에서만 발행할수있었습니다.
      • 이것은 해당 channel에서, 아직 최신 chaincode를 인스톨 하지않은 다른 member에게 큰위험을 야기할수있었습니다.
      • 그래서 이번 새로운 모델에서는 충분한 수의 organization에 동의가 있어야~ chaincode를 업그래이드 할 수 있게 하였습니다.
    • Simpler endorsement policy and private data collection updates
      • Fabric 에서는 'endorsement 정책' 및 'privatedata collection 설정' 수정을 "chaincode 재 패키징&인스톨" 없이도 할 수 있습니다.
      • 사용자는 새로운 기본 'endorsement 정책'을 활용할수도 있습니다.
      • 이러한 사항은 organization이 추가 및 제거될때 자동으로 업데이트 됩니다.
    • Inspectable chaincode packages
      • 이번 Fabric lifecycle에서는 chaincode를 쉽게 읽을수있는 tar file으로 패키징 합니다.
      • 이로써, 'chaincode 패키지'를 더 쉽게 검사하고, 여러 organization에 인스톨을 조정 할수있습니다.
    • Start multiple chaincodes on a channel using one package 
      • 기존의 lifecycle에서는 각각에 chaincode의 name 및 version 을 정의해두고, 해당 패키지 인스톨 과정에서 명시 하였습니다.
      • 이제는 하나의 'chaincode 패키지'를 하나의 channel에 여러번 다른이름으로 배포할수있게되었습니다.
      • 예를들어, 하나의 chaincode 사본으로 -> 서로다른 각각 assets으로 종류를 구별할수있습니다.
    • Chaincode packages do not need to be identical across channel members
      • organization들은 각자 자신의 활용성을 위해, chaincode를 확장 시킬수있게 되었습니다.
      • 예를들면, organization 각자가 원하는 검증을 각자가 할 수 있는것 입니다.
      • 결과가 일치하는 '보증 transaction'의 정족수가 확보되면, transaction은 검증되고 ledger에 커밋될것입니다.
      • 또한 각 organization 은 사사로운 수정을 (전체 네트워크를 잠금단계 하지않고) 각자의 일정에따라 손쉽게 배포(roll-out) 할수있게 되었습니다.
  • Using the new chaincode lifecycle
    • 물론 기존의 chaincode-lifecycle을 Fabric v2.0에서도 사용할수있습니다.
    • 새로운 chaincode-lifecycle은 Fabric v2.0으로 업데이트한 channel의 어플리케이션에서만 사용할수있습니다.
  • New chaincode application patterns for collaboration and consensus
    • 탈중앙화를 위한 새로운 chaincode-lifecycle 은 어플리케이션 측면 에서도 적용이 됩니다.
    • 각각에 organization의 ledger에 데이터를 커밋하전에 동의를 받아야 하는식입니다.
    • Automated checks
      • organization들은 transaction-proposal을 보증하기 전에, 검증을하는 '자동화된 검사기능'을 chaincode에 넣을수 있습니다.
    • Decentralized agreement
      • 의사결정을 여러 transaction에 걸친 chaincode 프로세스로 모델링 할수있습니다.
      • chaincode 차원에서는, ledger transaction 과정에서~ 다양한 organization들이 그들의 약관과 조건을 알려주길 요구 할 수 있습니다.
      • 그럼으로 chaincode proposal은 모든 개별 거래자들의 조건이 충족되는지? 확인을 하고, 
      • channel의 모든 members에 걸처서 비지니스적인 합의를 이룰수 있습니다.
      • 구체적인 개별 약관 및 조건관련 예제는 Private-Data 챕터를 확인하게쇼.
  • Private data enhancement
    • // TODO : ...
  • External chaincode launcher
    • '외부 chaincode 런처' 기능은 운영자가 원하는 기술을 선택하여, chaincode를 빌드 및 실행 할수있게 합니다.
    • 기본적으로 Docker API를 사용하는식으로, chaincode를 빌드하고 실행 할 땐~ 외부 빌더 및 런처는 필요 없습니다.
    • Eliminate Docker daemon dependency
      • 기존 Fabric에서는 peer가 chaincode를 빌드 및 실행하기 위해선, Docker 데몬에 접근할수있어야 했습니다.
      • 이러한 점은 때때로, peer 프로세스에 특정 권한이슈로~ prod환경에서 적합하지 않았습니다. 
    • Alternatives to containers
      • 그래서 chaincode는 더이상 Docker 컨테이너로 실행하지 않아도 되도록 하였습니다.
      • 즉, 운영자가 선택하는 환경에서 실행될수있도록 한것입니다. (당연 컨테이너환경도 가능)
    • External builder executables
      • 운영자는 '외부 빌더 실행파일들'을 제공할수있고, peer는 chaincode의 빌드 및 실행을 대체할수있습니다.
    • Chaincode as an external service
      • 전통적으로, chaincode는 peer에서 실행되고, peer와 통신하였습니다.
      • 이제는 외부 서비스로써 실행이 가능해짐에 따라, (예를들면 K8S POD으로 실행) peer가 chaincode 활용을 위해 접속을 할수있습니다.
  • State database cache for improved performance on CouchDB
    • state-database로 CouchDB 사용시, "endorsementvalidation" 단계에서 전통적으로 Read병목이 있어왔었죠.
    • Fabric v2.0 부터는, 새로운 peer 캐싱으로~ 저런 고비용 조회과정을 -> local-cache 으로 대체할수있도록 했삼.
    • 당연히 캐시 사이즈는 core.yaml 의 속성으로 설정할수있습니다.
  • Alpine-based docker images
    • 알파인 리눅스란?
      • 경량, 단순성, 보안성, 자원효율성 등등을 목적으로 개발한 리눅스 배포판.
      • 용량을 줄이기 위해, 시스템의 '기본 C runtime'을... (glibc 대신) musl libc 를 사용.
      • 다양한 'Shell Command'는... (GNU util 대신) busybox 를 탑재.
      • 용량이 80M인 초경량화된 배포판이므로, Embbeded 나 Network 등 특정용도에 적합!
      • 특히, 도커(docker)에 채택되어 5M 크기의 리눅스 이미지로 유명.
      • 즉, 빠른 부팅시간을 제공하는 컨테이너에 흔히 사용.
    • Fabric v2.0 에서는 Hyperledger Fabric Docker 이미지으로 Alpine Linux를 사용하게 되었습니다.
    • (빠르고 & 보안적인 위험을 최소화 시킨) 알파인의 장점을 그대로 다 가져다 줄것입니다.
  • Sample test network
    • fabric 샘플 저장소에, "Fabric test network"를 등록 하였습니다.
    • test network는 모듈화 및 친사용자 하게 만들어 졌고, 이는 어플리케이션 및 smart-contracts를 더 손쉽게 테스르 할수있습니다.
    • 또한 test network는 `cryptogen` 이외의 별도의 CA를 사용하여 배포할수도 있습니다.
  • Upgrading to Fabric v2.x
    • ...
  • Release notes
    • v2.0.0 릴리즈 (2020/01/29)
    • v2.0.1 릴리즈 (2020/02/26)
    • v2.1.0 릴리즈 (2020/04/15)
    • v2.1.1 릴리즈 (2020/06/01)

-끝-

'hyperledger > fabDoc.What’s New?' 카테고리의 다른 글

What’s new in v1.4  (0) 2019.04.24
What’s new in v1.3  (0) 2019.04.24
What’s new in v1.2  (0) 2019.04.24

+ Recent posts