Адреси bitcoin. Частина I, теорія.

Адреси Bitcoin. Частина I, теорія.
Адреси Bitcoin. Частина II, практика.


Адреса Bitcoin , або просто адреса, є ідентифікатором, що містить близько 33 алфавітно-цифрових символів, в поточній версії протоколу починається з символу 1 або 3, використовуючи цей ідентифікатор ви можете здійснювати операції з Bitcoin. Адреси можуть бути отримані на безоплатній основі будь-яким користувачем Bitcoin. Наприклад, за допомогою програмного забезпечення Bitcoin, натиснувши кнопку "Отримати адресу".

Приклад Bitcoin адреси: 1BQ9qza7fn9snSCyJQB3ZcN46biBtkt4ee

Як за допомогою електронної пошти ви можете відправити лист, знаючи адресу одержувача, також ви можете відправити BTC кому-небудь, відправивши їх на відповідну адресу Bitcoin. Тільки на відміну від електронної пошти одна людина може, і це заохочується, мати необмежену кількість різних адрес Bitcoin. Рекомендується використовувати унікальну адресу для кожної транзакції, якщо ви хочете домогтися більшої анонімності платежів. Велика частина програмного забезпечення Bitcoin і тематичні веб-ресурси допоможуть з цим, шляхом створення нового адреси кожного разу при створенні транзакції, або коли ви вручну запросите нову адресу.

При використанні веб-сайтів, які приймають Bitcoin або тримають у себе ваші заощадження в BTC, не дивуйтеся, що сайт буде створювати тимчасові Bitcoin адреси для переказів. Тимчасові адреси можуть змінюватися при кожній новій транзакції, але старі адреси зазвичай залишаються робочими. При відправці Bitcoin на такі тимчасові адреси, зазвичай їх зараховують на ваш рахунок протягом години або двох (залежно від політики сайту).

Адреси вводяться точно і з урахуванням регістру символів. Як правило, Bitcoin адреса повинна бути скопійований і вставлений з використанням буфера обміну комп'ютера де це можливо. Якщо доводиться набирати адресу Bitcoin вручну, перевірте додатково, чи правильно введено адресу. Якщо він буде введений неправильно, то кошти будуть відправлені нема на потрібний рахунок, т. Е. Загублені, або така транзакція може бути відхилена, якщо адреса не буде відповідати правилам. Деякі із символів всередині адреси Bitcoin використовуються в якості контрольної суми, так що помилки можуть бути автоматично виявлені і відхилені.

Деякі Bitcoin адреси можуть бути коротше 33 символів. Значна частина існуючих адрес Bitcoin містять тільки 32 символу - це абсолютно нормально. Кожен адреса Bitcoin є чимось на зразок номера рахунку. Трапляється, що вони починаються з нуля, і коли нулі опускаються, закодований адреса стає коротшим.

Технічно Bitcoin адресу представляє собою 160-бітний хеш від відкритого ключа ECDSA ключової пари. Використовуючи математичні методи, ви можете "підписати" дані вашим секретним ключем, і будь-хто, хто знає ваш публічний ключ, може пересвідчитися, що підпис є дійсною. Для отримання більш докладної інформації, як працює криптографічний система з відкритим ключем можна звернутися до відповідної статті у Вікіпедії. А якщо вам потрібні глибокі знання про генерацію адреси біткоіни, то їх можна почерпнути в статті Вікіпедії про специфікацію протоколу Bitcoin.

Кожній нової згенерованої парі ключів ставиться у відповідність адреса для прийому монет. Bitcoin адреси (відкриті ключі) і відповідні їм закриті ключі зберігаються в файлі wallet.dat. Цей файл належить тільки вам і необхідно постійно робити його резервні копії. Операція відправки BTC на певну адресу Bitcoin має на увазі, що у одержувача є відповідний закритий ключ знаходиться в його гаманці. Це означає, що якщо ви сгенеріруете нову адресу і отримаєте на нього монети, а потім відновіть гаманець з більш раннього бекапа, в якому адреса ще не був згенерований, то монети, передані на цю адресу будуть втрачені. Якщо ви повністю втратили ваш гаманець, то всі монети будуть втрачені і не зможуть бути відновлені.

