diff --git a/rai/core_test/rpc.cpp b/rai/core_test/rpc.cpp index f471d88e..64c6e090 100644 --- a/rai/core_test/rpc.cpp +++ b/rai/core_test/rpc.cpp @@ -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)); } diff --git a/rai/core_test/wallet.cpp b/rai/core_test/wallet.cpp index 42bfc7b8..a79070ee 100644 --- a/rai/core_test/wallet.cpp +++ b/rai/core_test/wallet.cpp @@ -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; diff --git a/rai/node/lmdb.cpp b/rai/node/lmdb.cpp index 96189935..c6b881f2 100644 --- a/rai/node/lmdb.cpp +++ b/rai/node/lmdb.cpp @@ -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); diff --git a/rai/node/lmdb.hpp b/rai/node/lmdb.hpp index 2e1496ac..32ddbd75 100644 --- a/rai/node/lmdb.hpp +++ b/rai/node/lmdb.hpp @@ -78,7 +78,6 @@ public: ~transaction (); operator MDB_txn * () const; MDB_txn * handle; - rai::mdb_env & environment; }; class block_store; /** diff --git a/rai/node/wallet.cpp b/rai/node/wallet.cpp index 54375a97..10395c12 100644 --- a/rai/node/wallet.cpp +++ b/rai/node/wallet.cpp @@ -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 (error, transaction, node_a, text)); + auto wallet (std::make_shared (error, node.store.environment, transaction, node_a, text)); if (!error) { items[id] = wallet; @@ -1316,7 +1316,7 @@ std::shared_ptr rai::wallets::create (rai::uint256_union const & id bool error; { rai::transaction transaction (node.store.environment, true); - result = std::make_shared (error, transaction, node, id_a.to_string ()); + result = std::make_shared (error, node.store.environment, transaction, node, id_a.to_string ()); } if (!error) { diff --git a/rai/node/wallet.hpp b/rai/node/wallet.hpp index ef661a25..b45e8ba5 100644 --- a/rai/node/wallet.hpp +++ b/rai/node/wallet.hpp @@ -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 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 change_action (rai::account const &, rai::account const &, bool = true); std::shared_ptr receive_action (rai::block const &, rai::account const &, rai::uint128_union const &, bool = true); std::shared_ptr send_action (rai::account const &, rai::account const &, rai::uint128_t const &, bool = true, boost::optional = {}); - 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 &);