블록체인과 DeFi에 관심이 있다면 Aave를 한 번쯤 들어봤을 것입니다. Aave V3는 사용자가 중개자 없이 암호화 자산을 대출해 이자를 얻고 필요할 때 언제든지 회수할 수 있게 해줍니다. 이제 Turnkey가 주목한 새로운 협업 덕분에 Aave와 상호작용하는 앱이나 도구를 만드는 일이 훨씬 쉬워졌습니다.
안전하고 확장 가능한 크립토 지갑 인프라 제공업체인 Turnkey는 최근 트윗을 통해 Turnkey 지갑으로 Aave 트랜잭션을 처리하는 방법을 설명하는 새 가이드를 발표했습니다. 특히 Base 네트워크에서 USDC를 승인(approve), 공급(supply), 인출(withdraw)하기 위한 트랜잭션 서명 과정을 안내합니다. Base는 Coinbase가 만든 Ethereum Layer 2 체인으로 낮은 수수료와 빠른 속도로 DeFi 활동에 적합합니다.
블록체인 관심자들에게 왜 중요한가
밈 토큰 공간의 개발자나 프로젝트에게는 재무 관리나 사용자 자금을 안전하게 관리하는 것이 매우 중요합니다. Turnkey의 접근 방식은 policy engine을 통해 서명 가능한 트랜잭션을 제한함으로써 보안 레이어를 추가합니다. 즉, 지갑이 Aave의 풀이나 USDC 같은 신뢰할 수 있는 컨트랙트와만 상호작용하도록 규칙을 설정할 수 있어 해킹이나 실수로 인한 위험을 줄여줍니다. 이는 불필요한 위험에 노출되지 않으면서 수익을 추구하려는 밈 코인 커뮤니티에 특히 유용합니다.
가이드 요약
가이드는 Turnkey의 문서 사이트(docs.turnkey.com/cookbook/aave)에 호스팅되어 있으며 Ethereum 상호작용을 처리하기 위해 Viem 같은 도구를 사용합니다. 주요 내용을 간단히 정리하면 다음과 같습니다.
보안 정책 설정
먼저 Turnkey 조직을 설정하고 서명을 위한 non-root 사용자를 만듭니다. 그런 다음 root 사용자를 통해 Base의 USDC 컨트랙트와 Aave의 풀로만 트랜잭션을 제한하는 정책을 생성합니다. 이는 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 signer를 생성합니다:
javascript
const turnkeyAccount = await createAccount({
client: turnkeyClient.apiClient(),
organizationId: process.env.TURNKEY_ORGANIZATION_ID!,
signWith: process.env.SIGN_WITH!,
});
그런 다음 Base용 public 및 wallet 클라이언트를 설정합니다.
USDC 사용 승인(approve)
공급하기 전에 Aave 풀에 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);
영수증(receipt)을 기다리면 준비 완료입니다.
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 토큰을 받습니다.
자금 인출
자금을 회수하고 싶을 때는:
비슷한 설정을 사용하지만 "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의 이번 통합은 특히 Base와 같은 효율적인 체인에서 DeFi를 더 접근하기 쉽고 안전하게 만듭니다. 밈 토큰 프로젝트를 개발 중이거나 블록체인 기술을 실험해보고 있다면 전체 가이드를 확인해 보세요. 복잡한 암호화 작업을 트윗을 보내는 것만큼 쉽게 만드는 한 걸음입니다. 이런 도구들이 밈 코인과 그 밖의 영역에 어떤 변화를 가져올지 계속 지켜보세요!