0. Golang Package & Module
고랭의 패키지는 디렉토리의 개념으로 생각
다른패키지를 import하기 위해서 go.mod 모듈을 사용하여 패키지에 접근하는 방법을 소개한다.
1. 체인코드 디렉토리 구조
chaincode디렉토리를 로컬 패키지로 import하여 chaincode/chain1.go를 참조하고 싶을때
2. go.mod 생성
cd chaincode
go mod init chaincode
# nano go.mod
module chaincode
go 1.14
chaincode 디렉토리 모듈을 초기화
# assetTransfer.go(main함수가 들어간 go파일)가 포함된 디렉토리의 위치
# init 이후 이름은 원하는 값으로 지정
go mod init runner
# nano go.mod
module runner
go 1.14
require (
github.com/hyperledger/fabric-contract-api-go v1.1.1
runner.com/chaincode v0.0.0
)
replace (
runner.com/chaincode v0.0.0 => ./chaincode
)
replace를 통해서 패키지 주소를 로컬 패스로 변경
- assetTransfer.go
package main
import (
"log"
"github.com/hyperledger/fabric-contract-api-go/contractapi"
"runner.com/chaincode"
)
func main() {
assetChaincode, err := contractapi.NewChaincode(&chaincode.SmartContract{})
if err != nil {
log.Panicf("Error creating asset-transfer-basic chaincode: %v", err)
}
if err := assetChaincode.Start(); err != nil {
log.Panicf("Error starting asset-transfer-basic chaincode: %v", err)
}
}
import 패키지를 입력할 때 go.mod에서 지정한 도메인주소/패키지명을 입력하여 로컬의 위치로 참조할 수 있게 코드작성
※ 위와같이 설정하고 체인코드 invoke시키면 chaincode디렉토리 내의 작성한 chain1.go의 메서드 사용할 수 있음
'보안 및 블록체인 > 블록체인' 카테고리의 다른 글
블록체인 이중 지불(Double Spending) 정리 - [블록체인] (0) | 2022.08.10 |
---|---|
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - Policies 정리 (0) | 2022.08.05 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - but chaincode is not installed 에러 (0) | 2022.08.04 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 COMPOSE_PROJECT_NAME Multiple 설정 및 문제 해결방법 (0) | 2022.07.20 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - 채널에 Org 추가 (0) | 2022.07.16 |