Aave 是以太坊上顶级的去中心化借贷协议,并已实现多链部署。作为一个去中心化、非托管的流动性协议,用户可以作为存款人或借款人参与其中。存款人向市场提供流动性以获得被动收入,而借款人则可以以超额抵押(永久)或低抵押(单区块流动性)的方式获取资金。
Aave 已升级至 V3 版本,在保留 aToken、即时流动性、稳定利率借贷和信用委托等核心功能的基础上,新增了跨链流动性通道 Portal、高效模式 eMode、隔离模式等特性,进一步提升了协议的灵活性与安全性。
如何获取 Aave V3 链上数据
通过 Bitquery 提供的多种 API,我们可以高效获取 Aave V3 的各类链上数据,包括用户行为、资产供应与借贷量、利率变化及闪电贷交易等。以下将介绍几种常见的数据查询方法。
用户每日活动统计
用户在与 Aave V3 交互时,主要会调用“存款”、“借款”、“取款”和“还款”等功能。通过以下查询,可以按事件类型和日期统计每日独立地址的活动次数:
query ($network: EthereumNetwork!, $address: String!, $limit: Int, $offset: Int, $from: ISO8601DateTime, $till: ISO8601DateTime) {
ethereum(network: $network) {
smartContractEvents(
options: {desc: "count", limit: $limit, offset: $offset}
date: {since: $from, till: $till}
smartContractAddress: {is: $address}
smartContractEvent: {in: ["Supply", "Borrow", "Withdraw", "Repay"]}
) {
smartContractEvent { name }
block { timestamp { time(format: "%Y-%m-%d") } }
count(uniq: callers)
}
}
}资产借贷量分析
若要获取特定资产(如 USDC)在以太坊上的借贷量,需在转账记录中筛选出与 Aave V3 合约相关的交易,并按日期汇总。以下查询以 USDC 为例:
query ($network: EthereumNetwork!, $token: String!, $dateFormat: String!, $from: ISO8601DateTime, $till: ISO8601DateTime) {
ethereum(network: $network) {
transfers(
currency: {is: $token}
height: {gt: 0}
amount: {gt: 0}
date: {since: $from, till: $till}
any: {sender: {is: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c"}}
) {
date { date(format: $dateFormat) }
count: countBigInt
amount
}
}
}当前与历史利率查询
存款年化收益率(Supply APY)和借款利率是用户关注的重点。通过监听 Aave V3 合约中“ReserveDataUpdated”事件,并结合特定资产(如 DAI)的合约地址,可以获取其历史利率数据:
{
EVM(dataset: combined, network: eth) {
Events(
orderBy: {descending: Block_Number}
limit: {count: 10}
where: {
Transaction: {To: {is: "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2"}},
Log: {Signature: {Name: {is: "ReserveDataUpdated"}}},
Arguments: {includes: {Value: {Address: {is: "0x6B175474E89094C44Da98b954EedeAC495271d0F"}}}}
}
) {
Log { Signature { Name } }
Block { Date Time }
Arguments { Name Value { … on EVM_ABI_Integer_Value_Arg { integer } … on EVM_ABI_BigInt_Value_Arg { bigInteger } … on EVM_ABI_Address_Value_Arg { address } } }
}
}
}独立用户数统计
每日独立用户数反映了协议的活跃程度。通过统计每日调用 Aave V3 合约的独立地址数,可以获得这一指标:
query ($network: EthereumNetwork!, $dateFormat: String!, $address: String!, $from: ISO8601DateTime, $till: ISO8601DateTime) {
ethereum(network: $network) {
smartContractCalls(
date: {since: $from, till: $till}
any: {smartContractAddress: {is: $address}}
) {
count: countBigInt(uniq: callers)
date { date(format: $dateFormat) }
}
}
}闪电贷交易分析
闪电贷是 DeFi 中常用的套利工具,但其交易费用(尤其是优先费)对开发者尤为重要。以下查询可获取闪电贷交易的矿工奖励和优先费数据:
{
EVM(dataset: combined, network: eth) {
Calls(
limit: {count: 10000000}
where: {Call: {To: {is: "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2"}, Signature: {Name: {is: "flashLoanSimple"}}}, Block: {Date: {after: "2023-08-01", before: "2023-10-25"}}}
orderBy: {descending: Block_Number}
) {
Call { Signature { Name } }
Transaction { Hash }
Fee { SenderFee Savings PriorityFeePerGas MinerReward EffectiveGasPrice Burnt }
Receipt { GasUsed }
}
}
}常见问题
Aave V3 的主要新特性有哪些?
Aave V3 引入了跨链流动性通道 Portal、高效模式 eMode、隔离模式等。Portal 允许用户在不同链之间转移流动性,eMode 提高了相同类别资产间的借贷效率,隔离模式则限制了某些高风险资产的使用场景以保障协议安全。
如何获取实时的 Aave 利率数据?
可以通过监听 Aave V3 合约的“ReserveDataUpdated”事件获取实时利率数据。使用 Bitquery 的 GraphQL API,编写查询语句筛选特定资产的利率更新事件,即可获得最新或历史的存款和借款利率。
闪电贷交易中如何控制 Gas 费用?
闪电贷交易对区块包含的及时性要求较高,因此需要设置适当的优先费(Priority Fee)。开发者可以通过分析历史闪电贷交易的矿工奖励和燃气消耗数据,估算出合理的费用范围,从而提高交易成功率。
Bitquery 支持哪些区块链的数据查询?
Bitquery 目前支持超过 40 条区块链的数据查询,包括以太坊、BNB Chain、Solana 等主流公链,并提供统一的 GraphQL 接口,方便开发者跨链检索和分析数据。
是否可以不写代码分析 Aave 数据?
可以。Bitquery 提供了图形化的数据探索工具(Explorer),用户无需编写代码即可查询和可视化 Aave 等协议的链上数据,适合快速进行基础分析和验证想法。
如何跟踪特定资产的供应和借贷变化?
通过筛选特定资产的转账事件和 Mint/Burn 事件,可以跟踪其每日供应和借贷量。结合时间聚合和合约地址过滤,即可得到该资产的资金流动情况。