事前準備
- まずは、ログイン, enrollをしてないといけない場合あり。それをPOSTするJSONのsecureContextに書く。
- chaincodeのビルドをしている、していない場合あり
1. Gitから直接ダウンロード?
プライベートレポジトリの場合は、$GOPATH以下にgit cloneしておく、という手もある。
{
"jsonrpc": "2.0",
"method": "deploy",
"params": {
"type": 1,
"chaincodeID": {
"path": "https://github.com/IBM-Blockchain/learn-chaincode/finished"
},
"ctorMsg": {
"function": "init",
"args": [
"hi there"
]
},
"secureContext": "WebAppAdmin"
},
"id": 1
}
- pathにnameを書くことがある。よく見るmyccなど。事前に登録必要か?
- pathは、 github.comではじまるものを書くと、$GOPATH/src 以下と認識される様子
- secureContextにログインしたユーザIDを書く
以下、ローカルのchaincodeでやる場合。go buildしておきPATHを指定
{
"jsonrpc": "2.0",
"method": "deploy",
"params": {
"type": 1,
"chaincodeID":{
"name": "mycc",
"path": "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02"
},
"ctorMsg": {
"function":"init",
"args":["a", "100", "b", "200"]
},
"secureContext": "admin"
},
"id": 1
}
2. Node.js Clienet SDKを使う
npm install hfc
以下、公式サンプルスクリプトを改良
// Deploy chaincode
function deploy(user) {
console.log("deploying chaincode; please wait ...");
// Construct the deploy request
var deployRequest = {
chaincodeName: "チェーンコード名",
fcn: "init",
args: ["a", "100", "b", "200"]
};
// where is the chain code, ignored in dev mode
// これは、$GOPATH以下を指している模様
deployRequest.chaincodePath = "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02";
// Issue the deploy request and listen for events
var tx = user.deploy(deployRequest);
tx.on('complete', function(results) {
// Deploy request completed successfully
console.log("deploy complete; results: %j",results);
// Set the testChaincodeID for subsequent tests
chaincodeID = results.chaincodeID;
// do something
//invoke(user);
});
tx.on('error', function(error) {
console.log("Failed to deploy chaincode: request=%j, error=%k",deployRequest,error);
process.exit(1);
});
}
peer chaincode deployコマンド
peerコマンドでデプロイする
cd /usr/share/gocode/src/github.com/hyperledger/fabric/build/bin
peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -n mycc -c '{"Args": ["i
nit", "a","100", "b", "200"]}'
- -pのパスの指定は、chaincodeがあるディレクトリまでか?
- $GOPATH/src 以下にある前提。絶対PATH設定ではダメな様子。
関連用語
- Linux Foundation
- Hyperledger Project (ハイパーレジャー、ハイパレッジャー)
- Fabric (ファブリック)
- チェーンコード