Gelato账户抽象Gasless钱包SDK

  • gelato
  • 发布于 2023-02-25 16:58
  • 阅读 25

本文介绍了Gelato的Gasless Wallet SDK,它通过智能合约钱包实现账户抽象,简化了Web3用户的 onboarding 流程。

如何使用 Gelato 的 Gasless Wallet SDK

使用 Gelato 的 Gasless Wallet,帮助下一个十亿用户进入 web3!

大规模采用的主要障碍是当前的 onboarding 体验和 UX。Web2 仍然是可用性的标准,因为它甚至能够让非数字用户上手。如果我们依赖用户创建区块链钱包,并且永远不会丢失他们的私钥,我们将无法让更多的用户进入 web3。整合用户已经习惯的无缝 onboarding 体验(如社交登录)将使每个人更容易使用 web3 应用程序。

账户抽象是 web3 领域中一个越来越受关注的话题。账户抽象是一个更广泛的话题,有不同的解释,但围绕账户抽象的主要共识是,用户通过智能合约钱包(例如 Gnosis Safe)与区块链交互,该钱包可以被编程以包含用户友好的功能,如社交登录、gasless 交易等等。查看我们的 tweet thread 以了解更多关于账户抽象的信息,以及它如何通过为主流用户提供无缝体验来加速 web3 技术的采用。

目前还不清楚智能合约钱包是否会取代外部拥有账户(EOA)成为最流行的钱包,但像 ERC-4337 这样的改进提案正在朝着这个方向发展。

Gelato Gasless Wallet

Gelato Gasless Wallet 为开发者提供了开箱即用的创建智能合约钱包的能力,使得在没有任何 web3 知识的情况下,更容易让用户上手。

Gelato Gasless Wallet 有两个包:

  1. Gasless Wallet SDK
  2. Gasless Onboarding SDK

让我们深入了解一下它们!

Gasless Wallet SDK

一种账户抽象实现,它创建并使用 EOA 拥有的 Gnosis Safe Proxies,并使用 Gelato 的 1Balance 服务转发交易,允许项目赞助执行的 gas。

快速开始

首先我们需要安装 SDK

yarn add @gelatonetwork/gasless-wallet

然后,我们将导入所需的类

import {
  GaslessWallet,
  GaslessWalletConfig,
} from "@gelatonetwork/gasless-wallet";
import { ethers } from "ethers";

通过以下几行代码,我们将能够创建一个智能合约钱包。

const eoaProvider:
    | ethers.providers.ExternalProvider
    | ethers.providers.JsonRpcFetchFunc = ...

const gaslessWalletConfig: GaslessWalletConfig = {
    apiKey: "1BALANCE_API_KEY",
};

“1BALANCE_API_KEY” 指的是 1Balance sponsorKey,用于赞助用户的 gas

const gaslessWallet = new GaslessWallet(eoaProvider, gaslessWalletConfig);
await gaslessWallet.init();

值得注意的是,Gasless Wallet SDK 在底层使用 getCreate2Address 方法,以确定性地提前知道智能合约钱包的地址。这意味着智能合约钱包尚未部署,只有当我们发送第一个交易时才会部署。我们可以使用以下方法检查它是否已部署:

const isGaslessWalletAlreadyDeployed = await gaslessWallet.isDeployed();

这里我们可以看到一个如何向 minting nft 合约发送交易的例子

const {data} = await mintingContract.mint()
const { taskId } = await gaslessWallet.sponsorTransaction(
  mintingContract.address,
  data
);

因此,我们收到转发交易的 taskId

Gasless Wallet SDK 还公开了 “populaTransaction()” 方法,该方法能够将交易的准备工作与转发分离。

此时一个合理的问题是:当我可以直接从我的 EOA 发送交易时,我为什么需要一个智能合约钱包

如果你正在进行正常的交易,你不需要它,但是 Gasless Wallet SDK 的主要好处当转发你的交易时,交易的 msg.sender 将是你的智能合约钱包

Gasless Onboarding SDK

一个 SDK,用于直接导入 web3Auth 功能,如社交登录和无密码 onboarding,以及 gasless 钱包集成。

快速开始

首先我们需要安装

yarn add @gelatonetwork/gasless-onboarding

导入所需的类

import {
  GaslessOnboarding,
  GaslessWalletConfig,
  GaslessWalletInterface,
  LoginConfig,
} from "@gelatonetwork/gasless-onboarding";

进行初始化

