Components

Infrastructure Components

Router

The Router is the core Glacis component, being part of Glacis infrastructure too, it is deployed on every supported chain.

The main tasks of the Router are:

As source component:

  • Route to the different adapters in solo o multi mode.

  • Perform specific registry tasks to support retry management.

As destination component:

  • Gather messages of the different adapters.

  • Verify if quorum is reached.

  • Check if access control for this request is allowed in destination client.

The Router is implemented as Hub design pattern, this pattern facilitates communication and coordination between multiple components or modules without them needing direct references to each other.

There is one router:

Mediators

Mediators are part of Glacis infrastructure so they are already deployed on every supported chain. They make use of Glacis router and their main task is to provide additional functionality before a message is routed and after a message is received from the router.

For example Glacis Token Mediator is responsible for:

As source component:

  • Burning sender tokens prior to sending the message.

  • Wrap Token payload to original payload

As destination component:

  • Minting receiver tokens in remote chain after receiving a message from a remote GlacisTokenMediator.

  • Unwrap Token payload from received payload

The Mediator pattern in software design serves to manage complex communications and interactions between multiple objects or components in a system. Its primary role is to reduce direct communications between objects, by minimizing direct references between objects, decreasing the coupling among them. This means changes in one object's behavior or interface are less likely to have a ripple effect requiring changes in many other objects.

There is currently one mediator:

Adapters

Adapters are the connector between the different GMP gateways and the router, they offer a unified interface for the different GMP providers, they contain an instance of the adaptee (target GMP interface) and translates the router requests into appropriate calls to the adaptee's methods.

The main tasks of the Adapters are:

As source component:

  • Translate the Glacis Router message into GMP message format.

  • Send the message to GMP

As destination component:

  • Receive the message from GMP

  • Translate the GMP message into Glacis Router message format.

The Adapter design pattern is a structural design pattern that allows objects with incompatible interfaces to work together. It acts as a bridge between two incompatible interfaces, converting the interface of one class into another interface that clients expect. This infrastructure is deployed in every supported chain

There are currently the following adapters:

Client Components

Clients are not part of Glacis infrastructure (they are not previously deployed), they serve as a facilitative boilerplate, simplifying user interaction with Glacis.

By inheriting from Glacis Client contracts, users can access to a set of convenient methods to easily leverage Glacis features.

Clients act like a facade to Glacis. Facade design pattern is a structural design pattern that provides a simplified interface to a complex subsystem or set of interfaces. It aims to provide a unified and simplified interface that hides the complexities of the underlying system, making it easier to use. There are currently two Clients:

Clients can interact with Mediators or Router.

The interactions between the different Glacis components can be seen in the following image:

Last updated