Почему последние 20 байтов открытого ключа используются в качестве адреса?
В соответствии с этим сообщением о том, как вывести адрес Ethereum из открытый ключ:
Возьмите последние 40 символов /20 байтов этого открытого ключа (Keccak-256). Или, другими словами, отбросить первые 24 символа /12 байт. Этими 40 символами /20 байтами являются адрес. Когда префикс с 0x он становится длиной 42 символа.
Мой вопрос в том, почему последние 20 байтов (в отличие от чего-то другого, чем 20), является ли это произвольным решением или есть ли для него математическая цель?
1 ответ
Полные открытые ключи на самом деле не так полезны в Ethereum *, поскольку они не служат никому практическому использованию. Взятие последних 20 байтов:
-
Эвристика направлена на упрощение управления ключом; то есть копировать и вставлять, контрольные суммы или подтверждения по телефону в больших передачах.
-
Предотвращение механизма безопасности. Хеширующие функции ломаются каждые десять лет или около того, поэтому сокращение полного открытого ключа - отличный дополнительный уровень защиты. Сатоши сделал то же самое в биткойне, так как адрес хэшируется дважды: SHA-256 и RIPEMD-160 (если кто-то сломается, у вас все еще есть другой в качестве щита).
* Вы можете использовать Ethereum для отправки сообщений, но зачем вам? Это дорого, и вы можете использовать PGP.