체인코드 작성
체인 코드는 Go, Node.js 또는 Java로 작성된 다음 Oracle Blockchain Platform 네트워크에 설치된 .zip 파일로 패키지화됩니다.
체인코드는 원장의 데이터 스키마를 정의하고, 초기화하며, 애플리케이션에 의해 트리거될 때 업데이트를 완료하고, 쿼리에 응답합니다. 체인코드는 응용 프로그램에 알림을 보내고 다운스트림 작업을 완료할 수 있는 이벤트를 게시할 수도 있습니다. 예를 들어, 구매 주문, 송장 및 납품 레코드가 체인 코드에 의해 대응된 후 구독 애플리케이션이 관련 지급을 처리하고 내부 ERP 시스템을 업데이트할 수 있도록 이벤트를 전기할 수 있습니다.
체인코드 개발용 리소스
Oracle Blockchain Platform은 Hyperledger Fabric을 기반으로 사용합니다. Hyperledger Fabric 설명서를 사용하여 유효한 체인 코드를 작성할 수 있습니다.
-
Hyperledger Fabric 시작 자체 체인코드를 작성하기 전에 주요 개념 및 자습서 섹션을 읽어보십시오.
-
Go Programming Language(프로그래밍 언어 이동). Go 컴파일러, 도구 및 라이브러리는 체인코드 작성을 단순화하는 다양한 리소스를 제공합니다.
-
Package shim(패키지 심) shim 패키지는 체인코드가 해당 상태 변수에 액세스하고, 트랜잭션 컨텍스트를 가져오고, 다른 체인코드를 호출할 수 있는 API를 제공합니다. 패키지 shim 설명서에서는 체인 코드에 필요한 실제 구문을 설명합니다.
Oracle Blockchain Platform은 체인코드 및 애플리케이션 작성 방법을 이해하는 데 도움이 되는 다운로드 가능한 샘플을 제공합니다. 체인코드 샘플이란? 참조
체인코드에 리치 쿼리 구문을 추가하여 상태 데이터베이스를 쿼리할 수 있습니다. SQL 서식 있는 질의 구문 및 CouchDB 서식 있는 질의 구문을 참조하십시오.
Go Chaincode 패키지화
체인 코드를 작성한 후 .zip 형식의 파일로 압축합니다. Go 체인코드용 패키지를 생성하거나 서명할 필요가 없습니다. Oracle Blockchain Platform 설치 및 배포 프로세스는 체인코드 배포를 위한 일반적인 워크플로우에 설명된 대로 이를 자동으로 수행합니다.
체인코드에 외부 종속성이 있는 경우 .zip 파일의 공급업체 디렉토리에 배치할 수 있습니다.
Vendor the Shim for Go 체인코드
Go 체인코드 심 종속성은 더 이상 Hyperledger Fabric에 포함되지 않습니다. 이제 심이 피어에 설치되기 전에 Go 체인코드로 벤더(가져오기)되어야 합니다.
Go 모듈 또는 govendor와 같은 타사 도구를 사용하여 체인코드를 심하게 공급하고 Hyperledger Fabric에서 작동하는 버전으로 업데이트할 수 있습니다.
자세한 내용은 Hyperledger Fabric 설명서의 Chaincode shim 변경 사항(Go chaincode only) 및 Upgrade Chaincodes with vendored shim을 참조하십시오. Go 모듈에 대한 자세한 내용은 Go Modules Reference를 참조하십시오.
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"
}
}
package.json파일은 루트 디렉토리에 있어야 합니다.- 항목 JavaScript 파일은 패키지의 모든 위치에 있을 수 있습니다.
"start" : "node <start>.js"가package.json파일에 지정되지 않은 경우server.js파일이 루트 디렉토리에 있어야 합니다.
체인코드 및 패키지 파일을 .zip 형식으로 압축하여 Oracle Blockchain Platform에 설치합니다.
Java 체인 코드 패키지화
Java 체인 코드를 작성하는 경우 Gradle 또는 Maven을 선택하여 체인 코드를 작성할 수 있습니다.
.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.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의 정보에 따라 배포할 수 있습니다.
체인 코드 업그레이드
체인코드 업그레이드의 단계에 따라 배포된 체인코드를 업그레이드합니다.