github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/cmd/dummy_neb/generator/call_tx_generator.cpp (about)

     1  // Copyright (C) 2018 go-nebulas authors
     2  //
     3  // This file is part of the go-nebulas library.
     4  //
     5  // the go-nebulas library is free software: you can redistribute it and/or
     6  // modify
     7  // it under the terms of the GNU General Public License as published by
     8  // the Free Software Foundation, either version 3 of the License, or
     9  // (at your option) any later version.
    10  //
    11  // the go-nebulas library is distributed in the hope that it will be useful,
    12  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14  // GNU General Public License for more details.
    15  //
    16  // You should have received a copy of the GNU General Public License
    17  // along with the go-nebulas library.  If not, see
    18  // <http://www.gnu.org/licenses/>.
    19  //
    20  #include "cmd/dummy_neb/generator/call_tx_generator.h"
    21  
    22  call_tx_generator::call_tx_generator(generate_block *block, int call_tx_number)
    23      : generator_base(block->get_all_accounts(), block, 0, call_tx_number) {}
    24  
    25  call_tx_generator::~call_tx_generator() {}
    26  
    27  std::shared_ptr<corepb::Account> call_tx_generator::gen_account() {
    28    return nullptr;
    29  }
    30  
    31  std::shared_ptr<corepb::Transaction> call_tx_generator::gen_tx() {
    32    auto from_addr = m_all_accounts->random_user_addr();
    33    address_t contract_addr;
    34    if (m_contract_accounts.empty()) {
    35      contract_addr = m_all_accounts->random_contract_addr();
    36    } else {
    37      contract_addr =
    38          m_contract_accounts.at(std::rand() % m_contract_accounts.size());
    39    }
    40    if (from_addr.empty() || contract_addr.empty()) {
    41      return nullptr;
    42    }
    43    m_contract_accounts.push_back(contract_addr);
    44    return m_block->add_call_transaction(from_addr, contract_addr);
    45  }
    46  checker_tasks::task_container_ptr_t call_tx_generator::gen_tasks() {
    47    return nullptr;
    48  }