-
Notifications
You must be signed in to change notification settings - Fork 96
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
Add ecash section to guide #1093
base: master
Are you sure you want to change the base?
Changes from 87 commits
55b8252
8f7514b
0ee3c0e
551d08c
ab1479f
9223ef6
5b8e9c5
c1aee7b
4c9cc97
4a21181
724a970
6c8265a
04a06aa
92ac554
c08510b
65e6217
aa6adfd
351ab4e
7805533
30f0a36
bf81300
76420ac
099ccfe
2e32a62
da6d144
59b0db3
e7f4c63
33ab3d2
6be0d27
dbc2778
0d4c870
34f4d2d
6980d54
e8bfcfa
2fe6b91
b94b95b
7afd991
f11d57e
84786fb
8cc225e
fb59860
c63ee0a
628a911
879ecac
6f6145e
d19abfb
513279e
17a0f9a
6a4863a
81b9357
9a9b432
7d0191f
747cf4a
b066672
2ee145e
d5a2654
e3fe035
0969f64
1e514eb
7dc4d67
493b1fb
cec311a
faa0ec1
42bed26
ede2adc
3d4220e
9433c70
f3c1d99
011167f
0c9da8f
406da46
2a65eb0
384451e
fdf5020
2b983d8
1b0ff53
5dd3aaf
7204ea0
ee1db82
7a73ecc
cba20b2
892bfd4
1651bab
1cb6437
3c42c62
a9d519d
cd73ff7
d074872
2f03209
79b3ba9
aa2af41
a569783
bf4f380
5449ce2
2ff96a2
ae87df1
74d1ee3
a29814b
247b017
d2ffc46
20c837b
d12ede2
40b92f7
bca36b1
0f9f192
c1abf54
4beeb6c
5bb49df
c70252d
c538a05
b4a3342
c853128
fdfd433
4c91c4a
97145c2
c0a54ba
9f7be17
9a85365
cde45ad
88e30e4
f185aef
b2b840b
7c14b44
2a02e81
d8c6ab3
99c3570
a5e8510
3a31c9a
8f09f75
24d1b8f
eb04ec8
7426051
d5e6b98
3f61855
fcde42c
ca15323
39a5c55
5df1240
eea7c56
cf69dec
4282874
5a0f02b
a25430e
e73ab88
97adf92
5a0ce12
7749e98
9d8819c
9b2db69
917d241
0ba15f1
2d78ef9
2d77631
8ba623c
43dbf4e
af6b58c
2d19286
7eab60e
19d6e5f
141c288
400c6e9
975f77d
3d2a761
b87a384
eacc84d
0fab1c5
13561c9
5cd664a
39571e4
8fccf4b
1caa661
e1beb47
fdeb215
137c113
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
--- | ||
layout: guide | ||
title: Cashu | ||
description: Learn the basics of Cashu. | ||
nav_order: 2 | ||
parent: Ecash | ||
grand_parent: How it works | ||
permalink: /guide/how-it-works/ecash/cashu/ | ||
redirect_from: | ||
- /guide/ecash/cashu | ||
image: https://bitcoin.design/assets/images/guide/how-it-works/ecash/ecash.jpg | ||
main_classes: -no-top-padding | ||
--- | ||
|
||
<!-- | ||
|
||
Editor's notes | ||
|
||
Explains generally how multi-key schemes work. | ||
|
||
Illustration sources | ||
|
||
https://www.figma.com/community/file/888680264445459448 | ||
https://www.figma.com/community/file/995256542920917246/BDG---Private-key-management-illustrations | ||
|
||
--> | ||
|
||
{% include picture.html | ||
image = "/assets/images/guide/how-it-works/ecash/ecash.jpg" | ||
retina = "/assets/images/guide/how-it-works/ecash/[email protected]" | ||
mobile = "/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg" | ||
mobileRetina = "/assets/images/guide/how-it-works/ecash/[email protected]" | ||
alt-text = "ecash overview illustration" | ||
width = 1600 | ||
height = 700 | ||
layout = "full-width" | ||
%} | ||
|
||
# Cashu | ||
Cashu is an ecash protocol on that interoperates with the Lightning Network. Unlike Fedimint, which uses a federated model to distribute trust among multiple entities, Cashu operates with independent mints, offering greater flexibility and control to users. This makes Cashu distinct in providing an easy to deploy, flexible, and agile approach to managing Ecash on bitcoin. | ||
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
{% include tip/open.html color="blue" icon="info" label="User Experience Tip" %} | ||
|
||
When designing for Cashu, consider providing options for users to set default mints and auto-swap preferences. Since Cashu mints are independently operated, users may prefer to default to a trusted mint. | ||
|
||
{% include tip/close.html %} | ||
|
||
## Backup and Restore for Cashu | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We have a backup & restore section for cashu...we should also have an onboarding section for cashu wallets... |
||
The Cashu backup and restoration process is designed to ensure users can securely recover their wallets and maintain access to their ecash tokens, even if they switch devices or experience data loss. | ||
|
||
{% include tip/open.html color="blue" icon="info" label="Single Use Recovery" %} | ||
|
||
Only use your recovery seed phrase once. Repeated use of the seed phrase for restoration can lead to synchronization issues and potential errors. This is because each time you restore, you might be dealing with an outdated state of your wallet, which can cause discrepancies in token balances and transactions. | ||
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
{% include tip/close.html %} | ||
|
||
|
||
### Backup Process | ||
1. Deterministic Wallet with Seed Phrase: Cashu uses a deterministic wallet model, where all cryptographic keys and tokens can be derived from a single seed phrase. This seed phrase is generated when the wallet is first created. | ||
|
||
2. Secure Storage: Users are advised to store their seed phrase securely. It is crucial to keep this seed phrase in a safe, physical format (such as written on paper) and stored in a secure location to prevent unauthorized access or loss. The best practices in the [manual backup]({{ '/guide/private-key-management/manual-backup/' | relative_url }}) section for Lightning and on-chain wallets also apply to Cashu wallets. | ||
|
||
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
||
{% include tip/open.html color="blue" icon="info" label="Mint Information Needed" %} | ||
|
||
Keep a record of the mints you are connected to. During the restoration process, you will need to reconnect to these specific mints to re-verify your tokens. Without this information, you might not be able to fully restore your wallet or verify your tokens. | ||
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
{% include tip/close.html %} | ||
|
||
## Restoration Process | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be nice to have a carousel of screens here showing the process here... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great suggestion! I'll add this. |
||
1. Seed Phrase Entry: When restoring a wallet, users enter their seed phrase into the Cashu wallet application. This seed phrase regenerates all cryptographic keys associated with the user's account. | ||
|
||
2. Automatic Recovery: After restoration, ensure your wallet is connected to the same mint(s) you were using before. This is crucial as the mint holds the records necessary to validate your tokens. | ||
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
3. Verification: The mint(s) checks these proofs against its records to confirm that the tokens have not been previously spent and are still valid. This process relies on the signatures (proofs) that were initially generated when the tokens were minted. | ||
|
||
{% include tip/open.html color="blue" icon="info" label="Privacy Considerations During Verification" %} | ||
|
||
Verifying tokens after restoration might temporarily compromise their privacy. The mint needs to revalidate the tokens, which can potentially expose the transaction istory associated with those tokens. Be mindful of this aspect if privacy is a significant concern for your use case. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there an actionable or mitigating measure for this? If so, that should be mentioned here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'll have to do some research on this and get back to you. I'm not sure if there is. |
||
|
||
{% include tip/close.html %} | ||
|
||
## When to Use Cashu | ||
|
||
* **Rapid Deployment and Simple Integration** - Great for projects that need to be launched quickly with minimal setup. This includes MVPs, prototypes, and community-based applications where speed and ease of deployment are crucial. | ||
|
||
* **Quick Interoperability with the Lightning Network** - Ideal when you need to integrate with the Lightning Network for fast, low-fee transactions. Cashu supports seamless, out of the box integration with existing Lightning wallets and infrastructure. | ||
|
||
* **Localized or Small Community Solutions** - Implement Cashu in scenarios where independent mints operated by trusted local entities can serve a community, enhancing trust and customization based on local needs. | ||
|
||
### When to Use Fedimint Instead | ||
|
||
* **Federated Trust Models** - Use Fedimint when your application benefits from spreading trust across multiple entities, reducing reliance on any single operator and enhancing security. | ||
|
||
## Products that use Cashu | ||
- [Cashu.me](https://wallet.cashu.me/) | ||
- [eNuts](https://www.enuts.cash/) | ||
- [Macadamia](https://macadamia.cash/) | ||
- [npub.cash](https://npub.cash/) | ||
- [Nutstash](https://nutstash.app/) | ||
- [Minibits](https://www.minibits.cash/) | ||
|
||
## Cashu resources | ||
Cashu Documentation - Access the official Cashu documentation for detailed information on setup, usage, and integration. | ||
- [Cashu Resources](https://cashu.space/) | ||
- [Cashu Documentation](https://docs.cashu.space/) | ||
|
||
--- | ||
|
||
Next, we do a technical deep dive into how [Fedimint]({{ '/guide/how-it-works/ecash/fedimint' | relative_url }}) works. | ||
|
||
{% include next-previous.html | ||
previousUrl = "/guide/how-it-works/ecash/overview/" | ||
previousName = "Overview" | ||
nextUrl = "/guide/how-it-works/fedimint/" | ||
swedishfrenchpress marked this conversation as resolved.
Show resolved
Hide resolved
|
||
nextName = "Fedimint" | ||
%} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
--- | ||
layout: guide | ||
title: Design best practices | ||
description: An overview of how to help users maintain their financial privacy while using a bitcoin daily spending wallet. | ||
nav_order: 5 | ||
parent: Ecash | ||
grand_parent: How it works | ||
permalink: /guide/how-it-works/ecash/design-best-practices | ||
redirect_from: | ||
- /guide/how-it-works/ecash/ | ||
main_classes: -no-top-padding | ||
image: /assets/images/guide/daily-spending-wallet/settings/settings-preview.jpg | ||
image_base: /assets/images/guide/daily-spending-wallet/settings/ | ||
images_general: | ||
- file: general | ||
modalImage: general-big | ||
alt: Mobile screen showing a list of settings categories | ||
caption: General is a catch-all category for options that don't clearly fit elsewhere. | ||
- file: local-currency | ||
modalImage: local-currency-big | ||
alt: Mobile screen with a list of currencies to choose from | ||
caption: While it should be automatically detected, users can change their local currency. | ||
- file: bitcoin-unit | ||
modalImage: bitcoin-unit-big | ||
alt: Mobile screen with automatic, bitcoin, and satoshi options | ||
caption: The bitcoin unit can also be switched contextually in the send screen. | ||
images_security: | ||
- file: security | ||
modalImage: security-big | ||
alt: Mobile screen with PIN, FaceID, wallet deletion and wallet limit options | ||
caption: Options to limit unwanted access and payments. | ||
- file: delete-wallet | ||
modalImage: delete-wallet-big | ||
alt: Confirmation modal for deleting the wallet from the device | ||
caption: This screen requires very clear language to ensure users understand the implications. | ||
images_network: | ||
- file: network | ||
modalImage: network-big | ||
alt: Mobile screen with bitcoin and lightning network, as well as Tor options | ||
caption: Overview screen for network options. | ||
- file: bitcoin-network | ||
modalImage: bitcoin-network-big | ||
alt: Mobile screen with bitcoin network customization options | ||
caption: Users can choose their own node to connect to. | ||
- file: lightning-network | ||
modalImage: lightning-network-big | ||
alt: Mobile screen with lightning network customization options | ||
caption: Information about the user’s node, and additional security options. | ||
- file: watchtower | ||
modalImage: watchtower-big | ||
alt: Mobile screen with lightning network watchtower options | ||
caption: Users can enable watchtower functionality to protect their funds. | ||
--- | ||
|
||
{% include picture.html | ||
image = "/assets/images/guide/how-it-works/ecash/ecash.jpg" | ||
retina = "/assets/images/guide/how-it-works/ecash/[email protected]" | ||
mobile = "/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg" | ||
mobileRetina = "/assets/images/guide/how-it-works/ecash/[email protected]" | ||
alt-text = "ecash overview illustration" | ||
width = 1600 | ||
height = 700 | ||
layout = "full-width" | ||
%} | ||
|
||
<!-- | ||
|
||
|
||
This is a summary page of best design practices for both bitcoin backed ecash. | ||
|
||
The design source for screen mock-ups on this page can be found here: | ||
ADD Figma URL | ||
|
||
|
||
--> | ||
|
||
# Ecash design best practices | ||
{: .no_toc } | ||
|
||
--- | ||
|
||
<div class="glossary-toc" markdown="1"> | ||
* Table of contents | ||
{:toc} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think the table of contents should include individual user flows like "Joining a mint", "Sending ecash", etc. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you have a guide or example on how to customize the table of contents and link it to specific sections? It seems to automatically display whatever is marked as |
||
</div> | ||
|
||
--- | ||
Below you will find best practices for Ecash in general, cashu specifics, and fedimint specifics. | ||
|
||
## General ecash best practices | ||
Ecash general best design practices. | ||
|
||
### Multiple mint display | ||
A paragraph explaining the importance of displaying multiple mints, and some design considerations to keep in mind. | ||
|
||
{% include image-gallery.html pages = page.images_general %} | ||
|
||
#### Pending tokens | ||
|
||
<div class="center" markdown="1"> | ||
|
||
{% include picture.html | ||
image = "/assets/images/guide/daily-spending-wallet/settings/fees.png" | ||
retina = "/assets/images/guide/daily-spending-wallet/settings/[email protected]" | ||
modalImage = "/assets/images/guide/daily-spending-wallet/settings/fees-big.png" | ||
alt-text = "" | ||
width = 250 | ||
height = 541 | ||
layout = "float-right-desktop -background -shadow" | ||
caption = "The fees screen provides a clear overview of all fees that may be charged." | ||
%} | ||
|
||
A paragraph explaining the importance of displaying pending tokens. | ||
|
||
</div> | ||
|
||
## Cashu best practices | ||
A paragraph introduction to cashu specific best practices. | ||
|
||
### Meta data | ||
Explaing the meta data fields for cashu. Explain NUT06. | ||
|
||
{% include image-gallery.html pages = page.images_security %} | ||
|
||
### Edit mint URL / Refresh mint settings | ||
|
||
<div class="center" markdown="1"> | ||
|
||
{% include picture.html | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The federation as a whole could be online, degraded, or offline. However, each guardian is either online or offline. |
||
image = "/assets/images/guide/daily-spending-wallet/settings/wallet-backup.png" | ||
retina = "/assets/images/guide/daily-spending-wallet/settings/[email protected]" | ||
modalImage = "/assets/images/guide/daily-spending-wallet/settings/wallet-backup-big.png" | ||
alt-text = "" | ||
width = 250 | ||
height = 541 | ||
layout = "float-right-desktop -background -shadow" | ||
caption = "Backup options are typically configured in first use and rarely need to be accessed." | ||
%} | ||
|
||
A paragraph explaining the importance of giving the user the ability to edit a mint URL and refresh mint settings. Explain the connection to NUT06. | ||
|
||
</div> | ||
|
||
### P2PK Lock | ||
Explain P2PK Lock in Cashu. Only a few wallets support it. But it's a powerful feature that allows for offline payment and should be designed for. | ||
|
||
{% include image-gallery.html pages = page.images_network %} | ||
|
||
### Back up and restore | ||
Much of the same info as the backup section in Cashu page. Except here we will highlight examples of how to encourge the user to save a list of mints and mint urls they are connected to. | ||
|
||
{% include image-gallery.html pages = page.images_network %} | ||
|
||
## Fedimint design best practices | ||
Ecash general best design practices. | ||
|
||
### Guardian list display | ||
Explain that the design practices below are specific to Fedimint. | ||
|
||
<div class="center" markdown="1"> | ||
|
||
{% include picture.html | ||
image = "/assets/images/guide/daily-spending-wallet/settings/help.png" | ||
retina = "/assets/images/guide/daily-spending-wallet/settings/[email protected]" | ||
modalImage = "/assets/images/guide/daily-spending-wallet/settings/help-big.png" | ||
alt-text = "" | ||
width = 250 | ||
height = 541 | ||
layout = "float-right-desktop -background -shadow" | ||
caption = "Help & support options ensure users can get the right information when they need it." | ||
%} | ||
</div> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
--- | ||
layout: guide | ||
title: Fedimint | ||
description: Learn the basics of Fedimint. | ||
nav_order: 3 | ||
parent: Ecash | ||
grand_parent: How it works | ||
permalink: /guide/how-it-works/ecash/fedimint/ | ||
redirect_from: | ||
- /guide/ecash/fedimint | ||
image: https://bitcoin.design/assets/images/guide/how-it-works/ecash/ecash.jpg | ||
main_classes: -no-top-padding | ||
--- | ||
|
||
<!-- | ||
|
||
Editor's notes | ||
|
||
Explains generally how multi-key schemes work. | ||
|
||
Illustration sources | ||
|
||
https://www.figma.com/community/file/888680264445459448 | ||
https://www.figma.com/community/file/995256542920917246/BDG---Private-key-management-illustrations | ||
|
||
--> | ||
|
||
{% include picture.html | ||
image = "/assets/images/guide/how-it-works/ecash/ecash.jpg" | ||
retina = "/assets/images/guide/how-it-works/ecash/[email protected]" | ||
mobile = "/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg" | ||
mobileRetina = "/assets/images/guide/how-it-works/ecash/[email protected]" | ||
alt-text = "ecash overview illustration" | ||
width = 1600 | ||
height = 700 | ||
layout = "full-width" | ||
%} | ||
|
||
# Fedimint | ||
Fedimint is another Chaumian ecash protocol uses both on-chain Bitcoin transactions and the Lightning Network.Unlike Cashu, Fedimint uses a federated model where multiple independent entities, known as “Guardians,” collectively operate the mint. | ||
|
||
## How Fedimint Works | ||
TBD | ||
|
||
**Products that use Fedimint** | ||
- [Fedi](https://www.fedi.xyz) | ||
- [Mutiny](https://www.mutinywallet.com/) | ||
- [Clovyr](https://clovyr.app/) | ||
|
||
--- | ||
|
||
Next, we do a technical deep dive into how [best practices]({{ '/guide/how-it-works/transactions/' | relative_url }}) of ecash on bitcoin. | ||
|
||
{% include next-previous.html | ||
previousUrl = "/guide/how-it-works/ecash/cashu/" | ||
previousName = "Cashu" | ||
nextUrl = "/guide/how-it-works/ecash/best-practices/" | ||
nextName = "Best practices" | ||
%} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The text uses the term 'melting' but this illustration uses 'burning'. If they are the same, do replace the term. Also for the 2x image