Визначення стеку web3

Середній1/8/2024, 2:50:04 AM
Стаття досліджує застосування та розвиток Web3 в галузі блокчейну.

У цьому наступному сегменті Building on web3 розробник Edge & Node, інженер зі зв'язків з розробниками, Надер Дабіт розширює стек web3 та пояснює, як розробники можуть концептуалізувати різні аспекти побудови на web3.


Я перейшов до web3 в квітні 2021 року після того, як був традиційним розробником повного стеку протягом близько 10 років. Під час занурення в усі ці нові технології та ідеї, перша річ, яку я хотів знати, - «що таке стек web3?».

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

  1. API / app сервери (REST або GraphQL)
  2. Шар аутентифікації (управляється або власноруч реалізований)
  3. База даних
  4. Фреймворки, платформи та бібліотеки для клієнтського боку
  5. Зберігання файлів

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

Виявляється, відповідь на це не є такою простою, оскільки:

  1. Парадигма цілком відрізняється багатьма способами
  2. Інструменти, технології та екосистема web3 менш зрілі, ніж web2

Також мені було важче зрозуміти, як почати працювати та розробляти веб3-додатки, оскільки я підходив до проблем так само, як це робив у веб2-світі.

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

Що таке веб3?

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

Web3 - це стек протоколів, які дозволяють повністю децентралізованим додаткам.

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

Деякі з характеристик, що надаються web3:

  • Децентралізована веб-інфраструктура
  • Власність (даних, вмісту та платформи)
  • Місцеві цифрові платежі
  • Само-суверенна ідентичність
  • Розподілена, безпідписна та надійна інфраструктура
  • Відкриті, публічні, компонентні задні кінця

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

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

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

Давайте зараз почнемо занурюватися в стек веб3, розділений на цей набір категорій:

  • Блокчейн
  • Середовище розробки блокчейн
  • Зберігання файлів
  • Протоколи даних поза ланцюжком
  • API (індексація та запити)
  • Ідентичність
  • Клієнт (фреймворки та бібліотеки)
  • Оракули
  • Інші протоколи

Блокчейн

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

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

У світі блокчейну вивчення Solidity та EVM(або Ethereum Virtual Machine) може бути найкращим вибором для початківців у якості розробника блокчейну. З використанням цих навичок (та технічного стеку) ви можете будувати не лише для Ethereum, але й для інших шарів 2 Ethereum, побічних ланцюгів, а навіть інших блокчейнів, таких як Avalanche, Fantom та Celo.

З цим сказано, Rust починає ставати все більш популярним у світі блокчейну, з підтримкою Solana, NEAR, Polkadot та інших мовою Rust. Ймовірно, вам не помилитися, навчаючись будь-чим, але для початківця я б сказав, що Solidity все ще буде кращим вибором, якщо хтось запитав мене сьогодні.

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

  • Ethereum- оригінальна платформа для смарт-контрактів
  • ZK rollups: ZKSync, Starknet, Hermez- Висока пропускна здатність Ethereum layer 2s, але не нативно сумісна з EVM
  • Оптимістичні ролапи: Arbitrum & Оптимізм - Шари Ethereum 2, сумісні з EVM (дізнайтеся більше про відмінності між оптимістичними та ZK rollups)тут)
  • Полігон - Ethereum sidechain
  • Solana- висока пропускна здатність, недорогі транзакції, швидкий час блоку, але складніше вивчити, ніж EVM (Rust)
  • ПОБЛИЗУ - Блокчейн рівня 1, може писати смарт-контракти на Rust або Assemblyscript
  • Космос - екосистема взаємодіючих блокчейнів
  • Polkadot- платформа обчислення на основі блокчейну, яка дозволяє блокчейнам, побудованим на його основі, виконувати транзакції між собою, створюючи взаємопов'язану мережу блокчейнів
  • Аврора - Ланцюг, сумісний з EVM, що працює на протоколі NEAR.
  • Fantom- EVM сумісний рівень 1
  • Лавина- Сумісний з EVM рівень 1
  • Celo - Сумісний з EVM рівень 1, призначений для того, щоб усі з смартфоном могли легко відправляти, отримувати та зберігати криптовалюту
  • Tezos- Не сумісний з EVM рівень 1, його використовують багато проектів NFT

