1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use crate::add_accounts_impl;
use aptos_config::{
config::{RocksdbConfigs, StoragePrunerConfig, NO_OP_STORAGE_PRUNER_CONFIG},
utils::get_genesis_txn,
};
use aptos_vm::AptosVM;
use aptosdb::AptosDB;
use executor::db_bootstrapper::{generate_waypoint, maybe_bootstrap};
use std::{fs, path::Path};
use storage_interface::DbReaderWriter;
pub fn run(
num_accounts: usize,
init_account_balance: u64,
block_size: usize,
db_dir: impl AsRef<Path>,
storage_pruner_config: StoragePrunerConfig,
verify_sequence_numbers: bool,
) {
println!("Initializing...");
if db_dir.as_ref().exists() {
panic!("data-dir exists already.");
}
fs::create_dir_all(db_dir.as_ref()).unwrap();
bootstrap_with_genesis(&db_dir);
println!(
"Finished empty DB creation, DB dir: {}. Creating accounts now...",
db_dir.as_ref().display()
);
add_accounts_impl(
num_accounts,
init_account_balance,
block_size,
&db_dir,
&db_dir,
storage_pruner_config,
verify_sequence_numbers,
);
}
fn bootstrap_with_genesis(db_dir: impl AsRef<Path>) {
let (config, _genesis_key) = aptos_genesis::test_utils::test_config();
let mut rocksdb_configs = RocksdbConfigs::default();
rocksdb_configs.state_merkle_db_config.max_open_files = -1;
let (_db, db_rw) = DbReaderWriter::wrap(
AptosDB::open(
&db_dir,
false,
NO_OP_STORAGE_PRUNER_CONFIG,
rocksdb_configs,
)
.expect("DB should open."),
);
let waypoint = generate_waypoint::<AptosVM>(&db_rw, get_genesis_txn(&config).unwrap()).unwrap();
maybe_bootstrap::<AptosVM>(&db_rw, get_genesis_txn(&config).unwrap(), waypoint).unwrap();
}