티스토리 뷰

반응형

해당 글은 Hyperledger Fabric 페이지의 게시글을 번역 및 정리한 자료입니다.

원본 사이트 : https://hyperledger-fabric.readthedocs.io/en/release-1.2/private-data/private-data.html


 Private 데이터란 무엇입니까?

채널에 있는 조직 그룹이 해당 채널에 있는 다른 조직의 데이터를 비공개로 유지해야하는 경우 데이터에 액세스해야하는 조직만으로 구성된 새 채널을 만들 수 있습니다. 그러나 이러한 각각의 경우 별도의 채널을 만들면 추가 관리 오버 헤드 (체인 코드 버전, 정책, MSP 등 유지 관리)가 발생하며 모든 채널 참가자가 데이터의 일부를 비공개로 유지하면서 트랜잭션을 볼 수 있도록 하는 경우는 허용되지 않습니다.

그래서 v1.2부터 Fabric은 개별 채널을 만들지 않고도 Private 데이터를 수집, 커밋 또는 쿼리 할 수 있는 채널의 조직에 대해 정의된 하위 집합을 허용하는 Private 데이터 컬렉션 을 생성할 수 있는 기능을 제공합니다.


Private 데이터 컬렉션이란 무엇입니까?

컬렉션은 두 요소의 조합입니다.

  1. 실제 Private 데이터 는 가십 프로토콜을 통해 피어 투 피어를 보도록 승인된 조직에게만 전송 됩니다. 이 데이터는 피어의 개인 데이터베이스( "side database"또는 "SideDB"라고도 함)에 저장됩니다. ordering 서비스는 여기에 관여하지 않으며 Private 데이터를 볼 수 없습니다. 가십을 설정하려면 조직 간 통신을 부트 스트랩하기 위해 앵커 피어를 설정해야합니다.
  2. 채널의 모든 피어의 원장에게 승인되고, 정렬되고, 기록되는 데이터의 해시입니다. 해시는 트랜잭션의 증거로 제공되며 상태 유효성 검사에 사용되고, 감사 목적으로 사용될 수도 있습니다.

다음 다이어그램에서는 개인 정보가 부여된 피어의 원장 내용과 그렇지 않은 피어의 원장 내용을 보여줍니다.



컬렉션(Collection) 멤버는 분쟁을 일으키거나 자산을 제 3자에게 양도하려는 경우 개인 정보를 다른 당사자와 공유하기로 결정할 수 있습니다. 그런 다음, 제 3자가 Private 데이터의 해시를 계산하고 채널 원장의 상태와 일치하는지 확인하여 특정 시점에서 컬렉션 멤버 간에 상태가 있음을 확인합니다.


한 채널 내에서 컬렉션을 사용할 때와 별도의 채널을 사용할 때

  • 사용 채널을 전체 트랜잭션(그리고 원장이) 채널의 회원 조직의 집합 내에서 비밀로 유지해야하는 경우.
  • 트랜잭션(및 원장)이 조직 집합간에 공유되어야하지만 해당 조직의 하위 집합만 트랜잭션 내의 일부 또는 모든 데이터에 액세스해야하는 경우 컬렉션을 사용하십시오. 또한 Private 데이터가 블록을 통하지 않고 피어 - 투 - 피어 (peer-to-peer)로 유포되므로 ordering 서비스 데이터 노드에서 거래 데이터를 기밀로 유지해야하는 경우 Private 데이터 컬렉션을 사용하십시오.

Private 데이터가 포함된 트랜잭션 흐름

Private 데이터 컬렉션이 체인 코드에서 참조 될 때 트랜잭션이 제안되고 보증되며 원장에 커밋되기 때문에 Private 데이터의 기밀성을 보호하기 위해 트랜잭션 흐름이 약간 다릅니다.