При взаємодії з мережею вам знадобиться використовувати кінцеву точку RPC.

Є кілька способів, які дозволяють це зробити:

  1. Отримати доступ до загального RPC-кінцевої точки
  2. Запуск власних вузлів
  3. Доступ до постачальника вузла як сервіс
  4. Доступ до децентралізованого постачальника вузла як сервіс

Громадські кінцеві точки RPC часто надаються мережею, але для більшості виробничих додатків вам слід використовувати власні кінцеві точки, оскільки вони не є стабільними або рекомендованими для виробництва.

Існує кілька постачальників послуг RPC, ось кілька з них:

Також є веб3 / децентралізоване рішення, Mережа Pocketщо, здається, набирає обертів.

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

Середовища розробки блокчейну

Для розробки EVM доступні кілька хороших середовищ розробки:

  • Hardhat (JavaScript) - це новіший варіант, але він набуває все більшої популярності. їх документи великі, інструменти та досвід розробника вдосконалені, і саме це я особисто використовую для створення dapps.
  • Truffle(JavaScript) - набір інструментів для створення та розробки додатків на EVM. Він вже довгий час використовується, пройшов випробування в боях і має добру документацію. Цей інструмент вже давно на ринку, і його використовують багато розробників.
  • Заводце нове середовище розробки Solidity від Paradigm, яке показує багато перспектив. Ключові особливості полягають в можливості писати тести на Solidity, підтримці фаззингу та швидкості (воно написане на Rust). Я написав окреме вступ до нього тут.
  • Брауні - це фреймворк розробки та тестування на основі Python для розробки Solidity / EVM смарт-контрактів.

Для розвитку Solana, Якіршвидко стає точкою входу для нових розробників. Вона надає CLI для відтворення, побудови та тестування програм Solana, а також клієнтські бібліотеки, які ви можете використовувати для створення фронтенду. Вона також включає DSL, який абстрагує багато складнощів, з якими розробники часто зіштовхуються при початку роботи з розробкою Solana та Rust.

Зберігання файлів

Де ми зберігаємо зображення, відео та інші файли в web3? Зберігати що-небудь таке велике on-chain зазвичай надто дорого, тому ми, ймовірно, не хочемо зберігати їх там.

Замість цього ми можемо використовувати один з кількох протоколів зберігання файлів:

  • IPFS - Протокол однорангової файлової системи
    • переваги: це надійно, добре задокументовано з великою екосистемою
    • недоліки: якщо дані не закріплені, вони можуть бути втрачені
  • Arweave - дозволяє вам назавжди зберігати дані, оплачуючи одноразову комісію за транзакцію. Я фанат Arweave і написав про це пост в блозітут.
  • Filecoin - від Protocol Labs, та ж команда, яка створила IPFS, це протокол, призначений для забезпечення системи постійного зберігання даних. Є кілька способів для розробників для створення на Filecoin, включаючи web3.storageщо дуже гарно.
  • Skynet - Я ще не використовував його виробничо, але випробував його, і він, здається, працює добре. API тутвиглядає чудово. У мене є питання, наприклад, як довго дані зберігаються, та міжоперабельність Skynet з іншими протоколами.

Протоколи даних поза ланцюжком

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

Декілька варіантів:

  • Керамічна мережа - децентралізована, відкрита платформа для створення, розміщення та обміну даними. У Ceramic також є чудовий протокол ідентифікації, про який я поговорю пізніше. Найімовірніше, моє улюблене рішення для зберігання даних поза ланцюжком в даний момент.Осьдосить гарний демонстраційний матеріал.
  • ТекстильThreadDB - багатостороння база даних, побудована на IPFS та Libp2p. Якщо я правильно розумію, зараз відбувається велика зміна API. Я спробував це, і воно показує деякі перспективи, але документація та DX потребують покращень.
  • GunDB - децентралізована, одноранкова база даних. Gun існує вже досить давно і декілька досить цікавих застосуваньбули побудовані з його допомогою.

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

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

API (індексація та запити)

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

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

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

Традиційно, цю роботу виконують бази даних у централізованому технічному стеку, але цей індексний рівень був відсутній у стеку web3.

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

Щоб дізнатись більше про Граф, перегляньте документаціютутабо мій посібниктут.

Ідентифікація

Ідентичність - це абсолютно інший парадигма в web3. У web2 аутентифікація майже завжди ґрунтується на особистій інформації користувача. Цю інформацію зазвичай збирають або через форму, або через постачальника OAuth, який просить користувача віддати її в обмін на доступ до додатка.

У web3 ідентичність повністю обертається навколо ідеї гаманців і криптографія з відкритим ключем.

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

Як розробник, вам потрібно розуміти, як отримати доступ до гаманця користувача та взаємодіяти з його адресою різними способами.

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

Наприклад, якщо у них є доступний гаманець Ethereum, ви зможете отримати доступ до window.ethereum. Те ж саме стосується Solana (window.solana), Arweave (window.arweaveWallet) та кількох інших. WalletConnect підходить для мобільного вебу та React Native, оскільки це дозволяє користувачам авторизуватися за допомогою своїх мобільних гаманців безпосередньо з пристрою.

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

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

Якщо ви хочете отримати користувачаENSзаписи тексту, бібліотека ENSJS пропонує гарний API для отримання даних користувача:

const ens = новий ENS({ провайдер, адреса_ens: getEnsAddress(‘1’) })

const content = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDце також щось, що виглядає перспективно, але я ще не спробував це.

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

Клієнт

Що стосується фреймворків JavaScript, ви дійсно можете створювати з чим завгодно, оскільки блокчейн-SDK на стороні клієнта в основному не залежать від фреймворку. При цьому переважна кількість проектів і прикладів побудована на React. Існує також кілька бібліотек, таких як Адаптер гаманця Solanaщо пропонують додаткові утиліти для React, тому я б сказав, що вивчення або ознайомлення з React, ймовірно, буде розумним кроком.

Для клієнтських SDK в Ethereum єweb3.js та ethers.js. Як на мене, Ethers більш доступний і має кращу документацію, хоча web3.js існує довше.

У Solana ви, ймовірно, будете працювати з @solana/web3.jsі / абоЯкір. Я знайшов Anchor бібліотеки клієнтів, які стали для мене вибором № 1 для створення програм Solana, оскільки я все одно використовую фреймворк Anchor, і мені було набагато легше розібратися, ніж@solana/web3.js.

Оракули

Оракули дозволяють розробникам отримувати доступ до читання даних реального світу & зовнішніх систем з в межах смарт-контракту.

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

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

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

Інші протоколи

Radicle - це децентралізований протокол співпраці з кодом, побудований на основі Git. Його можна розглядати як децентралізовану версію GitHub.

Livepeer є децентралізованою мережею відеострімінгу. Вона є дорослою та широко використовується з понад 70,000 відеокартами, які працюють в мережі.

Завершення

Цей пост буде живим документом, який я буду підтримувати, навчаючись, експериментуючи та збираючи відгуки від розробників, які працюють у web3.

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

Disclaimer:

  1. Ця стаття передрукована з [edgeandnode]. Усі авторські права належать оригінальному автору [Nader Dabit]. Якщо є заперечення до цього перевидання, будь ласка, зв'яжіться з Gate Learn команди, і вони оперативно впораються з цим.
  2. Відповідальність за відмову: Погляди та думки, висловлені в цій статті, є виключно тими, що належать авторові і не становлять жодної інвестиційної поради.
  3. Переклади статті на інші мови виконуються командою Gate Learn. Якщо не вказано інше, копіювання, поширення або плагіатування перекладених статей заборонено.

Визначення стеку web3

