Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: improve organization of ./devimint #3798

Merged
merged 1 commit into from Dec 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion devimint/src/bin/faucet.rs
Expand Up @@ -103,7 +103,7 @@ fn get_invite_code(invite_code: Option<String>) -> anyhow::Result<String> {
match invite_code {
Some(s) => Ok(s),
None => {
let data_dir = std::env::var("FM_DATA_DIR")?;
let data_dir = std::env::var("FM_CLIENT_DIR")?;
Ok(std::fs::read_to_string(
PathBuf::from(data_dir).join("invite-code"),
)?)
Expand Down
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"