# 인베스터즈 Investors 2.0 (TBA)

## Investors 2.0 는 무엇인가요?

Investors는 Hillstone Finance에서 처음으로 선보이는 암호화폐 기반 자산 담보부 스테이킹 플랫폼입니다. Investors에서 Hillstone Finance가 보증하는 자산 (예를 들면, 벤처 캐피탈 펀드) 을 담보로 한 스테이킹 상품에 암호화폐를 거치하여 일정 수준의 수익을 얻을 수 있습니다. Investors에 거치한 암호화폐는 언제든지 HSF 토큰으로 전환이 가능하며, 전환한 HSF 토큰을 매도하는 것을 통하여 빠르게 스테이킹 상품을 환매할 수 있습니다.

\
초기의 Investors와 달라진 점은 기존의 Room(2차 HSF 투자) 개념이 사라지고 DAO가 추가 되었습니다. 원래 운영중인 펀드 상품 내에서 초기 투자자가 지분을 포기하고 환매하여 나간 지분에 대해서 HSF를 통한 투자 재참여가 가능했으나, 이젠 투자 재참여가 불가능하고 해당 지분은 Hillstone DAO의 지분으로 넘어가게 됩니다. Hillstone DAO는 해당 지분에 대한 수익금은 HSF Buyback과 Staker들을 위한 Staking 보상으로 사용됩니다.



## Investors 2.0 Contract 아키텍처

<figure><img src="https://2351487390-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mds8WyU6J3YSagUoa5r-2789031903%2Fuploads%2Ff80bnKIn9GCRWjzVOzg0%2FDAO%203.png?alt=media&#x26;token=af68f293-709b-4223-b6f9-2dfde9e7ad4e" alt=""><figcaption></figcaption></figure>

Investors는 KYC/AML 모듈과 Web Interface 제외한 모든 컴포넌트가 Ethereum 위에서 동작하는 플랫폼입니다. 위의 그림은 Investor의 Contract 구조를 간단하게 표현한 것입니다. 각 모듈은 다음의 기능을 수행합니다 :

* InvestorRegistry : 각각의 POOL을 생성해주고, Web Interface에 스테이킹의 목록을 전달해주는 역할을 하는 스테이킹 등록표 컴포넌트입니다.
* InvestorV2 : 스테이킹 상품 컨트랙트로 사용자로부터 직접적으로 암호화폐를 예치받거나, 스테이킹 상품을 HSF 토큰으로 환매해주는 등의 기능을 합니다. 사용자와 직접적으로 상호작용하는 Investor 서비스의 핵심 컴포넌트입니다. ERC721 확장 표준을 따릅니다.
* USDT (TetherToken) : ERC-USDT 토큰입니다. Investor 상품에 따라서 USDC 등의 다른 스테이블 코인으로 대체될 수 있습니다.
* HillstoneFinance : HSF 토큰 컨트랙트입니다.
* ContractStorage : 계약정보를 저장해두는 컴포넌트 입니다. 중앙화된 정적 서버일 수도 있고, IPFS와 같은 탈중앙화된 파일 저장소일 수도 있으며, 스마트 컨트랙트일 수도 있습니다.

핵심 참여자는 다음과 같습니다 :

* User : Investor를 사용하는 사용자입니다. 암호 화폐를 예치하거나 출금하며, 스테이킹 상품을 HSF 토큰으로 환매합니다.
* Admin : Investor 상품을 관리하는 관리자입니다. 스테이킹 상품에 예치된 암호 화폐의 환매 기준가나, 투자 계약서 위치 등의 Investor 컨트랙트의 주요한 상태를 설정하는 역할입니다.

###

### Investor Contract LifeCycle

이 문단에서는 Investor 스테이킹 상품의 생애 주기를 몇가지 단계로 나누어 어떤 상호작용이 일어나는지를 간단한 예제를 들어 설명합니다.

**대출 상품 생성**

Hillstone DAO 내 투표를 통해 통과된 상품의 상품운용사(Admin)는 계약서를 ContractStorage에 저장합니다. 이 때, 상품의 정보와 ContractStorage에 저장된 계약서의 위치는 다음과 같습니다 :

* 담보물의 이름 : WhaleFund1
* 스테이킹 목표액 : 1,000,000 USD
* 최소 스테이킹 금액 : 700,000 USD
* 이자율 : 10%
* 계약서의 위치 : https://contract.hillstone.finance/WhaleFund1
* 상품 판매 시작 시간 : 2021-07-14 00:00
* 상품 판매 종료 시 : 2021-08-14 00:00
* 스테이킹 기간 : 2

Admin은 InvestorRegistry.createInvestor("WhaleFund1", 1000000, 5, "https://contract.hillstone.finance/WhaleFund1", ...)을 호출합니다. InvestorRegistry는 createInvestor가 호출이 되면 CREATE2를 이용하여 InvestorV2을 생성하고 Admin에게 그 주소를 전달합니다.



**상품 판매**

User들은 Investor Web Interface를 통하여 상품이 정보를 접하고, 예치를 진행합니다. 우선 예치를 하고자 하는 양만큼의 USDT를 InvestorV2에 대하여 Approve 해줍니다. InvestorV2.deposit(10000 \* 10^18)을 호출하면 10000 USDT를 예치하게 됩니다. 만약 상품 판매 기간 중에 예치를 철회하고자 한다면, InvestorV2.withdraw(10000 \* 10^18)를 호출하면 10000 USDT를 다시 돌려받게 됩니다. Admin은 환매용 HSF의 기준가를 대출 진행 하루 전에 등록하고, HillstoneFinance.approve를 호출하여 InvestorV2가 환매용 HSF 토큰 가져갈 수 있게 허용합니다.



**상품 판매 종료**

상품 판매 기간이 지나면 자동으로 상품 판매가 종료됩니다. 이 때, 예치된 금액이 최소 스테이킹 금액보다 작으면 대출 상품은 철회되며, User들은 InvestorV2.withdraw를 호출하여 예치한 USDT를 다시 가져가야 합니다.

예치된 금액이 최소 스테이킹 금액보다 크다면, 스테이킹이 진행되며, 이 때 예치된 USDT 전액 Admin에게 전송되며, Admin이 지분 위임한 HSF가 InvestorV2에 예치됩니다. 따라서, InvestorV2.withdraw를 사용할 수 없습니다. 사용자는 이 때부터 InvestorV2.exit을 호출하는 것을 통해서 스테이킹 상품의 지분을 HSF 토큰으로 환매할 수 있습니다.



**상품 환매**

상품에 예치한 User가 InvestorV2.exit을 호출하서 환매를 진행하면, 사전에 Admin이 지정해둔 환매 기준가로 HSF를 사용자에게 지급합니다.



**상품 상환과 청산**

상품의 만료 기한이 되면, Admin은 InvestorV2에 USDT를 예치합니다. 스테이킹 만료 기한이 지나면 User들은 더이상 InvestorV2.exit을 호출하지 못합니다. User들은 InvestorV2.claim을 호출하여 자신이 받아야할 상환액을 수령합니다. 모두가 상환액을 수령하고 남은 HSF가 모두 HSF Pool에 회수되면, Investor Contract의 생명주기가 끝납니다.

<figure><img src="https://2351487390-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mds8WyU6J3YSagUoa5r-2789031903%2Fuploads%2F36PPL0Zr5CY8vcBND7pg%2FDAO%206.png?alt=media&#x26;token=2f9b5fad-cb73-4c99-98fd-a198fdbd25eb" alt=""><figcaption></figcaption></figure>
