AllowlistV1

Kiln

Allowlist (v1)

This contract handles the list of allowed recipients.All accounts have an uint256 value associated with their addresses whereeach bit represents a right in the system. The DENY_MASK defined the maskused to identify if the denied bit is on, preventing users from interactingwith the system

Methods

acceptAdmin

function acceptAdmin() external nonpayable

Accept the transfer of ownership

Only callable by the pending admin. Resets the pending admin if succesful.

allow

function allow(address[] _accounts, uint256[] _permissions) external nonpayable

Sets the allowlisting status for one or more accounts

The permission value is overridden and not updated

Parameters

NameTypeDescription

_accounts

address[]

Accounts with statuses to edit

_permissions

uint256[]

Allowlist permissions for each account, in the same order as _accounts

getAdmin

function getAdmin() external view returns (address)

Retrieves the current admin address

Returns

NameTypeDescription

_0

address

The admin address

getAllower

function getAllower() external view returns (address)

Retrieves the allower address

Returns

NameTypeDescription

_0

address

The address of the allower

getPendingAdmin

function getPendingAdmin() external view returns (address)

Retrieve the current pending admin address

Returns

NameTypeDescription

_0

address

The pending admin address

getPermissions

function getPermissions(address _account) external view returns (uint256)

This method retrieves the raw permission value

Parameters

NameTypeDescription

_account

address

Recipient to verify

Returns

NameTypeDescription

_0

uint256

The raw permissions value of the account

hasPermission

function hasPermission(address _account, uint256 _mask) external view returns (bool)

This method returns true if the user has the expected permission ignoring any deny list membership

Parameters

NameTypeDescription

_account

address

Recipient to verify

_mask

uint256

Combination of permissions to verify

Returns

NameTypeDescription

_0

bool

True if mask is respected

initAllowlistV1

function initAllowlistV1(address _admin, address _allower) external nonpayable

Initializes the allowlist

Parameters

NameTypeDescription

_admin

address

Address of the Allowlist administrator

_allower

address

Address of the allower

isAllowed

function isAllowed(address _account, uint256 _mask) external view returns (bool)

This method returns true if the user has the expected permission and is not in the deny list

Parameters

NameTypeDescription

_account

address

Recipient to verify

_mask

uint256

Combination of permissions to verify

Returns

NameTypeDescription

_0

bool

True if mask is respected and user is allowed

isDenied

function isDenied(address _account) external view returns (bool)

This method returns true if the user is in the deny list

Parameters

NameTypeDescription

_account

address

Recipient to verify

Returns

NameTypeDescription

_0

bool

True if user is denied access

onlyAllowed

function onlyAllowed(address _account, uint256 _mask) external view

This method should be used as a modifier and is expected to revert if the user hasn't got the required permission or if the user is in the deny list.

Parameters

NameTypeDescription

_account

address

Recipient to verify

_mask

uint256

Combination of permissions to verify

proposeAdmin

function proposeAdmin(address _newAdmin) external nonpayable

Proposes a new address as admin

This security prevents setting an invalid address as an admin. The pendingadmin has to claim its ownership of the contract, and prove that the newaddress is able to perform regular transactions.

Parameters

NameTypeDescription

_newAdmin

address

New admin address

setAllower

function setAllower(address _newAllowerAddress) external nonpayable

Changes the allower address

Parameters

NameTypeDescription

_newAllowerAddress

address

New address allowed to edit the allowlist

Events

Initialize

event Initialize(uint256 version, bytes cdata)

Emitted when the contract is properly initialized

Parameters

NameTypeDescription

version

uint256

undefined

cdata

bytes

undefined

SetAdmin

event SetAdmin(address indexed admin)

The admin address changed

Parameters

NameTypeDescription

admin indexed

address

undefined

SetAllower

event SetAllower(address indexed allower)

The stored allower address has been changed

Parameters

NameTypeDescription

allower indexed

address

undefined

SetAllowlistPermissions

event SetAllowlistPermissions(address[] accounts, uint256[] permissions)

The permissions of several accounts have changed

Parameters

NameTypeDescription

accounts

address[]

undefined

permissions

uint256[]

undefined

SetPendingAdmin

event SetPendingAdmin(address indexed pendingAdmin)

The pending admin address changed

Parameters

NameTypeDescription

pendingAdmin indexed

address

undefined

Errors

Denied

error Denied(address _account)

The account is denied access

Parameters

NameTypeDescription

_account

address

The denied account

InvalidAlloweeCount

error InvalidAlloweeCount()

The provided accounts list is empty

InvalidInitialization

error InvalidInitialization(uint256 version, uint256 expectedVersion)

An error occured during the initialization

Parameters

NameTypeDescription

version

uint256

The version that was attempting to be initialized

expectedVersion

uint256

The version that was expected

InvalidZeroAddress

error InvalidZeroAddress()

The address is zero

MismatchedAlloweeAndStatusCount

error MismatchedAlloweeAndStatusCount()

The provided accounts and permissions list have different lengths

Unauthorized

error Unauthorized(address caller)

The operator is unauthorized for the caller

Parameters

NameTypeDescription

caller

address

Address performing the call

Last updated