Середній1/8/2024, 2:50:04 AM
Стаття досліджує застосування та розвиток Web3 в галузі блокчейну.

У цьому наступному сегменті Building on web3 розробник Edge & Node, інженер зі зв'язків з розробниками, Надер Дабіт розширює стек web3 та пояснює, як розробники можуть концептуалізувати різні аспекти побудови на web3.


Я перейшов до web3 в квітні 2021 року після того, як був традиційним розробником повного стеку протягом близько 10 років. Під час занурення в усі ці нові технології та ідеї, перша річ, яку я хотів знати, - «що таке стек web3?».

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

  1. API / app сервери (REST або GraphQL)
  2. Шар аутентифікації (управляється або власноруч реалізований)
  3. База даних
  4. Фреймворки, платформи та бібліотеки для клієнтського боку
  5. Зберігання файлів

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

Виявляється, відповідь на це не є такою простою, оскільки:

  1. Парадигма цілком відрізняється багатьма способами
  2. Інструменти, технології та екосистема web3 менш зрілі, ніж web2

Також мені було важче зрозуміти, як почати працювати та розробляти веб3-додатки, оскільки я підходив до проблем так само, як це робив у веб2-світі.

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

Що таке веб3?

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

Web3 - це стек протоколів, які дозволяють повністю децентралізованим додаткам.

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

Деякі з характеристик, що надаються web3:

  • Децентралізована веб-інфраструктура
  • Власність (даних, вмісту та платформи)
  • Місцеві цифрові платежі
  • Само-суверенна ідентичність
  • Розподілена, безпідписна та надійна інфраструктура
  • Відкриті, публічні, компонентні задні кінця

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

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

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

Давайте зараз почнемо занурюватися в стек веб3, розділений на цей набір категорій:

  • Блокчейн
  • Середовище розробки блокчейн
  • Зберігання файлів
  • Протоколи даних поза ланцюжком
  • API (індексація та запити)
  • Ідентичність
  • Клієнт (фреймворки та бібліотеки)
  • Оракули
  • Інші протоколи

Блокчейн

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

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

У світі блокчейну вивчення Solidity та EVM(або Ethereum Virtual Machine) може бути найкращим вибором для початківців у якості розробника блокчейну. З використанням цих навичок (та технічного стеку) ви можете будувати не лише для Ethereum, але й для інших шарів 2 Ethereum, побічних ланцюгів, а навіть інших блокчейнів, таких як Avalanche, Fantom та Celo.

З цим сказано, Rust починає ставати все більш популярним у світі блокчейну, з підтримкою Solana, NEAR, Polkadot та інших мовою Rust. Ймовірно, вам не помилитися, навчаючись будь-чим, але для початківця я б сказав, що Solidity все ще буде кращим вибором, якщо хтось запитав мене сьогодні.

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

  • Ethereum- оригінальна платформа для смарт-контрактів
  • ZK rollups: ZKSync, Starknet, Hermez- Висока пропускна здатність Ethereum layer 2s, але не нативно сумісна з EVM
  • Оптимістичні ролапи: Arbitrum & Оптимізм - Шари Ethereum 2, сумісні з EVM (дізнайтеся більше про відмінності між оптимістичними та ZK rollups)тут)
  • Полігон - Ethereum sidechain
  • Solana- висока пропускна здатність, недорогі транзакції, швидкий час блоку, але складніше вивчити, ніж EVM (Rust)
  • ПОБЛИЗУ - Блокчейн рівня 1, може писати смарт-контракти на Rust або Assemblyscript
  • Космос - екосистема взаємодіючих блокчейнів
  • Polkadot- платформа обчислення на основі блокчейну, яка дозволяє блокчейнам, побудованим на його основі, виконувати транзакції між собою, створюючи взаємопов'язану мережу блокчейнів
  • Аврора - Ланцюг, сумісний з EVM, що працює на протоколі NEAR.
  • Fantom- EVM сумісний рівень 1
  • Лавина- Сумісний з EVM рівень 1
  • Celo - Сумісний з EVM рівень 1, призначений для того, щоб усі з смартфоном могли легко відправляти, отримувати та зберігати криптовалюту
  • Tezos- Не сумісний з EVM рівень 1, його використовують багато проектів NFT

