Transaction - smart contract¶
In this section, we examine how worker proposal smart contract was constructed. There are items and helpful steps to construct a smart contract. We want to list those items by examining BitShares blockchain components.
- Smart contract items
- Object
- Object Index and Call
- Operations
- Validations
- Initialize Evaluators and Index
- Evaluators
- API call
Items¶
Object¶
- account_object
Create Object Index and Search Call¶
- class transaction_object : public abstract_object<transaction_object>
Object Index and Search Call¶
- account_create_operation
- signed_transaction tx; - struct signed_transaction : public transaction
Operations¶
Initialize Evaluators and Index¶
void database::initialize_evaluators()
{
_operation_evaluators.resize(255);
register_evaluator<account_create_evaluator>()
.......
}
- class generic_evaluator
- class op_evaluator
void database::initialize_indexes()
{
reset_indexes();
_undo_db.set_max_size( GRAPHENE_MIN_UNDO_HISTORY );
.....
}
void database::init_genesis(const genesis_state_type& genesis_state)
{ try {
.....
}}
Evaluators¶
class database;
struct signed_transaction;
class transaction_evaluation_state
{
public:
transaction_evaluation_state( database* db = nullptr )
:_db(db){}
database& db()const { assert( _db ); return *_db; }
vector<operation_result> operation_results;
const signed_transaction* _trx = nullptr;
database* _db = nullptr;
bool _is_proposed_trx = false;
bool skip_fee = false;
bool skip_fee_schedule_check = false;
};