Skip to main content

Smarter Contract

CallObjects' invariants such as frontrun and backrun protection can be enforced through smarter contract.

The SmarterContract is a smart contract designed to provide robust frontrun and backrun protection mechanisms. It leverages the CallBreaker contract to manage and assert the state of calls, ensuring transactions are executed in a secure and intended manner. This guide will walk you through the key functionalities and protections offered by the SmarterContract.

Key Features

  • Frontrun and Backrun Protection: Utilizes unique modifiers to prevent unauthorized frontrunning and backrunning of transactions by the Solver.
  • Future Call Assertions: Ensures that certain calls are only executed in the future, providing a layer of temporal validation to contract interactions.
  • Call Matching: Asserts that the next call or a future call matches a specified CallObject, ensuring the integrity of transaction sequences.

Contract Initialization

To initialize the SmarterContract, you must provide the address of the CallBreaker contract upon deployment. This establishes a link between the SmarterContract and the CallBreaker, enabling the former to utilize the 'time-travel' functionalities to enforce invariants in the call verification flow.

The SmarterContract is designed to interact with the CallBreaker contract to provide advanced protection mechanisms against frontrunning and backrunning, ensuring that transactions are executed in the intended order without interference. By leveraging the functionalities of CallBreaker, SmarterContract offers a secure environment for executing transactions with temporal and sequence integrity.

Usage

To use the SmarterContract, deploy it with the address of the CallBreaker contract. Once deployed, it can enforce various protections on transactions by utilizing its modifiers and functions.

Modifiers

  • ensureTurnerOpen: Ensures that the transaction is executed only when the portal is open.
  • noFrontRun: Prevents frontrunning by ensuring the transaction is the first in the execution list.
  • noBackRun: Prevents backrunning by ensuring the transaction is the last in the execution list.

Functions

  • getCurrentExecutingPair: Returns the currently executing call pair, allowing for assertions on the current state.
  • frontrunBlocker: A function to prevent frontrunning by ensuring the current call is the first in the list.
  • backrunBlocker: A function to prevent backrunning by ensuring the current call is the last in the reverse list.
  • soloExecuteBlocker: Combines both frontrun and backrun blockers to ensure a transaction is executed solo without interference.
  • assertFutureCallTo: Ensures that a specified call is executed in the future, providing temporal validation.
  • assertNextCallTo: Ensures that the next call in the sequence matches a specified call object, maintaining transaction integrity.

Integration with CallBreaker

SmarterContract integrates closely with CallBreaker to utilize its time-travel functionalities for enforcing transaction sequence and timing constraints. This integration allows for sophisticated transaction management and execution strategies, ensuring that transactions are processed securely and as intended.

Conclusion

The SmarterContract provides a robust framework for protecting transactions against frontrunning and backrunning, leveraging the CallBreaker contract's capabilities. It offers a secure and sophisticated environment for executing transactions with enhanced integrity and temporal validation, making it an essential tool for developers looking to safeguard their smart contract interactions.

In the future, users are intended on being able to create their own SmarterContracts. This will allow them to create their own contracts that can be used to enforce their own invariants as extensions of the base SmarterContract.