Ошибка при создании цепного кода в Hyperledger Fabric 1.1.0 - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь создать экземпляр цепного кода в узле 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")
  1. Я хотел бы знать, почему пэр уходит? 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 сети:
    • основной

1 Ответ

0 голосов
/ 30 июня 2019

Попробуйте добавить - GODEBUG=netdns=go в разделе среды файла составления Docker для каждого участника и заказчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...