Open fubuloubu opened 4 days ago
Allowlist.vy:
Allowlist.vy
owner: public(address) is_allowed: public(HashMap[address, bool]) event Allowed: user: indexed(address) event Denied: user: indexed(address) @deploy def __init__(allowed: DynArray[address, 100]): self.owner = msg.sender for user in allowed: self.is_allowed[user] = True log Allowed(user) @external def allow(allowed: DynArray[address, 100]): assert msg.sender == self.owner for user in allowed: self.is_allowed[user] = True log Allowed(user) @external def deny(denied: DynArray[address, 100]): assert msg.sender == self.owner for user in denied: self.is_allowed[user] = False log Denied(user) @external def validate(creator: address, ...): assert self.is_allowed[creator] return MAX_UINT256
Denylist.vy:
Denylist.vy
from .. import StreamManager owner: public(address) is_denied: public(HashMap[address, bool]) event Allowed: user: indexed(address) event Denied: user: indexed(address) @deploy def __init__(denied: DynArray[address, 100]): self.owner = msg.sender for user in allowed: self.is_denied[user] = True log Allowed(user) @external def allow(allowed: DynArray[address, 100]): assert msg.sender == self.owner for user in allowed: self.is_denied[user] = False log Allowed(user) @external def deny(denied: DynArray[address, 100]): assert msg.sender == self.owner for user in denied: self.is_denied[user] = True log Denied(user) @external def cancel_stream(manager: StreamManager, creator: address, stream_id: uint256): # NOTE: Batch-able via Multicall3 assert self.is_denied[creator] manager.cancel_stream(creator, stream_id) @external def validate(creator: address, ...): assert not self.is_denied[creator] return MAX_UINT256
SBK-541 Allowlist and Denylist example validators
Allowlist.vy
:Denylist.vy
: