20 const std::vector<uint8_t>& data,
27 std::optional<ccf::crypto::Sha256Hash>& commit_evidence_digest,
28 bool ignore_strict_versions =
false) = 0;
36 bool track_deletes_on_missing_keys) = 0;
43 std::shared_ptr<TxHistory> history;
44 const std::vector<uint8_t> data;
52 std::optional<ccf::crypto::Sha256Hash> commit_evidence_digest = {};
54 const std::optional<TxID> expected_txid;
59 std::shared_ptr<TxHistory> history_,
60 const std::vector<uint8_t>& data_,
62 const std::optional<TxID>& expected_txid_) :
66 public_only(public_only_),
67 expected_txid(expected_txid_)
72 return std::move(claims_digest);
78 return std::move(commit_evidence_digest);
91 commit_evidence_digest,
97 if (expected_txid.has_value())
99 if (term != expected_txid->term || version != expected_txid->version)
102 "TxID mismatch during deserialisation. Expected {}.{}, got {}.{}",
104 expected_txid->version,
117 track_deletes_on_missing_keys))
123 auto search = changes.find(ccf::Tables::SIGNATURES);
124 if (search != changes.end())
126 bool has_cose =
false;
128 switch (changes.size())
132 changes.find(ccf::Tables::SERIALISED_MERKLE_TREE) !=
139 changes.find(ccf::Tables::SERIALISED_MERKLE_TREE) !=
141 changes.find(ccf::Tables::COSE_SIGNATURES) != changes.end())
148 "Unexpected contents in signature transaction {}", version);
154 if (!history->verify_root_signatures(has_cose))
158 "Signature in transaction {} failed to verify", version);
165 search = changes.find(ccf::Tables::ENCRYPTED_PAST_LEDGER_SECRET);
166 if (search != changes.end())
173 history->append_entry(
174 ccf::entry_leaf(data, commit_evidence_digest, claims_digest));
Definition claims_digest.h:10
Definition kv_types.h:645
Definition deserialise.h:40
std::optional< ccf::crypto::Sha256Hash > && consume_commit_evidence_digest() override
Definition deserialise.h:75
ccf::kv::ConsensusHookPtrs & get_hooks() override
Definition deserialise.h:179
const std::vector< uint8_t > & get_entry() override
Definition deserialise.h:184
bool support_async_execution() override
Definition deserialise.h:199
ccf::kv::Version get_index() override
Definition deserialise.h:194
bool is_public_only() override
Definition deserialise.h:204
ApplyResult apply(bool track_deletes_on_missing_keys) override
Definition deserialise.h:81
Term get_term() override
Definition deserialise.h:189
bool should_rollback_to_last_committed() override
Definition deserialise.h:209
CFTExecutionWrapper(ExecutionWrapperStore *store_, std::shared_ptr< TxHistory > history_, const std::vector< uint8_t > &data_, bool public_only_, const std::optional< TxID > &expected_txid_)
Definition deserialise.h:57
ccf::ClaimsDigest && consume_claims_digest() override
Definition deserialise.h:70
Definition deserialise.h:17
virtual bool commit_deserialised(ccf::kv::OrderedChanges &changes, ccf::kv::Version v, ccf::kv::Term term, const MapCollection &new_maps, ccf::kv::ConsensusHookPtrs &hooks, bool track_deletes_on_missing_keys)=0
virtual bool fill_maps(const std::vector< uint8_t > &data, bool public_only, ccf::kv::Version &v, ccf::kv::Term &view, ccf::kv::OrderedChanges &changes, ccf::kv::MapCollection &new_maps, ccf::ClaimsDigest &claims_digest, std::optional< ccf::crypto::Sha256Hash > &commit_evidence_digest, bool ignore_strict_versions=false)=0
#define LOG_DEBUG_FMT
Definition logger.h:380
#define LOG_FAIL_FMT
Definition logger.h:396
Definition app_interface.h:20
uint64_t Term
Definition kv_types.h:46
uint64_t Version
Definition version.h:8
std::map< std::string, std::shared_ptr< AbstractMap > > MapCollection
Definition apply_changes.h:16
ApplyResult
Definition kv_types.h:339
@ PASS_SIGNATURE
Definition kv_types.h:341
@ FAIL
Definition kv_types.h:348
@ PASS
Definition kv_types.h:340
@ PASS_ENCRYPTED_PAST_LEDGER_SECRET
Definition kv_types.h:346
std::map< std::string, MapChanges > OrderedChanges
Definition tx.h:42
std::vector< ConsensusHookPtr > ConsensusHookPtrs
Definition hooks.h:22
view
Definition signatures.h:54