Crate novax_executor

source ·
Expand description

novax-executor is a crate designed to facilitate the interaction between your Rust application and a blockchain network. Its main purpose is to be used by other “novax” crates like “novax”, however, it’s designed in a way that developers can also use it for mocking purposes during testing. It abstracts the complexities involved in querying the blockchain, executing transactions, and deploying smart contracts, thereby providing a streamlined interface for developers.

The crate offers several core abstractions and implementations to interact with a blockchain:

  • Executor Abstractions:

    • QueryExecutor: An asynchronous trait for executing queries on the blockchain.
    • TransactionExecutor: An asynchronous trait for executing transactions on the blockchain.
    • DeployExecutor: An asynchronous trait for deploying smart contracts on the blockchain.
  • Network Interaction:

    • BlockchainInteractor: A trait abstracting over a blockchain interactor to allow mocking.
    • BlockchainProxy: A trait abstracting the communication proxy to allow mocking, providing methods to interact with the blockchain gateway.
    • ProxyQueryExecutor and QueryNetworkExecutor: Implementations for executing queries on the blockchain.
    • NetworkExecutor and BaseTransactionNetworkExecutor: Implementations for executing transactions on the blockchain.
  • Mocking Framework:

    • MockExecutor: A structure to help mock blockchain interactions during testing using the MultiversX Rust Testing Framework.
    • StandardMockExecutor: An extension of MockExecutor providing standard mocking behaviors.
  • Dummy Framework:

    • DummyExecutor, DummyTransactionExecutor, and DummyDeployExecutor: Implementations to assist in testing and development without actual blockchain interaction.
  • Utility Types and Traits:

    • SendableTransaction and SendableTransactionConvertible: Utility types and traits to facilitate transaction handling.
  • Error Handling:

    • ExecutorError: A comprehensive enumeration of errors that could occur during blockchain interaction, encompassing data errors, network query errors, and mock deploy errors.

The abstraction layers provided by this crate are designed to make it easy to implement mock or dummy executors, allowing for thorough testing and development without requiring a live blockchain network. This is especially helpful in early stages of development or in testing scenarios where the blockchain’s state or behavior needs to be controlled precisely.

The architecture also allows for the easy extension of the executor framework to support additional blockchain networks or custom interaction patterns.

§Features

  • async-trait: This crate uses the async-trait crate to allow for async trait methods, enabling asynchronous blockchain interaction.

§Error Handling

Error handling in novax-executor is comprehensive and designed to cover a range of issues that might arise while interacting with the blockchain. See ExecutorError, NetworkQueryError, and MockDeployError for more details.

Modules§

Structs§

Enums§

  • An enumeration representing the various types of errors that can be encountered within the executor context.
  • An enumeration representing various types of errors that can occur during interactions with the MultiversX gateway.
  • An enumeration representing the various errors that can occur when deploying through the MockExecutor.
  • An enumeration representing the various errors that can occur during network query operations.
  • An enumeration representing errors that can occur during the simulation of transactions or contract executions. These errors are specific to the logic or processing of the transaction/contract, rather than network communication or data formatting issues.

Traits§

Type Aliases§

  • A type alias for DummyExecutor handling SendableTransaction.
  • A type alias for DummyExecutor handling SendableTransaction.
  • Alias for the BaseTransactionNetworkExecutor struct, parameterized with the Interactor type.
  • A convenient type alias for QueryNetworkExecutor with NetworkBlockchainProxy as the generic type. This is the privileged query executor for network interaction.
  • Type alias for GatewayResponse specialized for simulation responses. It encapsulates the data specific to the simulation of blockchain transactions.
  • Type alias for BaseSimulationNetworkExecutor with the String type as the generic Client.
  • A convenient type alias for MockExecutor with String as the generic type.