GroupIPAssetRegistry는 그룹 IP 자산(IPA)의 등록 및 추적을 관리하며, 여기에는 그룹 구성원과 보상 풀이 포함됩니다. 그룹 등록, 그룹 멤버십 관리 및 그룹 보상 풀 처리를 위한 기능을 제공합니다.

상태 변수

MAX_GROUP_SIZE

uint256 public constant MAX_GROUP_SIZE = 1000

그룹에 허용되는 최대 구성원 수입니다.

GROUPING_MODULE

IGroupingModule public immutable GROUPING_MODULE

프로토콜 전체 Grouping Module의 주소입니다.

함수

registerGroup

function registerGroup(
    address groupNft,
    uint256 groupNftId,
    address rewardPool,
    address registerFeePayer
) external onlyGroupingModule whenNotPaused returns (address groupId)

그룹 IPA를 등록합니다.

Parameters:

  • groupNft: 그룹 NFT의 주소입니다.
  • groupNftId: 그룹 NFT의 ID입니다.
  • rewardPool: 그룹 보상 풀의 주소입니다.
  • registerFeePayer: 등록 수수료를 지불하는 계정의 주소입니다.

Returns:

  • groupId: 새로 등록된 그룹 IPA의 주소입니다.

whitelistGroupRewardPool

function whitelistGroupRewardPool(address rewardPool, bool allowed) external onlyGroupingModule whenNotPaused

그룹 보상 풀을 화이트리스트에 등록합니다.

Parameters:

  • rewardPool: 그룹 보상 풀의 주소입니다.
  • allowed: 그룹 보상 풀이 화이트리스트에 등록되었는지 여부입니다.

addGroupMember

function addGroupMember(address groupId, address[] calldata ipIds) external onlyGroupingModule whenNotPaused

그룹 IPA에 구성원을 추가합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.
  • ipIds: 그룹 IPA에 추가할 IP들의 주소입니다.

removeGroupMember

function removeGroupMember(address groupId, address[] calldata ipIds) external onlyGroupingModule whenNotPaused

그룹 IPA에서 구성원을 제거합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.
  • ipIds: 그룹 IPA에서 제거할 IP들의 주소입니다.

isRegisteredGroup

function isRegisteredGroup(address groupId) external view returns (bool)

ID를 기반으로 그룹 IPA가 등록되었는지 확인합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.

Returns:

  • isRegistered: 그룹 IPA가 프로토콜에 등록되었는지 여부입니다.

getGroupRewardPool

function getGroupRewardPool(address groupId) external view returns (address)

그룹 IPA의 그룹 보상 풀을 검색합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.

Returns:

  • rewardPool: 그룹 보상 풀의 주소입니다.

isWhitelistedGroupRewardPool

function isWhitelistedGroupRewardPool(address rewardPool) external view returns (bool isWhitelisted)

그룹 보상 풀이 화이트리스트에 등록되어 있는지 확인합니다.

Parameters:

  • rewardPool: 그룹 보상 풀의 주소입니다.

Returns:

  • isWhitelisted: 그룹 보상 풀이 화이트리스트에 등록되어 있는지 여부입니다.

getGroupMembers

function getGroupMembers(
    address groupId,
    uint256 startIndex,
    uint256 size
) external view returns (address[] memory results)

그룹 IPA의 그룹 구성원을 검색합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.
  • startIndex: 검색할 그룹 구성원의 시작 인덱스입니다.
  • size: 검색할 그룹 구성원의 크기입니다.

Returns:

  • results: 그룹 구성원들의 주소입니다.

containsIp

function containsIp(address groupId, address ipId) external view returns (bool)

IP가 그룹 IPA의 구성원인지 확인합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.
  • ipId: IP의 주소입니다.

Returns:

  • isMember: IP가 그룹 IPA의 구성원인지 여부입니다.

totalMembers

function totalMembers(address groupId) external view returns (uint256)

그룹 IPA의 총 구성원 수를 검색합니다.

Parameters:

  • groupId: 그룹 IPA의 주소입니다.

Returns:

  • totalMembers: 그룹 IPA의 총 구성원 수입니다.