const gaslessWalletConfig: GaslessWalletConfig = { apiKey };
const loginConfig: LoginConfig = {
  chain: {
    id: CHAIN_ID,
    rpcUrl: RPC_URL,
  }
     openLogin: {
       redirectUrl: `REDIRECT_URL`,
     },

};
const gaslessOnboarding = new GaslessOnboarding(
  loginConfig,
  gaslessWalletConfig
);
await gaslessOnboarding.init();

让我们分解这段代码,以了解发生了什么:

我们使用 apiKey (Gelato 1Balance Sponsors key) 创建 GaslessWalletConfig,它将赞助转发交易的 gas

 const gaslessWalletConfig: GaslessWalletConfig = { apiKey };

我们使用 ChainId、RPC 和 redirectUrl 创建 loginConfig,最后一个在使用社交登录时是必需的,以便在登录后重定向到你的应用程序

const loginConfig: LoginConfig = {
  chain: {
    id: CHAIN_ID,
    rpcUrl: RPC_URL,
  }
     openLogin: {
       redirectUrl: `REDIRECT_URL`,
     },
};

我们创建一个 GaslessOnbarding 的实例并初始化它。

const gaslessOnboarding = new GaslessOnboarding(
  loginConfig,
  gaslessWalletConfig
);
await gaslessOnboarding.init();

登录 & 退出

const web3AuthProvider = await gaslessOnboarding.login();
await gaslessOnboarding.logout();

当我们通过 Web3Auth 登录时,我们将获得 web3AuthProvider,这将允许我们创建一个经典的 Web3Provider,例如使用 ethers.js。

const provider = new providers.Web3Provider(web3authProvider);

用户信息:

如果我们选择使用社交登录登录,我们可以检索由社交登录凭证提供的用户数据,如电子邮件、姓名或 profileImage。

await gaslessOnboarding.getUserInfo();

Gasless Wallet

使用 Gasless Onboarding SDK,我们执行两个步骤;第一步是在底层使用 Web3Auth 通过社交登录/电子邮件或钱包登录;第二步,一旦我们登录,我们创建一个 gasless 钱包,就像我们使用 Gasless Wallet SDK 所做的那样。为了检索智能合约钱包,我们将:

const gaslessWallet: GaslessWalletInterface = gaslessOnboarding.getGaslessWallet();

有了这个 gaslessWallet 实例,我们可以使用与之前相同的方法。

社交登录

这里我们可以看到一个简短的描述,说明当使用社交媒体登录时,底层发生了什么:

  • 如果用户是第一次登录,Web3Auth 将创建一个 EOA 并将其分配给该用户。对于进一步的登录,将使用相同的 EOA。
  • 与 EOA 关联的 Safe 智能合约钱包已准备好在执行第一个交易时部署
  • 当发送交易时,智能合约钱包将被部署,并且交易将使用 1Balance sponsorKey 转发以资助 gas。交易的 msg.sender 将是智能合约钱包地址

使用此流程,除了初始社交登录之外,客户不需要签署任何内容。无需启动 provider,也无需连接钱包,也无需拥有浏览器钱包扩展。

Gelato 正在为下一个十亿用户进入 web3 铺平道路!

关于 Gelato

Gelato 是一个 Web3 云平台,使开发人员能够创建自动化、Gasless 和链下感知的 Layer 2 链和智能合约。400 多个 web3 项目多年来依赖 Gelato 来促进 DeFi、NFT 和游戏中的数百万笔交易。

  • Gelato RaaS: 一键部署你自己的定制 ZK 或 OP L2 链,内置原生账户抽象和所有 Gelato 中间件。

  • Web3 Functions: 通过运行去中心化的云函数,将你的智能合约连接到链下数据和计算。

  • Automate: 以可靠、对开发者友好和去中心化的方式自动执行交易,从而自动化你的智能合约。

  • Relay: 通过一个简单易用的 API,让你的用户可以访问可靠、强大和可扩展的 gasless 交易。

  • Account Abstraction SDK: Gelato 与 Safe 合作,构建了一个完全成熟的账户抽象 SDK,结合了 Gelato 业界最佳的 gasless 交易能力和业界最安全的智能合约钱包。

订阅我们的时事通讯并打开你的 Twitter 通知,以获取关于 Gelato 生态系统的最新更新! 如果你有兴趣成为 Gelato 团队的一员并构建互联网的未来,请浏览空缺职位并在此处申请 here

  • 原文链接: gelato.cloud/blog/how-to...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
gelato
gelato
The Web3 Developer Cloud. Launch your own chain via our #1 Rollup-As-A-Service platform.