Занурення в технологію блокчейн: секрети EmerCoin

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

Мережа Emer, як і інші пірингові мережі, володіє необмеженим масштабуванням, і чим більше в ній учасників – тим ефективніше і стабільніше вона працює. Тому на її основі можна робити не тільки Enterprise рішення, але й рішення світового масштабу.



Спочатку розмежуємо поняття:

Emer – це технологія, мережа та інфраструктура.
EmerCoin – кредитні одиниці, які циркулюють всередині мережі Emer.

Прийнято, що словом «EmerCoin» називають обидва ці поняття, тому теж будемо дотримуватися загальноприйнятої семантиці, застосовуючи слово «Emer», тільки для того, щоб підкреслити, що йдеться саме про технології, а не розрахунково-бухгалтерський аспекті. Під словами «монети», «гроші» тощо, будуть матися на увазі безготівкові кредитні одиниці, які звертаються в розподіленій мережі кріптовалюти.

Історія EmerCoin
Історично, ядро EmerCoin було успадковано від ядра Peercoin, яке в свою чергу було успадковано від Bitcon. Peercoin додав в свій проект ключове нововведення – механізм Proof-of-Stake вироблення консенсусу, створивши гібридний механізм консенсусу, який використовує два базових механізму – і Proof-of-work(POW) і Proof-of-Stake(POS). Розглянемо ці механізми і сам консенсус докладніше.

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

Що такої розподіленої мережі вважати голосом?
Перша очевидна ідея – гаманець. Але, зловмисник може створити мільйони гаманців і цими «мертвими душами» проголосувати за ту версію блокчейна, яка йому вигідна.

Наступна ідея – IP-address. Теж не працює, так як будь-який провайдер може симулювати велику мережу, і знову створити полчища «мертвих душ». Для голосування потрібно обмежений ресурс, який не може бути тиражований і фальсифікований.

Сатоши Накамото в системі Bitcon запропонував в якості такого Proof-of-Work – доказ допомогою обчислювальної потужності. Дійсно, якщо у вас є комп'ютер обчислювальною потужністю X, ви його можете віртуально розділити на N суб-комп'ютерів, але їх сумарна обчислювальна потужність так і залишиться X. тобто вага голосу власника такого комп'ютера не збільшиться.

Потім були запропоновані інші концепції консенсусу, орієнтовані не на використання процесора, а інший обчислювальний ресурс – наприклад ємності дискових накопичувачів, Proof-of-Capacity. Подібні концепції спираються на обмеженість фізичної ресурсу – обчислювальної потужності або дискової ємності. Природно, в процесі розвитку екосистеми кріптовалюти це призводить до «гонки озброєнь», коли майнеры вкладаються у відповідне майнерское обладнання до тих пір, поки не досягнуть паритету витрат на амортизацію обладнання та доходів від майнінгу. Після чого плачуть «майнить стало невигідно, крипта – обдурювання».

Проривний ідеєю Санні Кінга, автора Реегсоіп, була концепція Proof-of-Stake, в якій в якості обмеженого голосуючого ресурсу виступали монети, контрольовані самою системою. Це дозволило вийти з пастки: «гонка озброєнь матеріальних ресурсів», замінивши матеріальний ресурс (процесор, диски) на нематеріальний – монети. Це в свою чергу припинило безглузда витрата матеріальних ресурсів, неповоротно витрачаються на майнінг (електрика, обладнання).

Безпека мережі
Кожен механізм консенсусу окремо має свої недоліки. Так, наприклад, не дуже популярну PoW-криптовалюту можна атакувати, тимчасово орендувавши величезні обчислювальний потужності (що кілька разів було зроблено), а POS-кріптовалюти потенційно уразливі проти інших видів атак, наприклад, атакою з глибини. Для захисту від останньої застосовуються додаткові механізми, наприклад, динамічні контрольні точки (dynamic checkpoints), і в цілому механізм POS показав себе більш стійким, ніж POW.

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

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

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

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



POW+POS vs POW
Як було зазначено вище, EmerCoin має змішаний механізм консенсусу, який і визначив стартову точку проекту. Цей гібридний механізм був успадкований нами з Peercoin з єдиною зміною – великим зрушенням у бік POS. По суті, Emer є POS-криптовалютой, в якій механізм POW залишений з міркувань безпеки, і грає хоч і важливу, але допоміжну роль, а приблизно 80% блоків закриваються саме POS-ом.

