Абстракция счета с использованием Biconomy

Обзор

Biconomy Modular SDK - это комплексный набор инструментов для разработки программного обеспечения, созданный специально для децентрализованных приложений (dApps). Построенный на основе ERC4337, он предлагает широкий спектр решений, начиная от ввода пользователя в систему и заканчивая его постоянным вовлечением, улучшая общий пользовательский опыт в вашем dApp. Благодаря использованию модульного подхода SDK обеспечивает расширенную кастомизацию, безопасность и функциональность. Этот SDK работает без ограничений, обеспечивая универсальное решение, сочетающее в себе простоту и функциональность в сфере децентрализованных приложений.

Что стало возможным?

Biconomy SDK предоставляет блокчейн-агностический, похожий на web2 опыт для ваших dApp, не требуя при этом никаких затрат. Вот что вы можете сделать уже сегодня:

  • Простой ввод пользователей в систему: Упрощает процесс регистрации новых пользователей благодаря социальной авторизации, созданию учетной записи и функции восстановления, что позволяет легко интегрировать пользователей web2 в ваше dApp.

  • Быстрый выход на рынок: Позволяет пользователям легко и безопасно покупать и продавать криптовалюты в вашем dApp, облегчая переход между привычными и основанными на блокчейне активами.

  • Безгазовые транзакции: Спонсирует газ для пользовательских операций, делая их такими же простыми, как web2-транзакции, улучшая общий пользовательский опыт.

  • Оплата газа в токенах ERC20: Позволяет пользователям использовать любой актив ERC20 в своем кошельке для оплаты газа, обеспечивая гибкость и удобство.

  • Индивидуальное пакетирование транзакций: Предоставление разработчикам возможности создавать методы пакетной обработки транзакций, позволяющие пользователям выполнять несколько действий в рамках одной транзакции, даже в рамках нескольких чейнов. Например, пользователь может одобрить и пополнить счет в рамках одной транзакции, не изменяя ничего в смарт-контрактах dApp.

Как это работает?

В Biconomy SDK кошелек смарт-контрактов (SCW) является основой системы и создается для каждого нового пользователя, присоединившегося к dApp. Адрес SCW генерируется мгновенно при входе пользователя в систему, не требуя развертывания на чейне. Фактический смарт-контракт развертывается вместе с первой транзакцией пользователя.

Кошелек смарт-контракта, также известный как смарт-аккаунт, связан с внешним аккаунтом пользователя (EOA), таким как традиционный аккаунт MetaMask или аккаунт, созданный с помощью социальной авторизации. Он обеспечивает повышенную безопасность по сравнению с EOA, позволяя пользователям безопасно вводить и выводить средства в любое время.

Примечательной особенностью является то, что адрес SCW остается неизменным на разных чейнах блокчейна, что позволяет пользователям не беспокоиться о разных чейнах внутри dApp. Благодаря использованию кошельков смарт-контрактов для объединения транзакций с помощью SDK Biconomy, dApp могут предложить своим пользователям простые и эффективные взаимодействия.

Принцип работы кошельков смарт-контрактов

  • Biconomy Modular SDK представляет кошельки смарт-контрактов (SCW), которые служат фундаментальным компонентом системы. Каждый кошелек SC Wallet связан с внешним аккаунтом (Externally Owned Account, EOA), который является его владельцем.

  • Кошелек SC Wallet имеет свойство расширяться за счет поддержки различных модулей, таких как MultiSig, Social Recovery Module, Recurring Transaction Module, Transaction Automation, Session Key Module и др. Эти модули расширяют функциональность кошелька, не требуя его обновления, что позволяет разработчикам адаптировать работу пользователей в соответствии с конкретными требованиями.

  • Транзакции, осуществляемые через SC Wallet, инициируются EOA с использованием криптографической подписи. Данные о транзакции вместе с подписью передаются ретранслятором, что обеспечивает безопасную и эффективную обработку транзакций.

  • Стоит заметить, что адрес SC-кошелька пользователя является контрфактическим, то есть он может быть сгенерирован без развертывания кода смарт-контракта на чейне благодаря опкоду CREATE2. Эта особенность позволяет адресу SC Wallet оставаться неизменным на различных чейнах EVM, обеспечивая удобство использования dApp, не зависящего от чейна.

  • Все взаимодействия внутри dApp, как на одной, так и на нескольких чейнах, осуществляются через SC Wallet. Такой унифицированный подход упрощает взаимодействие пользователей и способствует эффективному кросс-чейн взаимодействию.

  • Кошелек SC Wallet выполняет функцию заправки для пользователей, позволяя им использовать любой токен, находящийся в кошельке (принятый Paymaster), для оплаты газа в ходе одной и той же транзакции. Эта возможность позволяет dApps осуществлять пакетную обработку транзакций, давая пользователям возможность выполнять несколько действий в рамках одной транзакции, упрощая такие процессы, как подтверждение и пополнение счета.

