Я пытаюсь создать экземпляр цепного кода в узле Hyperledger Fabric 1.1.0. Я скачал образцы ткани версии 1.1.0 и контейнеры докеров. Приложение fabcar было успешно создано.
Однако, когда я создаю свой код цепочки, узел выходит со следующей ошибкой.
2019-06-29 12:01:47.916 UTC [kvledger] CommitWithPvtData -> INFO 042 Channel [mychannel]: Committed block [3] with 1 transaction(s)
panic: assignment to entry in nil map
goroutine 569 [running]:
github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb.createCouchdbDocJSON(0xc422170890, 0x6, 0x0, 0x0, 0xc422170898, 0x4, 0x4, 0xc422170ae0, 0xc42001e000, 0xc42001e070, ...)
/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb/statecouchdb.go:984 +0x1d8
github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb.(*VersionedDB).processUpdateBatch(0xc4215691d0, 0xc4217c7df0, 0x0, 0x0, 0x0, 0xc422170898, 0x4)
/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb/statecouchdb.go:669 +0x550
github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb.(*VersionedDB).ApplyUpdates.func1(0xc422170eb0, 0xc42000eb68, 0xc4215691d0, 0xc422197140, 0xc422170870, 0x7)
/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb/statecouchdb.go:577 +0x8a5
created by github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb.(*VersionedDB).ApplyUpdates
/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb/statecouchdb.go:509 +0x11d
Как я вижу выше, он не берет код go из $ GOPATH, который является /home/ubuntu/software/golang.
Я установил ткань и образцы с помощью команды.
как указано в
https://hyperledger -fabric.readthedocs.io / о / релиз-1.4 / install.html
передача аргументов "1.1.0 1.1.0 0.4.15"
Я мог видеть, что метод инициализации chaincode выполняется из журналов приложений.
func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
fmt.Println("Init firing.")
// Initialize the collection of commercial paper keys
fmt.Println("Initializing user accounts")
//t.createUser(stub, []string{"importerBank", "importerBank", "Importer Bank"})
//t.createUser(stub, []string{"customs", "customs", "Customs"})
//t.createUser(stub, []string{"exporterBank", "exporterBank", "Exporter Bank"})
//t.createUser(stub, []string{"exporter", "exporter", "Exporter"})
fmt.Println("Initializing LC keys collection if not present")
valAsbytes, err := stub.GetState("LCKeys")
if err == nil {
var keys []string
err = json.Unmarshal(valAsbytes, &keys)
fmt.Println("Existing LC : %v", keys);
if len(keys) > 0 {
for _, key := range keys {
valAsbytes, err := stub.GetState(key)
if err == nil {
var lc LC
err = json.Unmarshal(valAsbytes, &lc)
if err == nil {
if lc.CurrentStatus == "" {
lc.CurrentStatus = "Created"
keysBytesToWrite, _ := json.Marshal(lc)
if err == nil {
err = stub.PutState(key, keysBytesToWrite)
if err != nil {
fmt.Println("Error writing LC to chain" + err.Error())
}
}
}
}
}
}
}
}
fmt.Println("Initialization complete")
- Я хотел бы знать, почему пэр уходит?
orderer.example.com:
имя_контейнера: orderer.example.com
изображение: hyperledger / ткань-заказчик
среда:
- ORDERER_GENERAL_LOGLEVEL = отлаживать
- ORDERER_GENERAL_LISTENADDRESS = 0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD = файл
- ORDERER_GENERAL_GENESISFILE = / и т.д. / hyperledger / configtx / genesis.block
- ORDERER_GENERAL_LOCALMSPID = OrdererMSP
- GODEBUG = netdns = перейти
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer
команда: заказчик
порты:
- 7050: 7050
объемы:
- / конфигурации /.: / И т.д. / hyperledger / configtx
- / крипто-конфигурации / ordererOrganizations / example.com / заказчики / orderer.example.com /.: / И т.д. / hyperledger / MSP / 1043 * Заказчик *
- / крипто-конфигурации / peerOrganizations / org1.example.com / сверстники / peer0.org1.example.com /.: / И т.д. / hyperledger / MSP / peerOrg1
сети:
- основной