本文介绍了Gelato的Gasless Wallet SDK,它通过智能合约钱包实现账户抽象,简化了Web3用户的 onboarding 流程。
使用 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 有两个包:
让我们深入了解一下它们!
一种账户抽象实现,它创建并使用 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 将是你的智能合约钱包。
一个 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 Onboarding SDK,我们执行两个步骤;第一步是在底层使用 Web3Auth 通过社交登录/电子邮件或钱包登录;第二步,一旦我们登录,我们创建一个 gasless 钱包,就像我们使用 Gasless Wallet SDK 所做的那样。为了检索智能合约钱包,我们将:
const gaslessWallet: GaslessWalletInterface = gaslessOnboarding.getGaslessWallet();
有了这个 gaslessWallet 实例,我们可以使用与之前相同的方法。
这里我们可以看到一个简短的描述,说明当使用社交媒体登录时,底层发生了什么:
使用此流程,除了初始社交登录之外,客户不需要签署任何内容。无需启动 provider,也无需连接钱包,也无需拥有浏览器钱包扩展。
Gelato 正在为下一个十亿用户进入 web3 铺平道路!
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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!