При взаємодії з мережею вам знадобиться використовувати кінцеву точку RPC.

Є кілька способів, які дозволяють це зробити:

  1. Отримати доступ до загального RPC-кінцевої точки
  2. Запуск власних вузлів
  3. Доступ до постачальника вузла як сервіс
  4. Доступ до децентралізованого постачальника вузла як сервіс

Громадські кінцеві точки RPC часто надаються мережею, але для більшості виробничих додатків вам слід використовувати власні кінцеві точки, оскільки вони не є стабільними або рекомендованими для виробництва.

Існує кілька постачальників послуг RPC, ось кілька з них:

Також є веб3 / децентралізоване рішення, Mережа Pocketщо, здається, набирає обертів.

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

Середовища розробки блокчейну

Для розробки EVM доступні кілька хороших середовищ розробки:

  • Hardhat (JavaScript) - це новіший варіант, але він набуває все більшої популярності. їх документи великі, інструменти та досвід розробника вдосконалені, і саме це я особисто використовую для створення dapps.
  • Truffle(JavaScript) - набір інструментів для створення та розробки додатків на EVM. Він вже довгий час використовується, пройшов випробування в боях і має добру документацію. Цей інструмент вже давно на ринку, і його використовують багато розробників.
  • Заводце нове середовище розробки Solidity від Paradigm, яке показує багато перспектив. Ключові особливості полягають в можливості писати тести на Solidity, підтримці фаззингу та швидкості (воно написане на Rust). Я написав окреме вступ до нього тут.
  • Брауні - це фреймворк розробки та тестування на основі Python для розробки Solidity / EVM смарт-контрактів.

Для розвитку Solana, Якіршвидко стає точкою входу для нових розробників. Вона надає CLI для відтворення, побудови та тестування програм Solana, а також клієнтські бібліотеки, які ви можете використовувати для створення фронтенду. Вона також включає DSL, який абстрагує багато складнощів, з якими розробники часто зіштовхуються при початку роботи з розробкою Solana та Rust.

Зберігання файлів

Де ми зберігаємо зображення, відео та інші файли в web3? Зберігати що-небудь таке велике on-chain зазвичай надто дорого, тому ми, ймовірно, не хочемо зберігати їх там.

Замість цього ми можемо використовувати один з кількох протоколів зберігання файлів:

  • IPFS - Протокол однорангової файлової системи
    • переваги: це надійно, добре задокументовано з великою екосистемою
    • недоліки: якщо дані не закріплені, вони можуть бути втрачені
  • Arweave - дозволяє вам назавжди зберігати дані, оплачуючи одноразову комісію за транзакцію. Я фанат Arweave і написав про це пост в блозітут.
  • Filecoin - від Protocol Labs, та ж команда, яка створила IPFS, це протокол, призначений для забезпечення системи постійного зберігання даних. Є кілька способів для розробників для створення на Filecoin, включаючи web3.storageщо дуже гарно.
  • Skynet - Я ще не використовував його виробничо, але випробував його, і він, здається, працює добре. API тутвиглядає чудово. У мене є питання, наприклад, як довго дані зберігаються, та міжоперабельність Skynet з іншими протоколами.

Протоколи даних поза ланцюжком

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

Декілька варіантів:

  • Керамічна мережа - децентралізована, відкрита платформа для створення, розміщення та обміну даними. У Ceramic також є чудовий протокол ідентифікації, про який я поговорю пізніше. Найімовірніше, моє улюблене рішення для зберігання даних поза ланцюжком в даний момент.Осьдосить гарний демонстраційний матеріал.
  • ТекстильThreadDB - багатостороння база даних, побудована на IPFS та Libp2p. Якщо я правильно розумію, зараз відбувається велика зміна API. Я спробував це, і воно показує деякі перспективи, але документація та DX потребують покращень.
  • GunDB - децентралізована, одноранкова база даних. Gun існує вже досить давно і декілька досить цікавих застосуваньбули побудовані з його допомогою.

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

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

