ModuleRegistry 계약은 Story 생태계 내에서 모듈을 등록하고 추적하는 데 사용됩니다. 이는 모든 프로토콜 모듈의 중앙 레지스트리 역할을 하여 다양한 모듈 유형과 구현의 쉬운 발견과 관리를 가능하게 합니다.
ModuleRegistry의 저장소 구조는 다음을 포함합니다:
modules
: 모듈 이름을 해당 주소에 매핑moduleTypes
: 모듈 주소를 해당 유형에 매핑allModuleTypes
: 모듈 유형을 해당 인터페이스 ID에 매핑ModuleRegistry 저장소 구조의 저장 위치로, ERC-7201의 네임스페이스 저장 패턴을 따릅니다.
ModuleRegistry 계약을 초기화합니다.
Parameters:
accessManager
: 거버넌스 계약의 주소.레지스트리에 인터페이스와 연관된 새로운 모듈 유형을 등록합니다.
Parameters:
name
: 등록할 모듈 유형의 이름.interfaceId
: 모듈 유형과 연관된 인터페이스 ID.레지스트리에서 모듈 유형을 제거합니다.
Parameters:
name
: 제거할 모듈 유형의 이름.기본 모듈 유형으로 레지스트리에 새 모듈을 등록합니다.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.특정 모듈 유형으로 레지스트리에 새 모듈을 등록합니다.
Parameters:
name
: 등록할 모듈의 이름.moduleAddress
: 모듈의 주소.moduleType
: 등록되는 모듈의 유형.레지스트리에서 모듈을 제거합니다.
Parameters:
name
: 제거할 모듈의 이름.모듈이 프로토콜에 등록되어 있는지 확인합니다.
Parameters:
moduleAddress
: 모듈의 주소.Returns:
bool
: 모듈이 등록되어 있으면 true, 그렇지 않으면 false.모듈의 주소를 반환합니다.
Parameters:
name
: 모듈의 이름.Returns:
address
: 모듈의 주소.주어진 모듈 주소의 모듈 유형을 반환합니다.
Parameters:
moduleAddress
: 모듈의 주소.Returns:
string
: 문자열로 된 모듈의 유형.주어진 모듈 유형과 연관된 인터페이스 ID를 반환합니다.
Parameters:
moduleType
: 문자열로 된 모듈의 유형.Returns:
bytes4
: 모듈 유형의 인터페이스 ID.레지스트리에 새 모듈을 등록하는 내부 함수.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.moduleType
: 등록되는 모듈의 유형.ModuleRegistry의 저장소 구조체를 반환합니다.
Returns:
ModuleRegistryStorage
: ModuleRegistry의 저장소 구조.UUPSUpgradeable에 따라 업그레이드를 승인하는 훅.
Parameters:
newImplementation
: 새 구현의 주소.새 모듈이 레지스트리에 추가될 때 발생하는 이벤트.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.moduleTypeInterfaceId
: 모듈 유형의 인터페이스 ID.moduleType
: 모듈의 유형.모듈이 레지스트리에서 제거될 때 발생하는 이벤트.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.ModuleRegistry 계약은 여러 보안 조치를 구현합니다:
접근 제어: 대부분의 함수는 restricted
수정자를 통해 프로토콜 관리자만 호출할 수 있도록 제한됩니다.
입력 유효성 검사: 계약은 모든 입력이 필요한 기준을 충족하는지 확인하기 위해 유효성을 검사합니다:
중복 방지: 계약은 중복 등록을 방지합니다:
업그레이드 가능성: 계약은 UUPS 패턴을 사용하여 업그레이드 가능하며, 업그레이드 권한은 프로토콜 관리자로 제한됩니다.
ModuleRegistry 계약은 Story 생태계 내에서 모듈을 등록하고 추적하는 데 사용됩니다. 이는 모든 프로토콜 모듈의 중앙 레지스트리 역할을 하여 다양한 모듈 유형과 구현의 쉬운 발견과 관리를 가능하게 합니다.
ModuleRegistry의 저장소 구조는 다음을 포함합니다:
modules
: 모듈 이름을 해당 주소에 매핑moduleTypes
: 모듈 주소를 해당 유형에 매핑allModuleTypes
: 모듈 유형을 해당 인터페이스 ID에 매핑ModuleRegistry 저장소 구조의 저장 위치로, ERC-7201의 네임스페이스 저장 패턴을 따릅니다.
ModuleRegistry 계약을 초기화합니다.
Parameters:
accessManager
: 거버넌스 계약의 주소.레지스트리에 인터페이스와 연관된 새로운 모듈 유형을 등록합니다.
Parameters:
name
: 등록할 모듈 유형의 이름.interfaceId
: 모듈 유형과 연관된 인터페이스 ID.레지스트리에서 모듈 유형을 제거합니다.
Parameters:
name
: 제거할 모듈 유형의 이름.기본 모듈 유형으로 레지스트리에 새 모듈을 등록합니다.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.특정 모듈 유형으로 레지스트리에 새 모듈을 등록합니다.
Parameters:
name
: 등록할 모듈의 이름.moduleAddress
: 모듈의 주소.moduleType
: 등록되는 모듈의 유형.레지스트리에서 모듈을 제거합니다.
Parameters:
name
: 제거할 모듈의 이름.모듈이 프로토콜에 등록되어 있는지 확인합니다.
Parameters:
moduleAddress
: 모듈의 주소.Returns:
bool
: 모듈이 등록되어 있으면 true, 그렇지 않으면 false.모듈의 주소를 반환합니다.
Parameters:
name
: 모듈의 이름.Returns:
address
: 모듈의 주소.주어진 모듈 주소의 모듈 유형을 반환합니다.
Parameters:
moduleAddress
: 모듈의 주소.Returns:
string
: 문자열로 된 모듈의 유형.주어진 모듈 유형과 연관된 인터페이스 ID를 반환합니다.
Parameters:
moduleType
: 문자열로 된 모듈의 유형.Returns:
bytes4
: 모듈 유형의 인터페이스 ID.레지스트리에 새 모듈을 등록하는 내부 함수.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.moduleType
: 등록되는 모듈의 유형.ModuleRegistry의 저장소 구조체를 반환합니다.
Returns:
ModuleRegistryStorage
: ModuleRegistry의 저장소 구조.UUPSUpgradeable에 따라 업그레이드를 승인하는 훅.
Parameters:
newImplementation
: 새 구현의 주소.새 모듈이 레지스트리에 추가될 때 발생하는 이벤트.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.moduleTypeInterfaceId
: 모듈 유형의 인터페이스 ID.moduleType
: 모듈의 유형.모듈이 레지스트리에서 제거될 때 발생하는 이벤트.
Parameters:
name
: 모듈의 이름.moduleAddress
: 모듈의 주소.ModuleRegistry 계약은 여러 보안 조치를 구현합니다:
접근 제어: 대부분의 함수는 restricted
수정자를 통해 프로토콜 관리자만 호출할 수 있도록 제한됩니다.
입력 유효성 검사: 계약은 모든 입력이 필요한 기준을 충족하는지 확인하기 위해 유효성을 검사합니다:
중복 방지: 계약은 중복 등록을 방지합니다:
업그레이드 가능성: 계약은 UUPS 패턴을 사용하여 업그레이드 가능하며, 업그레이드 권한은 프로토콜 관리자로 제한됩니다.