Skip to content

Commit

Permalink
chore: improve organization of ./devimint
Browse files Browse the repository at this point in the history
  • Loading branch information
mayrf committed Dec 2, 2023
1 parent 361a16f commit 81dd051
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 38 deletions.
8 changes: 4 additions & 4 deletions devimint/src/federation.rs
Expand Up @@ -51,7 +51,7 @@ impl Client {
/// TODO: Get rid of built-in client, make it a normal `Client` and let them
/// fork each other as they please.
async fn new_forked(name: &str) -> Result<Client> {
let workdir: PathBuf = env::var("FM_DATA_DIR")?.parse()?;
let workdir: PathBuf = env::var("FM_CLIENT_DIR")?.parse()?;
let client_dir = workdir.join("clients").join(name);

std::fs::create_dir_all(&client_dir)?;
Expand Down Expand Up @@ -107,7 +107,7 @@ impl Federation {
run_dkg(admin_clients, params).await?;

let out_dir = &vars[&0].FM_DATA_DIR;
let cfg_dir = &process_mgr.globals.FM_DATA_DIR;
let cfg_dir = &process_mgr.globals.FM_CLIENT_DIR;
let out_dir = utf8(out_dir);
let cfg_dir = utf8(cfg_dir);
// move configs to config directory
Expand All @@ -132,7 +132,7 @@ impl Federation {
}

pub fn invite_code(&self) -> Result<String> {
let workdir: PathBuf = env::var("FM_DATA_DIR")?.parse()?;
let workdir: PathBuf = env::var("FM_CLIENT_DIR")?.parse()?;
let invite_code = fs::read_to_string(workdir.join("invite-code"))?;
Ok(invite_code)
}
Expand Down Expand Up @@ -162,7 +162,7 @@ impl Federation {
}

pub async fn cmd(&self) -> Command {
let cfg_dir = env::var("FM_DATA_DIR").unwrap();
let cfg_dir = env::var("FM_CLIENT_DIR").unwrap();
cmd!("fedimint-cli", "--data-dir={cfg_dir}")
}

Expand Down
26 changes: 13 additions & 13 deletions devimint/src/main.rs
Expand Up @@ -215,8 +215,8 @@ async fn cli_tests(dev_fed: DevFed) -> Result<()> {
fed,
"dev",
"config-decrypt",
"--in-file={data_dir}/server-0/private.encrypt",
"--out-file={data_dir}/server-0/config-plaintext.json"
"--in-file={data_dir}/fedimintd-0/private.encrypt",
"--out-file={data_dir}/fedimintd-0/config-plaintext.json"
)
.env("FM_PASSWORD", "pass")
.run()
Expand All @@ -226,8 +226,8 @@ async fn cli_tests(dev_fed: DevFed) -> Result<()> {
fed,
"dev",
"config-encrypt",
"--in-file={data_dir}/server-0/config-plaintext.json",
"--out-file={data_dir}/server-0/config-2"
"--in-file={data_dir}/fedimintd-0/config-plaintext.json",
"--out-file={data_dir}/fedimintd-0/config-2"
)
.env("FM_PASSWORD", "pass-foo")
.run()
Expand All @@ -237,17 +237,17 @@ async fn cli_tests(dev_fed: DevFed) -> Result<()> {
fed,
"dev",
"config-decrypt",
"--in-file={data_dir}/server-0/config-2",
"--out-file={data_dir}/server-0/config-plaintext-2.json"
"--in-file={data_dir}/fedimintd-0/config-2",
"--out-file={data_dir}/fedimintd-0/config-plaintext-2.json"
)
.env("FM_PASSWORD", "pass-foo")
.run()
.await?;

let plaintext_one =
fs::read_to_string(format!("{data_dir}/server-0/config-plaintext.json")).await?;
fs::read_to_string(format!("{data_dir}/fedimintd-0/config-plaintext.json")).await?;
let plaintext_two =
fs::read_to_string(format!("{data_dir}/server-0/config-plaintext-2.json")).await?;
fs::read_to_string(format!("{data_dir}/fedimintd-0/config-plaintext-2.json")).await?;
anyhow::ensure!(
plaintext_one == plaintext_two,
"config-decrypt/encrypt failed"
Expand Down Expand Up @@ -1409,10 +1409,10 @@ pub async fn recoverytool_test(dev_fed: DevFed) -> Result<()> {
"recoverytool",
"--readonly",
"--cfg",
"{data_dir}/server-0",
"{data_dir}/fedimintd-0",
"utxos",
"--db",
"{data_dir}/server-0/database"
"{data_dir}/fedimintd-0/database"
)
.env("FM_PASSWORD", "pass")
.out_json()
Expand Down Expand Up @@ -1469,10 +1469,10 @@ pub async fn recoverytool_test(dev_fed: DevFed) -> Result<()> {
"recoverytool",
"--readonly",
"--cfg",
"{data_dir}/server-0",
"{data_dir}/fedimintd-0",
"epochs",
"--db",
"{data_dir}/server-0/database"
"{data_dir}/fedimintd-0/database"
)
.env("FM_PASSWORD", "pass")
.out_json()
Expand Down Expand Up @@ -1615,7 +1615,7 @@ async fn run_ui(process_mgr: &ProcessManager) -> Result<(Vec<Fedimintd>, Externa
FM_DATA_DIR: process_mgr
.globals
.FM_DATA_DIR
.join(format!("server-{peer}")),
.join(format!("fedimintd-{peer}")),
FM_BIND_METRICS_API: format!("127.0.0.1:{metrics_port}"),
};
let fm = Fedimintd::new(process_mgr, bitcoind.clone(), peer, &vars).await?;
Expand Down
7 changes: 4 additions & 3 deletions devimint/src/vars.rs
Expand Up @@ -113,7 +113,8 @@ declare_vars! {
FM_CLN_DIR: PathBuf = mkdir(FM_TEST_DIR.join("cln")).await?;
FM_LND_DIR: PathBuf = mkdir(FM_TEST_DIR.join("lnd")).await?;
FM_BTC_DIR: PathBuf = mkdir(FM_TEST_DIR.join("bitcoin")).await?;
FM_DATA_DIR: PathBuf = mkdir(FM_TEST_DIR.join("cfg")).await?;
FM_DATA_DIR: PathBuf = FM_TEST_DIR.clone();
FM_CLIENT_DIR: PathBuf = mkdir(FM_TEST_DIR.join("client")).await?;
FM_ELECTRS_DIR: PathBuf = mkdir(FM_TEST_DIR.join("electrs")).await?;
FM_ESPLORA_DIR: PathBuf = mkdir(FM_TEST_DIR.join("esplora")).await?;
FM_READY_FILE: PathBuf = FM_TEST_DIR.join("ready");
Expand All @@ -135,7 +136,7 @@ declare_vars! {
FM_LIGHTNING_CLI: String = f!("lightning-cli --network regtest --lightning-dir={}", utf8(&FM_CLN_DIR));
FM_LNCLI: String = f!("lncli -n regtest --lnddir={} --rpcserver=localhost:{FM_PORT_LND_RPC}", utf8(&FM_LND_DIR));
FM_BTC_CLIENT: String = f!("bitcoin-cli -regtest -rpcuser=bitcoin -rpcpassword=bitcoin -datadir={}", utf8(&FM_BTC_DIR));
FM_MINT_CLIENT: String = f!("fedimint-cli --data-dir {}", utf8(&FM_DATA_DIR));
FM_MINT_CLIENT: String = f!("fedimint-cli --data-dir {}", utf8(&FM_CLIENT_DIR));
FM_MINT_RPC_CLIENT: String = f!("mint-rpc-client");
FM_GWCLI_CLN: String = f!("gateway-cli --rpcpassword=theresnosecondbest -a http://127.0.0.1:{FM_PORT_GW_CLN}/");
FM_GWCLI_LND: String = f!("gateway-cli --rpcpassword=theresnosecondbest -a http://127.0.0.1:{FM_PORT_GW_LND}/");
Expand All @@ -162,6 +163,6 @@ declare_vars! {
FM_P2P_URL: String = params.consensus.peers[&params.local.our_id].p2p_url.to_string();
FM_API_URL: String = params.consensus.peers[&params.local.our_id].api_url.to_string();
FM_BIND_METRICS_API: String = format!("127.0.0.1:{}", globals.FM_PORT_FEDIMINTD_BASE as usize + 2 * globals.FM_FED_SIZE + params.local.our_id.to_usize());
FM_DATA_DIR: PathBuf = mkdir(globals.FM_DATA_DIR.join(format!("server-{}", params.local.our_id.to_usize()))).await?;
FM_DATA_DIR: PathBuf = mkdir(globals.FM_DATA_DIR.join(format!("fedimintd-{}", params.local.our_id.to_usize()))).await?;
}
}
2 changes: 1 addition & 1 deletion fedimint-cli/src/lib.rs
Expand Up @@ -231,7 +231,7 @@ impl fmt::Display for CliError {
#[command(version)]
struct Opts {
/// The working directory of the client containing the config and db
#[arg(long = "data-dir", alias = "workdir", env = "FM_DATA_DIR")]
#[arg(long = "data-dir", alias = "workdir", env = "FM_CLIENT_DIR")]
workdir: Option<PathBuf>,

/// Peer id of the guardian
Expand Down
16 changes: 8 additions & 8 deletions fedimint-dbtool/README.md
Expand Up @@ -69,27 +69,27 @@ First, run a local federation in mprocs:
just mprocs
```

Dump the entire database of server-0
Dump the entire database of fedimintd-0
```shell
fedimint-dbtool $FM_DATA_DIR/server-0/database dump -- $FM_DATA_DIR/server-0 pass
fedimint-dbtool $FM_DATA_DIR/fedimintd-0/database dump -- $FM_DATA_DIR/fedimintd-0 pass
```

Dump the consensus db entries of server-0
Dump the consensus db entries of fedimintd-0
```shell
fedimint-dbtool $FM_DATA_DIR/server-0/database dump -- $FM_DATA_DIR/server-0 pass consensus
fedimint-dbtool $FM_DATA_DIR/fedimintd-0/database dump -- $FM_DATA_DIR/fedimintd-0 pass consensus
```

Dump the blocks from the wallet module of server-1
Dump the blocks from the wallet module of fedimintd-1
```shell
fedimint-dbtool $FM_DATA_DIR/server-1/database dump -- $FM_DATA_DIR/server-1 pass consensus blockhash
fedimint-dbtool $FM_DATA_DIR/fedimintd-1/database dump -- $FM_DATA_DIR/fedimintd-1 pass consensus blockhash
```

Dump the used notes from the mint module and the accepted transactions from consensus
```shell
fedimint-dbtool $FM_DATA_DIR/server-1/database dump -- $FM_DATA_DIR/server-1 pass consensus,mint notenonce,acceptedtransaction
fedimint-dbtool $FM_DATA_DIR/fedimintd-1/database dump -- $FM_DATA_DIR/fedimintd-1 pass consensus,mint notenonce,acceptedtransaction
```

Dump the entire client database (client password can be anything since it doesn't require decryption)
```shell
fedimint-dbtool $FM_DATA_DIR/client.db dump $FM_DATA_DIR clientpass client
fedimint-dbtool $FM_CLIENT_DIR/client.db dump $FM_CLIENT_DIR clientpass client
```
4 changes: 2 additions & 2 deletions recoverytool/README.md
Expand Up @@ -61,7 +61,7 @@ The output of `recoverytool` consists of an array of wallet descriptors with opt
include n-1 public keys and 1 private key (belonging to the guardian running the script):

```
$ recoverytool --cfg server-1 --password pass1 utxos --db server-1/database/ | jq
$ recoverytool --cfg fedimintd-1 --password pass1 utxos --db fedimintd-1/database/ | jq
[
{
"outpoint": "c76d51c9c6dc6b8e462c37b3fa376e7c2055f04f16a8fffc2ab66c5bf0deff55:1",
Expand All @@ -80,7 +80,7 @@ To import it into bitcoin core use the following `jq` command to transform the t
for [`bitcoin-cli importdescriptors`](https://bitcoincore.org/en/doc/24.0.0/rpc/wallet/importdescriptors/):

```bash
$ WALLETS="$(recoverytool --cfg server-1 --password pass1 utxos --db server-1/database/ | jq '. | map({"desc": .descriptor, "timestamp":0})')"
$ WALLETS="$(recoverytool --cfg fedimintd-1 --password pass1 utxos --db fedimintd-1/database/ | jq '. | map({"desc": .descriptor, "timestamp":0})')"
[
{
"desc": "wsh(sortedmulti(3,0280bf3115766b7e1cb23f2f57caf4de5a9171d3985934f2895cc568b384b52319,cSRM825vXJwf8iXcngedon8nQsPC9VMB18wSiG1Fgw6Y1Kzi16ta,021123625d9b21822e1178fc0d2b3f737d0397584cfac821df3250e49c3127cab5,03865705be62a71a3776cca1169908099ad6d138a0c0ed4aeeaf2c8e64616f4085))#h2zg3uhw",
Expand Down
14 changes: 7 additions & 7 deletions scripts/dev/aliases.sh
Expand Up @@ -6,10 +6,10 @@ alias bitcoin-cli="\$FM_BTC_CLIENT"
alias fedimint-cli="\$FM_MINT_CLIENT"
alias gateway-cln="\$FM_GWCLI_CLN"
alias gateway-lnd="\$FM_GWCLI_LND"
alias fedimint-dbtool-server-0="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/server-0 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/server-0/database"
alias fedimint-dbtool-server-1="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/server-1 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/server-1/database"
alias fedimint-dbtool-server-2="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/server-2 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/server-2/database"
alias fedimint-dbtool-server-3="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/server-3 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/server-3/database"
alias fedimint-dbtool-client="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR FM_PASSWORD=clientpass \$FM_DB_TOOL --database \$FM_DATA_DIR/client.db"
alias fedimint-dbtool-gw-cln="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR FM_PASSWORD=clientpass \$FM_DB_TOOL --database \$FM_DATA_DIR/../gw-cln/gatewayd.db"
alias fedimint-dbtool-gw-lnd="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR FM_PASSWORD=clientpass \$FM_DB_TOOL --database \$FM_DATA_DIR/../gw-lnd/gatewayd.db"
alias fedimint-dbtool-fedimintd-0="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/fedimintd-0 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/fedimintd-0/database"
alias fedimint-dbtool-fedimintd-1="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/fedimintd-1 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/fedimintd-1/database"
alias fedimint-dbtool-fedimintd-2="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/fedimintd-2 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/fedimintd-2/database"
alias fedimint-dbtool-fedimintd-3="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR/fedimintd-3 FM_PASSWORD=pass \$FM_DB_TOOL --database \$FM_DATA_DIR/fedimintd-3/database"
alias fedimint-dbtool-client="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR FM_PASSWORD=clientpass \$FM_DB_TOOL --database \$FM_CLIENT_DIR/client.db"
alias fedimint-dbtool-gw-cln="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR FM_PASSWORD=clientpass \$FM_DB_TOOL --database \$FM_DATA_DIR/gw-cln/gatewayd.db"
alias fedimint-dbtool-gw-lnd="env FM_DBTOOL_CONFIG_DIR=\$FM_DATA_DIR FM_PASSWORD=clientpass \$FM_DB_TOOL --database \$FM_DATA_DIR/gw-lnd/gatewayd.db"

0 comments on commit 81dd051

Please sign in to comment.