autorenew
Turnkey 与 Aave V3 合作,在 Base 上简化 DeFi 交易

Turnkey 与 Aave V3 合作,在 Base 上简化 DeFi 交易

如果你关注区块链和 DeFi,应该听说过 Aave —— 这是最顶尖的去中心化借贷平台之一。Aave V3 允许用户出借加密资产以赚取利息,并在任何时候提取,整个过程不需要中间人。现在,得益于 Turnkey 的一次新合作,构建与 Aave 交互的应用或工具变得更加简单。

Turnkey 是一家提供安全且可扩展加密钱包基础设施的公司,最近在推特上发布了一条推文,宣布他们关于使用 Turnkey 钱包处理 Aave 交易的新指南。该指南具体演示了如何在 Base 网络上签署用于批准、存入和提取 USDC 的交易。Base 是由 Coinbase 构建的以太坊 Layer 2 链,以低费用和高速度著称,非常适合 DeFi 活动。

Turnkey x Aave 合作横幅

这对区块链爱好者为何重要

对于 meme 代币领域的开发者和项目来说,安全地管理金库或用户资金至关重要。Turnkey 的做法通过其策略引擎增加了一层安全保护,限制了可以被签名的交易。这意味着你可以设定规则,让你的钱包仅与像 Aave 的 pool 或 USDC 这类受信任的合约交互,从而降低被黑或误操作的风险。对于想在 DeFi 中寻求收益但又不想暴露于不必要风险的 meme 币社区来说,这尤其有用。

指南解析

该指南托管在 Turnkey 的文档网站上(docs.turnkey.com/cookbook/aave),并使用了 Viem 等工具来处理以太坊交互。下面是一个简明的分解:

设置安全策略

首先,你需要设置一个 Turnkey 组织并为签名创建一个非 root 用户。然后,使用 root 用户创建一个策略,将交易限制为只针对 Base 上的 USDC 合约和 Aave 的 pool。通过 API 调用完成 —— 代码片段如下:

javascript
const policyName = "Allow API key user to only sign txs to Aave Pool and USDC";
const effect = "EFFECT_ALLOW";
const consensus = approvers.any(user, user.id == '${userId}');
const condition = eth.tx.to in ['${USDC_ADDRESS}', '${AAVE_POOL}'];

const { policyId } = await turnkeyClient.createPolicy({
policyName,
condition,
consensus,
effect,
notes: "",
});

这样可以确保你的签名者不会越权把资金发送到其他地方。

创建签名者

接下来,你创建一个与 Viem 兼容的 Turnkey 签名者:

javascript
const turnkeyAccount = await createAccount({
client: turnkeyClient.apiClient(),
organizationId: process.env.TURNKEY_ORGANIZATION_ID!,
signWith: process.env.SIGN_WITH!,
});

然后为 Base 设置 public 和 wallet 客户端。

批准 USDC 支出

在存入之前,先批准 Aave pool 花费你的 USDC:

javascript
const { request: approveReq } = await publicClient.simulateContract({
address: USDC_ADDRESS,
abi: erc20Abi,
functionName: "approve",
args: [AAVE_POOL, parseUnits("10", 6)],
account: walletClient.account,
});

const approveHash = await walletClient.writeContract(approveReq);

等待回执后即可。

存入 USDC 以赚取利息

将你的 USDC 存入以开始赚取利息:

javascript
const poolAbi = parseAbi([
"function supply(address asset,uint256 amount,address onBehalfOf,uint16 referralCode)",
]);

const { request: supplyReq } = await publicClient.simulateContract({
address: AAVE_POOL,
abi: poolAbi,
functionName: "supply",
args: [USDC_ADDRESS, parseUnits("0.5", 6), walletClient.account.address, 0],
account: walletClient.account,
});

// Add gas buffer
const gas = await publicClient.estimateContractGas({...});
const gasWithBuffer = (gas * 130n) / 100n;

const supplyHash = await walletClient.writeContract({
...supplyReq,
gas: gasWithBuffer,
});

这会把你的 USDC 存入,并给你 aUSDC 代币作为回报,aUSDC 会产生利息。

提取资金

当你想取回资金时:

使用类似的设置,但调用 "withdraw" 函数:

javascript
const poolAbi = parseAbi([
"function withdraw(address asset,uint256 amount,address to)",
]);

const { request: withdrawReq } = await publicClient.simulateContract({
address: AAVE_POOL,
abi: poolAbi,
functionName: "withdraw",
args: [USDC_ADDRESS, parseUnits("0.1", 6), walletClient.account.address],
account: walletClient.account,
});

// Gas buffer again
const withdrawHash = await walletClient.writeContract({
...withdrawReq,
gas: gasWithBuffer,
});

就这样 —— 你的 USDC 会回到钱包,加上任何已产生的利息。

总结

Turnkey 的这次集成让 DeFi 在像 Base 这样高效的链上变得更易接近且更安全。无论你是在构建 meme 代币项目,还是仅在试验区块链技术,都可以查看完整指南以获取更多细节。这是把复杂加密操作做到像发推文一样简单的一步。敬请关注更多关于此类工具如何塑造 meme 币及更广泛领域未来的更新!

你可能感兴趣