Aave V3-based lending for Giwa

Lend with clarity.
Borrow with confidence.

Giwalend is a lending market built from Aave V3. Supply assets to earn interest, or borrow assets using your supply as collateral. Giwalend uses Pyth for prices on the Giwa network.

GIWA / V3Pyth-secured liquiditySupply · Borrow · Build
!
Testnet documentation

Addresses and parameters describe the current Giwa Testnet snapshot. Verify the on-chain state before interacting. This is not financial advice.

Design principles

Use a proven model

Giwalend follows the Aave V3 model instead of creating a new lending system.

Keep it focused

The first market focuses on supplying, borrowing, risk controls, and clear monitoring.

Start with the essentials

The market supports supply, variable-rate borrowing, flash loans, E-Mode, caps, and liquidations.

Intentionally out of scope for the initial market

Incentive emissions, a native governance token, a native stablecoin, Portal / Bridge flows, and Oracle Sentinel are not active components of the initial Giwa deployment.

01Architecture

Users interact with the Pool. Each reserve holds one asset, such as WETH or USDC. When you supply an asset, you receive an interest-bearing token. When you borrow, a debt token records what you owe. Giwalend starts with Aave V3's standard L2Pool.

PoolAddressesProvider keeps the addresses of the active Pool, oracle, and other services. This lets the system upgrade selected parts without changing the address users call.

사용자는 Pool과 상호작용합니다. 각 reserve는 WETH나 USDC 같은 하나의 자산을 보관합니다. 자산을 공급하면 이자가 붙는 토큰을 받고, 빌리면 빌린 금액을 기록하는 debt token이 생깁니다. Giwalend는 Aave V3의 표준 L2Pool로 시작합니다.

PoolAddressesProvider는 현재 사용 중인 Pool·오라클·기타 서비스의 주소를 관리합니다. 덕분에 사용자가 호출하는 주소를 바꾸지 않고 일부 구현을 업그레이드할 수 있습니다.

01Users & integrationsSupply · borrow · repay · liquidate
02Pool / L2PoolLiquidity and position accounting
↙ prices    configuration ↘
03AAaveOraclePyth · freshness
03BPoolConfiguratorReserve and risk controls
04Pyth NetworkUSD-denominated prices

Composable

Aave-compatible interfaces are familiar to wallets, dashboards, and liquidation tooling.

Lean

Unused rewards, governance, and bridge components are not part of initial market operation.

Observable

Deployment review checks oracle state, reserve parameters, token metadata, and implementations.

02Supported Assets

The current Giwa Testnet market has six reserves. These are testnet assets for development and integration testing. Their availability, liquidity, and risk settings can change.

현재 Giwa 테스트넷 시장에는 6개의 reserve가 있습니다. 모두 개발과 연동 테스트를 위한 테스트넷 자산이며, 사용 가능 여부·유동성·위험 설정은 바뀔 수 있습니다.

AssetDecimalsRoleOracle
WETH18Collateral / borrowablePyth
WBTC8Collateral / borrowablePyth
USDC6Collateral / borrowablePyth
USDT6Collateral / borrowablePyth
WXRP6Collateral / borrowablePyth
WSOL9Collateral / borrowablePyth
Before you supply

Read PoolDataProvider or UiPoolDataProviderV3 for the current active, frozen, paused, cap, and oracle state. This table is only a documentation snapshot.

03Oracle

An oracle supplies the prices used by the lending market. Giwalend uses Pyth because the Giwa network does not have the Chainlink feeds used by a standard Aave deployment. Each asset is linked to one Pyth feed ID in AaveOracle.

The oracle checks that a price is recent and greater than zero. maxAge sets how old a price may be; an asset with no special value uses the global default. USD prices are converted to the protocol's 1e8 format.

오라클은 렌딩 시장이 사용할 가격을 제공합니다. Giwa 네트워크에는 표준 Aave 배포에서 사용하는 Chainlink feed가 없기 때문에 Giwalend는 Pyth를 사용합니다. 각 자산은 AaveOracle에서 하나의 Pyth feed ID와 연결됩니다.

오라클은 가격이 최신인지, 0보다 큰지 확인합니다. maxAge는 가격을 얼마 동안 사용할 수 있는지를 정하며, 별도 값이 없으면 전역 기본값을 사용합니다. USD 가격은 프로토콜이 사용하는 1e8 형식으로 바꿉니다.

ASSET
WETH
CONFIG
feedId + maxAge
SOURCE
Pyth
QUOTE
USD · 1e8

Configured feed IDs · Giwa Testnet

AssetPyth feed IDmaxAge
WETH0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60s global default
WBTC0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b4360s global default
USDC0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a60s global default
USDT0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b60s global default
WXRP0xec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c860s global default
WSOL0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d60s global default

Freshness is enforced

A stale Pyth update causes the price read to revert. Lending fails closed rather than using a price of unknown age.

Confidence is monitored off-path

