|
|
|
@ -49,22 +49,29 @@ public:
|
|
|
|
|
if (!base_class::init())
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
cryptonote::account_base m_alice;
|
|
|
|
|
cryptonote::transaction m_tx;
|
|
|
|
|
|
|
|
|
|
m_alice.generate();
|
|
|
|
|
|
|
|
|
|
std::vector<tx_destination_entry> destinations;
|
|
|
|
|
destinations.push_back(tx_destination_entry(1, m_alice.get_keys().m_account_address, false));
|
|
|
|
|
|
|
|
|
|
return construct_tx(this->m_miners[this->real_source_idx].get_keys(), this->m_sources, destinations, boost::none, std::vector<uint8_t>(), m_tx, 0);
|
|
|
|
|
if (!construct_tx(this->m_miners[this->real_source_idx].get_keys(), this->m_sources, destinations, boost::none, std::vector<uint8_t>(), m_tx, 0))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
const cryptonote::txin_to_key& txin = boost::get<cryptonote::txin_to_key>(m_tx.vin[0]);
|
|
|
|
|
m_key = rct::ki2rct(txin.k_image);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool test()
|
|
|
|
|
{
|
|
|
|
|
ge_p3 unp;
|
|
|
|
|
const cryptonote::txin_to_key& txin = boost::get<cryptonote::txin_to_key>(m_tx.vin[0]);
|
|
|
|
|
return ge_frombytes_vartime(&unp, (const unsigned char*) &txin.k_image) == 0;
|
|
|
|
|
return ge_frombytes_vartime(&unp, (const unsigned char*) &m_key) == 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
cryptonote::account_base m_alice;
|
|
|
|
|
cryptonote::transaction m_tx;
|
|
|
|
|
rct::key m_key;
|
|
|
|
|
};
|
|
|
|
|