Bitcoin дозволяє згенерувати стільки адрес, скільки ви побажаєте, І кожен з них буде повністю самостійними. Не існує головного адреси, поле "Your Bitcoin address" в інтерфейсі програми Bitcoin не має особливого значення, це один з адрес, наявних у вашому гаманці. Додаток тільки для вашої зручності буде автоматично змінювати їх час від часу для підвищення вашої анонімності в системі. При цьому всі інші ваші адреси будуть залишатися робочими назавжди. Вони перераховані в розділі "your receiving addresses". Кожен адреса займає всього 500 байт і тому навіть велике їх число в гаманці, як правило, не є проблемою.

Bitcoin адреса містить вбудований код перевірки, так що абсолютно неможливо відправити біткоіни на некоректний адресу. Однак, якщо адреса правильно сформований, але ніхто не володіє ним (або власник втратив wallet. Dat), будь-які монети, відправлені на цю адресу, будуть втрачені назавжди.

Адреса може містити всі букви і цифри символи латинського алфавіту, крім 0, O, I (i велике), and l (L маленьке). В даний час, все нормальні адреси завжди починаються з 1, хоча це може бути змінено в майбутніх версіях.Адреси тестової мережі зазвичай починаються з m або n. Нормальні адреси можуть мати довжину в 25-34 символів, а адреси тестової мережі можуть бути з 26-34 символів в довжину. Більшість же адрес все ж складаються з 33 або 34 символів.

Крім того, можна відправити BTC безпосередньо на IP адресу.

Оскільки Bitcoin адреси базується на випадкових числах, можливо, хоча і вкрай малоймовірно, що для двох людей незалежно один від одного згенерує однакові адреси. Це називається колізія. Якщо це трапляється, то обидва власника цієї адреси можуть витрачати гроші, відправлені на цю адресу. Але тут неможливо другому власнику адреси витратити всі гроші першого справжнього власника (або навпаки). Якби ви навмисно вирішили підібрати таку адресу, який викличе колізію, то на даний момент вам би довелося витратити в 2 ^ 107 раз більше часу, щоб згенерувати таку адресу, ніж на створення нового блоку. Поки підписи і алгоритми хешування залишаються криптографически сильними, а ймовірно так буде завжди, вигідніше буде генерувати і отримувати комісії за перекази, ніж шукати дублюються адреси.

Як створюється bitcoin адреса:


1. Береться відкритий ключ (65 байт, 1 байт 0x04, 32 байт відповідають координаті X, 32 байт відповідають координаті Y):

04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38
c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f

2. Проводиться SHA-256 хешування відкритого ключа:

261c1eb21fc4708c6acbe1cfc6d4565652e9e768b620782898936b93000a6c02

3. Виконується RIPEMD-160 хешування результату SHA-256:

62e907b15cbf27d5425399ebf6f0fb50ebb88f18

4. Додається байт-ідентифікатор мережі перед RIPEMD-160 хешем (0x00 для основної мережі)

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18

5. Виконується SHA-256 хешування по розширеному результату від RIPEMD-160:

9b90f16de7f0e580c07735dac15ffe23e2f8f8e103914e509aa91913ffdb9fb6

6.Виконується SHA-256 хешування за попереднім SHA-256 хешу, результат буде являти собою контрольну суму:

c29b7d937e3049e279391e62fdf00c12def7444013ddf6215808d10e9f2d5996

7. Беруться перші 4 байта від отриманого хеша:

c29b7d93

8. Ці 4 байта контрольної суми з пункту 7 додаються в кінець розширеного RIPEMD-160 хеша з пункту 4. Це 25-байтовий двійковий біткоіни адресу.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18c29b7d93

9. Результат пункту 8 конвертується в рядок base58. Це найбільш часто використовуваний формат bitcoin адреси.

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa



Використано матеріали:
Address
Technical background of Bitcoin addresses
Допомога в перекладі: Катерина Тихонова