- чик -
что скорость {правильный адрес base58check} / {33 степеней 58}, скажите, пожалуйста, как рассчитать.?
Base58check Bitcoin адресов основаны на 160 битовой хэш (RIPEMD-160). Если предположить, что результаты хэша равномерно распределены и что все значения от 0 до 2
160 возможно, как хэш-выходы, то общее количество действительных адресов base58check являются 2
160 = 1.462X10
4833 силы 58 будет: 58
33 = 1.56X10
58Следовательно,
1.462X10
48 / 1.56X10
58 = 9.369X10
-11Причиной отношения является то, что адрес Bitcoin имеет 1 байт номер версии в начале (обычно 1) и 4 байта контрольной суммы в конце.
4 байта контрольной суммы = 32 бит двоичных данных,
1/2
32 = 2.328X10
-10Если удалить контрольную сумму из ваших расчетов (так как она полностью зависит от остальной части адреса) расчет выглядит так:
2
160 / (58
33 / 2
32 ) = 0,4024
Я подозреваю, что это отношение, почему адрес, как правило, начинается с определенными буквами чаще, чем другими.
Спасибо за хороший расчет с подробным объяснением, но о контрольной сумме 4 байта можно догадаться по адресу генератор?
Я сейчас ищу bitcoinjs-Lib, но я не понимаю эту функцию смысл ниже.
Если он использует sha256x2 для подтверждения контрольной суммы, это трудно для генератора адреса угадать контрольную сумму?
эта функция здесь. /node_modules/bitcoinjs-lib/node_modules/bs58check/src/bs58check.js
Функция декодирования (строка) {
вар буфер = новый буфер (base58.decode (строка))
Полезная нагрузка вар = buffer.slice (0, -4)
вар контрольная сумма = buffer.slice (-4)
вар newChecksum = sha256x2 (полезная нагрузка) .slice (0, 4)
assert.deepEqual (newChecksum, контрольная, 'Invalid контрольная сумма')
возвращение полезной нагрузки
}
Спасибо.