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;
14#[cfg(test)]
15pub(crate) use check_tx::error_into_status;
16pub use check_tx::CheckTxAbciApplication;
17pub use consensus::ConsensusAbciApplication;
18use dpp::version::PlatformVersion;
19pub use full::FullAbciApplication;
20
21pub trait PlatformApplication<C = DefaultCoreRPC> {
23 fn platform(&self) -> &Platform<C>;
25}
26
27pub trait TransactionalApplication<'a> {
29 fn start_transaction(&self);
31
32 fn transaction(&self) -> &RwLock<Option<Transaction<'a>>>;
34
35 fn commit_transaction(&self, platform_version: &PlatformVersion) -> Result<(), Error>;
37}
38
39pub trait BlockExecutionApplication {
41 fn block_execution_context(&self) -> &RwLock<Option<BlockExecutionContext>>;
43}