스테이크 포지션 패키지
스테이크 포지션 패키지
이 패키지는 스테이크된 포지션 조작을 위한 인터페이스를 제공합니다. 주요 진입점은 StakedPosition 구조체입니다.
포지션 오픈
사용자는 stake 함수를 사용하여 포지션을 오픈할 수 있습니다. 포지션을 오픈할 때, 사용자는 잠금 기간을 밀리초 단위로 지정해야 합니다. 잠금 기간은 Afterburner Vault 구성 중에 설정된 경계를 준수해야 합니다.
잠긴 포지션은 구성된 Afterburner Vault의 배수를 존중하여 보너스 보상을 받게 됩니다.
보상 수확
보상 수확은 세 단계 과정입니다:
사용자는 begin_harvest<STAKE> 함수를 호출해야 합니다;
각 보상에 대해, 사용자는 harvest_rewards<STAKE, REWARD> 함수를 호출해야 합니다. 이 함수는 사용자가 Coin<REWARD> 유형에 대해 누적된 보상을 얻을 수 있게 해줍니다;
과정을 마무리하기 위해 사용자는 해당 이벤트를 발생시키는 end_harvest 함수를 호출해야 합니다.
엄격한 구현에서는 사용자가 언제든지 보상을 청구할 수 있습니다.
유연한 구현에서는 사용자가 포지션이 잠금 해제된 후에만 보상을 청구할 수 있습니다.
스테이크 추가
사용자는 언제든지 deposit_principal 함수를 사용하여 포지션의 스테이크 금액을 증가시킬 수 있습니다. 잠긴 포지션의 스테이크를 증가시킨 후, 잠금 기간은 재계산됩니다.
스테이크 인출
사용자는 withdraw_principal<STAKE> 함수를 사용하여 스테이크한 원금을 인출할 수 있습니다. 인출하기 위해서는 포지션이 잠금 해제되어야 합니다.
잠금 기간이 끝나기 전에는 엄격한 Afterburner Vault에 스테이크된 포지션을 잠금 해제할 수 없습니다.
포지션의 잠금 연장
사용자는 renew_lock 함수를 사용하여 잠금 기간을 늘릴 수 있습니다.
포지션 합치기
사용자는 join 함수를 사용하여 두 포지션을 합칠 수 있습니다. 결과 포지션은 두 포지션 중 가장 최근의 잠금 시작 시간과 더 긴 잠금 기간을 가지게 됩니다.
포지션 분할
사용자는 split 함수를 사용하여 포지션을 둘로 분할할 수 있습니다. 누적된 보상은 총 스테이크 금액에 대해 분할되는 비례 금액에 의해 두 포지션 사이에 분할됩니다. 모든 다른 매개변수는 원래 포지션과 동일하게 유지됩니다.
포지션 종료
사용자는 destroy 함수를 사용하여 비활성 포지션을 삭제할 수 있습니다. 파괴된 포지션에는 원금이나 보상이 남아 있지 않아야 합니다.
Last updated