Міф про незмінність блокчейна

Вихідний вузол: 1738527

Де гнучке мислення краще догматизму

«Найвищим благом, вищого за яке немає, є блокчейн, а отже, він незмінно добрий, отже, справді вічний і справді безсмертний».
— Святий Августин, De natura boni, i, 405 р. н. е. (з невеликими редагуваннями)

Якщо ви запитаєте когось, хто добре обізнаний про характеристики блокчейнів, у відповіді незмінно з’явиться слово «незмінний». У звичайній англійській мові це слово використовується для позначення того, що ніколи не можна модифікувати або змінити. У блокчейні це стосується глобального журналу транзакцій, який створюється консенсусом між учасниками ланцюга. Основна ідея полягає в наступному: як тільки транзакція блокчейну пройшла достатній рівень перевірки, певна криптографія гарантує, що вона ніколи не може бути замінена або скасована. Це позначає блокчейни як відмінні від звичайних файлів або баз даних, у яких інформацію можна редагувати та видаляти за бажанням. Або так стверджує теорія.

На бурхливій арені блокчейн-дебатів незмінність стала квазірелігійною доктриною – основним переконанням, яке не можна похитувати чи брати під сумнів. І так само, як і доктрини основних релігій, члени протилежних таборів використовують незмінність як зброю глузування та глузування. Минулий рік став свідком двох яскравих прикладів:

  • Прихильники криптовалюти стверджують, що незмінності можна досягти лише за допомогою децентралізованих економічних механізмів, таких як підтвердження роботи. З цієї точки зору приватні блокчейни смішні, оскільки вони залежать від колективної доброї поведінки відомої групи валідаторів, яким явно не можна довіряти.
  • Зневажливо ставилася до ідеї редагованого (або змінюваного) блокчейну, в якому за певних умов можна вносити ретроактивні зміни в історію транзакцій. Пересмішники поставили запитання: який сенс блокчейну, якщо його вміст можна легко змінити?

Для тих із нас, хто знаходиться осторонь, весело спостерігати за обливанням брудом. Не в останню чергу тому, що обидві ці критики є просто неправильними та випливають із фундаментального нерозуміння природи незмінності в блокчейнах (та й у будь-якій комп’ютерній системі). Для тих, хто не має часу, ось підсумок:

У блокчейнах не існує такого поняття, як ідеальна незмінність. Справжнє запитання: за яких умов певний блокчейн можна, а за яких не можна змінити? І чи відповідають ці умови проблемі, яку ми намагаємося вирішити?

Іншими словами, транзакції блокчейну не записані в розум Бога (з вибаченнями перед Августином вище). Натомість поведінка ланцюга залежить від мережі тілесних комп’ютерних систем, які завжди будуть вразливими до знищення або пошкодження. Але перш ніж ми детально розберемося, давайте продовжимо, підсумувавши деякі основи самих блокчейнів.

Коротко про блокчейни

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

Кожен вузол незалежно перевіряє кожну нову вхідну транзакцію на дійсність з точки зору: (а) її відповідності правилам блокчейну, (б) її цифрового підпису та (в) будь-яких конфліктів із раніше побаченими транзакціями. Якщо транзакція проходить ці перевірки, вона потрапляє в локальний список тимчасових непідтверджених транзакцій цього вузла («пул пам’яті») і буде перенаправлена ​​до однорангових вузлів. Транзакції, які не пройшли, відхиляються відразу, тоді як інші, оцінка яких залежить від невидимих ​​транзакцій, поміщаються в зону тимчасового зберігання («пул сиріт»).

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

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

Кожен ланцюжок використовує певну стратегію, яка гарантує, що блоки генеруються декількома його учасниками. Це гарантує, що жодна окрема особа чи невелика група вузлів не зможе захопити контроль над вмістом блокчейну. Більшість загальнодоступних блокчейнів, таких як біткойн, використовують «доказ роботи», який дозволяє створювати блоки будь-кому в Інтернеті, хто може вирішити безглузду та диявольськи складну математичну головоломку. Навпаки, у приватних блокчейнах блоки, як правило, підписуються одним або декількома дозволеними валідаторами з використанням відповідної схеми для запобігання контролю меншості. Наш продукт MultiChain використовує техніку під назвою «різноманітність майнінгу», яка вимагає участі мінімальної частки дозволених валідаторів, щоб створити дійсний ланцюжок.

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

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

