Yam은 프로그래머블 머니(Programmable Money) 및 거버넌스(Governance) 분야의 최근 혁신을 기반으로 구축된 실험적인 프로토콜입니다. 2020년 8월 11일에 공개적으로 출시되었습니다. 암호화폐 보유자들은 출시 후 24시간 이내에 Yam 프로토콜을 통해 4억 달러가 넘는 자금을 예치했습니다. 시가총액과 총 가치 잠금(TVL)이 급증한 후, 2020년 8월 12일에 리베이스 코드의 예상치 못한 버그로 인해 프로젝트는 붕괴되었습니다.[1][2]
YAM은 시장 상황에 따라 공급량이 확장 및 축소되는 탄력적인 공급 암호화폐로, 초기에는 YAM당 1달러를 목표로 했습니다. 이러한 안정성 메커니즘에는 Ampleforth와 같은 기존의 탄력적 공급 모델에 하나의 주요 추가 기능이 포함되어 있습니다. 각 공급 확장의 일부는 yCurve(고수익 달러 기반 스테이블코인)를 구매하고 Yam 커뮤니티 거버넌스에 의해 관리되는 Yam 재무부에 추가하는 데 사용됩니다.
팀은 Yam을 최소한으로 실행 가능한 통화 실험으로 구축했으며, 출시 시 YAM 토큰에는 가치가 없습니다. 배포 후에는 YAM 보유자가 그 가치와 미래 개발을 결정하는 데 전적으로 의존합니다. 또한 팀은 Compound(암호화폐) 거버넌스 모듈의 포크를 사용하여 모든 Yam 프로토콜 업데이트가 커뮤니티 투표를 통해 온체인에서 완전히 이루어지도록 했습니다.[3]
출시 당시 YAM은 감사를 받지 않았습니다. 기여자들은 계약의 보안을 보장하기 위해 최선을 다했습니다.
2020년 9월 10일, 주요 DeFi 감사 회사인 Peckshield는 Yamv3에 대한 감사를 완료했습니다. 이 회사는 성능 및 보안과 관련된 여러 문제를 발견했습니다. 특히, 감사에서는 17개의 기본 코딩 버그와 회사의 '고급 DeFi 조사'에서 '비즈니스 논리' 및 '시스템 운영'과 관련된 12개의 문제를 발견했습니다. 또한 회사는 팀에 6가지 권장 사항을 제시했습니다.
문제를 수준별로 분류하여 PeckShield는 4가지 문제를 정보성으로, 4가지 문제를 중간 위험으로, 1가지 문제를 고위험으로 분류했습니다. 또한 4가지 정보 문제가 있었습니다. 또한 프로토콜을 비활성화할 수 있는 심각한 버그는 없었습니다. 감사 이후 모든 문제가 해결되었습니다. 블록체인 회사는 다음과 같이 말했습니다.
“YAM은 온체인 커뮤니티 기반 거버넌스와 탄력적 공급 암호화폐의 흥미롭고 새로운 실험을 제시하며, 전체적인 설계와 구현에 매우 깊은 인상을 받았습니다.”
YAM은 YFI와 같은 방식으로 배포됩니다. 사전 채굴, 창립자 지분, 벤처 캐피탈 지분이 없습니다.
YAM의 초기 배포는 WETH, YFI, MKR, LEND, LINK, SNX, COMP 및 ETH/APML Uniswap v2 LP 토큰 등 8개의 스테이킹 풀에 고르게 배포됩니다. 이러한 풀은 전체 DeFi(탈중앙화 금융) 커뮤니티뿐만 아니라 적극적인 거버넌스에 대한 입증된 헌신과 복잡한 토큰 경제에 대한 이해를 가진 특정 커뮤니티에 광범위하게 도달하기 위해 의도적으로 선택되었습니다.
초기 배포 풀 출시 후, 두 번째 배포는 YAM/yCRV Uniswap 풀을 통해 인센티브가 제공됩니다. 이 풀을 통해 Uniswap의 TWAP 기반 오라클이 리베이스 계산의 기준으로 필요한 입력을 제공하고, 리베이스가 재무부에 yCurve를 구매할 수 있는 유동성을 제공합니다.
리베이트는 Rebaser라는 외부 계약에 의해 제어됩니다. 이것은 Ampleforth의 통화 정책 계약과 비슷합니다. 리베이스의 크기와 리베이스에서 발생하는 일을 결정합니다. YAM 토큰은 이 계약이 제공하는 내용에 따라 공급만 변경합니다.
리베이트가 활성화되기 전의 요구 사항:
두 번째 풀이 출시된 후 리베이스는 활성화 단계를 시작할 수 있습니다. 이것은 rebaser 계약에서 init_twap()으로 시작됩니다. YAM/yCRV Uniswap V2 시장이 있으면 누구든지 언제든지 이를 호출할 수 있습니다. 오라클은 검사 지점 사이에 12시간으로 설계되었습니다. 따라서 init_twap()이 호출된 후 12시간 후에 누구든지 activate_rebasing()을 호출할 수 있습니다. 이것은 리베이스를 영구적으로 켭니다. 이제 누구든지 inRebaseWindow() == true;일 때 rebase()를 호출할 수 있습니다.
리베이스에서 작업 순서는 다음과 같습니다.
YAM의 코드베이스 대부분은 다음을 포함한 기존 작업에서 수정되었습니다.