List of Permissions & Roles
| All ABIs listed here are for Mainnet chains. | 
Non-grantable permissions
The following methods are non-grantable permissions assigned and only allowed only by the SKALE Chain owner, and are not changeable. Notice that these all apply to Ethereum-side contract methods.
IMA Mainnet
- 
DepositBox*.enableWhitelist() 
- 
DepositBox*.disableWhitelist() 
- 
DepositBox*.getFunds() 
- 
DepositBoxERC*.addERC*TokenByOwner() 
- 
DepositBoxEth.enableActiveEthTransfers() 
- 
DepositBoxEth.disableActiveEthTransfers() 
- 
MessageProxyForMainnet.registerExtraContract() 
- 
MessageProxyForMainnet.removeExtraContract() 
- 
Linker.kill() 
Grantable permissions
The following methods are grantable permissions and are changeable. Notice that these all apply to SKALE Chain-side contract methods and use OpenZeppelin’s AccessControlEnumerable framework.
All roles below are granted to Marionette at chain deployment(0xD2c0DeFACe000000000000000000000000000000).
Config Controller
- 
Address: 0xD2002000000000000000000000000000000000d2
- 
DEPLOYER_ADMIN_ROLE (hash: 9544cf69999ca161b850d3ca69235f410d88604f143ae3be6650b68b133a5dae)Changing this setting may introduce security risks. Suggested to use temporarily only. - 
enableFreeContractDeployment(), funcSig: 0x56436fb7- enable any msg.sender to deploy contracts
- 
disableFreeContractDeployment(), funcSig: 0x84f0b791
 
- 
- 
MTM_ADMIN_ROLE (hash: 4a674ad8ca91697aae9afc0f1850245e64feae02b627092a64943ed941e4d09f)- 
enableMTM(), funcSig: 0x3367905e- enable multi-transaction mode (speedy game mode)
- 
disableMTM(), funcSig: 0x0acba068
 
- 
- 
DEPLOYER_ROLE (hash: fc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c)- 
addToWhitelist(address), funcSig: 0xe43252d7- add an address to list that can deploy contracts
- 
removeFromWhitelist(address), funcSig: 0x8ab1d681Execution from Ethereum Run npx msig encodeData my-schain-name ConfigController addToWhitelist 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6Result payload for SAFE: 0x94489202b09dd40ba18009e4102e7c94986bf5052ed8e02c49570ecce386e3d11c358968000000000000000000000000d2c0deface000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000d2002000000000000000000000000000000000d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024e43252d7000000000000000000000000DBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD600000000000000000000000000000000000000000000000000000000Execution from SKALE Run npx msig encodeDataWithoutIMA ConfigController addToWhitelist 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6Result payload for Marionette execute(): 0xe43252d7000000000000000000000000DBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6
 
- 
Etherbase
- 
Address: 0xd2bA3e0000000000000000000000000000000000
- 
ETHER_MANAGER_ROLE (hash: e0ba7b49edc651b7ad93b374c67f1e9a0d37370168bbb86b81c569ebfa15f046)Assigned to MessageProxyForSchain Do not revoke this role from MessageProxyForSchain otherwise IMA will eventually stop working. - 
retrieve(address), funcSig: 0x0a79309b- retrieve entire sFUEL balance from Etherbase.
- 
partiallyRetrieve(address, amount), funcSig: 0x204a3e93- retrieve amount of sFUEL from Etherbase.
 partiallyRetrieve amount 1000000000000000000- 1 sFUEL1000000000000000- 0.001 sFUEL1000000000000- 0.000001 sFUEL
- 
Filestorage
- 
Address: 0xD3002000000000000000000000000000000000d3
- 
ABI: https://github.com/skalenetwork/filestorage/releases/download/1.0.1/filestorage-1.0.1-abi.json 
- 
ALLOCATOR_ROLE (hash: 68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46)- 
grantRole(role, address), funcSig: 0x2f2ff15d- grant ALLOCATOR_ROLE to address
- 
revokeRole(role, address), funcSig: 0xd547741fExecution from Ethereum Run npx msig encodeData my-schain-name FileStorage grantRole 0x68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6Result payload for SAFE: 0x94489202000000c136f5b174aac12f99ff18757a16a9b7d429d2c1d2f4cd77d52f4a564b000000000000000000000000d2c0deface000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000d3002000000000000000000000000000000000d30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46000000000000000000000000dbc05b1ecb4fdaef943819c0b04e9ef6df4babd600000000000000000000000000000000000000000000000000000000Execution from SKALE Run npx msig encodeDataWithoutIMA FileStorage grantRole 0x68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6Result payload for Marionette execute(): 0x2f2ff15d68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46000000000000000000000000dbc05b1ecb4fdaef943819c0b04e9ef6df4babd6
 