Confidence is available to the updater and monitoring stack, but the current lending calculation uses the validated price and freshness policy.

04Risk Parameters

Risk parameters determine collateral power, liquidation eligibility, and market exposure. Giwalend keeps these controls in the PoolConfigurator layer and reviews them per asset.

위험 파라미터는 담보 능력, 청산 대상 여부, 시장 노출을 결정합니다. Giwalend는 이 제어를 PoolConfigurator 레이어에 두고 자산별로 검수합니다.

AssetLTVLTLiquidation bonusReserve factor
WETH80%83%10%20%
WBTC70%75%10%50%
USDC75%80%7%10%
USDT75%80%7%10%
WXRP62%65%10%25%
WSOL65%70%10%25%
LTV

Maximum borrow value against collateral.

Liquidation threshold

Weighted threshold at which a position can be liquidated.

Caps

Current testnet config uses 0 for supply and borrow caps, meaning no cap is configured.

Modes

Isolation Mode and E-Mode follow the Aave V3 configuration model where enabled.

Stable borrowing is disabled

Stable debt tokens exist for interface compatibility, but stable-rate borrowing is disabled for every reserve. Variable-rate borrowing is supported.

05Liquidations

Giwalend uses the Aave V3 liquidation engine. A position becomes eligible when its Health Factor falls below 1.0. A permissionless liquidator repays eligible debt and receives collateral at the configured bonus, subject to close-factor rules.

Giwalend는 Aave V3 청산 엔진을 사용합니다. Health Factor가 1.0 미만이면 포지션은 청산 대상이 됩니다. 누구나 청산 가능한 부채를 상환하고 close-factor 규칙에 따라 설정된 보너스가 반영된 담보를 받을 수 있습니다.

HEALTH FACTOR
Collateral Value × Weighted Liquidation Threshold
Debt Value
HF > 1.0: healthy · HF < 1.0: liquidatable
HF < 0.95: the full outstanding debt may be liquidated (100% close factor)
01Monitor account health and oracle prices.
02Repay eligible debt through liquidationCall.
03Receive collateral plus the configured bonus.

06Interest Rate Model

Each reserve uses a variable rate strategy with a kink at optimal utilization. Before the kink, borrow rates rise gradually; above it, the second slope rises sharply to attract liquidity and discourage borrowing.

WETH, WBTC, WXRP, and WSOL use the volatile-asset strategy. USDC and USDT use the stable-coin strategy. Stable-rate slopes are zero because stable borrowing is disabled.

각 reserve는 optimal utilization에서 꺾이는 variable rate strategy를 사용합니다. 꺾이는 지점 전에는 borrow rate가 완만히 오르고, 이후에는 두 번째 slope가 급격히 증가해 유동성 공급을 유도하고 차입을 억제합니다.

WETH·WBTC·WXRP·WSOL은 변동성 자산 전략을, USDC·USDT는 stable-coin 전략을 사용합니다. Stable borrowing이 비활성화되어 stable-rate slope는 0입니다.

StrategyAssetsOptimal usageSlopes
rateStrategyWETHWBTCWETH · WBTC · WXRP · WSOL80%5% / 100%
rateStrategyStableCoinsUSDC · USDT92%9% / 80%

07Governance & Permissions

Administrative permissions follow the Aave ACL model. Roles are assigned through ACLManager and consumed by PoolConfigurator, the oracle, and emergency controls. The testnet starts with an administrator for bootstrapping; production should move control to a managed multisig or governance executor.

관리 권한은 Aave ACL 모델을 따릅니다. 역할은 ACLManager를 통해 부여되며 PoolConfigurator·오라클·emergency 제어에서 사용됩니다. 테스트넷은 부트스트랩을 위해 관리자 주소로 시작하고, 본배포에서는 관리되는 multisig 또는 governance executor로 권한을 이전해야 합니다.

POOL ADMINProtocol configuration

Reserve configuration, implementations, oracle settings, and market controls.

RISK ADMINRisk operations

Applies approved LTV, liquidation, cap, and rate policy.

ASSET LISTINGNew reserves

Registers assets and feeds before reserve initialization.

EMERGENCYIncident response

Pauses or freezes activity according to emergency policy.

08Security

Security is a core design priority. Giwalend keeps Aave V3 core changes minimal, makes the Pyth path explicit, and combines freshness checks, role separation, monitoring, and emergency controls.

보안은 핵심 설계 원칙입니다. Giwalend는 Aave V3 core 변경을 최소화하고 Pyth 경로를 명확히 하며, 최신성 검증·역할 분리·모니터링·emergency 제어를 함께 사용합니다.

01Fail closed

Stale or missing oracle data stops price-dependent operations.

02Monitor

Track feed freshness, confidence, publisher health, utilization, and liquidations.

03Limit blast radius

Use per-asset parameters, caps, pause/freeze controls, and role separation.

09FAQ

Is Giwalend Aave?

Giwalend is an independent deployment based on Aave V3. It is not the Aave DAO or an official Aave deployment.

