Нещодавно відбулася невелика сварка між фракціями Core і Unlimited спільноти біткойн, сварка, яка є, мабуть, п’ятдесятим випадком обговорення тієї самої теми, але вона, тим не менш, цікава, оскільки висвітлює дуже тонкий філософський момент про те, як блокчейни працювати.
ViaBTC, пул майнінгу, який надає перевагу Unlimited, твір «хеш-потужність — це закон», звичайна точка для розмов сторони Unlimited, яка вважає, що майнери відіграють і повинні відігравати дуже важливу роль в управлінні біткойнами; звичайним аргументом для цього є те, що майнери — це єдина категорія користувачів, яка має великий і неліквідний фінансовий стимул для успіху біткойна. Грег Максвелл (з боку Core) відповів що «безпека біткойна працює саме тому, що геш-потужність НЕ є законом».
Основний аргумент полягає в тому, що майнери мають лише обмежену роль у системі біткойн, щоб забезпечити порядок транзакцій, і вони НЕ повинні мати права визначати будь-що інше, включаючи обмеження розміру блоку та інші правила дійсності блоку. Ці обмеження застосовуються повними вузлами, якими керують користувачі – якщо майнери починають виробляти блоки відповідно до набору правил, відмінних від правил, які застосовують вузли користувачів, тоді вузли користувачів просто відхилять блоки, незалежно від того, 10% чи 60 % або 99% хеш-потужності за ними. На це Unlimited часто відповідає приблизно так: «якщо 90% хеш-потужності знаходиться за новим ланцюгом, який збільшує ліміт блоків, а старий ланцюжок із 10% хеш-потужністю тепер працює в десять разів повільніше протягом п’яти місяців, поки складність не відрегулюється, чи не могли б ви насправді не оновити клієнта, щоб прийняти новий ланцюжок?»
Багато людей часто сперечатися проти використання загальнодоступних блокчейнів для додатків, які включають реальні активи або будь-що з ризиком контрагента. Критика є або повною, кажучи, що немає сенсу впроваджувати такі випадки використання на загальнодоступних блокчейнах, або частковою, кажучи, що, незважаючи на те, що зберігання може мати переваги дані на громадському ланцюзі, в логіка бізнесу має бути виконано поза ланцюгом.
Аргумент, який зазвичай використовують, полягає в тому, що в таких програмах точки довіри вже існують – є хтось, хто володіє фізичними активами, які підтримують дозволені активи в ланцюжку, і цей хтось завжди може вирішити втекти з активами або бути змушеним заморозити їх урядом чи банком, і тому керування цифровими представленнями цих активів у блокчейні схоже на оплату за армовані сталеві двері для свого будинку, коли вікно відкрите. Замість цього такі системи повинні використовувати приватні ланцюжки або навіть традиційні серверні рішення, можливо, додаючи фрагменти криптографії для покращення перевірки, і таким чином заощадити на неефективності та витратах на розміщення всього в блокчейні.
Наведені вище аргументи є хибними у своїй чистій формі, і вони хибні подібним чином. Поки є теоретично можливо для майнерів перемикають 99% своєї хеш-потужності на ланцюжок із новими правилами (для прикладу, коли це беззаперечно погано, припустімо, що вони збільшують винагороду за блок), і навіть спаун-табір старий ланцюжок, щоб зробити його назавжди марним, і також теоретично можливо, що централізований менеджер валюти, забезпеченої активами, припинить поважати один цифровий токен, створить новий цифровий токен з тими самими балансами, що й старий токен, за винятком одного конкретного облікового запису баланс зменшено до нуля, і на практиці почніть шанувати новий жетон ці речі досить важко зробити.
У першому випадку користувачам доведеться усвідомити, що з існуючим ланцюгом щось не так, погодитися, що їм слід перейти до нового ланцюжка, на якому зараз майніть майнери, і завантажити програмне забезпечення, яке приймає нові правила. У другому випадку всі клієнти та програми, які залежать від оригінального цифрового токена, зламаються, користувачам потрібно буде оновити своїх клієнтів, щоб перейти на новий цифровий токен, а смарт-контракти не зможуть дивитися у зовнішній світ і бачити, що вони необхідність оновлення повністю зламається. У середині всього цього противники переходу можуть створити кампанію страху, невизначеності та сумнівів, щоб спробувати переконати людей, що, можливо, їм все-таки не варто оновлювати свої клієнти або оновлювати їх до деяких третій набір правил (наприклад, зміна підтвердження роботи), і це робить впровадження перемикання ще складнішим.
Отже, ми можемо сказати, що в обох випадках, навіть якщо теоретично існують централізовані або квазіцентралізовані сторони, які могли б змусити перехід із стану A до стану B, де стан B є неприємним для користувачів, але кращим за централізовані сторони, це вимагає подолання жорсткої проблеми координації. Проблеми координації спостерігаються скрізь у суспільстві і часто є поганою річчю – хоча для більшості людей було б краще, якби англійська мова позбулася своєї надзвичайно складної та нерегулярної орфографічної системи та створила фонетичну систему, або якби Сполучені Штати перейшли на метричну систему, або якби ми могли негайно знизити всі ціни та зарплати на десять відсотків у разі спаду, на практиці це вимагає від усіх домовитися про перемикання одночасно, і це часто дуже-дуже важко.
Проте з блокчейн-додатками ми робимо щось інше: ми використовуємо проблеми координації на нашу користь, використовуючи тертя, яке створюють проблеми координації, як оплот проти зловживань з боку централізованих акторів. Ми можемо створювати системи, які мають властивість X, і ми можемо гарантувати, що вони збережуть властивість X у високій мірі, тому що зміна правил з X на не-X вимагала б, щоб ціла група людей погодилася оновити своє програмне забезпечення одночасно . Навіть якщо є актор, який міг би змусити зміни, зробити це буде важко. Це той тип безпеки, який ви отримуєте від перевірки на стороні клієнта правил консенсусу блокчейну.
Зауважте, що цей вид безпеки залежить саме від децентралізації користувачів. Навіть якщо у світі є лише один майнер, все одно існує різниця між криптовалютою, видобутою цим майнером, і централізованою системою, схожою на PayPal. В останньому випадку оператор може довільно змінювати правила, заморожувати гроші людей, пропонувати погані послуги, підвищувати гонорари або робити цілий ряд інших речей, і проблеми з координацією будуть на користь оператора, оскільки такі системи мають суттєвий мережевий вплив, тому дуже багато користувачів повинні були б погодитися одночасно перейти на кращу систему. У першому випадку перевірка на стороні клієнта означає, що багато спроб злодійства, які майнер може захотіти задіяти, за замовчуванням відхиляються, і проблема координації тепер працює на користь користувачів.
Зауважте, що наведені вище аргументи НІ, самотужки, означають, що це погана ідея для майнерів бути основними дійовими особами, які координують і вирішують розмір блоку (або, у випадку Ethereum, ліміт газу). Цілком може бути так, що, у конкретному випадку розміру блоку/ліміту газу, «уряд скоординованих майнерів із узгодженими стимулами» є оптимальним підходом для визначення цього конкретного параметра політики, можливо, через те, що ризик зловживання майнерами своїми повноваженнями нижчий, ніж ризик того, що будь-який конкретний жорсткий ліміт виявиться надзвичайно невідповідним для ринкових умов. десятиліття після встановлення обмеження. Однак немає нічого нерозумного в тому, щоб стверджувати, що уряд майнерами є найкращим способом визначити один параметр політики, і водночас стверджувати, що для інших параметрів (наприклад, винагорода за блок), ми хочемо покладатися на перевірку на стороні клієнта, щоб переконатися, що майнер обмежений. Це суть проектування децентралізованих інституцій: мова йде про стратегічне використання проблем координації, щоб гарантувати, що системи продовжують задовольняти певні бажані властивості.
Наведені вище аргументи також не означають, що завжди оптимально намагатися помістити все в блокчейн навіть для служб, які вимагають довіри. Загалом можна отримати принаймні певні переваги, якщо використовувати більше бізнес-логіки в блокчейні, але часто вони набагато менші, ніж втрати ефективності чи конфіденційності. І це добре; блокчейн не є найкращим інструментом для кожного завдання. Які аргументи вище do Однак це означає, що якщо ви створюєте програму на основі блокчейну, яка містить багато централізованих компонентів через необхідність, ви можете досягти суттєвих додаткових переваг у мінімізації довіри, надаючи користувачам спосіб доступу до вашої програми через звичайний клієнт блокчейну ( наприклад, у випадку з Ethereum це може бути Mist, Parity, Metamask або Status), замість того, щоб змусити їх використовувати веб-інтерфейс, який ви особисто контролюєте.
Теоретично, переваги перевірки на стороні користувача оптимізуються, якщо буквально кожен користувач запускає незалежний «ідеальний повний вузол» – вузол, який приймає всі блоки, які відповідають правилам протоколу, з якими всі погодилися під час створення системи, і відхиляє всі блоки, які відповідають ні. Однак на практиці це означає, що кожного користувача просять обробляти кожну транзакцію, запущену всіма в мережі, що явно неприйнятно, особливо враховуючи швидке зростання кількості користувачів смартфонів у країнах, що розвиваються.
Тут є два виходи. По-перше, ми можемо усвідомити це, поки воно є оптимальний з точки зору наведених вище аргументів, що кожен запускає повний вузол, це точно не так вимагається. Можливо, будь-який великий блокчейн, що працює на повну потужність, уже досягне точки, коли «звичайним людям» не буде сенсу витрачати п’яту частину свого жорсткого диска на запуск повного вузла, тому решта користувачів є любителями та підприємства. Поки їх є досить велика кількість, і вони походять з різного походження, проблема координації, щоб змусити цих користувачів вступити в змову, буде дуже важкою.
По-друге, ми можемо покластися клієнтська технологія сильного світла.
Існує два рівні «легких клієнтів», які зазвичай можливі в системах блокчейн. Перший, слабший, різновид легкого клієнта просто переконує користувача з певним ступенем економічної впевненості, що він знаходиться в ланцюжку, який підтримується більшістю мережі. Це можна зробити набагато дешевше, ніж перевірка всього ланцюга, оскільки все, що потрібно зробити клієнтам, це перевірити nonces у схемах підтвердження роботи або в схемах підтвердження частки перевірити підписані сертифікати, які стверджують, що «або кореневий хеш стану є тим, що я кажу є, або ви можете опублікувати цей сертифікат у головному ланцюжку, щоб видалити велику суму моїх грошей». Після того, як легкий клієнт перевірить кореневий хеш, вони можуть використовувати дерева Merkle для перевірки будь-якої конкретної частини даних, яку вони можуть захотіти перевірити.
Подивіться, це дерево Меркле!
Другий рівень — це «майже повністю перевіряючий» легкий клієнт. Такий тип клієнта не просто намагається слідувати ланцюжку, якому дотримується більшість; швидше, він також намагається слідувати лише ланцюгам, які відповідають усім правилам. Це робиться за допомогою комбінації стратегій; найпростіше пояснити те, що легкий клієнт може працювати разом зі спеціалізованими вузлами (заслуга Гевіна Вуда за те, що він придумав назву «рибалки»), метою яких є пошук недійсних блоків і створення «доказів шахрайства», коротких повідомлень, які по суті кажуть «Дивіться! Ось у цього блоку є недолік!». Легкі клієнти можуть потім перевірити цю конкретну частину блоку та перевірити, чи він насправді недійсний.
Якщо блок виявляється недійсним, він відкидається; якщо легкий клієнт не чує жодних доказів шахрайства для даного блоку протягом кількох хвилин, тоді він припускає, що блок, ймовірно, законний. Є трохи більше складності бере участь у розгляді випадку, коли проблема полягає не в даних поганий, а скоріше дані відсутній, але загалом можна наблизитися до виявлення всіх можливих способів, якими майнери або валідатори можуть порушувати правила протоколу.
Зауважте, що для того, щоб легкий клієнт міг ефективно перевірити набір правил програми, ці правила мають виконуватися всередині консенсусу, тобто вони мають бути або частиною протоколу, або частиною механізму, що виконується всередині протоколу ( як смарт-контракт). Це ключовий аргумент на користь використання блокчейну як для зберігання даних, так і для виконання бізнес-логіки, на відміну від простого зберігання даних.
Ці методи легкого клієнта є недосконалими, оскільки вони покладаються на припущення щодо підключення до мережі та кількості інших легких клієнтів і рибалок, які знаходяться в мережі. Але насправді для них не принципово працювати 100% часу на 100% валідаторів. Швидше, все, що ми хочемо, це створити ситуацію, коли будь-яка спроба ворожого картелю майнерів/валідаторів проштовхнути недійсні блоки без згоди користувача спричинить багато головного болю для багатьох людей і зрештою вимагатиме від усіх оновити своє програмне забезпечення, якщо вони хочете продовжити синхронізацію з недійсним ланцюжком. Поки це задовольняється, ми досягли мети безпеки через координаційні тертя.
джерело: https://vitalik.eth.limo/general/2017/05/08/coordination_problems.html
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- BlockOffsets. Модернізація екологічної компенсаційної власності. Доступ тут.
- джерело: Інформація про дані Платона.