체인코드 작성

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

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

체인코드 개발용 리소스

Oracle Blockchain Platform은 Hyperledger Fabric을 기반으로 사용합니다. Hyperledger Fabric 설명서를 사용하여 유효한 체인 코드를 작성할 수 있습니다.

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

  • Go Programming Language(프로그래밍 언어 이동). Go 컴파일러, 도구 및 라이브러리는 체인코드 작성을 단순화하는 다양한 리소스를 제공합니다.

  • Package shim(패키지 심) Package Shim은 체인코드가 상태 변수에 접근하고, 트랜잭션 컨텍스트를 가져오고, 다른 체인코드를 호출할 수 있도록 API를 제공합니다. package shim 설명서에서는 체인 코드에 필요한 실제 구문을 설명합니다.

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

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

Go Chaincode 패키지화

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

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

Vendor the Shim for Go 체인코드

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

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

자세한 내용은 Hyperledger Fabric 설명서의 Chaincode shim 변경 사항(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을 사용 중인 경우 체인코드 build.gradle 및 settings.gradle를 ZIP 형식의 파일로 압축하여 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)의 정보에 따라 체인코드를 배포할 수 있습니다.

체인 코드 업그레이드

체인코드 업그레이드(Hyperledger Fabric v2.x)의 단계에 따라 배포된 체인코드를 업그레이드합니다.