Giwalend는 Aave V3 기반의 독립 배포입니다. Aave DAO나 공식 Aave 배포가 아닙니다.

Why Pyth instead of Chainlink?

The target network does not have the Chainlink feeds expected by the standard deployment. Pyth feed IDs are configured per reserve.

대상 네트워크에 표준 배포가 기대하는 Chainlink feed가 없습니다. Pyth feed ID를 reserve별로 설정합니다.

Can I borrow at a stable rate?

No. Stable-rate borrowing is disabled for all current reserves. Variable-rate borrowing is supported.

아니요. 현재 모든 reserve에서 stable-rate borrowing이 비활성화되어 있습니다. Variable-rate borrowing을 지원합니다.

What if a Pyth price is stale?

getPriceNoOlderThan reverts. The updater must publish a fresh update before price-dependent operations continue.

getPriceNoOlderThan가 revert됩니다. 가격 의존 작업을 재개하려면 updater가 새 업데이트를 publish해야 합니다.

Are these production parameters?

No. They are a testnet snapshot. Production values need market data, risk review, monitoring, and governance approval.

아니요. 테스트넷 스냅샷입니다. 본배포 값에는 시장 데이터·risk review·모니터링·거버넌스 승인이 필요합니다.

10Developers

Deployment artifacts are the source of truth for ABI and constructor data. Applications should resolve active Pool and oracle addresses through PoolAddressesProvider where possible.

ABI와 constructor 데이터의 기준은 배포 artifact입니다. 애플리케이션은 가능한 경우 PoolAddressesProvider를 통해 활성 Pool과 오라클 주소를 조회해야 합니다.

Giwa Testnet addresses

ContractAddressExplorer
PoolAddressesProviderRegistry0x4DB41B7eE9b50Cb565Eb511c6477179bd7b85500
PoolAddressesProvider0xEccE677167dD47e33c13214f816cc6a2d5E900E8
PoolProxy0x2C1282E612eFF73F61340fA1E93d92EE0EBCcB2C
L2Pool-Implementation0x2d254F4a901483dA5A984e14385E9323C027324c
PoolConfiguratorProxy0x4E83E073276bE99893e5253776E822FF2B64e7ba
ACLManager0x4F529DCd176D751bE49256bDA0ab934CCBbd967D
PoolDataProvider0x1b9deA3766d1fF53375837A4d12EF6955a2eC1f5
AaveOracle0x2e630e4fdd86547BbB965Eb02C7f3783698B738c
UiPoolDataProviderV30x6CE702cf62995a4417Fbd1fAB2682fa92Fd547ba
UiPoolDataProviderPriceAdapter0xcea7fc3d4f30bbc9a04503d3b8135F78f788Ea53
UiIncentiveDataProviderV30x35B257375049EDAD646D2CB569A1Ba5973671C3f
WalletBalanceProvider0x056078948bFCAA736c70e6244f2BBfD69c783de2
WrappedTokenGatewayV30x10d7574cbca5A33D63beE86FA5c226e3C8e58ee3
TestTokensFaucet0xbddA7eC4302F4dfB617Cf122821d0EdBD1970315

Reserve token addresses

AssetUnderlyingaTokenVariable debt
WETH0x42000000000000000000000000000000000000060xE196206B972cA97EC055AFFf139c31AA80518da90x3E43566016C25B610B0a154F34906E43F7C655b8
WBTC0xCCCfe101020C83c5a1Ba2CD5Cf52B49F61295c470x98051c85eC94374a9641Fef53E8479E43d46FD950xCaA85cfC708b2627E184779B0ad741A20E3a1c7E
USDC0x620584625b374cfe9A1A5cD06457E7B8152a6e650x70A9125a5a2C312220d64Ed3dd714fF8fED543fd0x038b9Fe02Ee6F0e3d0d30f27F51b803204dfbB95
USDT0x77b66f495306610C8406a55BD5452c3EA306AfF60xB777B39075B2797DA701b04d4A7e66F8aCE609970x0FC30Ca1D128f7f83dEf30A8260E62b1A6a1b967
WXRP0x5D11FB441425A800BaD9e8DC4f76Fe0AD0E76C1C0x2b40936bA27f8F4C6d941966280fAC3bCE22f52F0x34152c63ffA90d0456932D343749741388A6A2Be
WSOL0x3Decb81E7b7E3FDE4ae81B03ABf65FA96a0B88AE0xa7e4f0906c4BcB6E01b1047Ccf613568196F3e7A0x6b53f4EBaCEeEB9AB363b947d8BD5C8B07f85923

ABI

Deployment JSON files contain ABI and bytecode. Load the artifact and resolve the address from deployment records.

const pool = new ethers.Contract(
  poolAddress, PoolArtifact.abi, signer
);

SDK

No Giwalend-specific SDK is included yet. Use ethers v5, viem, or an Aave-compatible client with these addresses and ABIs.

await pool.supply(
  asset, amount, user, 0
);