Improve naming for wallet/block database connections.
This commit is contained in:
parent
ee0e059eb3
commit
1fd74d0a71
|
@ -113,14 +113,14 @@ where
|
||||||
/// data_api::chain::scan_cached_blocks,
|
/// data_api::chain::scan_cached_blocks,
|
||||||
/// };
|
/// };
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// CacheConnection,
|
/// BlockDB,
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let cache_file = NamedTempFile::new().unwrap();
|
/// let cache_file = NamedTempFile::new().unwrap();
|
||||||
/// let cache = CacheConnection::for_path(cache_file).unwrap();
|
/// let cache = BlockDB::for_path(cache_file).unwrap();
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let data = DataConnection::for_path(data_file).unwrap();
|
/// let data = WalletDB::for_path(data_file).unwrap();
|
||||||
/// scan_cached_blocks(&Network::TestNetwork, &cache, &data, None);
|
/// scan_cached_blocks(&Network::TestNetwork, &cache, &data, None);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
|
|
|
@ -113,7 +113,7 @@ where
|
||||||
/// wallet::OvkPolicy,
|
/// wallet::OvkPolicy,
|
||||||
/// };
|
/// };
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let tx_prover = match LocalTxProver::with_default_location() {
|
/// let tx_prover = match LocalTxProver::with_default_location() {
|
||||||
|
@ -128,7 +128,7 @@ where
|
||||||
/// let to = extsk.default_address().unwrap().1.into();
|
/// let to = extsk.default_address().unwrap().1.into();
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file).unwrap();
|
/// let db = WalletDB::for_path(data_file).unwrap();
|
||||||
/// match create_spend_to_address(
|
/// match create_spend_to_address(
|
||||||
/// &db,
|
/// &db,
|
||||||
/// &Network::TestNetwork,
|
/// &Network::TestNetwork,
|
||||||
|
|
|
@ -20,16 +20,16 @@
|
||||||
//! };
|
//! };
|
||||||
//!
|
//!
|
||||||
//! use zcash_client_sqlite::{
|
//! use zcash_client_sqlite::{
|
||||||
//! CacheConnection,
|
//! BlockDB,
|
||||||
//! DataConnection,
|
//! WalletDB,
|
||||||
//! wallet::{rewind_to_height},
|
//! wallet::{rewind_to_height},
|
||||||
//! };
|
//! };
|
||||||
//!
|
//!
|
||||||
//! let network = Network::TestNetwork;
|
//! let network = Network::TestNetwork;
|
||||||
//! let cache_file = NamedTempFile::new().unwrap();
|
//! let cache_file = NamedTempFile::new().unwrap();
|
||||||
//! let db_cache = CacheConnection::for_path(cache_file).unwrap();
|
//! let db_cache = BlockDB::for_path(cache_file).unwrap();
|
||||||
//! let data_file = NamedTempFile::new().unwrap();
|
//! let data_file = NamedTempFile::new().unwrap();
|
||||||
//! let db_data = DataConnection::for_path(data_file).unwrap();
|
//! let db_data = WalletDB::for_path(data_file).unwrap();
|
||||||
//!
|
//!
|
||||||
//! // 1) Download new CompactBlocks into db_cache.
|
//! // 1) Download new CompactBlocks into db_cache.
|
||||||
//!
|
//!
|
||||||
|
@ -81,7 +81,7 @@ use zcash_primitives::consensus::BlockHeight;
|
||||||
|
|
||||||
use zcash_client_backend::{data_api::error::Error, proto::compact_formats::CompactBlock};
|
use zcash_client_backend::{data_api::error::Error, proto::compact_formats::CompactBlock};
|
||||||
|
|
||||||
use crate::{error::SqliteClientError, CacheConnection};
|
use crate::{error::SqliteClientError, BlockDB};
|
||||||
|
|
||||||
pub mod init;
|
pub mod init;
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ struct CompactBlockRow {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn with_blocks<F>(
|
pub fn with_blocks<F>(
|
||||||
cache: &CacheConnection,
|
cache: &BlockDB,
|
||||||
from_height: BlockHeight,
|
from_height: BlockHeight,
|
||||||
limit: Option<u32>,
|
limit: Option<u32>,
|
||||||
mut with_row: F,
|
mut with_row: F,
|
||||||
|
@ -163,17 +163,17 @@ mod tests {
|
||||||
init::{init_accounts_table, init_data_database},
|
init::{init_accounts_table, init_data_database},
|
||||||
rewind_to_height,
|
rewind_to_height,
|
||||||
},
|
},
|
||||||
AccountId, CacheConnection, DataConnection, NoteId,
|
AccountId, BlockDB, WalletDB, NoteId,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn valid_chain_states() {
|
fn valid_chain_states() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -249,11 +249,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn invalid_chain_cache_disconnected() {
|
fn invalid_chain_cache_disconnected() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -322,11 +322,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn invalid_chain_cache_reorg() {
|
fn invalid_chain_cache_reorg() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -395,11 +395,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn data_db_rewinding() {
|
fn data_db_rewinding() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -453,11 +453,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn scan_cached_blocks_requires_sequential_blocks() {
|
fn scan_cached_blocks_requires_sequential_blocks() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -517,11 +517,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn scan_cached_blocks_finds_received_notes() {
|
fn scan_cached_blocks_finds_received_notes() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -564,11 +564,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn scan_cached_blocks_finds_change_notes() {
|
fn scan_cached_blocks_finds_change_notes() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
use rusqlite::NO_PARAMS;
|
use rusqlite::NO_PARAMS;
|
||||||
|
|
||||||
use crate::CacheConnection;
|
use crate::BlockDB;
|
||||||
|
|
||||||
/// Sets up the internal structure of the cache database.
|
/// Sets up the internal structure of the cache database.
|
||||||
///
|
///
|
||||||
|
@ -11,15 +11,15 @@ use crate::CacheConnection;
|
||||||
/// ```
|
/// ```
|
||||||
/// use tempfile::NamedTempFile;
|
/// use tempfile::NamedTempFile;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// CacheConnection,
|
/// BlockDB,
|
||||||
/// chain::init::init_cache_database,
|
/// chain::init::init_cache_database,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let cache_file = NamedTempFile::new().unwrap();
|
/// let cache_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = CacheConnection::for_path(cache_file.path()).unwrap();
|
/// let db = BlockDB::for_path(cache_file.path()).unwrap();
|
||||||
/// init_cache_database(&db).unwrap();
|
/// init_cache_database(&db).unwrap();
|
||||||
/// ```
|
/// ```
|
||||||
pub fn init_cache_database(db_cache: &CacheConnection) -> Result<(), rusqlite::Error> {
|
pub fn init_cache_database(db_cache: &BlockDB) -> Result<(), rusqlite::Error> {
|
||||||
db_cache.0.execute(
|
db_cache.0.execute(
|
||||||
"CREATE TABLE IF NOT EXISTS compactblocks (
|
"CREATE TABLE IF NOT EXISTS compactblocks (
|
||||||
height INTEGER PRIMARY KEY,
|
height INTEGER PRIMARY KEY,
|
||||||
|
|
|
@ -66,15 +66,15 @@ impl fmt::Display for NoteId {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DataConnection(Connection);
|
pub struct WalletDB(Connection);
|
||||||
|
|
||||||
impl DataConnection {
|
impl WalletDB {
|
||||||
pub fn for_path<P: AsRef<Path>>(path: P) -> Result<Self, rusqlite::Error> {
|
pub fn for_path<P: AsRef<Path>>(path: P) -> Result<Self, rusqlite::Error> {
|
||||||
Connection::open(path).map(DataConnection)
|
Connection::open(path).map(WalletDB)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> WalletRead for &'a DataConnection {
|
impl<'a> WalletRead for &'a WalletDB {
|
||||||
type Error = SqliteClientError;
|
type Error = SqliteClientError;
|
||||||
type NoteRef = NoteId;
|
type NoteRef = NoteId;
|
||||||
type TxRef = i64;
|
type TxRef = i64;
|
||||||
|
@ -242,7 +242,7 @@ impl<'a> WalletRead for &'a DataConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DataConnStmtCache<'a> {
|
pub struct DataConnStmtCache<'a> {
|
||||||
conn: &'a DataConnection,
|
conn: &'a WalletDB,
|
||||||
stmt_insert_block: Statement<'a>,
|
stmt_insert_block: Statement<'a>,
|
||||||
|
|
||||||
stmt_insert_tx_meta: Statement<'a>,
|
stmt_insert_tx_meta: Statement<'a>,
|
||||||
|
@ -536,15 +536,15 @@ impl<'a> WalletWrite for DataConnStmtCache<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct CacheConnection(Connection);
|
pub struct BlockDB(Connection);
|
||||||
|
|
||||||
impl CacheConnection {
|
impl BlockDB {
|
||||||
pub fn for_path<P: AsRef<Path>>(path: P) -> Result<Self, rusqlite::Error> {
|
pub fn for_path<P: AsRef<Path>>(path: P) -> Result<Self, rusqlite::Error> {
|
||||||
Connection::open(path).map(CacheConnection)
|
Connection::open(path).map(BlockDB)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BlockSource for CacheConnection {
|
impl BlockSource for BlockDB {
|
||||||
type Error = SqliteClientError;
|
type Error = SqliteClientError;
|
||||||
|
|
||||||
fn init_cache(&self) -> Result<(), Self::Error> {
|
fn init_cache(&self) -> Result<(), Self::Error> {
|
||||||
|
@ -594,7 +594,7 @@ mod tests {
|
||||||
zip32::ExtendedFullViewingKey,
|
zip32::ExtendedFullViewingKey,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::CacheConnection;
|
use super::BlockDB;
|
||||||
|
|
||||||
#[cfg(feature = "mainnet")]
|
#[cfg(feature = "mainnet")]
|
||||||
pub(crate) fn network() -> Network {
|
pub(crate) fn network() -> Network {
|
||||||
|
@ -755,7 +755,7 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Insert a fake CompactBlock into the cache DB.
|
/// Insert a fake CompactBlock into the cache DB.
|
||||||
pub(crate) fn insert_into_cache(db_cache: &CacheConnection, cb: &CompactBlock) {
|
pub(crate) fn insert_into_cache(db_cache: &BlockDB, cb: &CompactBlock) {
|
||||||
let cb_bytes = cb.write_to_bytes().unwrap();
|
let cb_bytes = cb.write_to_bytes().unwrap();
|
||||||
db_cache
|
db_cache
|
||||||
.0
|
.0
|
||||||
|
|
|
@ -20,7 +20,7 @@ use zcash_client_backend::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{error::SqliteClientError, AccountId, DataConnection, NoteId};
|
use crate::{error::SqliteClientError, AccountId, WalletDB, NoteId};
|
||||||
|
|
||||||
pub mod init;
|
pub mod init;
|
||||||
pub mod transact;
|
pub mod transact;
|
||||||
|
@ -36,16 +36,16 @@ pub mod transact;
|
||||||
/// };
|
/// };
|
||||||
/// use zcash_client_backend::api::AccountId;
|
/// use zcash_client_backend::api::AccountId;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::get_address,
|
/// wallet::get_address,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file).unwrap();
|
/// let db = WalletDB::for_path(data_file).unwrap();
|
||||||
/// let addr = get_address(&db, &Network::TestNetwork, AccountId(0));
|
/// let addr = get_address(&db, &Network::TestNetwork, AccountId(0));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_address<P: consensus::Parameters>(
|
pub fn get_address<P: consensus::Parameters>(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
params: &P,
|
params: &P,
|
||||||
account: AccountId,
|
account: AccountId,
|
||||||
) -> Result<Option<PaymentAddress>, SqliteClientError> {
|
) -> Result<Option<PaymentAddress>, SqliteClientError> {
|
||||||
|
@ -61,7 +61,7 @@ pub fn get_address<P: consensus::Parameters>(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_extended_full_viewing_keys<P: consensus::Parameters>(
|
pub fn get_extended_full_viewing_keys<P: consensus::Parameters>(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
params: &P,
|
params: &P,
|
||||||
) -> Result<Vec<ExtendedFullViewingKey>, SqliteClientError> {
|
) -> Result<Vec<ExtendedFullViewingKey>, SqliteClientError> {
|
||||||
// Fetch the ExtendedFullViewingKeys we are tracking
|
// Fetch the ExtendedFullViewingKeys we are tracking
|
||||||
|
@ -87,7 +87,7 @@ pub fn get_extended_full_viewing_keys<P: consensus::Parameters>(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_valid_account_extfvk<P: consensus::Parameters>(
|
pub fn is_valid_account_extfvk<P: consensus::Parameters>(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
params: &P,
|
params: &P,
|
||||||
account: AccountId,
|
account: AccountId,
|
||||||
extfvk: &ExtendedFullViewingKey,
|
extfvk: &ExtendedFullViewingKey,
|
||||||
|
@ -119,15 +119,15 @@ pub fn is_valid_account_extfvk<P: consensus::Parameters>(
|
||||||
/// use tempfile::NamedTempFile;
|
/// use tempfile::NamedTempFile;
|
||||||
/// use zcash_client_backend::api::AccountId;
|
/// use zcash_client_backend::api::AccountId;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::get_balance,
|
/// wallet::get_balance,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file).unwrap();
|
/// let db = WalletDB::for_path(data_file).unwrap();
|
||||||
/// let addr = get_balance(&db, AccountId(0));
|
/// let addr = get_balance(&db, AccountId(0));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_balance(data: &DataConnection, account: AccountId) -> Result<Amount, SqliteClientError> {
|
pub fn get_balance(data: &WalletDB, account: AccountId) -> Result<Amount, SqliteClientError> {
|
||||||
let balance = data.0.query_row(
|
let balance = data.0.query_row(
|
||||||
"SELECT SUM(value) FROM received_notes
|
"SELECT SUM(value) FROM received_notes
|
||||||
INNER JOIN transactions ON transactions.id_tx = received_notes.tx
|
INNER JOIN transactions ON transactions.id_tx = received_notes.tx
|
||||||
|
@ -154,16 +154,16 @@ pub fn get_balance(data: &DataConnection, account: AccountId) -> Result<Amount,
|
||||||
/// use zcash_primitives::consensus::{BlockHeight};
|
/// use zcash_primitives::consensus::{BlockHeight};
|
||||||
/// use zcash_client_backend::api::AccountId;
|
/// use zcash_client_backend::api::AccountId;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::get_verified_balance,
|
/// wallet::get_verified_balance,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file).unwrap();
|
/// let db = WalletDB::for_path(data_file).unwrap();
|
||||||
/// let addr = get_verified_balance(&db, AccountId(0), BlockHeight::from_u32(0));
|
/// let addr = get_verified_balance(&db, AccountId(0), BlockHeight::from_u32(0));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_verified_balance(
|
pub fn get_verified_balance(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
account: AccountId,
|
account: AccountId,
|
||||||
anchor_height: BlockHeight,
|
anchor_height: BlockHeight,
|
||||||
) -> Result<Amount, SqliteClientError> {
|
) -> Result<Amount, SqliteClientError> {
|
||||||
|
@ -194,16 +194,16 @@ pub fn get_verified_balance(
|
||||||
/// use tempfile::NamedTempFile;
|
/// use tempfile::NamedTempFile;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// NoteId,
|
/// NoteId,
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::get_received_memo_as_utf8,
|
/// wallet::get_received_memo_as_utf8,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file).unwrap();
|
/// let db = WalletDB::for_path(data_file).unwrap();
|
||||||
/// let memo = get_received_memo_as_utf8(&db, NoteId(27));
|
/// let memo = get_received_memo_as_utf8(&db, NoteId(27));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_received_memo_as_utf8(
|
pub fn get_received_memo_as_utf8(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
id_note: NoteId,
|
id_note: NoteId,
|
||||||
) -> Result<Option<String>, SqliteClientError> {
|
) -> Result<Option<String>, SqliteClientError> {
|
||||||
let memo: Vec<_> = data.0.query_row(
|
let memo: Vec<_> = data.0.query_row(
|
||||||
|
@ -234,16 +234,16 @@ pub fn get_received_memo_as_utf8(
|
||||||
/// use tempfile::NamedTempFile;
|
/// use tempfile::NamedTempFile;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// NoteId,
|
/// NoteId,
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::get_sent_memo_as_utf8,
|
/// wallet::get_sent_memo_as_utf8,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file).unwrap();
|
/// let db = WalletDB::for_path(data_file).unwrap();
|
||||||
/// let memo = get_sent_memo_as_utf8(&db, NoteId(12));
|
/// let memo = get_sent_memo_as_utf8(&db, NoteId(12));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn get_sent_memo_as_utf8(
|
pub fn get_sent_memo_as_utf8(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
id_note: NoteId,
|
id_note: NoteId,
|
||||||
) -> Result<Option<String>, SqliteClientError> {
|
) -> Result<Option<String>, SqliteClientError> {
|
||||||
let memo: Vec<_> = data.0.query_row(
|
let memo: Vec<_> = data.0.query_row(
|
||||||
|
@ -264,7 +264,7 @@ pub fn get_sent_memo_as_utf8(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn block_height_extrema(
|
pub fn block_height_extrema(
|
||||||
conn: &DataConnection,
|
conn: &WalletDB,
|
||||||
) -> Result<Option<(BlockHeight, BlockHeight)>, rusqlite::Error> {
|
) -> Result<Option<(BlockHeight, BlockHeight)>, rusqlite::Error> {
|
||||||
conn.0
|
conn.0
|
||||||
.query_row(
|
.query_row(
|
||||||
|
@ -285,7 +285,7 @@ pub fn block_height_extrema(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_tx_height(
|
pub fn get_tx_height(
|
||||||
conn: &DataConnection,
|
conn: &WalletDB,
|
||||||
txid: TxId,
|
txid: TxId,
|
||||||
) -> Result<Option<BlockHeight>, rusqlite::Error> {
|
) -> Result<Option<BlockHeight>, rusqlite::Error> {
|
||||||
conn.0
|
conn.0
|
||||||
|
@ -298,7 +298,7 @@ pub fn get_tx_height(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_block_hash(
|
pub fn get_block_hash(
|
||||||
conn: &DataConnection,
|
conn: &WalletDB,
|
||||||
block_height: BlockHeight,
|
block_height: BlockHeight,
|
||||||
) -> Result<Option<BlockHash>, rusqlite::Error> {
|
) -> Result<Option<BlockHash>, rusqlite::Error> {
|
||||||
conn.0
|
conn.0
|
||||||
|
@ -318,7 +318,7 @@ pub fn get_block_hash(
|
||||||
/// If the requested height is greater than or equal to the height of the last scanned
|
/// If the requested height is greater than or equal to the height of the last scanned
|
||||||
/// block, this function does nothing.
|
/// block, this function does nothing.
|
||||||
pub fn rewind_to_height<P: consensus::Parameters>(
|
pub fn rewind_to_height<P: consensus::Parameters>(
|
||||||
conn: &DataConnection,
|
conn: &WalletDB,
|
||||||
parameters: &P,
|
parameters: &P,
|
||||||
block_height: BlockHeight,
|
block_height: BlockHeight,
|
||||||
) -> Result<(), SqliteClientError> {
|
) -> Result<(), SqliteClientError> {
|
||||||
|
@ -369,7 +369,7 @@ pub fn rewind_to_height<P: consensus::Parameters>(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_commitment_tree(
|
pub fn get_commitment_tree(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
block_height: BlockHeight,
|
block_height: BlockHeight,
|
||||||
) -> Result<Option<CommitmentTree<Node>>, SqliteClientError> {
|
) -> Result<Option<CommitmentTree<Node>>, SqliteClientError> {
|
||||||
data.0
|
data.0
|
||||||
|
@ -392,7 +392,7 @@ pub fn get_commitment_tree(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_witnesses(
|
pub fn get_witnesses(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
block_height: BlockHeight,
|
block_height: BlockHeight,
|
||||||
) -> Result<Vec<(NoteId, IncrementalWitness<Node>)>, SqliteClientError> {
|
) -> Result<Vec<(NoteId, IncrementalWitness<Node>)>, SqliteClientError> {
|
||||||
let mut stmt_fetch_witnesses = data
|
let mut stmt_fetch_witnesses = data
|
||||||
|
@ -416,7 +416,7 @@ pub fn get_witnesses(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_nullifiers(
|
pub fn get_nullifiers(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
) -> Result<Vec<(Vec<u8>, AccountId)>, SqliteClientError> {
|
) -> Result<Vec<(Vec<u8>, AccountId)>, SqliteClientError> {
|
||||||
// Get the nullifiers for the notes we are tracking
|
// Get the nullifiers for the notes we are tracking
|
||||||
let mut stmt_fetch_nullifiers = data
|
let mut stmt_fetch_nullifiers = data
|
||||||
|
@ -451,7 +451,7 @@ mod tests {
|
||||||
use crate::{
|
use crate::{
|
||||||
tests,
|
tests,
|
||||||
wallet::init::{init_accounts_table, init_data_database},
|
wallet::init::{init_accounts_table, init_data_database},
|
||||||
AccountId, DataConnection,
|
AccountId, WalletDB,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{get_address, get_balance};
|
use super::{get_address, get_balance};
|
||||||
|
@ -459,7 +459,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn empty_database_has_no_balance() {
|
fn empty_database_has_no_balance() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
|
|
@ -10,7 +10,7 @@ use zcash_primitives::{
|
||||||
|
|
||||||
use zcash_client_backend::{data_api::error::Error, encoding::encode_extended_full_viewing_key};
|
use zcash_client_backend::{data_api::error::Error, encoding::encode_extended_full_viewing_key};
|
||||||
|
|
||||||
use crate::{address_from_extfvk, error::SqliteClientError, DataConnection};
|
use crate::{address_from_extfvk, error::SqliteClientError, WalletDB};
|
||||||
|
|
||||||
/// Sets up the internal structure of the data database.
|
/// Sets up the internal structure of the data database.
|
||||||
///
|
///
|
||||||
|
@ -19,15 +19,15 @@ use crate::{address_from_extfvk, error::SqliteClientError, DataConnection};
|
||||||
/// ```
|
/// ```
|
||||||
/// use tempfile::NamedTempFile;
|
/// use tempfile::NamedTempFile;
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::init::init_data_database,
|
/// wallet::init::init_data_database,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file.path()).unwrap();
|
/// let db = WalletDB::for_path(data_file.path()).unwrap();
|
||||||
/// init_data_database(&db).unwrap();
|
/// init_data_database(&db).unwrap();
|
||||||
/// ```
|
/// ```
|
||||||
pub fn init_data_database(db_data: &DataConnection) -> Result<(), rusqlite::Error> {
|
pub fn init_data_database(db_data: &WalletDB) -> Result<(), rusqlite::Error> {
|
||||||
db_data.0.execute(
|
db_data.0.execute(
|
||||||
"CREATE TABLE IF NOT EXISTS accounts (
|
"CREATE TABLE IF NOT EXISTS accounts (
|
||||||
account INTEGER PRIMARY KEY,
|
account INTEGER PRIMARY KEY,
|
||||||
|
@ -126,12 +126,12 @@ pub fn init_data_database(db_data: &DataConnection) -> Result<(), rusqlite::Erro
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::init::{init_accounts_table, init_data_database}
|
/// wallet::init::{init_accounts_table, init_data_database}
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db_data = DataConnection::for_path(data_file.path()).unwrap();
|
/// let db_data = WalletDB::for_path(data_file.path()).unwrap();
|
||||||
/// init_data_database(&db_data).unwrap();
|
/// init_data_database(&db_data).unwrap();
|
||||||
///
|
///
|
||||||
/// let extsk = ExtendedSpendingKey::master(&[]);
|
/// let extsk = ExtendedSpendingKey::master(&[]);
|
||||||
|
@ -143,7 +143,7 @@ pub fn init_data_database(db_data: &DataConnection) -> Result<(), rusqlite::Erro
|
||||||
/// [`scan_cached_blocks`]: crate::scan::scan_cached_blocks
|
/// [`scan_cached_blocks`]: crate::scan::scan_cached_blocks
|
||||||
/// [`create_to_address`]: crate::transact::create_to_address
|
/// [`create_to_address`]: crate::transact::create_to_address
|
||||||
pub fn init_accounts_table<P: consensus::Parameters>(
|
pub fn init_accounts_table<P: consensus::Parameters>(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
params: &P,
|
params: &P,
|
||||||
extfvks: &[ExtendedFullViewingKey],
|
extfvks: &[ExtendedFullViewingKey],
|
||||||
) -> Result<(), SqliteClientError> {
|
) -> Result<(), SqliteClientError> {
|
||||||
|
@ -191,7 +191,7 @@ pub fn init_accounts_table<P: consensus::Parameters>(
|
||||||
/// consensus::BlockHeight,
|
/// consensus::BlockHeight,
|
||||||
/// };
|
/// };
|
||||||
/// use zcash_client_sqlite::{
|
/// use zcash_client_sqlite::{
|
||||||
/// DataConnection,
|
/// WalletDB,
|
||||||
/// wallet::init::init_blocks_table,
|
/// wallet::init::init_blocks_table,
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
|
@ -206,11 +206,11 @@ pub fn init_accounts_table<P: consensus::Parameters>(
|
||||||
/// let sapling_tree = &[];
|
/// let sapling_tree = &[];
|
||||||
///
|
///
|
||||||
/// let data_file = NamedTempFile::new().unwrap();
|
/// let data_file = NamedTempFile::new().unwrap();
|
||||||
/// let db = DataConnection::for_path(data_file.path()).unwrap();
|
/// let db = WalletDB::for_path(data_file.path()).unwrap();
|
||||||
/// init_blocks_table(&db, height, hash, time, sapling_tree);
|
/// init_blocks_table(&db, height, hash, time, sapling_tree);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn init_blocks_table(
|
pub fn init_blocks_table(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
height: BlockHeight,
|
height: BlockHeight,
|
||||||
hash: BlockHash,
|
hash: BlockHash,
|
||||||
time: u32,
|
time: u32,
|
||||||
|
@ -246,14 +246,14 @@ mod tests {
|
||||||
zip32::{ExtendedFullViewingKey, ExtendedSpendingKey},
|
zip32::{ExtendedFullViewingKey, ExtendedSpendingKey},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{tests, wallet::get_address, AccountId, DataConnection};
|
use crate::{tests, wallet::get_address, AccountId, WalletDB};
|
||||||
|
|
||||||
use super::{init_accounts_table, init_blocks_table, init_data_database};
|
use super::{init_accounts_table, init_blocks_table, init_data_database};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn init_accounts_table_only_works_once() {
|
fn init_accounts_table_only_works_once() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// We can call the function as many times as we want with no data
|
// We can call the function as many times as we want with no data
|
||||||
|
@ -274,7 +274,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn init_blocks_table_only_works_once() {
|
fn init_blocks_table_only_works_once() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// First call with data should initialise the blocks table
|
// First call with data should initialise the blocks table
|
||||||
|
@ -301,7 +301,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn init_accounts_table_stores_correct_address() {
|
fn init_accounts_table_stores_correct_address() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
|
|
@ -17,10 +17,10 @@ use zcash_client_backend::{
|
||||||
wallet::{AccountId, SpendableNote},
|
wallet::{AccountId, SpendableNote},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{error::SqliteClientError, DataConnection};
|
use crate::{error::SqliteClientError, WalletDB};
|
||||||
|
|
||||||
pub fn select_spendable_notes(
|
pub fn select_spendable_notes(
|
||||||
data: &DataConnection,
|
data: &WalletDB,
|
||||||
account: AccountId,
|
account: AccountId,
|
||||||
target_value: Amount,
|
target_value: Amount,
|
||||||
anchor_height: BlockHeight,
|
anchor_height: BlockHeight,
|
||||||
|
@ -148,7 +148,7 @@ mod tests {
|
||||||
get_balance, get_verified_balance,
|
get_balance, get_verified_balance,
|
||||||
init::{init_accounts_table, init_blocks_table, init_data_database},
|
init::{init_accounts_table, init_blocks_table, init_data_database},
|
||||||
},
|
},
|
||||||
AccountId, CacheConnection, DataConnection,
|
AccountId, BlockDB, WalletDB,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn test_prover() -> impl TxProver {
|
fn test_prover() -> impl TxProver {
|
||||||
|
@ -163,7 +163,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn create_to_address_fails_on_incorrect_extsk() {
|
fn create_to_address_fails_on_incorrect_extsk() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add two accounts to the wallet
|
// Add two accounts to the wallet
|
||||||
|
@ -211,7 +211,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn create_to_address_fails_with_no_blocks() {
|
fn create_to_address_fails_with_no_blocks() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -240,7 +240,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn create_to_address_fails_on_insufficient_balance() {
|
fn create_to_address_fails_on_insufficient_balance() {
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
init_blocks_table(
|
init_blocks_table(
|
||||||
&db_data,
|
&db_data,
|
||||||
|
@ -283,11 +283,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn create_to_address_fails_on_unverified_notes() {
|
fn create_to_address_fails_on_unverified_notes() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -413,11 +413,11 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn create_to_address_fails_on_locked_notes() {
|
fn create_to_address_fails_on_locked_notes() {
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
@ -533,11 +533,11 @@ mod tests {
|
||||||
fn ovk_policy_prevents_recovery_from_chain() {
|
fn ovk_policy_prevents_recovery_from_chain() {
|
||||||
let network = tests::network();
|
let network = tests::network();
|
||||||
let cache_file = NamedTempFile::new().unwrap();
|
let cache_file = NamedTempFile::new().unwrap();
|
||||||
let db_cache = CacheConnection(Connection::open(cache_file.path()).unwrap());
|
let db_cache = BlockDB(Connection::open(cache_file.path()).unwrap());
|
||||||
init_cache_database(&db_cache).unwrap();
|
init_cache_database(&db_cache).unwrap();
|
||||||
|
|
||||||
let data_file = NamedTempFile::new().unwrap();
|
let data_file = NamedTempFile::new().unwrap();
|
||||||
let db_data = DataConnection(Connection::open(data_file.path()).unwrap());
|
let db_data = WalletDB(Connection::open(data_file.path()).unwrap());
|
||||||
init_data_database(&db_data).unwrap();
|
init_data_database(&db_data).unwrap();
|
||||||
|
|
||||||
// Add an account to the wallet
|
// Add an account to the wallet
|
||||||
|
|
Loading…
Reference in New Issue