Введення в Monero

Введення в Monero

Історія Monero

Monero – це криптовалюта, запущена 18 квітня 2014 роки як форк Bytecoin. Bytecoin (не плутати з Bitcoin) був першою цифровою валютою, що реалізує протокол CryptoNote (докладніше про це нижче по тексту). Як тільки ByteCoin сплив на форумі Bitcointalk, люди відкрили для себе безліч підозрілих властивостей, разом з тим фактом, що більше 80% всієї емісії були вже здобуті. Таким чином, співтовариство прийняло рішення його перевипустити, почавши з чистого аркуша, з нульовим премайном. Так з’явився Monero.

У перші місяці свого існування для користувачів Monero були доступні тільки утиліти командного рядка. Тому безліч користувачів продовжувало просити розробників, в той час до кінця не розуміють безлічі основних моментів в кодової базі Monero, створити графічний користувальницької інтерфейс (GUI). Вони прислухалися і почали роботу над ним, але раптово, 4 вересня 2014 року, на мережу Monero обрушилася витончена атака, так що розробникам довелося переглянути пріоритети і приділити весь час ядру, для того щоб система була стійка до атак (докладніше про це в документі MRL -2).

До кінця 2014 року, Рікардо спання (Riccardo Spagni) запустив Web-гаманець під брендом “MyMonero”, який доступний за адресою mymonero.com. Тим часом, для стороннього спостерігача здавалося, що нічого особливого в роботі над проектом не відбувається. Однак розробники виконали дуже серйозну роботу, таку як перенесення ланцюжка блоків на LMDB, яка дозволяла демона Monero працювати на комп’ютерах з обмеженою кількістю оперативної пам’яті. Також була реалізована багатомовна підтримка mnemonic-seed для полегшення створення резервних копій приватних ключів. Велика кількість коду і документації було написано для реалізації швидкої синхронізації ланцюжка блоків, більш швидкої роботи демона, розпочато інтеграція з I2P і т.д. В кінцевому підсумку проект графічного призначеного для користувача інтерфейсу був знову відновлений в початку 2016 р.

Взаємозамінність (fungibility)

Мета Monero – створення мережі взаємозамінної валюти. Що таке “взаємозамінність” (fungibility) і чому вона така важлива?

Взаємозамінність – це найважливіша властивість будь-якої валюти. Ця властивість робить можливим 100% обмін однієї одиниці валюти на іншу. Тут не повинно бути відмінностей. Кожна монета має мати однакову вартість.

У мережі Bitcoin кожну транзакція може бути відстежено. Це може створити проблеми при отриманні переказів від незнайомих джерел, а також в подальшому при спробі витратити ці кошти. Ви можете бути звинувачені в злочинах при яких ці кошти були використані. Це значно занижує вартість подібних “брудних” коштів. Інша проблема з відстеженням транзакцій полягає в тому, що інші можуть дізнатися ваш баланс або визначити на що ви витрачаєте ваші кошти.

Однак ви можете спробувати замісти сліди ваших транзакцій. Ця техніка називається “мікшування” і може бути здійснена різними способами. Іноді централізовано, іноді децентралізовано, але тут завжди є ймовірність побачити, що певні монети пройшли через мікшер. Використання цього прийому так чи інакше веде до проблем, тому що для мікшування, як правило, використовуються “брудні” монети. Необов’язкова приватність не вирішує проблему відсутності взаємозамінності валюти.

Ви можете спробувати замісти сліди, але якщо ви намагаєтеся мікшувати ваші монети використовуючи “coinjoin” або будь-який інший “анонімайзер”, то ці транзакції все одно будуть відзначені як “потенційно підозріла” активність, так як відразу видно, що монети були мікшувати, навіть якщо самі ви залишаєтеся анонімними.

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

Кільцеві підписи (Ring signatures)

Кільцеві підписи використовуються для приховування реальних входів транзакцій таким чином, що неможливо сказати що за історія у кожного виходу цієї транзакції в ланцюжку блоків.

Кільцевий підпис (ring signature) – це такий електронний підпис, який дозволяє одному з учасників групи (званої кільцем) виконати підписання деякого повідомлення від імені всієї групи, при цьому не буде достеменно відомо, хто з учасників групи виконав підписання. Кільцеві підписи та їх застосування – CryptoWiki

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

Ймовірно, ви запитайте себе, як визначаються подвійні витрати, якщо присутнє правдоподібне заперечення для кожного виходу транзакції? Відповідь знову дає математика. Разом з транзакцією публікується так званий “key image”. Він доводить, що один з входів кільцевої підписи реальний і коли відправник намагається зробити подвійну витрату, “key image” буде абсолютно ідентичний. Більше інформації про криптографії лежить в його основі ви можете знайти тут.

