47 releases
0.1.20 | Oct 30, 2024 |
---|---|
0.1.9 | Sep 30, 2024 |
0.1.7-beta.2 | Jul 17, 2024 |
0.1.4 | Mar 31, 2024 |
0.0.24 | Nov 26, 2023 |
#2 in #novax
1,157 downloads per month
Used in 5 crates
(2 directly)
275KB
5.5K
SLoC
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
andQueryNetworkExecutor
: Implementations for executing queries on the blockchain.NetworkExecutor
andBaseTransactionNetworkExecutor
: 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 ofMockExecutor
providing standard mocking behaviors.
-
Dummy Framework:
DummyExecutor
,DummyTransactionExecutor
, andDummyDeployExecutor
: Implementations to assist in testing and development without actual blockchain interaction.
-
Utility Types and Traits:
SendableTransaction
andSendableTransactionConvertible
: 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 theasync-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.
Dependencies
~20–31MB
~511K SLoC