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:
0x8ab1d681
Execution from Ethereum
Run
npx msig encodeData my-schain-name ConfigController addToWhitelist 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6
Result payload for SAFE:
0x94489202b09dd40ba18009e4102e7c94986bf5052ed8e02c49570ecce386e3d11c358968000000000000000000000000d2c0deface000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000d2002000000000000000000000000000000000d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024e43252d7000000000000000000000000DBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD600000000000000000000000000000000000000000000000000000000
Execution from SKALE
Run
npx msig encodeDataWithoutIMA ConfigController addToWhitelist 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6
Result 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:
0xd547741f
Execution from Ethereum
Run
npx msig encodeData my-schain-name FileStorage grantRole 0x68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6
Result payload for SAFE:
0x94489202000000c136f5b174aac12f99ff18757a16a9b7d429d2c1d2f4cd77d52f4a564b000000000000000000000000d2c0deface000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000d3002000000000000000000000000000000000d30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46000000000000000000000000dbc05b1ecb4fdaef943819c0b04e9ef6df4babd600000000000000000000000000000000000000000000000000000000
Execution from SKALE
Run
npx msig encodeDataWithoutIMA FileStorage grantRole 0x68bf109b95a5c15fb2bb99041323c27d15f8675e11bf7420a1cd6ad64c394f46 0xDBC05B1ECB4FDAEF943819C0B04E9EF6DF4BABD6
Result 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_ROLE
below.-
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(): |