ProtocolTokenAuthorityallows governance to specify which addresses are allowed to
burnprotocol tokens. This is done by either setting an address as the
rootof the contract, the
ownerof the contract or by whitelisting an address in the
root- contract's root controlling address.
owner- the second most powerful address controlling the contract. It cannot set the
rootbut it can set another
authorizedAccounts[account: address]- mapping of addresses that are allowed to print protocol tokens.
isRootCalling- modifier checking if the
isRootOrOwnerCalling- modifier checking if the
setRoot(usr: address)- sets a new root
setOwner(usr: address)- sets a new owner
addAuthorization(usr: address)- authorize a new address to print tokens
removeAuthorization(usr: address)- de-authorize an address from printing tokens
canCall(src: address, address, sig: bytes4)- checks whether an address can call
burnFrominside the protocol token
rootare the ones who pass the
canCallcheck and thus, are able
ownercan add or remove authorized addresses.
ownercannot set a new
rootbut can only change the
roothas complete power and can change both the