체인코드 수명 주기

(Hyperledger Fabric v2.x) 체인코드 수명 주기는 피어에 체인코드를 설치하고 채널에 배포하는 프로세스를 설명합니다.

체인코드 수명 주기는 Hyperledger Fabric v2.x 플랫폼의 기능을 기반으로 하며, 이를 통해 체인코드의 분산된 거버넌스가 가능합니다. 여러 조직이 체인코드가 원장과 상호 작용하기 전에 체인코드 보증 정책을 포함한 체인코드 매개변수에 동의할 수 있습니다. 이러한 기능은 새로운 빠른 배포 및 고급 배포 옵션과 REST API에서 구현됩니다. 새 수명 주기에 대한 자세한 내용은 Hyperledger Fabric v2.2.4 설명서의 Fabric chaincode lifecycle을 참조하십시오.

일반적으로 설치된 체인코드를 배포하려면 콘솔에서 빠른 배포 또는 고급 배포를 사용합니다. 배치 프로세스에는 체인 코드 패키지화 및 설치는 물론 체인 코드 정의 승인 및 커밋이 포함됩니다. REST API를 사용하여 승인 및 약정 작업을 별도로 완료할 수도 있습니다.

체인 코드 패키지화 및 설치

Oracle Blockchain Platform에 체인코드를 설치하면 체인코드가 패키지화되고 설치되며 패키지 ID가 자동으로 생성됩니다. 패키지 ID는 콘솔의 Chaincodes(체인 코드) 탭에 표시됩니다.

체인코드 정의 승인

체인코드를 채널에 배포하려면 채널의 LifecycleEndorsement 정책을 충족할 수 있는 충분한 조직에서 체인코드 정의를 승인해야 합니다. Oracle Blockchain Platform의 기본 LifecycleEndorsement 정책을 사용하면 대부분의 조직이 아닌 모든 조직에서 체인코드 정의를 승인할 수 있습니다. 체인코드 정의에는 Chaincode Name, Version, Sequence, Endorsement Policy, Private Data CollectionInit-required 매개변수와 같은 모든 조직에 대해 동일해야 합니다. 체인코드 정의에는 모든 조직에 대해 동일하지 않아도 되는 Package ID도 포함될 수 있습니다.

체인코드 정의가 승인되면 한 조직이 승인 조직의 동료로부터 보증을 수집한 다음 체인코드 정의를 채널로 커밋할 수 있습니다.

REST API를 사용하여 체인코드 정의를 승인하려면 채널에서 체인코드 정의 승인을 참조하십시오.

콘솔에서 빠른 배포 또는 고급 배포를 사용하면 승인 및 약정 단계가 모두 시도됩니다.

체인코드 정의 커밋

REST API를 사용하여 승인된 체인코드 정의를 커밋하려면 채널에서 체인코드 정의 커밋을 참조하십시오.

콘솔에서 채널에 대한 배포된 체인코드 페이지에서 승인되었지만 커밋되지 않은 체인코드 정의를 볼 수 있습니다. 추가 작업 메뉴를 사용하여 승인된 체인코드를 커밋할 수 있습니다.

체인코드 수명 주기 시나리오

Scenario 설명
채널 참여

일반적으로 콘솔에서는 체인 코드 정의를 커밋하지 않고 승인하지 않습니다. 다른 조직에서 체인코드 정의를 커밋한 공유 채널에 가입하면 채널에 대한 배포된 체인코드 페이지에서 체인코드 정의가 커밋된 것으로 나열되지만 승인되지 않은 것으로 표시됩니다. 작업 더 보기 메뉴를 사용하여 체인코드 정의를 승인하고 패키지 ID를 연결할 수도 있습니다. 패키지 정의를 다시 커밋할 필요는 없습니다.

보증 정책 업데이트

체인코드를 다시 설치하지 않고 체인코드 정의에서 보증 정책을 업데이트할 수 있습니다. 채널에 대한 [배치된 체인코드] 페이지에서 [추가 작업] 메뉴를 사용하여 체인코드 정의를 업그레이드합니다. 보증 정책을 확장하고 새 정책을 지정한 다음 업그레이드를 누릅니다.

설치하지 않고 정의 승인

복수 조직 시나리오에서 체인코드 패키지를 설치하지 않고 체인코드 정의를 승인하려면 패키지 ID를 지정하지 마십시오. 채널에 커밋된 체인 코드의 정의를 보증하지만, 체인코드는 조직의 피어에 설치되지 않습니다. 체인코드를 사용하여 거래를 보증하거나 원장을 질의할 수 없습니다.

정의에 대한 불일치

여러 조직 시나리오에서 체인코드 정의를 승인하지 않거나 다른 체인코드 정의를 승인하지 않는 조직은 해당 피어에 체인코드를 실행할 수 없습니다. 다른 조직이 채널에 정의를 커밋하기에 충분한 보증을 받는 경우 해당 조직은 체인코드를 사용할 수 있습니다. 모든 조직의 피어에 있는 원장에 트랜잭션이 계속 추가됩니다.

조직이 체인코드 정의에 동의하지 않고 채널에 정의를 커밋할 충분한 보증이 없는 경우 정의를 커밋할 수 없으므로 체인코드를 실행할 수 없습니다.

여러 조직에서 서로 다른 패키지 설치

여러 조직이 있는 채널에 대한 체인코드 정의를 승인할 때 다른 패키지 ID를 지정할 수 있습니다. 정의 이름과 보증 정책이 동일한 경우 채널 멤버는 해당 조직과 관련된 체인코드를 설치할 수 있지만 동일한 체인코드 네임스페이스에 데이터를 읽고 씁니다.

하나의 패키지에서 여러 체인코드 생성

마찬가지로, 각 정의에 대해 다른 이름을 지정하여 동일한 체인 코드 패키지를 여러 번 승인하고 커밋할 수 있습니다. 체인 코드의 여러 인스턴스가 채널에서 실행됩니다. 또한 각 정의에 대해 서로 다른 보증 정책을 지정할 경우 각 체인코드 인스턴스에 다른 보증 정책이 적용됩니다.