MerchantRegistry
Source: contracts/peripherals/MerchantRegistry.sol · Guide: settlement · Upgradeable (UUPS proxy)
Functions that change state
Function
Who can call
Also
grantRole(bytes32 role, address account)The role's admin role (
DEFAULT_ADMIN_ROLE unless set otherwise)initialize(address admin, uint32 _defaultPayoutWindow)Once, when the proxy is initialised
registerMerchant(address merchant, uint32 payoutWindow, uint256 approvalCap, uint256 discountBps)onlyRole(OPERATOR_ROLE)renounceRole(bytes32 role, address account)Only the account renouncing its own role
revokeRole(bytes32 role, address account)The role's admin role (
DEFAULT_ADMIN_ROLE unless set otherwise)setActive(address merchant, bool active)onlyRole(OPERATOR_ROLE)setDefaultPayoutWindow(uint32 payoutWindow)onlyRole(OPERATOR_ROLE)updateTerms(address merchant, uint32 payoutWindow, uint256 approvalCap, uint256 discountBps)onlyRole(OPERATOR_ROLE)upgradeTo(address newImplementation)onlyRole(DEFAULT_ADMIN_ROLE) (via _authorizeUpgrade)upgradeToAndCall(address newImplementation, bytes data)onlyRole(DEFAULT_ADMIN_ROLE) (via _authorizeUpgrade)payable
Read functions
Anyone can call these; they change nothing.
Function
Returns
approvalCapOf(address merchant)uint256
DEFAULT_ADMIN_ROLE()bytes32
defaultPayoutWindow()uint32
discountBpsOf(address merchant)uint256
getRoleAdmin(bytes32 role)bytes32
hasRole(bytes32 role, address account)bool
isActive(address merchant)bool
isRegistered(address merchant)bool
merchantAt(uint256 index)address
merchantCount()uint256
OPERATOR_ROLE()bytes32
payoutWindowOf(address merchant)uint32
proxiableUUID()bytes32
supportsInterface(bytes4 interfaceId)bool
termsOf(address merchant)(uint32,uint256,uint256,bool,bool)
Events
Event
AdminChanged(address previousAdmin, address newAdmin)BeaconUpgraded(address beacon indexed)DefaultPayoutWindowUpdated(uint32 payoutWindow)Initialized(uint8 version)MerchantActiveSet(address merchant indexed, bool active)MerchantRegistered(address merchant indexed, uint32 payoutWindow, uint256 discountBps)RoleAdminChanged(bytes32 role indexed, bytes32 previousAdminRole indexed, bytes32 newAdminRole indexed)RoleGranted(bytes32 role indexed, address account indexed, address sender indexed)RoleRevoked(bytes32 role indexed, address account indexed, address sender indexed)TermsUpdated(address merchant indexed, uint32 payoutWindow, uint256 approvalCap, uint256 discountBps)Upgraded(address implementation indexed)Errors
Error
MerchantRegistryAlreadyRegistered(address merchant)MerchantRegistryDiscountTooHigh(uint256 discountBps)MerchantRegistryInvalidAddress()MerchantRegistryUnknown(address merchant)