Security Model

Given the context where bridges have been the focus of numerous attacks throughout 2022 and 2023, emphasizing security within the Glacis infrastructure is paramount.

As a response to these security challenges, every Smart Contract function within Glacis has undergone rigorous access control measures. These measures are designed to tightly restrict access to each function, ensuring that only the specifically designated and authorized component can interact with it.

This security-first philosophy reflects an understanding of the critical importance of trust and reliability in the blockchain ecosystem, where any breach can have far-reaching consequences.

To enforce Solidity best practices security policies, the following modifiers have been implemented:

  • onlyAuthorizedAdapter: Verifies that the source address of a request is an authorized component (the address is in the authorizedRemoteAddresses list for the source chain)

    modifier onlyAuthorizedRemoteAddress(uint256 sourceChainId, address sourceAddress) {
        if (
            sourceChainId == 0 ||
            remoteCounterpart[chainId] == address(0) ||
            sourceAddress != remoteCounterpart[chainId]
        ) {
            revert GlacisAbstractAdapter__OnlyAdapterAllowed();
  • onlyGlacisRouter: Verifies that the sender of the request to an Adapter send function is always GlacisRouter

    modifier onlyGlacisRouter() {
        if (msg.sender != address(GLACIS_ROUTER))
            revert GlacisAbstractAdapter__OnlyGlacisRouterAllowed();
  • onlyAdapter: Verifies that the sender of the request to a GlacisRouter receive function is one of the registered GMP adapters

    modifier onlyAdapter() {
        if (adapterToGlacisGMPId[msg.sender] == 0)
            revert GlacisAbstractRouter__OnlyAdaptersAllowed();

This diagram serves as a comprehensive visual guide illustrating the various layers and mechanisms of security restrictions implemented within the Glacis protocol:

Last updated