Skip to content

Commit 65c7fe2

Browse files
committed
chore: logo.svg
1 parent 39036cd commit 65c7fe2

5 files changed

Lines changed: 48 additions & 21 deletions

File tree

README.md

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ Head to [BFTE's Radicle site][bfte-radicle] for an up to date version.
1414
## Introduction
1515

1616
BFTE in its current form is a research project on alternative
17-
design/implementation of a Fedimint-like system. While th *very-long*
17+
design/implementation of a Fedimint-like system. While the *very-long*
1818
term goals and supported use-cases could be similar to [Fedimint][fedimint],
1919
it has a luxury of not worrying about immediate practical application,
20-
and enabling focus on parts and goals that the author (dpc)
20+
enabling focus on parts and goals that the author (dpc)
2121
finds most promising and interesting.
2222

2323
[fedimint]: http://github.com/fedimint/fedimint
@@ -27,7 +27,7 @@ where it seems to make sense.
2727

2828
Fedimint started as a Bitcoin Ecash Mint solution, with a side-goal/need
2929
of building a general purpose consensus engine. BFTE stars with
30-
a goal of researching a good general purpose consensus engine first, with
30+
a goal of building as good as possible general purpose consensus engine first, with
3131
an ability to support Bitcoin/cryptography applications like Ecash Mints "maybe one
3232
day".
3333

@@ -36,15 +36,15 @@ in itself, with large and complex integrations and ever evolving ecosystem, with
3636
expectations on stability and robustness.
3737

3838
BFTE can just let Fedimint chart these difficult waters, while only
39-
worrying about the general architecture eventually be able to support
39+
worrying about the general architecture, which could eventually be able to support
4040
what Fedimint can already do, while focusing on less mission-critical applications,
4141
like:
4242

4343
* CI system coordination,
4444
* review systems,
4545
* etc.
4646

47-
Basically - things that could benefit from a BFT Consensus.
47+
basically - things that could benefit from a BFT Consensus.
4848

4949
Similarly, Fedimint's ambition was always reaching broad end user appeal.
5050
This requires a lot of effort: building end user clients including web and
@@ -53,16 +53,20 @@ compatibility etc.
5353

5454
By ignoring all these ambitions, BFTE can focus first on honing the primary
5555
goal: becoming good general purpose modular consensus engine, and be ambitious
56-
about other aspects of the design places and implementation.
56+
about other aspects of the design space and implementation.
5757

5858
## Status
5959

60-
As of last update the project has most of the core pieces in a working state:
60+
As of last update the project has most of the core pieces in a working state.
6161

62-
* Simplex Consensu algorithm is implemented,
63-
* has a usable web UI,
64-
* Consensus Control Mode allows adding and removing peers from the consensus,
65-
* Metadata Module is a first simple showcase module.
62+
Implemented:
63+
64+
* Simplex BFT consensu algorithm,
65+
* web UI,
66+
* consensus membership changes,
67+
* core consensus and module consensus versioning and upgrades,
68+
* consensus control module,
69+
* metadata module (first simple example module),
6670

6771
## Running
6872

@@ -72,8 +76,25 @@ and run it. Using the provided Nix Flake Dev Shell is recommend.
7276
If you're a Nix user (which you should be), you can easily give it a try:
7377

7478
```
75-
nix run git+https://radicle.dpc.pw/zii8qFzZhN3vigh8BuxGCuEEp6z4.git
79+
nix run git+https://radicle.dpc.pw/zii8qFzZhN3vigh8BuxGCuEEp6z4.git -- --help
80+
```
81+
82+
eg.
83+
7684
```
85+
> nix run git+https://radicle.dpc.pw/zii8qFzZhN3vigh8BuxGCuEEp6z4.git -- gen-secret > /tmp/secret
86+
PeerId: nk2tb7xtkw5uqyxj65w0fhd3nqdhm7ztbs2uysxrgv3yfc5dbbn1
87+
88+
89+
This mnemonic is irrecoverable if lost. Please make a back up before using it!
90+
91+
> nix run git+https://radicle.dpc.pw/zii8qFzZhN3vigh8BuxGCuEEp6z4.git -- run --secret-path /tmp/secret --data-dir /tmp/
92+
2025-06-13T05:03:19.622758Z INFO bfte::node: Opening redb database… path=/tmp/bfte.redb
93+
2025-06-13T05:03:19.626664Z INFO bfte::node: Iroh endpoint initialized endpoint=a182558e0be2a4c145ad60a5e92fd11356c2d441b43e7925e27b3964ca72ca43 bound_ipv4=0.0.0.0:35687 bound_ipv6=[::]:35688
94+
2025-06-13T05:03:19.626707Z WARN bfte::node: Temporary UI password pass=GYBJQPbFhk
95+
2025-06-13T05:03:19.626858Z INFO bfte::node: Waiting for consensus initialization via web UI
96+
2025-06-13T05:03:19.626905Z INFO bfte::node::ui: Starting web UI server... addr=[::1]:6910
97+
`
7798
7899
## Links
79100
Lines changed: 4 additions & 0 deletions
Loading

crates/node-ui-axum/src/assets.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub const ROUTE_ALPINEJS_JS: &str = "/assets/alpine/alpinejs-3.18.8.js";
1313
pub const ROUTE_ALPINEAJAX_JS: &str = "/assets/alpine/alpine-ajax-0.12.2.js";
1414
pub const ROUTE_PICO_CSS: &str = "/assets/pico@2.indigo.min.css";
1515
pub const ROUTE_STYLE_CSS: &str = "/assets/style.css";
16-
pub const ROUTE_LOGO_PNG: &str = "/assets/logo.png";
16+
pub const ROUTE_LOGO_SVG: &str = "/assets/logo.svg";
1717

1818
pub(crate) fn get_static_asset(content_type: &'static str, body: &'static [u8]) -> Response {
1919
(
@@ -39,6 +39,9 @@ pub(crate) fn get_static_js(body: &'static str) -> Response {
3939
pub(crate) fn get_static_json(body: &'static str) -> Response {
4040
get_static_asset("application/json", body.as_bytes())
4141
}
42+
pub(crate) fn get_static_svg(body: &'static [u8]) -> Response {
43+
get_static_asset("image/svg+xml", body)
44+
}
4245

4346
pub(crate) trait WithStaticRoutesExt {
4447
fn with_static_routes(self) -> Self;
@@ -87,10 +90,9 @@ where
8790
ROUTE_PICO_CSS,
8891
get(|| async move { get_static_css(include_str!("../assets/pico@2.indigo.min.css")) }),
8992
)
90-
// TODO: add some logo
91-
// .route(
92-
// ROUTE_LOGO_PNG,
93-
// get(|| async move {
94-
// get_static_png(include_bytes!("../assets/logo.png")) }),
93+
.route(
94+
ROUTE_LOGO_SVG,
95+
get(|| async move { get_static_svg(include_bytes!("../assets/logo.svg")) }),
96+
)
9597
}
9698
}

crates/node-ui-axum/src/page.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use bfte_consensus_core::module::ModuleId;
22
use maud::{DOCTYPE, Markup, html};
33

44
use crate::assets::{
5-
ROUTE_ALPINEAJAX_JS, ROUTE_ALPINEJS_JS, ROUTE_DATASTAR_JS, ROUTE_LOGO_PNG, ROUTE_PICO_CSS,
5+
ROUTE_ALPINEAJAX_JS, ROUTE_ALPINEJS_JS, ROUTE_DATASTAR_JS, ROUTE_LOGO_SVG, ROUTE_PICO_CSS,
66
ROUTE_STYLE_CSS,
77
};
88
use crate::{ROUTE_EXPLORER, ROUTE_INVITE, ROUTE_UI, UiState};
@@ -17,7 +17,7 @@ impl UiState {
1717
title { (page_title) }
1818
link rel="stylesheet" type="text/css" href=(ROUTE_PICO_CSS);
1919
link rel="stylesheet" type="text/css" href=(ROUTE_STYLE_CSS);
20-
link rel="icon" type="image/png" href=(ROUTE_LOGO_PNG);
20+
link rel="icon" type="image/svg+xml" href=(ROUTE_LOGO_SVG);
2121
script defer type="module" src=(ROUTE_DATASTAR_JS) {}
2222
script defer src=(ROUTE_ALPINEAJAX_JS) {}
2323
script defer src=(ROUTE_ALPINEJS_JS) {}

crates/node-ui-axum/src/routes/init.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ impl UiState {
6868
"x-target.error"="error-response-form-create:error-response"
6969
{
7070
p { "Start a new consensus network as the first node." }
71-
button type="submit" disabled[(!can_create_consensus)] { "Create" }
71+
button type="submit" disabled[!can_create_consensus] { "Create" }
7272
@if !has_secret {
7373
p { "Must have a root secret set with" code { "--secret-path" } "." }
7474
}

0 commit comments

Comments
 (0)