Sha256
Хеш-функція закриття блоку застосована та ж сама, що і в Bitcoin і Peercoin – sha256. Причина полягає в тому, що sha256 є стандартом і продовжує забезпечувати достатній рівень безпеки для підтримання стабільної роботи мережі.

Також в силу того, що майнінг sha256 давно вже виробляється спеціалізованими процесорами ASICs, можна бути впевненими в двох речах:

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

  • EmerCoin проти майнінгу на універсальних комп'ютерах, так як при такому підході можуть постраждати непричетні. Як відомо, до появи АЅІСов був ряд вірусів, які використовували обчислювальні потужності заражених комп'ютерів для майнінг биткоинов. Поява АЅІСов зробили такі віруси економічно не вигідними. Тим не менш, зберігається небезпека для інших криптовалют, які майнятся на універсальних комп'ютерах.
10 хвилин
Час закриття блоку залишається таким же, як і в Bitcoin і Peercoin – 10 хвилин. Сатоши вибрав вдалий параметр, і скорочення часу блоку може призвести до великої кількості колізій з orphan-блоками і втрати стабільності мережі. Розглянемо це твердження детальніше.

Вірогідність колізії є час оновлення мережі, поділена на час закриття блоку. Час відновлення мережі залежить від топології і завантаження мережі, і для мережі Bitcoin вже зараз може досягати хвилин. Відповідно, інші кріптовалюти (наприклад Quark), які скоротили час закриття до суб-хвилинних інтервалів, ризикують отримати постійні форки, як тільки навантаження на них зросте до більш-менш значних величин.

Можна заперечити, що є прекрасний протокол Ghost, застосовуваний у Etherium, і йому не страшні форки, так як orphan-блоки (у них вони називаються uncles) хоч і не потрапляють до списку блокчейн, але беруть участь у голосуванні за ту чи іншу версію ланцюжка, тому там час блока може бути в районі 20 секунд.

У свою чергу, EmerCoin вважає, що цей протокол має ряд вразливостей. Наприклад, мережа під протоколом Ghost може бути піддана мережного шторму – ефекту, що виникає в широкомовних Ethernet-мережах при досягненні деякої критичної навантаження. Простіше кажучи, це станеться тому, що час відновлення мережі пропорційно до навантаження на мережу, тобто трафіку. При досягненні критичної навантаження (великому числі транзакцій в секунду), час оновлення стане порівнянно з часом генерації блоку. При цьому різні майнеры незалежно проведуть блоки-кандидати на включення до блокчейн. І ось – сюрприз – ці блоки будуть містити ті ж самі операції. І ці великі блоки знову будуть розіслані по мережі, що створить мультиплікацію трафіку, тобто знову навантажить мережа, що знову призведе до затримок ще більшій кількості uncles. Поведінка мережі стане подібним атаці типу DNS/NTP Amplification, тільки в якості атакуючого, і жертви виступають ті ж самі вузли мережі, а тригером стає досягнення критичного навантаження, що залежить від топології мережі.

А якщо ще врахувати, що в блокчейн потрапить тільки один з блоків-кандидатів, а мережа витрачала сили не тільки на вирішення цього блоку, але і на його «братів», які щойно проголосували, але в блокчейн не увійшли, то стає очевидним драматичне зниження трасту прийнятого блокчейна в результаті такого шторму, і можливість атаки потужністю менше 51%.

Тому підхід Сатоши є найбільш правильним в даний момент.

Перерахунок складності після кожного блоку
На відміну від Bitcoin, де складність майнінгу перераховується один раз на кожні 2016 блоків (приблизно раз у два тижні), складність в мережі Emer (як і Peercoin) перераховується після кожного блоку. Такий підхід підвищує стабільність роботи мережі. Наведемо приклад.

Припустимо, після чергового перерахунку складності, в мережі Bitcon перестала працювати половина майнер. До речі, це далеко не гіпотетичний випадок – досить вчасно прийняти відповідні закони в державах, на територіях яких знаходяться великі майнінг-пули. В результаті, блоки будуть закриватися вдвічі рідше, тобто раз у 20 хвилин. Також удвічі зросте час підтвердження транзакцій і розмір блоків. А враховуючи те, що вже зараз часто блоки досягають своєї межі в 1 мегабайт, є прямі шанси, що багато транзакції в блоки просто не потраплять, і багато днів будуть непідтвердженими. Це викличе паніку, і ще більша кількість транзакцій, пов'язаних з бажанням продати за ніж є, що тільки погіршить ситуацію. І система тільки через місяць відновить працездатність.

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

