Зачем использовать алгоритм хеширования, отличный от 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

Другие вопросы по тегам