EvenSplitGroupPool
EvenSplitGroupPool은 IGroupRewardPool 인터페이스를 구현하고 그룹 내 IP 멤버들 간의 보상 분배를 관리하는 계약입니다. 이는 모든 멤버들 사이에 보상을 공정하게 분배하기 위해 균등 분할 메커니즘을 사용합니다.
상태 변수
ROYALTY_MODULE
프로토콜 전체의 Royalty Module 주소입니다.
GROUPING_MODULE
프로토콜 전체의 Grouping Module 주소입니다.
GROUP_IP_ASSET_REGISTRY
프로토콜 전체의 Group IP Asset Registry 주소입니다.
MAX_GROUP_SIZE
그룹에 허용되는 최대 IP 멤버 수입니다.
GroupInfo
GroupInfo에 대한 저장 구조:
token
: 그룹 IP에 첨부된 라이선스 조건에 의해 정의된 그룹의 보상 토큰totalMembers
: 그룹 내 IP의 총 수pendingBalance
: accRewardPerIp에 추가될 대기 중인 잔액accRewardPerIp
: IP당 누적 보상, MAX_GROUP_SIZE를 곱한 값averageRewardShare
: IP당 평균 보상 지분, 더 높은 최소 지분으로 새 IP가 참여할 때만 증가
함수
initialize
EvenSplitGroupPool 계약을 초기화합니다.
Parameters:
accessManager
: 프로토콜 관리자 역할 계약의 주소입니다.
addIp
그룹 풀에 IP를 추가합니다. GroupingModule만이 이 함수를 호출할 수 있습니다.
Parameters:
groupId
: 그룹 ID입니다.ipId
: IP ID입니다.minimumGroupRewardShare
: IP가 그룹에 추가될 것으로 예상하는 최소 그룹 보상 지분입니다.
Returns:
totalGroupRewardShare
: IP를 추가한 후의 총 그룹 보상 지분입니다.
removeIp
그룹 풀에서 IP를 제거합니다. GroupingModule만이 이 함수를 호출할 수 있습니다.
Parameters:
groupId
: 그룹 ID입니다.ipId
: IP ID입니다.
depositReward
그룹 풀에 직접 보상을 예치합니다.
Parameters:
groupId
: 그룹 ID입니다.token
: 보상 토큰입니다.amount
: 보상의 양입니다.
getAvailableReward
그룹 내 각 IP에 대한 보상을 반환합니다.
Parameters:
groupId
: 그룹 ID입니다.token
: 보상 토큰입니다.ipIds
: IP ID들입니다.
Returns:
uint256[] memory
: 각 IP에 대한 보상입니다.
distributeRewards
풀 내의 주어진 IP 계정들에게 보상을 분배합니다.
Parameters:
groupId
: 그룹 ID입니다.token
: 보상 토큰들입니다.ipIds
: IP ID들입니다.
Returns:
rewards
: 각 IP에 분배된 보상 금액을 포함하는 배열입니다.
getTotalIps
그룹 내 IP의 총 수를 반환합니다.
Parameters:
groupId
: 그룹 ID입니다.
Returns:
uint256
: 그룹 내 IP의 총 수입니다.
getIpAddedTime
IP가 그룹에 추가된 타임스탬프를 반환합니다.
Parameters:
groupId
: 그룹 ID입니다.ipId
: IP ID입니다.
Returns:
uint256
: IP가 그룹에 추가된 타임스탬프입니다.
getIpRewardDebt
그룹 내 IP의 보상 부채를 반환합니다.
Parameters:
groupId
: 그룹 ID입니다.token
: 보상 토큰입니다.ipId
: IP ID입니다.
Returns:
uint256
: IP의 보상 부채입니다.
isIPAdded
IP가 그룹에 추가되었는지 확인합니다.
Parameters:
groupId
: 그룹 ID입니다.ipId
: IP ID입니다.
Returns:
bool
: IP가 그룹에 추가되었으면 true, 그렇지 않으면 false입니다.
getMinimumRewardShare
그룹 내 IP의 최소 보상 지분을 반환합니다.
Parameters:
groupId
: 그룹 ID입니다.ipId
: IP ID입니다.
Returns:
uint256
: IP의 최소 보상 지분입니다.
getTotalAllocatedRewardShare
그룹의 총 할당된 보상 지분을 반환합니다.
Parameters:
groupId
: 그룹 ID입니다.
Returns:
uint256
: 그룹의 총 할당된 보상 지분입니다.