Перерахунок нагороди за POW-блок
У EmerCoin існує ще один механізм підтримки більш-менш стабільною майнерской потужності – це петля негативного зворотного зв'язку по хешрейту мережі (агрегованої майнерской потужності). Суть полягає в тому, що майнерская нагорода за блок не фіксована, як в Bitcoin, а назад пропорцилнальна корені 4й ступеня складності мережі.

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

Теоретично, найбільш ефективна стратегія майнінгу EmerCoin – змовитися, майнить мінімальною потужністю та ділитися максимальним доходом між учасниками. Але цього не вийде в силу егоїстичності майнер, які знаходяться в ситуації, описаної в Дилемі Укладеного.

POS 6% APY
Так як EmerCoin є і POS-криптовалютой, то в ній можна майнить не лише обладнанням, але монетами, що знаходяться в гаманці. У проекті була обрана POS-нагорода в 6% річних. Іншими словами, якщо в якійсь транзакції монети без руху пролежали більше місяця, то вони мають шанс закрити блок, і принести господареві нагороду в 6% річних. Якщо ж монети були використані куди-небудь, то термін їх вилежування «згорає», і починає накопичуватися за новою у нового господаря. Тобто 6% – це верхня межа POS-нагороди, досяжний тільки у випадку нерухомих грошей. У теперішній же час, практичне значення зростання грошової маси за рахунок POS-нагороди становить 4-5% річних, і в міру розширення використання EmerCoin буде знижуватися, досягаючи величин, прийнятих в стійких фіатних валютах, але не звертаючись в нуль.

У відповідь на заперечення: «У вас же інфляція за цих 6%», зауважимо, що EmerCoin демонструє дефляционность, тобто вартість монети зростає, причому досить швидко. Це видно по курсу монети, яка з початку року зросла приблизно вчетверо. Така розбіжність з наївною моделлю пояснюється тим, що вартість монети відображає вартість відповідної економіки, і при зростанні економіки монета теж зростає, і накачування грошової маси внаслідок POS пренебрежимо мала в порівнянні з іншими факторами.

Емісія і спалювання
З вищевикладеного можна зробити висновок, що грошова маса EmerCoin буде зростати нескінченно. І це в першому наближенні правда. Дійсно, учасники підтримання консенсусу продають свої послуги мережі, і за це отримують свіжонадруковані монети. Однак, у системі EmerCoin діє механізм знищення монет, який протилежний емісії. Знищення монет відбувається при використанні сервісів блокчейна – пересиланні монет або купівлю записів у NVS. Тобто, на відміну від мережі Bitcoin, де емісія обмежена, але механізм знищення відсутня, в мережі EmerCoin є і необмежена емісія, і процес, покликаний їй протидіяти. Учасники, що надають послуги мережі, отримують нагороду, а купують у мережі послуги – платять за них.

Приблизні оцінки говорять, що з урахуванням відомих факторів, сума в 1 мільярд EMC буде досягнута приблизно через 80 років.

STUN rfc5389
Першим унікальним нововведенням EmerCoin є використання протоколу rfc5389, STUN для отримання зовнішнього IP-адреси. Програмі-гаманцю за NAT-му потрібна знати зовнішній IP. Bitcoin його раніше одержував (а інші кріптовалюти і продовжують отримувати) запитом до централізованого сервера
http://checkip.dyndns.org
, але в даний час код цього запиту видалено з Bitcoin, і використовується тільки UPNP або ручна конфігурація. Цей підхід не підходив по ряду причин (наприклад, UPNP некоректно працює за багатошаровим NAT-ом), тому вирішили позбутися залежності від централізованого сервера, і застосувати STUN, який якраз і застосовується для цієї мети в IP-телефонії, і є промисловим стандартом. В даний час група Emer володіє найбільш повним списком публічних STUN-сервера в мережі, і ці сервера використовуються STUN-підсистемою Emer для визначення зовнішнього IP.

Оптимізатор транзакцій
Іншим унікальним нововведенням, властивим тільки Emer, є оптимізатор транзакцій.

