Закрытых ключей меньше 2^256 штук. Если точнее, то твердолобая реализация конечно же может использовать можно любое число на отрезке [0, 2^256 - 1], но безопасными в качестве ключей являются только числа меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141. Потому что бОльшие значения могут иметь соответствие более чем одному публичному ключу. Поэтому, практически все библиотеки при загрузке ключа первым делом проверяют, чтобы загруженное значение было меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141.
Количество адресов биткойнов: 2160
Побольше, по-моему:
2
160 адресов на "1" (P2PKH)
2
160 адресов на "3" (P2SH)
2
160 адресов на "bc1" (42 символа) (P2WPKH)
2
256 адресов на "bc1" (62 символа) (P2WSH)
Значение HASH160 для всех типов адресов (legacy, P2WPKH-in-p2sh, bc1-P2WPKH) вычисляется одинаково, поэтому формат адреса не имеет никакого значения. Это просто разные способы записи одного и того же хэша в "человекопонятном" виде, и не более того.
Но адресов действительно больше, хотя и не поэтому. Дело в том, что публичный ключ может быть записан в двух формах - сжатой и несжатой. По этой причине для легаси адресов, тех что начинаются с 1, каждому приватному ключу гарантированно соответствует по крайней мере два возможных адреса. Для сегвит адресов (как нативных bc1, так и P2SH) есть обязательное требование использовать именно сжатый ключ, поэтому такой неопределенности уже нет.
Итого, на 2^160 закрытых ключей получается:
2
161 адресов на "1" (P2PKH)
2
160 адресов на "3" (P2WPKH-in-P2SH)
2
160 адресов на "bc1" (42 символа) (P2WPKH)
Где 2
160 легаси адресов будет использовать тот же самый хэш, что и сгенерированные из того же приватного ключа P2WPKH-in-P2SH и P2WPKH адреса, а для оставшихся 2
160 легаси адресов не будет соответствия среди новых.
P2WSH адреса совсем другая степь, для них никакого соответствия не будет. Равно как и для обычных P2SH адресов, не сегвитных.