Как прочитать известный ключ хранилища CosmWasm напрямую

Чтение сырого состояния помогает отлаживать настройки, которых нет в публичных запросах контракта. Для этого нужна точная сериализация ключа конкретной версии.

Передайте байты известного ключа

Пусть реализация хранит значение под буквальным ASCII-ключом config. В base64 он имеет вид Y29uZmln. Задайте CONTRACT как адрес экземпляра, GRPC как TLS gRPC wasmd с reflection.

grpcurl -d "{\"address\":\"$CONTRACT\",\"queryData\":\"Y29uZmln\"}" "$GRPC" cosmwasm.wasm.v1.Query/RawContractState

Декодируйте data ответа из base64 и используйте формат хранения контракта. Если эта версия сериализует JSON-объект, разбирайте JSON после декодирования байтов. При пустом результате проверьте точный ключ.

Не выводите ключи карты из отображаемых названий

Пространство имён и составные ключи карты могут содержать префиксы, длины и двоичные числа. Печатаемая метка сама по себе может пропустить настоящую запись. При миграции внутренний формат способен измениться даже с сохранением публичного запроса. github.com wasmd Query API