drive_abci/abci/app/
mod.rs1use crate::error::Error;
2use crate::platform_types::platform::Platform;
3use drive::grovedb::Transaction;
4use std::sync::RwLock;
5
6mod check_tx;
7mod consensus;
8pub mod execution_result;
10mod full;
11
12use crate::execution::types::block_execution_context::BlockExecutionContext;
13use crate::rpc::core::DefaultCoreRPC;
14pub use check_tx::CheckTxAbciApplication;
15pub use consensus::ConsensusAbciApplication;
16use dpp::version::PlatformVersion;
17pub use full::FullAbciApplication;
18
19pub trait PlatformApplication<C = DefaultCoreRPC> {
21 fn platform(&self) -> &Platform<C>;
23}
24
25pub trait TransactionalApplication<'a> {
27 fn start_transaction(&self);
29
30 fn transaction(&self) -> &RwLock<Option<Transaction<'a>>>;
32
33 fn commit_transaction(&self, platform_version: &PlatformVersion) -> Result<(), Error>;
35}
36
37pub trait BlockExecutionApplication {
39 fn block_execution_context(&self) -> &RwLock<Option<BlockExecutionContext>>;
41}