> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superearn.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 스마트컨트랙트

> Superearn 온체인 컨트랙트 주소, 핵심 인터페이스, 이벤트

### 1. 아키텍처 개요

자세한 흐름은 [SuperEarn 동작 방식](https://docs.superearn.io/ko/protocol/how-superearn-works)과 [핵심 컴포넌트](/ko/developers/core-components)를 참고하세요.

***

### 2. 배포 주소

#### Kaia

| Contract                                                                                                       | 설명                                                  | Address                                      |
| -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------- |
| [SuperEarnRouter](https://kaiascan.io/address/0x7437892A3e2E658038758dD7CA638334C0c2006C)                      | 사용자 예치/출금 라우터                                       | `0x7437892A3e2E658038758dD7CA638334C0c2006C` |
| [CooldownVault](https://kaiascan.io/address/0x4E4654cE4Ca7ff0ba66a0A4a588A4bd55A6f9A33)                        | 출금 쿨다운 관리                                           | `0x4E4654cE4Ca7ff0ba66a0A4a588A4bd55A6f9A33` |
| [OriginVault](https://kaiascan.io/address/0x3B37DB3AC2a58f2daBA1a7d66d023937d61Fc95b)                          | 크로스체인 허브(ERC‑7540 유사)                               | `0x3B37DB3AC2a58f2daBA1a7d66d023937d61Fc95b` |
| [StrategyOriginVault](https://kaiascan.io/address/0x650a4c074a58B18fbEEd48ae766e58a382D9E5F5)                  | OriginVault로 자본 라우팅 전략                              | `0x650a4c074a58B18fbEEd48ae766e58a382D9E5F5` |
| [StrategyUSDOExpress](https://kaiascan.io/address/0x6090d8EECB74058bC53BB24273345Dd8Ba5652bF)                  | USDO 전략(OpenEden)                                   | `0x6090d8EECB74058bC53BB24273345Dd8Ba5652bF` |
| [Custom strategy adapter](https://kaiascan.io/address/0x723d3422788f47f5DaE153515A3C277293dbd8f3)              | CustomVault 지분을 보유하는 Super Vault 전략                 | `0x723d3422788f47f5DaE153515A3C277293dbd8f3` |
| [CustomVault](https://kaiascan.io/address/0x7876a2faf6Aad1F6F8E47AD612D9472a4821DfDa)                          | 등록된 CustomStrategy용 USDT ERC-4626 볼트                | `0x7876a2faf6Aad1F6F8E47AD612D9472a4821DfDa` |
| [CustomStrategy (Yield8)](https://kaiascan.io/address/0x8F19e66B4bA81fAAe964232Baa2Bdc8118385822)              | Yield8(wYield8)를 대상으로 한 수동 운영 커스텀 전략                | `0x8F19e66B4bA81fAAe964232Baa2Bdc8118385822` |
| [StrategyMorphoV2Vault (Feather USDT)](https://kaiascan.io/address/0x1045626a4b79A40827DD3087e06Dcc73c590d575) | Feather USDT(Morpho V2 볼트) 대상 Super Vault 전략        | `0x1045626a4b79A40827DD3087e06Dcc73c590d575` |
| [Yield8AssetsProvider](https://kaiascan.io/address/0x1CFd5d5268400648c2FFaf9bdB01cB6b0b58F672)                 | Yield8 CustomStrategy 포지션을 USDT로 환산해주는 외부 자산 회계 제공자 | `0x1CFd5d5268400648c2FFaf9bdB01cB6b0b58F672` |
| [USDOKyced](https://kaiascan.io/address/0x4Bfc1773280689d17c8c00B2514A5C28c8c2b021)                            | USDO 민팅 컨트랙트(OpenEden)                              | `0x4Bfc1773280689d17c8c00B2514A5C28c8c2b021` |
| [OriginAdapter](https://kaiascan.io/address/0x8E53CdAa89381c203a074fB3388f65936358f200)                        | 크로스체인 어댑터(브릿지+CCIP)                                 | `0x8E53CdAa89381c203a074fB3388f65936358f200` |
| [OriginAgent](https://kaiascan.io/address/0xd8acFF2E2B8B1Cf052aca4Ba331743F73C569E68)                          | Kaia측 메시지/브릿지 에이전트                                  | `0xd8acFF2E2B8B1Cf052aca4Ba331743F73C569E68` |
| [OriginAccountant](https://kaiascan.io/address/0x55CEd8F290256E165d3f50EDa0b60E261ec38f55)                     | 이동 중 자산 회계                                          | `0x55CEd8F290256E165d3f50EDa0b60E261ec38f55` |
| [PriceConverter](https://kaiascan.io/address/0xC090e88bDAA823B7C1dd8d9e24CbacB0f35f2675)                       | 오라클 연동 가격 변환기                                       | `0xC090e88bDAA823B7C1dd8d9e24CbacB0f35f2675` |
| [Registry](https://kaiascan.io/address/0xea8e1872aDCE77eFBe5d6FE37b5C257Cc86eC786)                             | 볼트·전략 레지스트리                                         | `0xea8e1872aDCE77eFBe5d6FE37b5C257Cc86eC786` |
| [Super Vault](https://kaiascan.io/address/0x2e4e573D86c70688cD97D76bc5DDc1Bb265bF5D6)                          | Kaia 집계 볼트(EarnUSDT)                                | `0x2e4e573D86c70688cD97D76bc5DDc1Bb265bF5D6` |
| [CrosschainKeeper](https://kaiascan.io/address/0x40FB0F9084828ADBc3dcd71840eA545BF243cD0F)                     | 크로스체인 자산 라이프사이클                                     | `0x40FB0F9084828ADBc3dcd71840eA545BF243cD0F` |
| [LightKeeper](https://kaiascan.io/address/0x8c82B2feC291a43e41aA87669eaEf01F4efaA3B2)                          | 전략 수확/상환, 사용자 클레임                                   | `0x8c82B2feC291a43e41aA87669eaEf01F4efaA3B2` |

#### Ethereum

| Contract                                                                                                          | 설명                                         | Address                                      |
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------------- |
| [SuperEarnRouter](https://etherscan.io/address/0xd8acFF2E2B8B1Cf052aca4Ba331743F73C569E68)                        | RemoteVault/키퍼용 라우터                        | `0xd8acFF2E2B8B1Cf052aca4Ba331743F73C569E68` |
| [RemoteVault](https://etherscan.io/address/0x8c82B2feC291a43e41aA87669eaEf01F4efaA3B2)                            | Kaia 자산을 받는 원격 볼트                          | `0x8c82B2feC291a43e41aA87669eaEf01F4efaA3B2` |
| [CooldownVault](https://etherscan.io/address/0x8E53CdAa89381c203a074fB3388f65936358f200)                          | 원격 쿨다운 볼트(USDC)                            | `0x8E53CdAa89381c203a074fB3388f65936358f200` |
| [CooldownVault (USDT)](https://etherscan.io/address/0x1c097dFe13B0f511d987F7ea6077B7fb637EC83C)                   | Ethereum USDT Super Vault용 원격 쿨다운 볼트       | `0x1c097dFe13B0f511d987F7ea6077B7fb637EC83C` |
| [Super Vault](https://etherscan.io/address/0x9E3E70f4d09bcfe08F456C426EB90f7aA6F70dF2)                            | 원격 집계 볼트                                   | `0x9E3E70f4d09bcfe08F456C426EB90f7aA6F70dF2` |
| [Super Vault (USDT)](https://etherscan.io/address/0x7Eec57beB20576Cb35c500aE5826e16960aA878b)                     | USDT 원격 집계 볼트 (기초 = CooldownVault USDT 지분) | `0x7Eec57beB20576Cb35c500aE5826e16960aA878b` |
| [MorphoStrategy (Prime)](https://etherscan.io/address/0xa41432A67A60A79f45ddfD9e242E72b91c8ea19d)                 | Gauntlet USDC Prime 대상 Super Vault 전략      | `0xa41432A67A60A79f45ddfD9e242E72b91c8ea19d` |
| [MorphoStrategy (RWA)](https://etherscan.io/address/0x1f5b386243C42c7f297f084269b8F85636ef5a61)                   | Gauntlet USDC RWA 대상 Super Vault 전략        | `0x1f5b386243C42c7f297f084269b8F85636ef5a61` |
| [CustomStrategy (USDC Multi-Morpho)](https://etherscan.io/address/0x50519a3AF6C0662134Ed7F9a160142D28D10f455)     | 다수 Morpho 마켓에 USDC 자본을 분배하는 통합 전략          | `0x50519a3AF6C0662134Ed7F9a160142D28D10f455` |
| [CustomStrategy (USDT Multi-Morpho)](https://etherscan.io/address/0xCECe82A34902aA1b7Cb6419dbcb2FED893496Faa)     | 다수 Morpho 마켓에 USDT 자본을 분배하는 통합 전략          | `0xCECe82A34902aA1b7Cb6419dbcb2FED893496Faa` |
| [CustomStrategy (Pendle PT-USDG)](https://etherscan.io/address/0x72301DDb480d4a11B168F886bD4e766De0724199)        | Pendle PT-USDG 대상 커스텀 전략                   | `0x72301DDb480d4a11B168F886bD4e766De0724199` |
| [CustomStrategy (Pendle PT-sNUSD)](https://etherscan.io/address/0x947ae1c8eAaC50DA2Bd14E3230361f986a2A59eB)       | Pendle PT-sNUSD 대상 커스텀 전략                  | `0x947ae1c8eAaC50DA2Bd14E3230361f986a2A59eB` |
| [CustomStrategy (Pendle PT-reUSD)](https://etherscan.io/address/0x3e92a93C7Ae3c0D7ACa27190b92f0F2db09BeCC7)       | Pendle PT-reUSD 대상 커스텀 전략                  | `0x3e92a93C7Ae3c0D7ACa27190b92f0F2db09BeCC7` |
| [CustomStrategy (stUSDS)](https://etherscan.io/address/0xE2c3082dF0Ea5F3606E7adF6AAB1B559A03b5AB4)                | stUSDS(Sky DSR) 대상 커스텀 전략                  | `0xE2c3082dF0Ea5F3606E7adF6AAB1B559A03b5AB4` |
| [PendleUSDGAssetsProvider](https://etherscan.io/address/0x2572E15F1C0806bB6D8Efc0d867CAA27bFaEdC40)               | Pendle PT-USDG 전략의 자산 회계 제공                | `0x2572E15F1C0806bB6D8Efc0d867CAA27bFaEdC40` |
| [PendleSNUSDAssetsProviderV2](https://etherscan.io/address/0x20e985976AB18260995660636c5716D2f4FC4AdC)            | Pendle PT-sNUSD 전략의 자산 회계 제공               | `0x20e985976AB18260995660636c5716D2f4FC4AdC` |
| [PendleReUSDAssetsProvider](https://etherscan.io/address/0xdB0C1338C127840043CafdB208c956D24D71FB30)              | Pendle PT-reUSD 전략의 자산 회계 제공               | `0xdB0C1338C127840043CafdB208c956D24D71FB30` |
| [StUSDSAssetsProvider](https://etherscan.io/address/0x84e63D6AE32654bCdD5301e01E703959Ac7a622c)                   | stUSDS 전략의 자산 회계 제공                        | `0x84e63D6AE32654bCdD5301e01E703959Ac7a622c` |
| [MultiMorphoDirectAssetsProvider (USDC)](https://etherscan.io/address/0x13CEE5Ac81a78f23Be0B3846e9D5B622d62f3785) | USDC Multi-Morpho 전략의 자산 회계 제공             | `0x13CEE5Ac81a78f23Be0B3846e9D5B622d62f3785` |
| [MultiMorphoDirectAssetsProvider (USDT)](https://etherscan.io/address/0xD49162a9279441f9f12e199B0a28499Fb85b8fb5) | USDT Multi-Morpho 전략의 자산 회계 제공             | `0xD49162a9279441f9f12e199B0a28499Fb85b8fb5` |
| [PendlePT sNUSD Diamond](https://etherscan.io/address/0x3311D2A0D88597dA3bE946AA4d0D112b486bFDE8)                 | Pendle PT sNUSD 전략 Diamond 프록시             | `0x3311D2A0D88597dA3bE946AA4d0D112b486bFDE8` |
| [PendlePT cUSD Diamond](https://etherscan.io/address/0xA5540e13F476b597D7A8708e7cAA2Eb05C58E295)                  | Pendle PT cUSD 전략 Diamond 프록시              | `0xA5540e13F476b597D7A8708e7cAA2Eb05C58E295` |
| [PendlePT cUSDO Diamond](https://etherscan.io/address/0x609c1701EF5156E3c01BdbF80CE5eD1941dd2387)                 | Pendle PT cUSDO 전략 Diamond 프록시             | `0x609c1701EF5156E3c01BdbF80CE5eD1941dd2387` |
| [USDOKycedCA](https://etherscan.io/address/0xc693A80b13763B3C69CCEed4c434E9f1CFC03f77)                            | Ethereum측 KYC USDO 민팅 컨트랙트 (OpenEden)      | `0xc693A80b13763B3C69CCEed4c434E9f1CFC03f77` |
| [Adapter](https://etherscan.io/address/0xC090e88bDAA823B7C1dd8d9e24CbacB0f35f2675)                                | 크로스체인 어댑터(브릿지+CCIP)                        | `0xC090e88bDAA823B7C1dd8d9e24CbacB0f35f2675` |
| [Agent](https://etherscan.io/address/0x4AFd6Ad5b924CD29513d1fb9b66728C4C5A1bd3e)                                  | 메시지/브릿지 에이전트(ETH)                          | `0x4AFd6Ad5b924CD29513d1fb9b66728C4C5A1bd3e` |
| [Accountant](https://etherscan.io/address/0x40FB0F9084828ADBc3dcd71840eA545BF243cD0F)                             | 이동 중 자산 회계                                 | `0x40FB0F9084828ADBc3dcd71840eA545BF243cD0F` |
| [PriceConverter](https://etherscan.io/address/0x57B71db8c039aD34b28c289272EFa09b5A870c20)                         | 오라클 연동 가격 변환기                              | `0x57B71db8c039aD34b28c289272EFa09b5A870c20` |
| [Registry](https://etherscan.io/address/0x0Becde49394d537B240c0272A7C5fEfC932691fe)                               | 볼트·전략 레지스트리                                | `0x0Becde49394d537B240c0272A7C5fEfC932691fe` |
| [UniversalSwapRouter](https://etherscan.io/address/0x91CAAe299305a8133F295a59f4F22005d16EB65d)                    | 통합 DEX 스왑 라우터                              | `0x91CAAe299305a8133F295a59f4F22005d16EB65d` |
| [USDCToSNUSDCurveSwapper](https://etherscan.io/address/0xdcc82aB8ABdCBedf1f42083300b13D1fa616A514)                | Curve 기반 USDC → sNUSD 스왑                   | `0xdcc82aB8ABdCBedf1f42083300b13D1fa616A514` |
| [USDCToCUSDOSwapper](https://etherscan.io/address/0xF74550DE1d4B4Ff41ad44FD5eF26ACB5200525e8)                     | USDC → cUSDO 스왑                            | `0xF74550DE1d4B4Ff41ad44FD5eF26ACB5200525e8` |
| [CrosschainKeeper](https://etherscan.io/address/0x1D68a6CEFeD44101eD79a830e8a5ad5c0A52D8De)                       | 크로스체인 자산 라이프사이클                            | `0x1D68a6CEFeD44101eD79a830e8a5ad5c0A52D8De` |
| [LightKeeper](https://etherscan.io/address/0xd064f89A9A95EA86A706543449D0d97557fAF929)                            | 전략 수확/상환, 사용자 클레임                          | `0xd064f89A9A95EA86A706543449D0d97557fAF929` |

> 프로덕션에서는 주소를 상수로 다루되, 업그레이드 대비 설정 가능하게 유지하세요.

***

### 3. 핵심 인터페이스

여기에 통합 시 주로 쓰는 부분만 요약합니다. 전체 ABI는 배포된 JSON 아티팩트(ISuperEarnRouter, ICooldownVault, IVault 등)와 OpenZeppelin 표준 ABI를 참고하세요.

#### 3.1 `ISuperEarnRouter` (SuperEarnRouter)

**역할**\
단일 엔트리포인트로 예치/리딤 전체 플로우를 처리합니다. **모든 사용자/통합 쓰기는 라우터를 거쳐야 하며 CooldownVault는 직접 호출 불가**(클레임은 퍼미션리스지만 보통 키퍼가 실행).

**주요 이벤트**

```solidity theme={null}
event Deposited(
    address indexed sender,
    address indexed receiver,
    address indexed SuperVault,
    uint256 underlyingAmount,
    uint256 yShares
);

event Redeemed(
    address indexed sender,
    address indexed receiver,
    address indexed SuperVault,
    uint256 yShares,
    uint256 ySharesFilled,
    uint256 requestId,
    uint256 underlyingAmount
);
```

**주요 조회**

```solidity theme={null}
function registry() external view returns (address);
```

**예치**

```solidity theme={null}
function deposit(address SuperVault, uint256 amount, uint256 minSharesOut) external returns (uint256 yShares);
function deposit(address SuperVault, uint256 amount, address receiver, uint256 minSharesOut) external returns (uint256 yShares);
function depositWithPermit(
    address SuperVault,
    uint256 amount,
    address receiver,
    uint256 minSharesOut,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
) external returns (uint256 yShares);
```

* `amount`: USDT (6 decimals)
* `minSharesOut`: 최소 수령 지분(슬리피지 보호)
* `receiver`: 지분 수령 주소(옵션)

**프리뷰/리딤**

```solidity theme={null}
function previewDeposit(address SuperVault, uint256 amount) external view returns (uint256 yShares);
function previewRedeem(address SuperVault, uint256 yShares) external view returns (uint256 assets);
function previewWithdraw(address SuperVault, uint256 assets) external view returns (uint256 ySharesNeeded);

function redeem(address SuperVault, uint256 yShares, uint256 minAssetsOut) external returns (uint256 requestId);
function redeem(address SuperVault, uint256 yShares, address receiver, uint256 minAssetsOut) external returns (uint256 requestId);
```

* `previewRedeem`: 현재 지분 가격 기준 예상 언더라이잉(쿨다운 이후).
* `redeem`: SuperVault 지분을 소각하고 CooldownVault 리딤 요청 생성 → `requestId` 반환/이벤트.

**볼트 검색**

```solidity theme={null}
function endorsedVault(address token) external view returns (address SuperVault);
```

**클레임 프리뷰**

```solidity theme={null}
function previewClaim(address SuperVault, uint256 requestId) external view returns (bool isClaimable, uint256 maxAssetsOut);
```

**자주 보는 커스텀 에러**\
`InsufficientShares`, `InsufficientAssets`, `InvalidReceiver`, `InvalidPrice`, `Unauthorized`

***

#### 3.2 `ICooldownVault`

**역할**\
입·출금 큐, 쿨다운, 손실 한도 관리. 사용자 직접 호출은 불가하며, 라우터/키퍼가 호출.

**주요 이벤트**

```solidity theme={null}
event RedeemRequested(address indexed caller, address indexed receiver, uint256 indexed requestId, uint256 assets, uint256 shares, uint256 requestedTime);
event Claimed(address indexed caller, uint256 indexed requestId, uint256 assets, uint256 claimable);
event InstantRedemption(address indexed caller, uint256 shares, uint256 assets);
```

**핵심 구조체**

```solidity theme={null}
struct RedeemRequest {
    address receiver;
    uint256 assets;
    uint256 cooldownRequestedTime;
    uint256 cooldownPeriod;
    bool claimed;
}
```

**쿨다운 & 리딤 큐 조회**

```solidity theme={null}
function cooldownPeriod() external view returns (uint256);
function maxLossThresholdBps() external view returns (uint256);
function redeemRequests(uint256 requestId) external view returns (address receiver, uint256 assets, uint256 cooldownRequestedTime, uint256 cooldownPeriod, bool claimed);
function getUnclaimedRedeemRequestIds() external view returns (uint256[] memory requestIds);
function getUnclaimedRedeemRequestIds(uint256 limit, uint256 skip) external view returns (uint256[] memory requestIds);
```

**클레임**

```solidity theme={null}
function claim(uint256 requestId, uint256 maxLossBps) external returns (uint256 claimable);
```

**에러 예시**
`OnlyGovernance`, `OnlyManagers`, `OnlyStrategy`, `OnlyKeepers`, `InvalidReceiver`, `RequestAlreadyClaimed`, `HealthCheckFailed`, `CooldownPeriodTooLong`.

***

#### 3.3 `IVault` (Super Vault / Remote Vault)

**역할**
CooldownVault 지분을 래핑하는 Super Vault입니다. EarnUSDT shares의 기초입니다.

**주요 조회**

```solidity theme={null}
function pricePerShare() external view returns (uint256);
function totalAssets() external view returns (uint256);
function totalDebt() external view returns (uint256);
function depositLimit() external view returns (uint256);
function debtRatio() external view returns (uint256);
function apiVersion() external pure returns (string memory);
```

***

#### 3.4 Runespear 메시징/어댑터 주요 컨트랙트 (참고)

* **OriginAdapter / Remote Adapter** — CCIP + 브릿지 호출, 자산/메시지 정합 처리
* **OriginAgent / Remote Agent** — 메시지 라우팅, 상태 스냅샷 전달
* **BridgeAccountant** — 이동 중 자산 추적, 이중 계산 방지
* **StateSnapshot** — 각 메시지에 포함되는 볼트/브릿지 상태

이들은 내부 회계·안전 장치로, 일반 통합면에서는 직접 호출하지 않습니다.

***

### 4. 통합 메모

* **예치/출금은 라우터 경유**: `SuperEarnRouter` 외 직접 CooldownVault 입·출금 불가.
* **지분 가격 모델**: EarnUSDT는 리베이스하지 않으므로 `pricePerShare` 기반으로 가치 계산.
* **쿨다운 고려**: 리딤은 요청 → 쿨다운 → 클레임 순서. `previewClaim`와 `claimable`로 상태 확인.
* **슬리피지 보호**: `minSharesOut`, `minAssetsOut`을 꼭 지정하세요.
* **크로스체인 회계**: 이동 중 자산은 보수적으로 처리되어 일시적으로 값이 낮게 보일 수 있습니다.