Быстрый старт с нативной передачей данных смарт-счета

Клонируйте репозиторий быстрого запуска Biconomy

# git clone используя SSH
git clone git@github.com:bcnmy/quickstart.git
# git clone используя https
git clone https://github.com/bcnmy/quickstart.git

Установите все компоненты

yarn install
yarn dev

Сначала создадим файл .env в корне нашего проекта. Для этого потребуется приватный ключ любого внешнего аккаунта (Externally Owned Account, EOA), который вы хотели бы использовать в качестве владельца создаваемого смарт-счета. Такой ключ можно получить в таких кошельках, как MetaMask, TrustWallet, Coinbase Wallet и т.д. Во всех этих кошельках есть руководства по экспорту приватного ключа.

PRIVATE_KEY = "введите какой-нибудь приватный ключ"

Создание роллапа

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

Получение информации о чейне роллапа

Перейдите к панели запуска роллапов и выберите "Deployments". Найдите нужный вам роллап.

Для выполнения следующих действий вам потребуется следующая информация

  1. Адрес контракта точки входа EIP4337, который будет предоставлен вам командой AltLayer

  2. URL-адрес Bundler, который можно получить из панели управления Biconomy

  3. Конечная точка Rollup RPC

  4. Идентификатор чейна Rollup

Код ссылки

Далее мы обратимся к примеру официального кода Biconomy для начала работы.

Для приведенного ниже фрагмента кода необходимо заполнить следующие поля

  • Rollup RPC endpoint: Строка 8

  • URL-адрес Bundler: Строка 11

  • Идентификатор чейна: Строки 12 и 17

  • Адрес контракта точки входа EIP4337: Строка 13

import { config } from "dotenv"
import { IBundler, Bundler } from '@biconomy/bundler'
import { ChainId } from "@biconomy/core-types";
import { BiconomySmartAccount, BiconomySmartAccountConfig, DEFAULT_ENTRYPOINT_ADDRESS } from "@biconomy/account"
import { Wallet, providers, ethers } from 'ethers'

config()
const provider = new providers.JsonRpcProvider("<Rollup RPC endpoint>")
const wallet = new Wallet(process.env.PRIVATE_KEY || "", provider);
const bundler: IBundler = new Bundler({
    bundlerUrl: '<Bundler URL>',
    chainId: <Rollup chain ID>,
    entryPointAddress: <EIP4337 entry point contract address>,
  })
const biconomySmartAccountConfig: BiconomySmartAccountConfig = {
  signer: wallet,
  chainId: <Rollup chain ID>,
  bundler: bundler
}
async function createAccount() {
  const biconomyAccount = new BiconomySmartAccount(biconomySmartAccountConfig)
  const biconomySmartAccount =  await biconomyAccount.init()
  console.log("owner: ", biconomySmartAccount.owner)
  console.log("address: ", await biconomySmartAccount.getSmartAccountAddress())
  return biconomyAccount
}

// userOp sample code
// Send 0.1 native token to 0x322Af0da66D00be980C7aa006377FCaaEee3BDFD
async function createTransaction() {
  console.log("creating account")
  const smartAccount = await createAccount();
  const transaction = {
    to: '0x322Af0da66D00be980C7aa006377FCaaEee3BDFD',
    data: '0x',
    value: ethers.utils.parseEther('0.1'),
  }

  const userOp = await smartAccount.buildUserOp([transaction])
  userOp.paymasterAndData = "0x"

  const userOpResponse = await smartAccount.sendUserOp(userOp)

  const transactionDetail = await userOpResponse.wait()

  console.log("transaction detail below")
  console.log(transactionDetail)
}

createTransaction()

Внедрение Biconomy в ваш роллап

Вы можете заказать звонок с командой Biconomy, чтобы обсудить дальнейшие шаги по поддержке Biconomy в вашем роллапе.

Если вам нужны дополнительные ресурсы для разработчиков, вы можете ознакомиться с документацией по Biconomy.

Last updated