Skip to content

Commit

Permalink
pre-live cleanup 1
Browse files Browse the repository at this point in the history
  • Loading branch information
humansinstitute committed Aug 27, 2022
1 parent 11d8b35 commit eb256fa
Show file tree
Hide file tree
Showing 32 changed files with 220 additions and 192 deletions.
6 changes: 0 additions & 6 deletions docs/CommonTerms/HBBFTConsensus.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,3 @@ The consensus set `C` contains at least `n − f` contributions from different p
Note how this implies that if more than `f` participants propose the same item said item is guaranteed to be included in the next consensus output.

The consensus protocols we are discussing, asynchronous ones, can only handle about `1/3` faulty nodes, so this will also be our assumption when building our protocol on top if not stated otherwise.

TODO

- [x] Pull from .org site
- [x] tidy up
- [ ] Create an appropriate analogy or story?
9 changes: 1 addition & 8 deletions docs/CommonTerms/ShamirSecret.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,6 @@
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
:::

Where users need to back up data or keys to the federation Fedimint utilizes the popular and time tested algorithm for Shamir Secret Sharing.
Where users need to back up data or keys to the federation Fedimint utilizes the popular and time tested algorithm for [Shamir Secret Sharing](https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing).

This allows data to be broken up in to discrete shards, which can be placed with different parties and reassembled only if a threshold of the shards can be found.

TODO

- [ ] Standard back up process and options
- [ ] Shamir Secret sharing (ref to trezor overview? / SLIP)
- [ ] Receontstructions
- [ ] Trade offs and trust
15 changes: 2 additions & 13 deletions docs/FAQs/Backups.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,18 @@ The backup process in Fedimint is out of scope of the main scope of the protocol

## How are user backups and recoveries managed?

==Add graphic - what is backed up what is in band and out of band==

It is envisaged that after joining a federation, which only requires scanning a QR code provided by a federation guardian, the user will likely be asked to enter their full name as it appears on their passport (or easily memorable piece of information).  This will be used to encrypt the user private key before it is sharded and backed up to the guardians’ federation servers (see “Do federation users need to figure out how to back up their private keys or 12 or 24 word backup phrases like with a hardware wallet?”).

If a user loses their phone or can no longer access their tokens, they can personally verify themselves using KYF (see “Do I need to go through a KYC (Know Your Customer) process to join a federation?”) and once a quorum of guardians verify the identity of the user, they can send the shards that relate to their name and the user can reconstitute them locally.

## Can Fedimint federations help with estate planning and inheritance?

Yes.  Building on the protocol discussed in the question “How are user credential backup and recovery handled?”, it is feasible to securely store one’s will with the fedimint federation such that it can only be revealed upon your passing.  Even without this, it is possible for suitably appointed executors to a Will to provide sufficient evidence to enable the guardians to release the late users tokens to them.
Yes.  Building on the protocol discussed in the question “How are user credential backup and recovery handled?”, it is feasible to securely store one’s will with the fedimint federation such that it can only be revealed upon your passing.  Even without this, it is possible for suitably appointed executors to a Will to provide sufficient evidence to enable the guardians to release the late users tokens to them.Add graphic - what is backed up what is in band and out of band

## Do federation users need back up private keys?

Do federation users need to figure out how to back up their private keys or 12 or 24 word backup phrases like with a hardware wallet?

Yes they do, but it is envisaged that their key will automatically be split into cryptographically secure “shards” that are shared between the guardians when they first connect using their full name (or similar) as the recovery key. This process can be thought of as an encrypted password backup to a mini private DropBox or Google Drive run by the federation.

In this way, no one guardian is able to access a user’s credentials but a minority of guardians losing their federation private keys will not prevent recovery of the user’s private key.  Given the multi second party trust model that already exists, this approach does not introduce additional risk to users but does provide greater convenience and lower risk than storing it with a third party such as a cloud backup service provider.

==What exactly is backed up - some inconsistency in descriptions?==

TODO

- [ ] Take your current set of DBCs
- [ ] Encrypt the DBCs and shard these across the federation.
- [ ] Redeem through an out of band process and check with the federation.
- [ ] Link back to shamir section in comon terms
In this way, no one guardian is able to access a user’s credentials but a minority of guardians losing their federation private keys will not prevent recovery of the user’s private key.  Given the multi second party trust model that already exists, this approach does not introduce additional risk to users but does provide greater convenience and lower risk than storing it with a third party such as a cloud backup service provider.
14 changes: 13 additions & 1 deletion docs/FAQs/FutureUseCases.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,16 @@ One can think of Fedimint as "trusted smart contracting". You replace mining wit