- 
| Not assigned at deployment ** reserveSpace() - allocate filestorage space to an address. | 
Marionette
- 
Address: 0xD2c0DeFACe000000000000000000000000000000
- 
IMA_ROLE (hash: 18f7915ceb1a15dd0c3170ef6d30ba89e0bcb07f4fb55858579385663709107e)Assigned to MessageProxyForSchain - 
postMessage() - receives message from msg.sender ( IMA_ROLE)
 
- 
- 
PUPPETEER_ROLE (hash: dbe8b307f60c9ed0e3764e9100b17f1d4c5fd58ba7889d208d166f481302d4cf)Assigned to Ethereum SKALE Owner (Gnosis SAFE), and to SKALE Chain predeployed multisigwallet( 0xD244519000000000000000000000000000000000)- 
execute() - executes data on destination contract. 
- 
postMessage() - receives message from sender ( PUPPETEER_ROLE)
- 
sendEth() - sends sFUEL from Marionette contract. 
 
- 
IMA SKALE Chain
| The following roles are not assigned at deployment. | 
- 
ABIs: https://github.com/skalenetwork/skale-network/tree/master/releases/mainnet/IMA/1.3.0/schain 
- 
AUTOMATIC_DEPLOY_ROLE (hash: 7164765a3c8bd2513bdfa0c90f1bee9606e920fbf2c9071f310263fbd818684b)enabling this is not recommended as it may introduce incorrect behaviors and is not compatible with all tokens. - 
TokenManagerERC*.enableAutomaticDeploy() - enable automatic deployment. 
- 
TokenManagerERC*.disableAutomaticDeploy() 
 
- 
- 
CHAIN_CONNECTOR_ROLE (hash: 2785f35fe7d8743aa971942d8474737bb31895d396eff2cc688a481e0221e191)This is for custom messaging. For general SKALE to SKALE chain transfers, see REGISTRAR_ROLEbelow.- 
MessageProxyForSchain.addConnectedChain() - add a chain for custom messages. 
- 
MessageProxyForSchain.removeConnectedChain() 
 
- 
- 
CONSTANT_SETTER_ROLE (hash: 96e3fc3be15159903e053027cff8a23f39a990e0194abcd8ac1cf1b355b8b93c)- 
CommunityLocker.setTimeLimitPerMessage() - change the required time between exit messages. 
- 
MessageProxyForSchain.setNewGasLimit() - change the gas limit for Message Proxy. 
 
- 
- 
EXTRA_CONTRACT_REGISTRAR_ROLE (hash: 6155b5aac15ce9aa193c0527a6f43be0a36a7e2e7496c2b615c0e5f922842773)- 
MessageProxyForSchain.registerExtraContract() - register a contract for sending Messages. 
- 
MessageProxyForSchain.removeExtraContract() 
 
- 
- 
REGISTRAR_ROLE (hash: edcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c309238)- 
TokenManagerLinker.registerTokenManager() - register a token manager contract. 
- 
TokenManagerLinker.removeTokenManager() 
- 
TokenManagerLinker.connectSchain() - connect a chain for S2S transfers. 
- 
TokenManagerLinker.disconnectSchain() 
 
- 
- 
TOKEN_REGISTRAR_ROLE (hash: fda70c2cc66a36c14884ee85424961f51b1d92b4494751699b6d105b3bcbcba8)- 
TokenManagerERC*.addERC*TokenByOwner(), funcSigs: 0xeafd15c8- add an ERC token mapping.
 
- 
| Execution from Ethereum Run  Result payload for SAFE:
 Execution from SKALE Run  Result payload for Marionette execute():  |