Как получить большую ценность карты на Вавилоне
2 ответ
- голосов
-
- 2019-10-16
Новый интерфейс командной строки и RPC для большой карты ожидать хэш выражения сценария вместо необработанного выражения. Чтобы получить хеш,вы можете,например:
tezos-client hash data '"tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys"' of type address
Это будет печатать хэши в кучу разных форматов - вам нужен тот,который имеет метку
Script-expression-ID-Hash
,напримерexprv6UsC1sN3Fk2XfgcJCL8NCerP5rCGy1PRESZAqr7L2JdzX55EN
.Затем вы можете использовать это с CLI:
tezos-client get element exprv6UsC1sN3Fk2XfgcJCL8NCerP5rCGy1PRESZAqr7L2JdzX55EN of big map 22
и RPC в:
/chains/main/blocks/head/context/big_maps/22/exprv6UsC1sN3Fk2XfgcJCL8NCerP5rCGy1PRESZAqr7L2JdzX55EN
Изменить:
Для упрощения доступа к большой карте была добавлена новая команда интерфейса командной строки:
tezos-client get big map value for '"tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys"' of type address in <src>
где
<src>
может быть псевдонимом,ключом или литералом (в вашем случаеKT1DT9YwHdSbZuVuZDjd1SMUcfXm57R5bE9v
).The new CLI and RPC for big map expect hash of a script expression, instead of the raw expression. To obtain the hash you can e.g.:
tezos-client hash data '"tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys"' of type address
This will print hashes in bunch of different formats - you want the one with the label
Script-expression-ID-Hash
, e.g.exprv6UsC1sN3Fk2XfgcJCL8NCerP5rCGy1PRESZAqr7L2JdzX55EN
.Then you can use this with the CLI:
tezos-client get element exprv6UsC1sN3Fk2XfgcJCL8NCerP5rCGy1PRESZAqr7L2JdzX55EN of big map 22
and RPC at:
/chains/main/blocks/head/context/big_maps/22/exprv6UsC1sN3Fk2XfgcJCL8NCerP5rCGy1PRESZAqr7L2JdzX55EN
Edit:
A new CLI command has been added for simpler big map access:
tezos-client get big map value for '"tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys"' of type address in <src>
where
<src>
can be an alias, a key, or a literal (in your caseKT1DT9YwHdSbZuVuZDjd1SMUcfXm57R5bE9v
).-
Возможно,стоит упомянуть,почему это изменилось.1) Использование GET вместо POST для этого запроса семантически более разумно,этот запрос только запрашивает данные и ничего не меняет на бэкэнде.2) До Carthagenet в контракте могла быть только одна большая карта,теперь у него может быть несколько больших карт.У каждой из этих больших карт есть уникальный идентификационный ключ.It might be worth mention why this has changed. 1) Using GET instead of POST for this query is semantically more sound, this query only requests data and does not change anything on the backend. 2) Before Carthagenet, a contract could only have one big map, now it can have multiple big maps. Each of those big maps have a unique identifying key.
- 0
- 2020-06-18
- MCH
-
- 2019-10-15
Команда cli:
tezos-client get big map value for <key> of type <type of the key> in <contract>
.Добавив параметр-l
,мы также получим RPC:/chains/main/blocks/head/context/contracts/<contract address>/big_map_get
.На самом деле вам не нужно знать индекс большой карты,если сохранено несколькоbig_maps с одинаковым типом ключей,все они будут искать ключ.
The cli command is
tezos-client get big map value for <key> of type <type of the key> in <contract>
. By adding the-l
option, we also get the RPC:/chains/main/blocks/head/context/contracts/<contract address>/big_map_get
.Actually, you do not need to know the big map index, if several big_maps with the same type of keys are stored, they will all be searched for the key.
-
`getbig map value` теперь считается устаревшим=(`get big map value` is listed as deprecated now =(
- 0
- 2020-03-02
- Justin
-
Я скажу,что «получить большую ценность карты» намного проще для процесса разработки.Я все еще вижу множество контрактов,разработанных таким образом,что они могут продолжать использовать эту команду,даже если она указана как устаревшая.Конечно,это работает только для большой карты,которая находится в левой части пары в верхней части хранилища контрактов.I will say `get big map value` is much easier for the development process. I still see a lot of contracts designed such that they can continue using this command even though it is listed as deprecated. Of course, it only works for a big map that is in the left side of a pair at the top of a contracts storage.
- 0
- 2020-06-18
- MCH
В Babylon будет новый RPC для запроса большого значения карты по этой ссылке http://tezos.gitlab.io/babylonnet/api/rpc.html#get-block-id-context-big-maps-big -map-id-script-expr
Я пробовал использовать его с новым контрактом. Я развернул этот контракт https://babylonnet.tzscan.io/KT1DT9YwHd5/KT1DT9YwHd3
Если я правильно понял,идентификатор моей большой карты должен быть
22
Зная,что моя большая карта инициализирована ключом
tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys
Как правильно получить значение с помощью cli или rpc?
Я пробовал:
tezos get element tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys of big map 22
http://babylonnet-node.tzscan.io/chains/main/blocks/head/context/big_maps/22/tz1bwsEWCwSEXdRvnJxvegQZKeX5dj6oKEys
Оба не работают. Если я правильно понимаю,мне,вероятно,потребуется кодировать свой ключ. Я не уверен,какая кодировка требуется,и не могу найти подходящий пример.