Skip to content

Commit d94b4e3

Browse files
committed
chore: improve README
1 parent 2dc025e commit d94b4e3

File tree

2 files changed

+43
-36
lines changed

2 files changed

+43
-36
lines changed

README.design.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# BFTE design
2+
3+
*Some of these might make more sense if you already understand Fedimint*.
4+
5+
In BFTE consensus is a central primitive, and near *everything* is part of the consensus history.
6+
7+
Adding and removing peers, changes to configuration like adding new modules
8+
(applications), software upgrades, etc. are all implemented by consensus items agreed on
9+
and published on a shared ledger.
10+
11+
Replicating, but not participating nodes are a first class primitive.
12+
Anyone can run an additional consensus history replicating node, without necessarily participating
13+
in consensus building.
14+
15+
A simple consensus algorithm (Simplex) is used to perfectly match
16+
the needs of BFTE.
17+
18+
Simplicity is achieved through interactions between few well
19+
thought general purpose pritmivites.
20+
21+
Trying to avoid non-consensus APIs and state.
22+
23+
Maintaining additional APIs, and client side state machines is just duplicating effort.
24+
The mutable part of the consensus state is typically small anyway and
25+
"clients" might maybe throw away the bulk data that they don't need anyway,
26+
as they not validate the consensus.
27+
28+
Things like DKGs can just happen as a part of consensus. Mint module should support
29+
multiple keysets, and generating new ones on demand.
30+
31+
Consensus items should be just module specific inputs/outputs, signed by the
32+
node itself. This allows things like conditional consensus items.
33+
34+
Effect system as the only means of inter-module interactions. Modules processing consensus
35+
items can produce typed and serialized "effects", which other modules that happen to understand
36+
can act on.
37+

README.md

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
BTFE is a BFT consensus engine. A permissioned p2p blockchain to
44
drive BFT applications in federated setup, including financial (Bitcoin) domains.
55

6-
### BFTE vs Fedimint
6+
## Introduction
77

88
It's fair to say BFTE in its current form is a research on alternative
99
implementation of a Fedimint-like system, and this project aims at the very similar *very-long*
@@ -42,43 +42,13 @@ compatibility etc.
4242
By ignoring all these ambitions, BFTE can focus first on honing the primary
4343
goal: becoming good general purpose modular consensus engine.
4444

45-
### Design (Ideas):
45+
## Links
4646

47-
*Some of these might make more sense if you already understand Fedimint*.
47+
* [BFTE Radicle site](https://app.radicle.xyz/nodes/radicle.dpc.pw/rad:zii8qFzZhN3vigh8BuxGCuEEp6z4) - BFTE uses [Radicle][radicle] as primary distributed code collaboration platform.
48+
* [BFTE design document](./README.design.md)
4849

49-
In BFTE consensus is a central primitive, and near *everything* is part of the consensus history.
50+
[radicle]: https://radicle.xyz
5051

51-
Adding and removing peers, changes to configuration like adding new modules
52-
(applications), software upgrades, etc. are all implemented by consensus items agreed on
53-
and published on a shared ledger.
54-
55-
Replicating, but not participating nodes are a first class primitive.
56-
Anyone can run an additional consensus history replicating node, without necessarily participating
57-
in consensus building.
58-
59-
A simple consensus algorithm (Simplex) is used to perfectly match
60-
the needs of BFTE.
61-
62-
Simplicity is achieved through interactions between few well
63-
thought general purpose pritmivites.
64-
65-
Trying to avoid non-consensus APIs and state.
66-
67-
Maintaining additional APIs, and client side state machines is just duplicating effort.
68-
The mutable part of the consensus state is typically small anyway and
69-
"clients" might maybe throw away the bulk data that they don't need anyway,
70-
as they not validate the consensus.
71-
72-
Things like DKGs can just happen as a part of consensus. Mint module should support
73-
multiple keysets, and generating new ones on demand.
74-
75-
Consensus items should be just module specific inputs/outputs, signed by the
76-
node itself. This allows things like conditional consensus items.
77-
78-
Effect system as the only means of inter-module interactions. Modules processing consensus
79-
items can produce typed and serialized "effects", which other modules that happen to understand
80-
can act on.
81-
82-
### License
52+
## License
8353

8454
MPLE is licensed under MIT.

0 commit comments

Comments
 (0)