Bitcoin Forum

Local => Новички => Topic started by: bitcoinex on August 05, 2010, 08:45:20 PM



Title: формат адреса?
Post by: bitcoinex on August 05, 2010, 08:45:20 PM
Какой формат адреса у биткоинов? Нужно для приблизительной проверки валидности адреса


Title: Re: формат адреса?
Post by: throughput on August 06, 2010, 09:06:38 AM
Какой формат адреса у биткоинов? Нужно для приблизительной проверки валидности адреса
А там точно предусмотрена возможность error-detection, как в ИНН или ISBN?


Title: Re: формат адреса?
Post by: LZ on August 06, 2010, 09:21:49 AM
Разумеется, проверка есть, но, я так понял, не строгая. Вот код проверки.
Code:
    vector<unsigned char> vch;
    if (!DecodeBase58Check(psz, vch))
        return false;
    if (vch.empty())
        return false;
    unsigned char nVersion = vch[0];
    if (vch.size() != sizeof(hash160Ret) + 1)
        return false;
    memcpy(&hash160Ret, &vch[1], sizeof(hash160Ret));
    return (nVersion <= ADDRESSVERSION);
Как видим, сначала декодируется по Base58, затем извлекается номер версии адреса.


Title: Re: формат адреса?
Post by: throughput on August 10, 2010, 12:54:04 PM
Разумеется, проверка есть, но, я так понял, не строгая. Вот код проверки.
Code:
    vector<unsigned char> vch;
    if (!DecodeBase58Check(psz, vch))
        return false;
    if (vch.empty())
        return false;
    unsigned char nVersion = vch[0];
    if (vch.size() != sizeof(hash160Ret) + 1)
        return false;
    memcpy(&hash160Ret, &vch[1], sizeof(hash160Ret));
    return (nVersion <= ADDRESSVERSION);
Как видим, сначала декодируется по Base58, затем извлекается номер версии адреса.
Я надеялся на детектирование любого ошибочно введённого бита или двух-трёх-восьми :)


Title: Re: формат адреса?
Post by: LZ on September 13, 2010, 04:00:18 PM
Сделали проверялку на питоне, которая учитывает контрольную сумму: ссылка (https://bitcointalk.org/index.php?topic=1026.0).