Зачем использовать алгоритм хеширования, отличный от blake2_256, в StorageMap при использовании decl_storage
Это говорит decl_storage!
"процедурный макрос", используемый для хранения данных, чтобы сделать их доступными в последующих блоках.
Это говорит о том, что если пользователь может установить пару ключей, то мы не можем доверять паре ключей, и поэтому мы должны использовать криптографический хеш, такой как blake2_256, чтобы предотвратить "компрометацию других значений в хранилище".
Почему вы используете алгоритм хеширования ($hash
) кроме значения по умолчанию blake2_256
в StorageMap
(т.е. зачем кому-то использовать twox
вместо по умолчанию blake2_256
)?
Кроме того, почему говорится, что это просто для предотвращения "компрометации других значений в хранилище"? не blake2_256
также используется для предотвращения компрометации самой пары ключей?
0 ответов
В blake2_256
hasher - это непрозрачный криптографический хешер, который требует двух затрат / имеет два недостатка:
- вычислительно дорогой
- не позволяет перебирать хранилище
Таким образом, существуют альтернативные хешеры, которые улучшают их для ситуаций, когда они вам небезразличны:
- В
twox
хешер дешев в вычислении, поэтому вы можете использовать его, если блокчейн контролирует ввод вStorageMap
, например, при использовании счетчика для его индексации. - В
blake2_128_concat
hasher объединяет входные данные в хеш-код с концом хеш-кода, чтобы позволить итерацию по ключам (и значениям) карты.
Дополнительные сведения см. В обновленной документации дляdecl_storage