체인코드 작성

체인코드는 Go, Node.js 또는 Java로 작성된 다음, Oracle Blockchain Platform 네트워크에 설치된 ZIP 파일로 패키지화됩니다.

체인코드는 원장에서 데이터 스키마를 정의하고, 초기화하며, 애플리케이션에 의해 트리거될 때 업데이트를 수행하고, 질의에 응답합니다. 또한 체인코드는 응용 프로그램에 알림을 받고 다운스트림 작업을 수행할 수 있도록 이벤트를 게시할 수 있습니다. 예를 들어, 구매 주문, 송장 및 배달 레코드가 체인 코드에 의해 매칭된 후 구독 애플리케이션이 관련 지불을 처리하고 내부 ERP 시스템을 업데이트할 수 있도록 이벤트를 게시할 수 있습니다.

체인코드 개발 리소스

Oracle Blockchain Platform은 Hyperledger Fabric을 기반으로 합니다. Hyperledger Fabric 설명서를 사용하면 적합한 체인코드를 작성하는 데 도움이 됩니다.

  • Hyperledger Fabric 시작 자체 체인코드를 작성하기 전에 주요 개념 및 자습서 섹션을 읽어야 합니다.

  • Go Programming Language Go 컴파일러, 도구 및 라이브러리는 체인코드 작성을 단순화하는 다양한 리소스를 제공합니다.

  • 패키지 shim. 패키지 shim은 체인코드가 해당 상태 변수, 트랜잭션 컨텍스트에 액세스하고 다른 체인코드를 호출할 수 있는 API를 제공합니다. 이 문서는 체인코드에 필요한 실제 구문을 설명합니다.

Oracle Blockchain Platform은 체인코드 및 애플리케이션 작성 방법을 이해하는 데 도움이 되는 다운로드 가능한 샘플을 제공합니다. 체인코드 샘플이란?을 참조하십시오.

체인 코드에 rich-query 구문을 추가하여 상태 데이터베이스를 query할 수 있습니다. SQL 서식 있는 질의 구문CouchDB 서식 있는 질의 구문을 참조하십시오.

실행 체인코드 패키지화 및 우편 번호

체인코드를 작성했으면 ZIP 파일에 넣습니다. Go 체인코드에 대한 패키지를 생성하거나 서명할 필요가 없습니다. Oracle Blockchain Platform 설치 및 배포 프로세스는 Typical Workflow to Deploy Chaincodes (Hyperledger Fabric v2.x) 또는 Typical Workflow to Deploy Chaincodes (Hyperledger Fabric v1.4.7)에 설명된 대로 이 작업을 수행합니다.

체인코드에 외부 종속성이 있는 경우 ZIP 파일의 공급업체 디렉토리에 배치할 수 있습니다.

Shim for Go 체인코드 공급업체(Hyperledger Fabric v2.x)

이전 버전의 Hyperledger Fabric에 포함되었던 Go 체인코드 심 종속성은 Hyperledger Fabric v2.x에 포함되지 않습니다. 이제 Hyperledger Fabric v2.x를 실행하는 피어에 설치하기 전에 Shim을 Go 체인코드로 공급업체(가져오기)해야 합니다.

Go 모듈 또는 govendor와 같은 타사 도구를 사용하여 체인코드 shim을 공급업체에 제공하고 Hyperledger Fabric v2.x에서 작동하는 버전으로 업데이트할 수 있습니다.

자세한 내용은 Hyperledger Fabric 설명서의 Chaincode shim changes (Go chaincode only)Upgrade Chaincodes with vendored shim를 참조하십시오. Go 모듈에 대한 자세한 내용은 Go Modules Reference를 참조하십시오.

Node.js 체인코드를 패키지화하고 우편으로 보내기

Node.js 체인코드를 작성하는 경우 다음 두 섹션으로 package.json 파일을 생성해야 합니다.
  • scripts 섹션에서는 체인 코드를 실행하는 방법을 선언합니다.

  • dependencies 섹션은 종속성을 지정합니다.

다음은 Node.js 체인코드의 샘플 package.json입니다.

{
	"name": "chaincode_example02",
	"version": "1.0.0",
	"description": "chaincode_example02 chaincode implemented in Node.js",
	"engines": {
		"node": ">=8.4.0",
		"npm": ">=5.3.0"
	},
	"scripts": { "start" : "node chaincode_example02.js" },
	"engine-strict": true,
	"license": "Apache-2.0",
	"dependencies": {
		"fabric-shim": "~1.3.0"
	}
}
Node.js 체인 코드에 대한 패키징 규칙은 다음과 같습니다.
  • package.json는 루트 디렉토리에 있어야 합니다.
  • 항목 JavaScript 파일은 패키지의 어디에나 위치할 수 있습니다.
  • "start" : "node <start>.js"package.json에 지정되지 않은 경우 server.js가 루트 디렉토리에 있어야 합니다.

체인코드 및 패키지 파일을 ZIP 파일에 배치하여 Oracle Blockchain Platform에 설치합니다.

Java 체인코드 패키지화 및 압축

Java 체인코드를 작성하는 경우 Gradle 또는 Maven을 선택하여 체인코드를 작성할 수 있습니다.

Gradle을 사용하는 경우 ZIP 파일에 체인 코드 build.gradle 및 settings.gradle를 배치하여 Oracle Blockchain Platform에 설치합니다. 다음은 체인코드 패키지의 샘플 파일 목록입니다.
Archive:  example_gradle.zip 
 Length      Date    Time    Name
---------  ---------- -----   ---- 
      610  02-14-2019 01:36   build.gradle
       54  02-14-2019 01:28   settings.gradle
        0  02-14-2019 01:28   src/
        0  02-14-2019 01:28   src/main/
        0  02-14-2019 01:28   src/main/java/
        0  02-14-2019 01:28   src/main/java/org/
        0  02-14-2019 01:28   src/main/java/org/hyperledger/
        0  02-14-2019 01:28   src/main/java/org/hyperledger/fabric/
        0  02-14-2019 01:28   src/main/java/org/hyperledger/fabric/example/
     5357  02-14-2019 01:28   src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java
---------                     -------
     6021                     10 files
Maven을 사용하는 경우 체인 코드 및 pom.xml를 ZIP 파일에 배치하여 Oracle Blockchain Platform에 설치합니다. 다음은 체인코드 패키지의 샘플 파일 목록입니다.
Archive:  example_maven.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     3313  02-14-2019 01:52   pom.xml
        0  02-14-2019 01:28   src/
        0  02-14-2019 01:28   src/chaincode/
        0  02-14-2019 01:28   src/chaincode/example/
     4281  02-14-2019 01:28   src/chaincode/example/SimpleChaincode.java
---------                     -------
     7594                     5 files

체인코드 테스트

체인코드를 작성한 후 테스트해야 합니다. 다음을 참조하십시오.

체인 코드 설치 및 배치

체인코드를 테스트한 후 Typical Workflow to Deploy Chaincodes (Hyperledger Fabric v2.x) 또는 Typical Workflow to Deploy Chaincodes (Hyperledger Fabric v1.4.7)의 정보를 따라 체인코드를 배포할 수 있습니다.

체인코드 업그레이드

체인코드 업그레이드(Hyperledger Fabric v2.x) 또는 체인코드 업그레이드(Hyperledger Fabric v1.4.7)의 단계에 따라 배포된 체인코드를 업그레이드할 수 있습니다.