Я работал над примером fabcar, и он отлично работал, когда не было никаких изменений. Что я пытаюсь сделать, так это обновить код fabcar.go, чтобы добавить больше полей и просто поэкспериментировать с примером, однако мои изображения докеров не обновляются с правильным кодом.
Чтобы установить чейнкод, эта команда запускается в контейнере cli:
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp" cli peer chaincode install -n fabcar -v 1.0 -p github.com/fabcar
Контейнер cli установил этот объем:
./../chaincode/:/opt/gopath/src/github.com/
однако после обновлений code/go (на самом деле я изменил его с Car на объект Ticket с совершенно новыми полями и обновил все соответствующие команды цепочки, чтобы отразить), teardown, затем запустите снова. Я все еще вижу все старые поля.
Что мне здесь не хватает?
Вот фрагмент кода, который заменяется на билеты в функции «Вызов».
func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
// Retrieve the requested Smart Contract function and arguments
function, args := APIstub.GetFunctionAndParameters()
// Route to the appropriate handler function to interact with the ledger appropriately
if function == "queryTicket" {
return s.queryTicket(APIstub, args)
} else if function == "initLedger" {
return s.initLedger(APIstub)
} else if function == "createTicket" {
return s.createTicket(APIstub, args)
} else if function == "queryAllTickets" {
return s.queryAllTickets(APIstub)
} else if function == "sellTicket" {
return s.sellTicket(APIstub, args)
}
return shim.Error("Invalid Smart Contract function name.")
}
Но при этом я просто получаю сообщение «Недопустимое имя функции смарт-контракта». при вызове со следующим:
const request = {
chaincodeId: options.chaincode_id,
txId: transaction_id,
fcn: 'queryAllTickets',
args: ['']
};