Список байтов версии криптовалюты (адресный префикс) - PullRequest
0 голосов
/ 12 марта 2019

Где можно найти список байт версии (префикс адреса) для каждой валюты после реализации биткойнов (кодировка адреса P2PKH) ?

Я просмотрел официальный биткойн-github и BIP, но не смог ничего найти по этому поводу. Там указаны только идентификаторы валют.

Я нашел на github WalletGenerator.net такой список в коде index.html.

например:

 //name,               networkVersion, privateKeyPrefix, WIF_Start, CWIF_Start
 ("Bitcoin",             0x00,           0x80, "5",    "[LK]" )
 ("BitcoinCash",         0x00,           0x80, "5",    "[LK]" )
 ("Blackcoin",           0x19,           0x99, "6",    "P"    )
 ("Litecoin",            0x30,           0xb0, "6",    "T"    )
 ...

Существует ли какой-либо официальный или обновленный источник со списком префиксов адресов (байт версии) всей криптовалюты?

1 Ответ

1 голос
/ 12 марта 2019

Единственный хороший способ проверить это - заглянуть в источники. Обычно эти префиксы определены в chainparams.cpp. Я не верю, что где-то есть современная таблица со всеми префиксами для всех криптовалют на основе биткойнов. Примеры ниже:

Bitcoin

base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,0);
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);
base58Prefixes[SECRET_KEY] =     std::vector<unsigned char>(1,128);
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};

Litecoin

base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,48);
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,5);
base58Prefixes[SCRIPT_ADDRESS2] = std::vector<unsigned char>(1,50);
base58Prefixes[SECRET_KEY] =     std::vector<unsigned char>(1,176);
base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};

Даш

// Dash addresses start with 'X'
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,76);
// Dash script addresses start with '7'
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,16);
// Dash private keys start with '7' or 'X'
base58Prefixes[SECRET_KEY] =     std::vector<unsigned char>(1,204);
// Dash BIP32 pubkeys start with 'xpub' (Bitcoin defaults)
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x88)(0xB2)(0x1E).convert_to_container<std::vector<unsigned char> >();
// Dash BIP32 prvkeys start with 'xprv' (Bitcoin defaults)
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x88)(0xAD)(0xE4).convert_to_container<std::vector<unsigned char> >();

ZCash

// These prefixes are the same as the testnet prefixes
base58Prefixes[PUBKEY_ADDRESS]     = {0x1D,0x25};
base58Prefixes[SCRIPT_ADDRESS]     = {0x1C,0xBA};
base58Prefixes[SECRET_KEY]         = {0xEF};
// do not rely on these BIP32 prefixes; they are not specified and may change
base58Prefixes[EXT_PUBLIC_KEY]     = {0x04,0x35,0x87,0xCF};
base58Prefixes[EXT_SECRET_KEY]     = {0x04,0x35,0x83,0x94};
base58Prefixes[ZCPAYMENT_ADDRRESS] = {0x16,0xB6};
base58Prefixes[ZCVIEWING_KEY]      = {0xA8,0xAC,0x0C};
base58Prefixes[ZCSPENDING_KEY] = {0xAC,0x08};
...