Private 데이터를 사용하지 않는 트랜잭션 흐름에 대한 자세한 내용은 트랜잭션 흐름에 대한 설명서를 참조하십시오.

  1. 클라이언트 응용 프로그램은 컬렉션의 인증된 조직에 속한 피어를 보증하는 체인 코드 기능 (개인 데이터 읽기 또는 쓰기)을 호출하라는 제안 요청을 제출합니다. Private 데이터 또는 체인 코드에서 Private 데이터를 생성하는 데 사용되는 데이터는 제안서의 transient 필드에서 전송됩니다.
  2. 보증 피어는 트랜잭션을 시뮬레이트하고 Private 데이터를 임시 데이터 저장소(피어의 로컬 임시 저장소)에 저장합니다. 그들은 transient data store을 통해 권한이 부여된 피어에게 수집 정책에 따라 Private 데이터를 가십 프로토콜을 통해 배포합니다.
  3. 보증 피어는 Private 데이터 키 및 값의 해시를 포함하여 퍼블릭 데이터가 포함된 제안 응답을 클라이언트에 보냅니다. Private 데이터는 클라이언트로 되돌려 보내지 않습니다. Private 데이터에 대한 보증 방법에 대한 자세한 내용을 보려면 여기를 클릭 하십시오 .
  4. 클라이언트 응용 프로그램은 트랜잭션을 정상적으로 블록으로 분산되는 ordering 서비스(개인 데이터의 해시 포함)에 제출합니다. 해시 값이 있는 블록은 모든 피어에 배포됩니다. 이러한 방식으로 채널의 모든 피어는 실제 Private 데이터를 모른 채 일관된 방식으로 Private 데이터의 해시를 사용하여 트랜잭션의 유효성을 검사 할 수 있습니다.
  5. 블록 완료 시간에 권한이 부여된 피어는 수집 정책을 사용하여 개인 데이터에 대한 액세스 권한이 있는지 여부를 확인합니다. 만약 그렇다면, 먼저 자신의 로컬 transient data store에서 체인 코드 보증 기간에 Private 데이터를 이미 받았는지 확인합니다. 그렇지 않은 경우 다른 피어에서 Private 데이터를 가져 오려고 시도합니다. 그런 다음 공개 블록에서 해시에 대한 Private 데이터를 확인하고 트랜잭션과 블록을 커밋합니다. 유효성 검사 / 커밋시 개인 데이터는 개인 상태 데이터베이스 및 개인 쓰기 저장 장치의 복사본으로 이동됩니다. Private 데이터는 transient data store에서 삭제됩니다.

컬렉션을 설명하는 유스 케이스

교역품을 생산하는 채널에 속한 5 개 그룹의 조직을 생각해보십시오.

  • 상품을 해외에 파는 Farmer(농부)
  • 해외에서 상품을 이동시키는 Distributor(유통업자)
  • 당사자간에 상품을 이동시키는 Shipper(송화인/선적처리업자)
  • 유통 업체로부터 상품을 구매하는 Wholesaler(도매업자)
  • Wholesaler(도매업자) 및 Shipper(송화인/선적처리업자)로부터 상품을 구매하는 Retailer(소매업자)

Distributor(유통업자)Farmer(농부)Shipper(송화인/선적처리업자)와 Private 거래를 하여 Wholesaler(도매업자)Retailer(소매업자)로부터 거래 조건을 기밀로 유지하길(청구하는 마크업을 노출시키지 않도록) 원할 수 있습니다.

Distributor(유통업자)Wholesaler(도매업자)보다 저렴한 가격으로 청구하기 때문에 Wholesaler(도매업자)와 별도의 Private 데이터 관계를 원할 수도 있습니다.

Wholesaler(도매업자)Retailer(소매업자)Shipper(송화인/선적처리업자)와 Private 데이터 관계를 원할 수도 있습니다.

이러한 각각의 관계에 대해 많은 작은 채널을 정의하는 대신, 여러 개인 데이터 수집(PDC)을 정의하여 다음 사이에서 Private 데이터를 공유할 수 있습니다.

  1. PDC1 : 'Distributor(유통업자)', 'Farmer(농부)' 및 'Shipper(송화인/선적처리업자)'
  2. PDC2 : 'Distributor(유통업자)' 및 'Wholesaler(도매업자)'
  3. PDC3 Wholesaler(도매업자), 'Retailer(소매업자)' 및 'Shipper(송화인/선적처리업자)'

이 예를 사용하면 Distributor(유통업자)가 소유한 피어는 Distributor(유통업자),Farmer(농부) 및 'Shipper(송화인/선적처리업자)'의 관계와 'Distributor(유통업자)' 및 Wholesaler(도매업자)의 Private 데이터를 포함하는 원장 내부에 여러 개인 프라이빗 데이터베이스를 갖게됩니다 . 이러한 데이터베이스는 채널 원장을 보유하는 데이터베이스와 별도로 유지되므로 Private 데이터를 "SideDB"라고도합니다.


Private 데이터 수집 정의 방법

컬렉션 정의 및 Private 데이터 및 컬렉션에 대한 기타 낮은 수준의 정보에 대한 자세한 내용은 Private 데이터 참조 항목을 참조 하십시오.


데이터 제거

매우 민감한 데이터의 경우 Private 정보를 공유하는 당사자라도 정해진 시간이 지나면 피어에 저장된 데이터를 "제거(purge)"하기를 원하거나 정부 규정에 따라 필요할 수 있습니다. 이 경우, 거래의 불변의 증거로 사용할 데이터의 해시만을 남겨둘 수 있습니다.

이 중 일부의 경우 Private 데이터는 블록 체인 네트워크 외부의 데이터베이스에 복제 될 때까지 피어 전용 데이터베이스에만 존재해야합니다. 데이터는 체인 코드 비즈니스 프로세스가 완료 될 때까지 (거래가 정산되거나 계약 이행 됨 등) 피어에게만 존재해야합니다. 이후의 유스 케이스를 지원하기 위해 Private 데이터베이스에 설정된 수의 후속 블록이 추가되면 수정되지 않으면 Private 데이터를 제거 할 수 있습니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함