Skip to main content

Ownership

We strongly believe that contracts should be immutable, non-upgradable, upgrades should be opt-in by clients. We have clear roles on the contract and plans on how to remove them. All roles are listed in the AccessRoles.sol contract

Here are some of the roles and the purpose:

  • RESCUE_ROLE: It's only used to rescue funds if stuck in a contract which isnt supposed to hold funds. This is just a safety role to allow us to give back people their ERC20s or ETHER that they might have accidentally sent.
  • WITHDRAW_ROLE: We haven't built a permissionless way to execute fee distribution via TransmitManager, ExecutionManager and Switchboard yet, hence we have this special role to allow us to withdraw and distribute the fees. This role will deprecate once the fee distribution logic is on-chain. This does not impact the security implications for the end user and only affects the off-chain agents.
  • EXECUTOR_ROLE: This role whitelists addresses to allow them to execute messages post permissionless validation by the switchboard. This role is currently permissioned to prevent users from harmful effects of REV. This role holds no security implications.
  • TRANSMITTER_ROLE: This role is not part of Socket protocol. This role is used by TransmitManager to grant approval to a particular transmitter to seal and propose packets. TransmitterManager is a modular contract.
  • GOVERNANCE_ROLE: This one is an interesting one. The role is minimally used by intention. This role CANNOT UPDATE the security properties of a message and or modify user preferences. This role is minimally used in the core-contracts to update the TransmitManager and ExecutionManager modules, both of which cannot harm the end developer and in the worst case just pause the protocol as the current TransmitManager and ExecutionManager modules are implemented. Apart from the core-contracts, the GOVERNANCE_ROLE can be utilised with a different setting in the switchboards but switchboards are permissionless already and developers can remove or update the usage of the role according to their preferences.
  • TRIP_ROLE: This role allows holder to trip or pause a Switchboard, in case of smart contract bugs on a specific Switchboard
  • UN_TRIP_ROLE: This role allows holder to untrip or unpause a Switchboard
  • WATCHER_ROLE: Role assigned to Switchboard watchers. Watchers play different a different role depending on the Switchboard used. For example, in Optimistic Switchboards, Watchers can trip a specific path/packet if any fraud was detected.
  • FEES_UPDATER_ROLE: Role assigned to off-chain agents that update gas fees for each siblingChain on a given switchboard, TransmitManager and ExecutionManager