## Can stablecoins be used on fedmints?

In theory, stablecoins on Fedimint would be possible.  Liquid Tether (L-BTC) or potentially (once mature) Lightning Lab’s Taro would be examples of systems that could be implemented.  If included, FeDeFi functionality such as P2P exchange could be used to enable the exchange between Bitcoin and stablecoins within the federation while intra exchange arbitrage over lightning could further enhance this capability.
In theory, stablecoins on Fedimint would be possible.  Liquid Tether (L-BTC) or potentially (once mature) Lightning Lab’s Taro would be examples of systems that could be implemented.  If included, FeDeFi functionality such as P2P exchange could be used to enable the exchange between Bitcoin and stablecoins within the federation while intra exchange arbitrage over lightning could further enhance this capability.

## Are there further use cases?

There are an almost unlimited number of ways you could use a Federated mint, given the modular nature of the design, however, some use cases will be better suited than others.

We anticipate the community will build and deploy a number of interesting use cases, some examples which have been discussed so far include:

- Community banking,
- Remittance systems,
- Family custody applications,
- Inheritance protocols, and
- Distributed computing.
8 changes: 1 addition & 7 deletions docs/FAQs/JoiningAFederation.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@
This Guide is being actively worked on!
:::

Right now there are no active federations, however, we expect to start seeing these go live in 2023.

## Know your family / friends / federation


## How do I sign up?

