Что такое WebLN? Лето биткоина 2022

Меня выбрали для участия в программе Summer of bitcoin в рамках Ride the lighting org. Я буду работать над внедрением функции WebLN в расширение Quick-pay от RTL. Это будет включать в себя создание новых файлов для функций web ln. Это позволит расширению Quickpay Browser обеспечить лучший пользовательский опыт для людей. Включение поддержки WebLN в расширение Quickpay поможет улучшить способность RTL поддерживать другие приложения и расширения браузера, которые могут полагаться на этот стандарт.

Что такое WebLN?

WebLN — это библиотека и набор спецификаций для приложений lightning и клиентских провайдеров для обеспечения безопасной связи между приложениями и узлами lightning пользователей. Она предоставляет программный интерфейс с правами доступа, позволяющий приложениям просить пользователей отправлять платежи, генерировать счета для получения платежей и многое другое. В этой документации рассматривается как использование WebLN в приложениях, управляемых Lightning, так и реализация провайдера.

Lightning Network — это просто другое программное обеспечение, и мы хотим интегрировать его в веб, добавив Lightning в веб, мы пройдем долгий путь. Именно такая идея лежит в основе WebLN, который представляет собой простой инструмент JavaScript для создания расширений браузера с поддержкой Lightning, использующих makePayment и sendInvoice (опять же, две основные функции для любого вида денег: отправка и получение).

WebLN предлагает несколько преимуществ. Во-первых, JavaScript почти универсален и ему почти тридцать лет. Во-вторых, WebLN обеспечивает лучший интерфейс для пользователей, начиная с того, что вам не нужно использовать второе устройство. Он ощущается как родной, а не как обходной путь. Вы также имеете доступ ко всем событиям браузера, поэтому нажатие клавиши, щелчок мыши, положение прокрутки и т.д. — все это может вызвать платеж.

Установка

Первый способ: установка с помощью менеджера пакетов (предпочтительно)
Установите библиотеку webln с помощью выбранного вами менеджера пакетов:

npm: npm install --save webln
yarn: yarn add webln.
И импортируйте ее в свой проект везде, где она вам нужна:

import { requestProvider } from 'webln';
Войти в полноэкранный режим Выйти из полноэкранного режима

Второй способ: включение скрипта (альтернатива)

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

<script
  src="https://unpkg.com/webln@0.2.0/dist/webln.min.js"
  integrity="sha384-mTReBqbhPO7ljQeIoFaD1NYS2KiYMwFJhUNpdwLj+VIuhhjvHQlZ1XpwzAvd93nQ"
  crossorigin="anonymous"
></script>
Войти в полноэкранный режим Выход из полноэкранного режима

Теперь первое, что нам нужно сделать, это включить провайдера WebLN в веб-браузере, чтобы каждый компонент нашего сайта мог использовать все возможности WebLN. Поэтому на следующем этапе мы попытаемся реализовать провайдер WebLN, с помощью которого мы будем использовать все возможности WebLN.

Большинство методов WebLN будут каким-то образом запрашивать пользователя, часто для осуществления платежей или предоставления информации, которая, по их мнению, является конфиденциальной. Прежде чем запускать requestProvider или другие методы, убедитесь, что пользователь знает, что делает ваше приложение, и почему он должен разрешить выполнение ваших вызовов. Всплывающие окна сразу после загрузки страницы заставят пользователей отклонить WebLN запросы или, что еще хуже, уйти с вашей страницы.

requestProvider
Чтобы начать взаимодействие с узлом Lightning пользователя, вам сначала нужно запросить у него WebLNProvider. WebLNProvider — это класс, который реализуют различные клиенты и присоединяют к вашей веб-сессии. Вызов requestProvider получит для вас провайдера и запросит у клиента разрешение на его использование. Получив провайдера, вы можете вызывать все остальные методы API.

Функция WebLN getInfo
Запрашивает у пользователя некоторую информацию о его узле. Запрос может быть отклонен пользователем в зависимости от реализации провайдера.

function getInfo(): Promise<GetInfoResponse>;
Response

interface GetInfoResponse = {
  node: {
    alias: string;
    pubkey: string;
    color?: string;
  };
}
webln.makeInvoice
Вход в полноэкранный режим Выйти из полноэкранного режима

Используется для создания приложением счета-фактуры для пользователя. В результате будет получен счет-фактура BOLT-11. Существует множество способов запросить счет-фактуру.

Указывая явную сумму, провайдер пользователя должен принудительно заставить пользователя создать счет-фактуру с определенной суммой
Когда явная сумма не задана, пользователь может вернуть счет-фактуру, в котором сумма не указана, позволяя производителю платежа отправить любую сумму
Указав minimumAmount и/или maximumAmount, провайдер пользователя должен обеспечить, чтобы пользователь генерировал счет-фактуру с полем суммы, ограниченным этой суммой.
Суммы выражаются в сатоши. Для больших сумм рекомендуется использовать библиотеку больших чисел, такую какbn.js, поскольку Javascript поддерживает только 32-битные целые числа.

Параметры

function makeInvoice(args: RequestInvoiceArgs): Promise<RequestInvoiceResponse>;

interface RequestInvoiceArgs {
  amount?: string | number;
  defaultAmount?: string | number;
  minimumAmount?: string | number;
  maximumAmount?: string | number;
  defaultMemo?: string;
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Ответ

interface RequestInvoiceResponse {
  paymentRequest: string;
}
Ввести полноэкранный режим Выйти из полноэкранного режима

Что делать, если возникла ошибка?

Для обработки этого тестового случая как приложения, так и провайдеры могут использовать предопределенные ошибки WebLN. Они находятся в webln/lib/errors и должны использоваться при возникновении и обработке ошибок, чтобы лучше информировать пользователя о том, что происходит:

Ошибка WebLN
И провайдер должен выбрасывать правильную ошибку, когда это возможно:

Провайдер ошибок WebLN
Ресурсы
https://www.npmjs.com/package/webln
https://github.com/joule-labs/webln-docs
https://webln.dev/#/api/make-invoice
https://medium.com/@wbobeirne/making-a-lightning-web-app-part-4-c0997f4353b8
https://github.com/joule-labs/webln/issues/13

Оцените статью
devanswers.ru
Добавить комментарий