что означает «Предупреждение: эта функция принимает только один аргумент« бат ». Используйте â € abi.encodePacked (â € |) "означает

В this , перед тем, как OP запускает предупреждение при использовании функции keccak256 в Solidity:

  

Предупреждение. Эта функция принимает только один аргумент «байт». Пожалуйста, используйте «abi.encodePacked (...)» или аналогичную функцию для кодирования данных.

uint256 _unixTimestamp;
uint256 _timeExpired;

bytes32 output = keccak256(msg.sender, _unixTimestamp, _timeExpired);

В чем причина этой ошибки - почему мне нужно использовать abi.encodePacked и что она делает по сравнению с ее использованием, как показано выше?

7 голосов | спросил Validity Labs - Sebastian 6 J0000006Europe/Moscow 2018, 20:20:23

2 ответа


1

Сегодня обе работают одинаково. Предупреждение является частью процесса устаревания версий переменных-аргументов keccak256 и других хеш-функций.

См. https://github.com/ethereum/solidity/issues/3955 для деталей.

ответил smarx 6 J0000006Europe/Moscow 2018, 20:27:56
8

Это означает, что теперь вам нужно изменить свой код на:

uint256 _unixTimestamp;
uint256 _timeExpired;

bytes32 output = keccak256(
  abi.encodePacked(msg.sender, _unixTimestamp, _timeExpired)
);
ответил rstormsf 12 J0000006Europe/Moscow 2018, 04:34:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132