Right now there are no active federations, however, we expect to start seeing these go live in 2023. If you would like to become involved in our [development process and testing please reach out via our community telegram at t.me/fedimint](https://t.me/fedimint)

## Is it possible for a user to connect to multiple federations at the same time?

Expand Down
8 changes: 0 additions & 8 deletions docs/FAQs/Questions-From-The-Telegram.md

This file was deleted.

51 changes: 51 additions & 0 deletions docs/FAQs/WhatIsChaumianMint.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
sidebar_position: 1
---

# What Is A Chaumian Mint

One of the (if not the) earliest e-cash schemes were [Chaumian mints or banks](http://www.hit.bme.hu/~buttyan/courses/BMEVIHIM219/2009/Chaum.BlindSigForPayment.1982.PDF). They use blind signatures to allow the anonymous transfer of backing assets held by the mint.

The basic idea is that a user can give the mint some amount x of an asset and the mint in turn blind signs x IOUs that allow the user to either withdraw the asset or exchange them for new IOUs or products.

The small word “blind” does the heavy lifting here, it means that the user and mint run a cryptographic protocol that allows the user to acquire a digital signature on some data without the mint learning anything about the message or the signature so that when the mint sees one of its signatures for some message it can no longer tell to whom it was issued.

This means trading these IOUs is completely anonymous.

“Why have I never heard of this before?” you may ask and the sad answer is that it never really caught on.

One big problem of chaumian mints is that they are a single point of failure and an easy target for regulation and other attacks. Most countries financial regulations disallow anonymous payments to some degree, so running a mint in the open is a bad idea.

Running one anonymously brings with it the problem of trust, the operator could run away with the money at any point. This combination of problems relegated the concept to a very small, low value market, e.g. [to pay for watchtower fees](https://lightning-wallet.com/storage-tokens#storage-tokens) in lightning.
[](https://fedimint.org/#what-is-a-federated-mint)
## What is a Federated Mint?

In a federated mint the required trust is split over multiple parties. It employs a consensus algorithm and threshold cryptography to guarantee both safety and availability even in the case that some parties are compromised.

That means if the participants are sufficiently distributed not even a nation state level attacker can harm the federation. Running it anonymously also becomes much more attractive since there is no single party anymore that could run away with the backing funds.

## How does it relate to Bitcoin

Bitcoin is the first asset in human history that can truly be held in a federated manner, meaning only being accessible if a certain quorum of people agrees. It is thus the perfect backing asset for a federated mint. A first, primitive version could work as follows:

- **deposit**: A User sends BTC to the federation’s wallet and in turn receives the corresponding amount of tokens.
- **transfer**: The user can then pay someone else using these tokens, which works as follows:
- The payer selects appropriately many tokens and sends them to the payee
- The payee exchanges these tokens for new ones using the federated mint
- Only then the payee accepts the transaction, as the exchange may fail in case of a double spend
- **withdraw**: Finally any user can redeem tokens for BTC again.

We see that between deposit and withdrawal there can be many internal transactions, so federated mints do not only provide excellent privacy but also scaling. One problem with this primitive version is the enormous centralization pressure it exerts, as two federated mints won’t accept each other’s tokens, making big mints more attractive. This can be mitigated by integrating with Lightning. For this the federation needs to support two more operations:

- **ln-send**: pay an LN invoice using tokens.
- **ln-receive**: issue an invoice to a user. Once it is paid the user receives the appropriate amount of tokens.

With these two operations any federated mint suddenly becomes interoperable with any other Lightning node, including other federated mints. The federation essentially becomes a hosted but federated Lightning wallet.

## What about centralization

Yes, a federated mint requires more trust than a self-hosted Lighning node or on-chain Bitcoin. But we think that the risk can be minimized sufficiently by distributing the federation members.

There are many people that can not or do not want to run their own lightning wallet, be it because of fees or maintenance effort.

For these a federated mint is much preferable to centralized solutions as it protects user privacy and has no single points of failure. Systemic risks should be sufficiently mitigated by the fact that any willing group of people should be able to start their own federation.
10 changes: 0 additions & 10 deletions docs/FAQs/WhyLN.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/FAQs/_category_.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"position": 4,
"position": 5,
"label": "Frequently Asked Questions",
"collapsible": true,
"collapsed": true,
Expand Down
2 changes: 1 addition & 1 deletion docs/GettingStarted/01-Why-Fedimint.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 1
# Why Fedimint

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

Bitcoin is a powerful human rights technology that enables anybody in the world to **be their own bank**.
Expand Down
2 changes: 1 addition & 1 deletion docs/GettingStarted/02-Who-are-the-fms.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 2
# Who are the federations?

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

Fedimint is an open source protocol and technology stack which makes it easier to deploy and manage **community custody** solutions.
Expand Down
2 changes: 1 addition & 1 deletion docs/GettingStarted/03-What-is-a-Fedimint.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 3
# What is a Fedimint

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

A Fedimint - or "Federated Mint" is an implementation of [Chaumian eCash](../CommonTerms/Blind%20Signatures) with a federation of guardians to custody funds, instead of a centralized actor, and is natively interoperable with Bitcoin's Lightning Network.
Expand Down
2 changes: 1 addition & 1 deletion docs/GettingStarted/04-TechCompontents.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 4
# Core Technology Components

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

Fedimints use three powerful technical components, that come together to offer great privacy and interoperability:
Expand Down
3 changes: 1 addition & 2 deletions docs/GettingStarted/05-How-FM-Transactions-Work.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ sidebar_position: 5
This is a set of simplified transactions flows to explain how transaction processing works inside the Fedimint, with integration to the wider lightning network and between different mints.

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

## Transactions within a Fedimint

This represents how a transaction would settle entirely within the same Fedimint.
Expand Down
2 changes: 1 addition & 1 deletion docs/MiniMintDetails/_category_.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"position": 9,
"position": 4,
"label": "Minimint Details",
"collapsible": true,
"collapsed": true,
Expand Down
2 changes: 1 addition & 1 deletion docs/TradeOffs/01-Trust-Trade-Offs.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 1
# Trust Model

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

The Fedimint protocol is an optional opensource protocol which can be utilized alongside bitcoin and the lightning network.
Expand Down
2 changes: 1 addition & 1 deletion docs/TradeOffs/02-NotYourKeys.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 2
# Custodial Risk

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

A common and reasonable critique of the Fedimint protocol is the level of trust which is invested in the Federation guardians, as this is seen as a violation of a core norm of the bitcoin community.
Expand Down
4 changes: 4 additions & 0 deletions docs/TradeOffs/03-DebasementRisk.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ sidebar_position: 3

# Debasement Risk

:::caution
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

[eCash tokens](/docs/CommonTerms/eCashToken) represent a claim on bitcoin held by the federation guardians.

As such there is a possibility that the mint could generate more claims for bitcoin than there are bitcoin in the custody of the guardians.
Expand Down
2 changes: 1 addition & 1 deletion docs/TradeOffs/04-RegulatoryRisk.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Regulatory Risk

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

The Fedimint protocol has been designed to fit a particular regulatory niche which people to custody assets for friends, family and community interests, where there is no profit motive.
Expand Down
2 changes: 1 addition & 1 deletion docs/TradeOffs/05-TrustLNGateways.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# LN Gateway Risk

:::caution
This Guide is a work in progress. We would appreciate any feedback you may have and you can submit edits through the link at the bottom of the page.
This guide has been developed as a community project and is a live document. We would appreciate any feedback you may have and you can submit edits, corrections and pull requests through the link at the bottom of each page.
:::

Lightning Gateways provide a service to the federation users, to allow them to connect with the wider bitcoin ecosystem. Without this service the ability to transact is heavily impaired.
Expand Down
Loading

0 comments on commit eb256fa

Please sign in to comment.