У криптовалютах, блокчейн яких містить транзакції, при створенні чергової транзакції треба вибрати підмножину входів, які дана транзакція буде витрачати. В Bitcoin і інших криптовалютах використовується стохастичний алгоритм, який робить 1000 випадкових проб, і вибирає підмножина з сумою, максимально наближеної до цільової. При цьому, навіть якщо гаманець і містить підмножина транзакцій, що дозволяють зібрати суму «під розрахунок», стандартний алгоритм майже завжди її втрачає, і в новій транзакції створить вихід для платежу і здачу собі. Це призводить і до зайвого розміром створеної транзакції, і до появи майбутньої транзакції, яка витратить здачу.

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

У Emer для вибору підмножини транзакцій застосували підхід динамічного програмування, алгоритм гарантовано знаходить таке підмножина, щоб забезпечити суму без здачі, якщо така можлива. В результаті, за оцінками, середній розмір транзакцій знизився на 5%, що відповідно знизило швидкість зростання розміру блокчейна. Деталі про це – в статье.

Розподілені динамічні контрольні точки
До POS-криптовалютам можуть бути застосовані деякі екзотичні атаки, специфічні для POS. Основною з них є «атака з глибини». Суть її полягає в тому, що якщо хтось отримує контроль над гаманцями, містять вже витрачені монети, він може модельно відкотити час до моменту, коли ці гаманці містили монети, і отримавши таким чином 51% монет, побудувати альтернативну ланцюжок блокчейна, довшу ніж основна, і таким чином змінити вміст блокчейна заднім числом.

Для запобігання цієї атаки використовуються контрольні точки (checkpoints), глибше яких система не переглядає структуру блокчейна. В Bitcoin застосовані тільки hard checkpoints, вбудовані в код гаманця, які оновлюються тільки з виходом нового релізу гаманця. Peercoin і Emer мають також динамічні checkpoints, коли розробники розсилають по мережі інформацію про контрольних точках, що не вимагає оновлення коду на стороні клієнтів і тримає актуальною структуру контрольних точок.

У поточному Peercoin і старої версії Emer контрольні точки міг розсилати тільки один вузол. При розсилці їх з декількох вузлів з'являлася ймовірність конфлікту в мережі. Відповідно, вихід з ладу вузла призводив до того, що інформація про динамічних checkpoints переставала оновлюватися.

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

Смарт-контракти в стилі Ethereum
Немає і не передбачається. Emer категорично проти цього з міркувань безпеки і вважають критично небезпечної неавторизовану завантаження в комп'ютери користувачів Тьюринг-сумісного коду і його примусове виконання, по зовнішній події.

Тут найбільш цікавий микроядерный підхід, де весь зовнішній і не авторизований розробниками код виконується поза ядра Emer.

Name-Value Storage (NVS)
Основним нововведенням, що має зовнішню утилітарну цінність, є підсистема NVS – Name-Value Storage. Розробка цієї підсистеми була інспірована розподіленим DNS від кріптовалюти Namecoin.

І якщо подібна структура Namecoin була жорстко орієнтована на розподілений DNS, то Emer NVS являє собою довірена розподілене сховище загального призначення з децентралізованим управлінням. Докладніше про цю підсистему можна прочитати на сайт.

Коротенько, підсистема являє собою сховище бінарних даних (до 20кб) будь-якого виду. Дані асоційовані з пошуковим ключем довжиною до 512 байт. Ключ унікальний в межах всієї мережі EmerCoin. Тобто неможливо створити дублікат вже наявного ключа. Запис асоційована з платіжним адресою, що належить власнику якогось гаманця.

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

Технічно, такий запис у блокчейне являє собою вихід транзакції на 0.01 EMC на платіжний адресу господаря запису. Цей вихід всередині script-контракту власне і містить вміст NVS. Тільки власник запису може витратити цей вихід, так як тільки в його гаманці є відповідний приватний ключ для підпису виходу. При витраті цього виходу можна зробити модифікацію запису, замінивши в ній value або інші артибуты, включаючи платіжний адресу. В останньому випадку запис буде передана в гаманець, який містить адресу-одержувач.

Взаємодіяти з підсистемою NVS можна або за допомогою JSON API способом, подібним взаємодії з гаманцем Bitcoin, або ж через GUI гаманця, в спеціальній вкладці.

Саме ця підсистема стала основою для створення сервісів Emer, про яких піде мова в наступних постах.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.