Як створити децентралізовану програму, яка масштабується? Використовуйте менше блокчейна

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

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

Як створити децентралізовану програму, яка масштабується? Використовуйте менше блокчейна

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

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

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

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

Підхід #1: Блокчейн як бекенд

Щоб було наочніше, давайте візьмемо готельну індустрію як приклад. Це величезна індустрія, у якій посередники на кшталт Booking.com, беруть величезну плату за поєднання гостей та готелів.

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

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

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

Як створити децентралізовану програму, яка масштабується? Використовуйте менше блокчейна

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

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

Давайте зробимо зразкові розрахунки. Booking.com заявляє, що у них зареєстровано майже 2 мільйони готелів. Припустимо, що в середньому готель має 10 номерів і кожен бронюється всього 20 разів на рік - це дає нам в середньому 13 бронювань в секунду.

Для оцінки цього числа варто відзначити, що Ethereum може обробляти приблизно 15 транзакцій на секунду.

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

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

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

Тому розробники dapp'ів повинні ретельно оцінити, чи дійсно кожній фічі, яка використовує блокчейн, потрібна розподіленість і неперезаписуваність.

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

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

Підхід #2: Архітектура, натхненна Blockstack'ом

Хоча основний наголос Blockstack на додатках, де користувачі є власниками своїх даних (наприклад, таких як Ефірний текст, BentenSound, Оптимізатор зображень або графітовий), blockstack також має філософію малого використання блокчейну — тільки тоді, коли це абсолютно необхідно. Їхній основний аргумент у тому, що блокчейн повільний і дорогий, а отже, повинен використовуватися тільки для одиночних або нечастих операцій. Решта взаємодія з програмами має відбуватися через peer-to-peer, тобто. користувачі децентралізованих додатків повинні ділитися даними безпосередньо один з одним, а не через блокчейн. Зрештою, найстаріші та найуспішніші децентралізовані програми, такі як BitTorrent, емейл і Tor були створені ще до створення самого концепту блокчейну.

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

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

Чому б нам просто не дозволити гостям та готелям взаємодіяти безпосередньо, а не через блокчейн. Готелі можуть зберігати їх ціни, доступність номерів і будь-яку іншу інформацію де-небудь, де вони будуть доступні для всіх, таких як IPFS, Amazon S3 або навіть їх власний локальний сервер. Це те, що надає децентралізована система зберігання від Blockstack під назвою Гайя. Вона дозволяє користувачам вибрати, де вони хочуть зберігати їх дані та контролювати, у кого може бути доступ до них через підхід, званий розрахованим на багато користувачів сховищем.

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

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

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

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

Як створити децентралізовану програму, яка масштабується? Використовуйте менше блокчейна

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

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

Висновок

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

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

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

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

Джерело: habr.com

Додати коментар або відгук