Мінливість у публічних ланцюгах

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

Цю критику найпростіше вирішити, вказавши на вразливість самих публічних блокчейнів. Візьмемо, наприклад, блокчейн Ethereum, який постраждав нищівний подвиг у червні 2016 року. Хтось знайшов лазівку в кодуванні в смарт-контракті під назвою «DAO», у який було інвестовано майже 250 мільйонів доларів, і почав швидко виснажувати його кошти. Хоча це явно порушувало наміри творців контракту та інвесторів, його правила та умови покладався на мантру, що «кодекс є законом». Закон чи ні, але менше ніж через місяць програмне забезпечення Ethereum було оновлено, щоб запобігти виведенню хакером «заробленої» криптовалюти.

Звичайно, це оновлення не можна було застосувати, оскільки кожен користувач Ethereum контролює свій власний комп’ютер. Тим не менш, її публічно підтримав Віталік Бутерін, засновник Ethereum, а також багато інших лідерів спільноти. У результаті більшість користувачів підкорилися, і блокчейн з новими правилами зберіг назву «Ethereum». Меншість не погодилася зі зміною та продовжила блокчейн згідно з початковими правилами, отримавши назву «Ethereum Classic». Більш точним вибором назв може бути «Ethereum compromised» і «Ethereum the pure». У будь-якому випадку, демократія є демократія, і (прагматичний і популярний) «Ethereum» тепер більш ніж у десять разів дорожчий (ідеалістичний, але відсторонений) «Ethereum Classic».

Тепер давайте розглянемо менш доброзичливий спосіб, за допомогою якого можна підірвати незмінність публічного блокчейну. Нагадаємо, що для створення блоку або «майнінгу» в біткойнах і Ethereum використовується схема підтвердження роботи, у якій необхідно вирішити математичну задачу, щоб створити блок і отримати винагороду. Цінність цієї винагороди неминуче перетворює майнінг на гонку озброєнь, коли майнери змагаються, хто швидше вирішить проблеми. Щоб компенсувати це, мережа періодично коригує складність, щоб підтримувати постійну швидкість створення блоків, кожні 10 хвилин у біткойнах або 15 секунд в Ethereum.

За останні 5 років, складність біткоіна збільшився в 350,000 1,089 разів. Сьогодні переважна більшість майнінгу біткойнів відбувається на дорогому спеціалізованому обладнанні в місцях, де холодна погода та дешева електроенергія. Наприклад, за XNUMX доларів ви придбаєте Antminer S9, який майнить блоки в 10,000 10 разів швидше, ніж будь-який настільний комп’ютер, і спалює в XNUMX разів більше електроенергії. Все це далеко від демократичних ідеалів, з якими створювався біткойн, навіть якщо це робить блокчейн надзвичайно безпечним.

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

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

Давайте оцінимо вартість атаки 51%, яка скасовує рік транзакцій біткойнів. При поточній ціні біткойна в 1500 доларів і винагороді в 15 біткойнів (включаючи комісію за транзакції) за 10-хвилинний блок майнери заробляють близько 1.2 мільярда доларів на рік (1500 доларів × 15 × 6 × 24 × 365). Якщо припустити (розумно), що вони не втрачають грошей загалом або, принаймні, не втрачають багато, це означає, що загальні витрати майнерів також повинні бути в тому ж діапазоні. (Я спрощую тут, амортизуючи одноразові витрати на придбання обладнання для майнінгу, але за 400 мільйонів доларів ви купите достатньо Antminer 9, щоб відповідати поточній потужності майнінгової мережі біткойнів, тож ми на правильному місці.)

Тепер подумайте про звіти що біткойн використовується громадянами Китаю, щоб обійти контроль над капіталом у своїй країні. Крім того, врахуйте, що податкові надходження китайського уряду складають приблизно 3 долари трильйон в рік. Чи витратив би уряд недемократичної країни 0.04% свого бюджету, щоб закрити популярний метод незаконного виведення грошей з цієї країни? Я б не стверджував, що відповідь є обов'язково так. Але якщо ви думаєте, відповідь є безумовно ні, ти більш ніж трохи наївний. Особливо враховуючи, що, як повідомляється, Китай працює 2 мільйони людей контролювати Інтернет-контент, що становить 10 мільярдів доларів на рік, якщо припустити низьку зарплату в 5,000 доларів. Це ставить у перспективу вартість 1.2 мільярда доларів, пов’язану з сторнуванням річних транзакцій біткойнів.

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