Так як у всій мережі забезпечено дотримання кільцевих підписів, всі монети завжди перемішані. Це і робить їх взаємозамінними на рівні протоколу в Monero. Якщо ми порівняємо це з функціями приватності реалізованими в Bitcoin, ZCash або Dash, ми явно можемо побачити різницю: якщо прозорі транзакції можливі в мережі, регулюючі органи зможуть вимагати прозорість в певних обставинах, так що взаємозамінність стане неможливою.

І останнє, але не менш важливе – це перевірена криптографія. Вона існує з 2001 року, так що ми можемо припускати, що вона досить надійна. На відміну від ZCash, яка дуже нова і все ще недостатньо перевірена.

Stealth-адреси

У Monero реалізовані “Stealth-адреси”, у вас одина (публічна) адреса, який ви можете дати кому завгодно, не дозволяючи спостерігачам знати що-небудь про історію транзакцій або балансі цієї адреси. Система адрес Monero використовує два приватних ключа: viewkey (ключ для перегляду) і spendkey (ключ для приватного проведення).

Приватний ключ для витрат працює як аналогічний приватний ключ в Bitcoin – їм ви підписуєте транзакції. Ключі для перегляду же використовується для пошуку вхідних платежів в ланцюжку блоків. Тільки якщо у вас є доступ до ключа для перегляду ви можете дізнатися точний вихід транзакції, пов’язаний з вашою адресою Monero.

У Bitcoin (і більшості інших криптовалют) багаторазове використання адрес відбувається постійно і це колосально зменшує псевдоанонімність мережі. Stealth-адреси надають простий спосіб захистити і поліпшити секретність. Дані ланцюжка блоків не покажуть зв’язків між декількома транзакціями.

Незважаючи на це, не всі так прекрасно: якщо ви використовуєте адресу в декількох місцях, можна пов’язати транзакції поза ланцюжка блоків. Якщо ви виводите кошти з біржі і використовуєте ту саму адресу в вашому інтернет-магазині, в якому ви продаєте рослини, правоохоронні органи мають можливість зв’язати ваші транзакції грунтуючись на даних використання однієї й тієї ж адреси. З цієї причини рекомендується використовувати техніку “одноразових адрес” для кожного з сервісів. Всі кошти надійдуть на один і той же обліковий запис, але зв’язати транзакції поза ланцюгом блоків буде неможливо.

Конфіденційні транзакції RingCT

Кільцеві конфіденційні транзакції – це нова система підписів запропонована вченим Шеном Нетер (Shen Noether) в документі MRL-5. Ви можете знайти його першу редакцію в журналі Ledger. Ця система підписів заснована на дослідженні конфіденційних транзакцій Грегорі Максвелла (Gregory Maxwell), але адаптована для роботи з кільцевими підписами.

Ця технологія дозволяє користувачам приховати суми транзакцій. І вона є “останньою частиною мозаїки” для повної анонімності в мережі Monero. Технологія також вирішує деякі прикордонні випадки, які можуть скомпрометувати конфіденційність Monero. RingCT був активований в мережі Monero 9-го січня 2016 р Спочатку RingCT був необов’язковим, але у вересні 2017 після запланованого жорсткого поновлення технологія RingCT в Monero стала обов’язковою, без будь-якої можливості її обійти.

Kovri – I2P

Дані ланцюжка блоків це тільки один вектор атаки на секретність користувачів криптовалюти. Відомо, що компанія Chainanalysis намагається ідентифікувати користувачів через їх IP-адреси. Проект Kovri ставить своїм завданням реалізацію I2P-маршрутизатора на мові C++, який в кінцевому підсумку дозволить користувачам Monero приховувати свої IP-адреси під час відправки транзакцій. Kovri ще не інтегрований в Monero і все ще знаходиться на ранній стадії розробки.

Висновок

Monero – це дуже важлива і революційна технологія. Вона дозволяє приховати відправника, одержувача, суми і історію транзакцій. Monero на відміну від ZCash не вимагає довіри до учасників “trusted setup” і працює в польових умовах. Конфіденційність гарантується протоколом і Monero надає набагато більший набір засобів для анонімізації, ніж мікшери Bitcoin або будь-яка інша криптовалюта з периферійними функціями приватності. Monero дозволяє користувачам здійснювати конфіденційні транзакції в децентралізованої мережі і встояти перед можливими спробами регулювання урядом. Monero – це справжня цифрова готівка.

Переклад статті “Introduction to Monero