API (індексація та запити)

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

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

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

Традиційно, цю роботу виконують бази даних у централізованому технічному стеку, але цей індексний рівень був відсутній у стеку web3.

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

Щоб дізнатись більше про Граф, перегляньте документаціютутабо мій посібниктут.

Ідентифікація

Ідентичність - це абсолютно інший парадигма в web3. У web2 аутентифікація майже завжди ґрунтується на особистій інформації користувача. Цю інформацію зазвичай збирають або через форму, або через постачальника OAuth, який просить користувача віддати її в обмін на доступ до додатка.

У web3 ідентичність повністю обертається навколо ідеї гаманців і криптографія з відкритим ключем.

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

Як розробник, вам потрібно розуміти, як отримати доступ до гаманця користувача та взаємодіяти з його адресою різними способами.

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

Наприклад, якщо у них є доступний гаманець Ethereum, ви зможете отримати доступ до window.ethereum. Те ж саме стосується Solana (window.solana), Arweave (window.arweaveWallet) та кількох інших. WalletConnect підходить для мобільного вебу та React Native, оскільки це дозволяє користувачам авторизуватися за допомогою своїх мобільних гаманців безпосередньо з пристрою.

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

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

Якщо ви хочете отримати користувачаENSзаписи тексту, бібліотека ENSJS пропонує гарний API для отримання даних користувача:

const ens = новий ENS({ провайдер, адреса_ens: getEnsAddress(‘1’) })

const content = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDце також щось, що виглядає перспективно, але я ще не спробував це.

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

Клієнт

Що стосується фреймворків JavaScript, ви дійсно можете створювати з чим завгодно, оскільки блокчейн-SDK на стороні клієнта в основному не залежать від фреймворку. При цьому переважна кількість проектів і прикладів побудована на React. Існує також кілька бібліотек, таких як Адаптер гаманця Solanaщо пропонують додаткові утиліти для React, тому я б сказав, що вивчення або ознайомлення з React, ймовірно, буде розумним кроком.

Для клієнтських SDK в Ethereum єweb3.js та ethers.js. Як на мене, Ethers більш доступний і має кращу документацію, хоча web3.js існує довше.

У Solana ви, ймовірно, будете працювати з @solana/web3.jsі / абоЯкір. Я знайшов Anchor бібліотеки клієнтів, які стали для мене вибором № 1 для створення програм Solana, оскільки я все одно використовую фреймворк Anchor, і мені було набагато легше розібратися, ніж@solana/web3.js.

Оракули

Оракули дозволяють розробникам отримувати доступ до читання даних реального світу & зовнішніх систем з в межах смарт-контракту.

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

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

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

Інші протоколи

Radicle - це децентралізований протокол співпраці з кодом, побудований на основі Git. Його можна розглядати як децентралізовану версію GitHub.

Livepeer є децентралізованою мережею відеострімінгу. Вона є дорослою та широко використовується з понад 70,000 відеокартами, які працюють в мережі.

Завершення

Цей пост буде живим документом, який я буду підтримувати, навчаючись, експериментуючи та збираючи відгуки від розробників, які працюють у web3.

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

Disclaimer:

  1. Ця стаття передрукована з [edgeandnode]. Усі авторські права належать оригінальному автору [Nader Dabit]. Якщо є заперечення до цього перевидання, будь ласка, зв'яжіться з Gate Learn команди, і вони оперативно впораються з цим.
  2. Відповідальність за відмову: Погляди та думки, висловлені в цій статті, є виключно тими, що належать авторові і не становлять жодної інвестиційної поради.
  3. Переклади статті на інші мови виконуються командою Gate Learn. Якщо не вказано інше, копіювання, поширення або плагіатування перекладених статей заборонено.
Start Now
Sign up and get a
$100
Voucher!