Нічого з цього не слід тлумачити як критику дизайну біткойна чи передбачення того, що мережева катастрофа справді трапиться. Блокчейн біткойнів — це чудова інженерна розробка, можливо, навіть ідеальна для мети, яку мали на увазі його творці. І якби мені довелося покласти на це гроші, я б поставив, що Китай та інші уряди ймовірно не будуть атакувати біткойни таким чином, оскільки це не в їхніх інтересах. Швидше за все, вони зосередять свій гнів на його більш невідстежуваних родичах, таких як Dash, Zcash і Monero.

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

Перезаписувані приватні ланцюжки

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

Звичайно, незмінність все ще легко підірвати, якщо всі учасники ланцюга вирішать зробити це разом. Уявімо приватний блокчейн, який використовують шість лікарень для агрегування даних про інфекції. Програма в одній лікарні записує в ланцюжок великий і помилковий набір даних, що створює незручності для інших учасників. Через кілька телефонних дзвінків ІТ-відділи всіх лікарень погоджуються «перемотати» свої вузли на одну годину назад, видалити проблемні дані, а потім дозволити ланцюжку продовжувати роботу, ніби нічого не сталося. Якщо всі лікарні погодяться це зробити, хто їм завадить? Справді, окрім задіяного персоналу, хто взагалі знатиме, що це сталося? (Слід зазначити, що деякі консенсусні алгоритми, як PBFT не надають офіційного механізму для відкатів, але це не допомагає в управлінні, оскільки вузли все ще можуть вільно обходити правила.)

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

Маючи це на увазі, давайте поговоримо про другий випадок, коли доктрина незмінності блокчейну була використана для висміювання ідей. Тут ми маємо на увазі ідею Accenture за допомогою хешу-хамелеона для того, щоб блок, глибоко закопаний у ланцюг, можна було легко замінити. Первинна мотивація, як описаний Девідом Трітом, дозволяє швидко й ефективно видалити стару проблемну транзакцію. За схемою, якщо заміна блоку все-таки відбувається, за ним залишається «шрам», який бачать усі учасники. (Слід зазначити, що будь-які пізніші транзакції, які залежать від видаленої, також потрібно буде видалити.)

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

І все ж, за відповідних умов, ідея дозволу заднім числом модифікувати блокчейни за допомогою хешів-хамелеонів може мати сенс. Щоб зрозуміти чому, ми почнемо з простого запитання: у цьому типі блокчейну, хто насправді матиме силу замінити старі блоки? Зрозуміло, що це не може бути будь-який неідентифікований учасник мережі, оскільки це зробить ланцюг некерованим.

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

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

Якщо так, то навіщо ними турбуватися? Відповідь: оптимізація продуктивності, тому що хеші-хамелеони дозволяють замінювати старі блоки в ланцюжку набагато ефективніше, ніж раніше. Уявіть, що нам потрібно видалити транзакцію з початку блокчейну, який працює протягом 5 років. Можливо, це пов’язано з Європейським Союзом Право бути забутим законодавство, яке дозволяє окремим особам видаляти свої особисті дані з облікових записів компаній. Вузли не можуть просто стерти транзакцію зі своїх дисків, оскільки це змінило б хеш відповідного блоку та розірвало б ланку в ланцюжку. Наступного разу, коли блокчейн буде скановано або поширено, все розвалиться.

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

Незмінність має нюанси

Переглядаючи ризики блокчейнів із підтвердженням роботи та технічну цінність хешів-хамелеонів, я сподіваюся переконати вас, що незмінність блокчейну є набагато більш нюансованою, ніж питання «так чи ні». Цитувати Саймон Тейлор цитує Яна Грігга, питання завжди має бути «хто ти і чого хочеш досягти?»

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

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

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

Будь ласка, залишайте будь-які коментарі на LinkedIn.

Часова мітка:

Більше від Багатоканальний