Removing environment from transaction.

This commit is contained in:
clemahieu 2018-08-20 00:20:04 +01:00
commit 1c3c0bf852
6 changed files with 42 additions and 44 deletions

View file

@ -639,7 +639,7 @@ TEST (rpc, wallet_export)
bool error (false);
rai::transaction transaction (system.nodes[0]->store.environment, true);
rai::kdf kdf;
rai::wallet_store store (error, kdf, transaction, rai::genesis_account, 1, "0", wallet_json);
rai::wallet_store store (error, kdf, system.nodes[0]->store.environment, transaction, rai::genesis_account, 1, "0", wallet_json);
ASSERT_FALSE (error);
ASSERT_TRUE (store.exists (transaction, rai::test_genesis_key.pub));
}

View file

@ -13,7 +13,7 @@ TEST (wallet, no_key)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::keypair key1;
rai::raw_key prv1;
@ -28,7 +28,7 @@ TEST (wallet, fetch_locked)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_TRUE (wallet.valid_password (transaction));
rai::keypair key1;
ASSERT_EQ (key1.pub, wallet.insert_adhoc (transaction, key1.prv));
@ -50,7 +50,7 @@ TEST (wallet, retrieval)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::keypair key1;
ASSERT_TRUE (wallet.valid_password (transaction));
@ -72,7 +72,7 @@ TEST (wallet, empty_iteration)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
auto i (wallet.begin (transaction));
auto j (wallet.end ());
@ -86,7 +86,7 @@ TEST (wallet, one_item_iteration)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::keypair key1;
wallet.insert_adhoc (transaction, key1.prv);
@ -114,7 +114,7 @@ TEST (wallet, two_item_iteration)
rai::kdf kdf;
{
rai::transaction transaction (environment, true);
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
wallet.insert_adhoc (transaction, key1.prv);
wallet.insert_adhoc (transaction, key2.prv);
@ -254,7 +254,7 @@ TEST (wallet, find_none)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::uint256_union account (1000);
ASSERT_EQ (wallet.end (), wallet.find (transaction, account));
@ -267,7 +267,7 @@ TEST (wallet, find_existing)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::keypair key1;
ASSERT_FALSE (wallet.exists (transaction, key1.pub));
@ -286,7 +286,7 @@ TEST (wallet, rekey)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::raw_key password;
wallet.password.value (password);
@ -349,7 +349,7 @@ TEST (wallet, hash_password)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
rai::raw_key hash1;
wallet.derive_key (hash1, transaction, "");
@ -399,25 +399,25 @@ TEST (wallet, reopen_default_password)
ASSERT_FALSE (init);
rai::kdf kdf;
{
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
ASSERT_TRUE (wallet.valid_password (transaction));
}
{
bool init;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
ASSERT_TRUE (wallet.valid_password (transaction));
}
{
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
wallet.rekey (transaction, "");
ASSERT_TRUE (wallet.valid_password (transaction));
}
{
bool init;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (init);
ASSERT_FALSE (wallet.valid_password (transaction));
wallet.attempt_password (transaction, " ");
@ -434,7 +434,7 @@ TEST (wallet, representative)
ASSERT_FALSE (error);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (error, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (error, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (error);
ASSERT_FALSE (wallet.is_representative (transaction));
ASSERT_EQ (rai::genesis_account, wallet.representative (transaction));
@ -455,11 +455,11 @@ TEST (wallet, serialize_json_empty)
ASSERT_FALSE (error);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet1 (error, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet1 (error, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (error);
std::string serialized;
wallet1.serialize_json (transaction, serialized);
rai::wallet_store wallet2 (error, kdf, transaction, rai::genesis_account, 1, "1", serialized);
rai::wallet_store wallet2 (error, kdf, environment, transaction, rai::genesis_account, 1, "1", serialized);
ASSERT_FALSE (error);
rai::raw_key password1;
rai::raw_key password2;
@ -480,13 +480,13 @@ TEST (wallet, serialize_json_one)
ASSERT_FALSE (error);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet1 (error, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet1 (error, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (error);
rai::keypair key;
wallet1.insert_adhoc (transaction, key.prv);
std::string serialized;
wallet1.serialize_json (transaction, serialized);
rai::wallet_store wallet2 (error, kdf, transaction, rai::genesis_account, 1, "1", serialized);
rai::wallet_store wallet2 (error, kdf, environment, transaction, rai::genesis_account, 1, "1", serialized);
ASSERT_FALSE (error);
rai::raw_key password1;
rai::raw_key password2;
@ -509,14 +509,14 @@ TEST (wallet, serialize_json_password)
ASSERT_FALSE (error);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet1 (error, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet1 (error, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (error);
rai::keypair key;
wallet1.rekey (transaction, "password");
wallet1.insert_adhoc (transaction, key.prv);
std::string serialized;
wallet1.serialize_json (transaction, serialized);
rai::wallet_store wallet2 (error, kdf, transaction, rai::genesis_account, 1, "1", serialized);
rai::wallet_store wallet2 (error, kdf, environment, transaction, rai::genesis_account, 1, "1", serialized);
ASSERT_FALSE (error);
ASSERT_FALSE (wallet2.valid_password (transaction));
ASSERT_FALSE (wallet2.attempt_password (transaction, "password"));
@ -542,11 +542,11 @@ TEST (wallet_store, move)
ASSERT_FALSE (error);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet1 (error, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet1 (error, kdf, environment, transaction, rai::genesis_account, 1, "0");
ASSERT_FALSE (error);
rai::keypair key1;
wallet1.insert_adhoc (transaction, key1.prv);
rai::wallet_store wallet2 (error, kdf, transaction, rai::genesis_account, 1, "1");
rai::wallet_store wallet2 (error, kdf, environment, transaction, rai::genesis_account, 1, "1");
ASSERT_FALSE (error);
rai::keypair key2;
wallet2.insert_adhoc (transaction, key2.prv);
@ -715,7 +715,7 @@ TEST (wallet, deterministic_keys)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
rai::raw_key key1;
wallet.deterministic_key (key1, transaction, 0);
rai::raw_key key2;
@ -761,7 +761,7 @@ TEST (wallet, reseed)
ASSERT_FALSE (init);
rai::transaction transaction (environment, true);
rai::kdf kdf;
rai::wallet_store wallet (init, kdf, transaction, rai::genesis_account, 1, "0");
rai::wallet_store wallet (init, kdf, environment, transaction, rai::genesis_account, 1, "0");
rai::raw_key seed1;
seed1.data = 1;
rai::raw_key seed2;

View file

@ -264,8 +264,7 @@ rai::mdb_val::operator MDB_val const & () const
return value;
}
rai::transaction::transaction (rai::mdb_env & environment_a, bool write, MDB_txn * parent_a) :
environment (environment_a)
rai::transaction::transaction (rai::mdb_env & environment_a, bool write, MDB_txn * parent_a)
{
auto status (mdb_txn_begin (environment_a, parent_a, write ? 0 : MDB_RDONLY, &handle));
assert (status == 0);

View file

@ -78,7 +78,6 @@ public:
~transaction ();
operator MDB_txn * () const;
MDB_txn * handle;
rai::mdb_env & environment;
};
class block_store;
/**

View file

@ -265,11 +265,11 @@ int const rai::wallet_store::special_count (7);
size_t const rai::wallet_store::check_iv_index (0);
size_t const rai::wallet_store::seed_iv_index (1);
rai::wallet_store::wallet_store (bool & init_a, rai::kdf & kdf_a, rai::transaction & transaction_a, rai::account representative_a, unsigned fanout_a, std::string const & wallet_a, std::string const & json_a) :
rai::wallet_store::wallet_store (bool & init_a, rai::kdf & kdf_a, rai::mdb_env & environment_a, rai::transaction & transaction_a, rai::account representative_a, unsigned fanout_a, std::string const & wallet_a, std::string const & json_a) :
password (0, fanout_a),
wallet_key_mem (0, fanout_a),
kdf (kdf_a),
environment (transaction_a.environment)
environment (environment_a)
{
init_a = false;
initialize (transaction_a, init_a, wallet_a);
@ -322,11 +322,11 @@ environment (transaction_a.environment)
}
}
rai::wallet_store::wallet_store (bool & init_a, rai::kdf & kdf_a, rai::transaction & transaction_a, rai::account representative_a, unsigned fanout_a, std::string const & wallet_a) :
rai::wallet_store::wallet_store (bool & init_a, rai::kdf & kdf_a, rai::mdb_env & environment_a, rai::transaction & transaction_a, rai::account representative_a, unsigned fanout_a, std::string const & wallet_a) :
password (0, fanout_a),
wallet_key_mem (0, fanout_a),
kdf (kdf_a),
environment (transaction_a.environment)
environment (environment_a)
{
init_a = false;
initialize (transaction_a, init_a, wallet_a);
@ -743,16 +743,16 @@ void rai::kdf::phs (rai::raw_key & result_a, std::string const & password_a, rai
(void)success;
}
rai::wallet::wallet (bool & init_a, rai::transaction & transaction_a, rai::node & node_a, std::string const & wallet_a) :
rai::wallet::wallet (bool & init_a, rai::mdb_env & environment_a, rai::transaction & transaction_a, rai::node & node_a, std::string const & wallet_a) :
lock_observer ([](bool, bool) {}),
store (init_a, node_a.wallets.kdf, transaction_a, node_a.config.random_representative (), node_a.config.password_fanout, wallet_a),
store (init_a, node_a.wallets.kdf, environment_a, transaction_a, node_a.config.random_representative (), node_a.config.password_fanout, wallet_a),
node (node_a)
{
}
rai::wallet::wallet (bool & init_a, rai::transaction & transaction_a, rai::node & node_a, std::string const & wallet_a, std::string const & json) :
rai::wallet::wallet (bool & init_a, rai::mdb_env & environment_a, rai::transaction & transaction_a, rai::node & node_a, std::string const & wallet_a, std::string const & json) :
lock_observer ([](bool, bool) {}),
store (init_a, node_a.wallets.kdf, transaction_a, node_a.config.random_representative (), node_a.config.password_fanout, wallet_a, json),
store (init_a, node_a.wallets.kdf, environment_a, transaction_a, node_a.config.random_representative (), node_a.config.password_fanout, wallet_a, json),
node (node_a)
{
}
@ -857,7 +857,7 @@ bool rai::wallet::import (std::string const & json_a, std::string const & passwo
rai::transaction transaction (store.environment, true);
rai::uint256_union id;
random_pool.GenerateBlock (id.bytes.data (), id.bytes.size ());
temp.reset (new rai::wallet_store (error, node.wallets.kdf, transaction, 0, 1, id.to_string (), json_a));
temp.reset (new rai::wallet_store (error, node.wallets.kdf, store.environment, transaction, 0, 1, id.to_string (), json_a));
}
if (!error)
{
@ -1276,7 +1276,7 @@ thread ([this]() { do_wallet_actions (); })
auto error (id.decode_hex (text));
assert (!error);
assert (items.find (id) == items.end ());
auto wallet (std::make_shared<rai::wallet> (error, transaction, node_a, text));
auto wallet (std::make_shared<rai::wallet> (error, node.store.environment, transaction, node_a, text));
if (!error)
{
items[id] = wallet;
@ -1316,7 +1316,7 @@ std::shared_ptr<rai::wallet> rai::wallets::create (rai::uint256_union const & id
bool error;
{
rai::transaction transaction (node.store.environment, true);
result = std::make_shared<rai::wallet> (error, transaction, node, id_a.to_string ());
result = std::make_shared<rai::wallet> (error, node.store.environment, transaction, node, id_a.to_string ());
}
if (!error)
{

View file

@ -52,8 +52,8 @@ enum class key_type
class wallet_store
{
public:
wallet_store (bool &, rai::kdf &, rai::transaction &, rai::account, unsigned, std::string const &);
wallet_store (bool &, rai::kdf &, rai::transaction &, rai::account, unsigned, std::string const &, std::string const &);
wallet_store (bool &, rai::kdf &, rai::mdb_env &, rai::transaction &, rai::account, unsigned, std::string const &);
wallet_store (bool &, rai::kdf &, rai::mdb_env &, rai::transaction &, rai::account, unsigned, std::string const &, std::string const &);
std::vector<rai::account> accounts (MDB_txn *);
void initialize (MDB_txn *, bool &, std::string const &);
rai::uint256_union check (MDB_txn *);
@ -130,8 +130,8 @@ public:
std::shared_ptr<rai::block> change_action (rai::account const &, rai::account const &, bool = true);
std::shared_ptr<rai::block> receive_action (rai::block const &, rai::account const &, rai::uint128_union const &, bool = true);
std::shared_ptr<rai::block> send_action (rai::account const &, rai::account const &, rai::uint128_t const &, bool = true, boost::optional<std::string> = {});
wallet (bool &, rai::transaction &, rai::node &, std::string const &);
wallet (bool &, rai::transaction &, rai::node &, std::string const &, std::string const &);
wallet (bool &, rai::mdb_env &, rai::transaction &, rai::node &, std::string const &);
wallet (bool &, rai::mdb_env &, rai::transaction &, rai::node &, std::string const &, std::string const &);
void enter_initial_password ();
bool valid_password ();
bool enter_password (std::string const &);