Я пытаюсь интегрировать CouchDB в качестве утвержденного b для моей сети Hyperledger, но у меня возникают проблемы при передаче значений в функцию putState
(go sdk) для обновления состояния.
В документации сказано, что в файл core.yaml
необходимо добавить конфигурацию 'state'.Однако этот файл не существует при переносе баланса, поэтому я изменил файл network-config.yaml
, указав в качестве stateDatabase couchdb вместо goleveldb, как показано ниже:
state:
stateDatabase: CouchDB
couchDBConfig:
couchDBAddress: https://localhost:5984
username:
password:
maxRetries: 3
maxRetriesOnStartup: 10
requestTimeout: 35s
queryLimit: 10000
Я настроил конфигурацию дляDocker-контейнер couchdb для каждого однорангового узла в файле docker-compose-couch.yaml
:
couchdb0:
container_name: peer0.org1.couchdb
image: hyperledger/fabric-couchdb
environment:
- COUCHDB_USER=
- COUCHDB_PASSWORD=
ports:
- "5984:5984"
Я добавил следующие параметры для каждого однорангового узла, чтобы адрес couchdb для одноранговых точек указывал на созданный выше контейнер.
CORE_LEDGER_STATE_STATEDATABASE=couchdb
CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
Исходя из этого, все контейнеры-докеры couchdb работают нормально, и порт 5984 имеет соответствующие базы данных, созданные с помощью цепного кода.То, что я пытаюсь получить значения putState()
в цепочке кода, чтобы появиться.Документация go-sdk описывает, что для putState требуется ключ (строка) и значение (массив байтов json).
Например, если я отправляю новую транзакцию, транзакция будет отображаться в couchdb под БД с именем mychannel_mycc
с идентификатором, который я указал, но ни одно из значений, которые я передал как байтовый массив json, не прошло.Документ в couchdb выглядит следующим образом:
{
"_id": "000000000",
"_rev": "1-6fab10bceb44087355a55b0bdc9bd9a4",
"~version": "\u0000CgMBAwA=",
"_attachments": {
"valueBytes": {
"content_type": "application/octet-stream",
"revpos": 1,
"digest": "md5-caYFgf07HPDwskuoN1DySg==",
"length": 338,
"stub": true
}
}
}
Как я могу гарантировать, что мой объект json будет передан в документ couchdb?