diff --git a/standards/core/rln-contract.md b/standards/core/rln-contract.md index 54fbb8b..fa5203d 100644 --- a/standards/core/rln-contract.md +++ b/standards/core/rln-contract.md @@ -45,7 +45,12 @@ The contract MUST provide the following functionalities: - withdraw a deposit. A membership _holder_ is the entity that controls the secret associated with the respective RLN commitment. -A membership _keeper_ is the entity that controls the Ethereum address used to register that membership. +A membership _keeper_ is the sender of the transaction that registered that membership. +Transaction sender in this context is defined as `msg.sender` in Solidity semantics. +The contract MUST support transactions sent from externally-owned accounts (EOA). +The contract MAY also support meta-transactions sent via paymasters or relayers, +which MAY require additional authentication-related logic. + The holder and the keeper MAY be different entities for the same membership. When authorizing membership-related requests, the contract SHOULD distinguish between the keeper and non-keepers,