Electroneum
cryptonote::transaction Class Referenceabstract

#include <cryptonote_basic.h>

Inheritance diagram for cryptonote::transaction:
Collaboration diagram for cryptonote::transaction:

Public Member Functions

 transaction ()
 
 transaction (const transaction &t)
 
transactionoperator= (const transaction &t)
 
virtual ~transaction ()
 
void set_null ()
 
void invalidate_hashes ()
 
bool is_hash_valid () const
 
void set_hash_valid (bool v) const
 
bool is_blob_size_valid () const
 
void set_blob_size_valid (bool v) const
 
void set_hash (const crypto::hash &h)
 
void set_blob_size (size_t sz)
 
 if (!typename Archive< W >::is_saving())
 
 if (std::is_same< Archive< W >, binary_archive< W >>())
 
ar tag ("signatures")
 
ar begin_array ()
 
 PREPARE_CUSTOM_VECTOR_SERIALIZATION (vin.size(), signatures)
 
 if (!signatures_not_expected &&vin.size() !=signatures.size()) return false
 
 if (!pruned) for(size_t i=0
 
- Public Member Functions inherited from cryptonote::transaction_prefix
 if (version==0||CURRENT_TRANSACTION_VERSION< version) return false
 
 transaction_prefix ()
 
void set_null ()
 
void set_null_besides_version ()
 

Public Attributes

std::vector< std::vector< crypto::signature > > signatures
 
rct::rctSig rct_signatures
 
crypto::hash hash
 
size_t blob_size
 
bool pruned
 
std::atomic< unsigned int > unprunable_size
 
std::atomic< unsigned int > prefix_size
 
const unsigned int start_pos = getpos(ar)
 
bool signatures_not_expected = signatures.empty()
 
- Public Attributes inherited from cryptonote::transaction_prefix
size_t version
 
uint64_t unlock_time
 
std::vector< txin_vvin
 
std::vector< tx_outvout
 
std::vector< uint8_textra
 

Detailed Description

Definition at line 297 of file cryptonote_basic.h.

Constructor & Destructor Documentation

◆ transaction() [1/2]

cryptonote::transaction::transaction ( )
inline

Definition at line 396 of file cryptonote_basic.h.

397  {
398  set_null();
399  }

◆ transaction() [2/2]

cryptonote::transaction::transaction ( const transaction t)
inline

Definition at line 318 of file cryptonote_basic.h.

318 : transaction_prefix(t), hash_valid(false), blob_size_valid(false), signatures(t.signatures), rct_signatures(t.rct_signatures), pruned(t.pruned), unprunable_size(t.unprunable_size.load()), prefix_size(t.prefix_size.load()) { if (t.is_hash_valid()) { hash = t.hash; set_hash_valid(true); } if (t.is_blob_size_valid()) { blob_size = t.blob_size; set_blob_size_valid(true); } }
void set_blob_size_valid(bool v) const
std::vector< std::vector< crypto::signature > > signatures
std::atomic< unsigned int > prefix_size
void set_hash_valid(bool v) const
std::atomic< unsigned int > unprunable_size
Here is the call graph for this function:

◆ ~transaction()

cryptonote::transaction::~transaction ( )
inlinevirtual

Definition at line 402 of file cryptonote_basic.h.

403  {
404  }

Member Function Documentation

◆ begin_array()

ar cryptonote::transaction::begin_array ( )

◆ if() [1/4]

cryptonote::transaction::if ( !typename Archive< W >  ::is_saving())
inline

Definition at line 331 of file cryptonote_basic.h.

332  {
333  set_hash_valid(false);
334  set_blob_size_valid(false);
335  }
void set_blob_size_valid(bool v) const
void set_hash_valid(bool v) const

◆ if() [2/4]

cryptonote::transaction::if ( std::is_same< Archive< W >, binary_archive< W >>  ())
inline

Definition at line 341 of file cryptonote_basic.h.

342  {
343  prefix_size = getpos(ar) - start_pos;
344  unprunable_size = getpos(ar) - start_pos;
345  }
const unsigned int start_pos
std::atomic< unsigned int > prefix_size
std::atomic< unsigned int > unprunable_size

◆ if() [3/4]

cryptonote::transaction::if ( !signatures_not_expected &&vin.size() !  = signatures.size())

◆ if() [4/4]

cryptonote::transaction::if ( pruned)
pure virtual

◆ invalidate_hashes()

void cryptonote::transaction::invalidate_hashes ( )
inline

Definition at line 420 of file cryptonote_basic.h.

421  {
422  set_hash_valid(false);
423  set_blob_size_valid(false);
424  }
void set_blob_size_valid(bool v) const
void set_hash_valid(bool v) const
Here is the caller graph for this function:

◆ is_blob_size_valid()

bool cryptonote::transaction::is_blob_size_valid ( ) const
inline

Definition at line 325 of file cryptonote_basic.h.

325 { return blob_size_valid.load(std::memory_order_acquire); }
Here is the caller graph for this function:

◆ is_hash_valid()

bool cryptonote::transaction::is_hash_valid ( ) const
inline

Definition at line 323 of file cryptonote_basic.h.

323 { return hash_valid.load(std::memory_order_acquire); }
Here is the caller graph for this function:

◆ operator=()

transaction& cryptonote::transaction::operator= ( const transaction t)
inline

Definition at line 319 of file cryptonote_basic.h.

319 { transaction_prefix::operator=(t); set_hash_valid(false); set_blob_size_valid(false); signatures = t.signatures; rct_signatures = t.rct_signatures; if (t.is_hash_valid()) { hash = t.hash; set_hash_valid(true); } if (t.is_blob_size_valid()) { blob_size = t.blob_size; set_blob_size_valid(true); } pruned = t.pruned; unprunable_size = t.unprunable_size.load(); prefix_size = t.prefix_size.load(); return *this; }
void set_blob_size_valid(bool v) const
std::vector< std::vector< crypto::signature > > signatures
std::atomic< unsigned int > prefix_size
void set_hash_valid(bool v) const
connection< TProtocol > & operator=(const connection< TProtocol > &obj)
std::atomic< unsigned int > unprunable_size
Here is the call graph for this function:

◆ PREPARE_CUSTOM_VECTOR_SERIALIZATION()

cryptonote::transaction::PREPARE_CUSTOM_VECTOR_SERIALIZATION ( vin.  size(),
signatures   
)

◆ set_blob_size()

void cryptonote::transaction::set_blob_size ( size_t  sz)
inline

Definition at line 328 of file cryptonote_basic.h.

328 { blob_size = sz; set_blob_size_valid(true); }
void set_blob_size_valid(bool v) const
Here is the caller graph for this function:

◆ set_blob_size_valid()

void cryptonote::transaction::set_blob_size_valid ( bool  v) const
inline

Definition at line 326 of file cryptonote_basic.h.

326 { blob_size_valid.store(v,std::memory_order_release); }
Here is the caller graph for this function:

◆ set_hash()

void cryptonote::transaction::set_hash ( const crypto::hash h)
inline

Definition at line 327 of file cryptonote_basic.h.

327 { hash = h; set_hash_valid(true); }
void set_hash_valid(bool v) const
Here is the caller graph for this function:

◆ set_hash_valid()

void cryptonote::transaction::set_hash_valid ( bool  v) const
inline

Definition at line 324 of file cryptonote_basic.h.

324 { hash_valid.store(v,std::memory_order_release); }

◆ set_null()

void cryptonote::transaction::set_null ( )
inline

Definition at line 407 of file cryptonote_basic.h.

408  {
410  signatures.clear();
412  set_hash_valid(false);
413  set_blob_size_valid(false);
414  pruned = false;
415  unprunable_size = 0;
416  prefix_size = 0;
417  }
uint8_t type
Definition: rctTypes.h:241
void set_blob_size_valid(bool v) const
std::vector< std::vector< crypto::signature > > signatures
std::atomic< unsigned int > prefix_size
void set_hash_valid(bool v) const
std::atomic< unsigned int > unprunable_size
Here is the call graph for this function:
Here is the caller graph for this function:

◆ tag()

ar cryptonote::transaction::tag ( "signatures"  )

Member Data Documentation

◆ blob_size

size_t cryptonote::transaction::blob_size
mutable

Definition at line 310 of file cryptonote_basic.h.

◆ hash

crypto::hash cryptonote::transaction::hash
mutable

Definition at line 309 of file cryptonote_basic.h.

◆ prefix_size

std::atomic<unsigned int> cryptonote::transaction::prefix_size

Definition at line 315 of file cryptonote_basic.h.

◆ pruned

bool cryptonote::transaction::pruned

Definition at line 312 of file cryptonote_basic.h.

◆ rct_signatures

rct::rctSig cryptonote::transaction::rct_signatures

Definition at line 306 of file cryptonote_basic.h.

◆ signatures

std::vector<std::vector<crypto::signature> > cryptonote::transaction::signatures

Definition at line 305 of file cryptonote_basic.h.

◆ signatures_not_expected

bool cryptonote::transaction::signatures_not_expected = signatures.empty()

Definition at line 350 of file cryptonote_basic.h.

◆ start_pos

const unsigned int cryptonote::transaction::start_pos = getpos(ar)

Definition at line 337 of file cryptonote_basic.h.

◆ unprunable_size

std::atomic<unsigned int> cryptonote::transaction::unprunable_size

Definition at line 314 of file cryptonote_basic.h.


The documentation for this class was generated from the following file: