diff --git a/assets/images/guide/how-it-works/ecash/advance-settings.png b/assets/images/guide/how-it-works/ecash/advance-settings.png new file mode 100644 index 000000000..9d91d7c75 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/advance-settings.png differ diff --git a/assets/images/guide/how-it-works/ecash/advance-settings@2x.png b/assets/images/guide/how-it-works/ecash/advance-settings@2x.png new file mode 100644 index 000000000..c323b569d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/advance-settings@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/best-practicies-mobile.jpg b/assets/images/guide/how-it-works/ecash/best-practicies-mobile.jpg new file mode 100644 index 000000000..a378d43d6 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/best-practicies-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/best-practicies-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/best-practicies-mobile@2x.jpg new file mode 100644 index 000000000..c57f9c330 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/best-practicies-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/best-practicies.jpg b/assets/images/guide/how-it-works/ecash/best-practicies.jpg new file mode 100644 index 000000000..3cb0dbc6b Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/best-practicies.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/best-practicies@2x.jpg b/assets/images/guide/how-it-works/ecash/best-practicies@2x.jpg new file mode 100644 index 000000000..0735de09e Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/best-practicies@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-default-applied.png b/assets/images/guide/how-it-works/ecash/cashu-default-applied.png new file mode 100644 index 000000000..53d5c7c56 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-default-applied.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-default-applied@2x.png b/assets/images/guide/how-it-works/ecash/cashu-default-applied@2x.png new file mode 100644 index 000000000..997454aae Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-default-applied@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id1.png b/assets/images/guide/how-it-works/ecash/cashu-id1.png new file mode 100644 index 000000000..602537e5f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id1.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id1@2x.png b/assets/images/guide/how-it-works/ecash/cashu-id1@2x.png new file mode 100644 index 000000000..94afb39de Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id1@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id2.png b/assets/images/guide/how-it-works/ecash/cashu-id2.png new file mode 100644 index 000000000..5a8227784 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id2.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id2@2x.png b/assets/images/guide/how-it-works/ecash/cashu-id2@2x.png new file mode 100644 index 000000000..99108fa4f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id2@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id3.png b/assets/images/guide/how-it-works/ecash/cashu-id3.png new file mode 100644 index 000000000..26648a77a Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id3.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id3@2x.png b/assets/images/guide/how-it-works/ecash/cashu-id3@2x.png new file mode 100644 index 000000000..4e97ccb4d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id3@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id4.png b/assets/images/guide/how-it-works/ecash/cashu-id4.png new file mode 100644 index 000000000..d558ca474 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id4.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id4@2x.png b/assets/images/guide/how-it-works/ecash/cashu-id4@2x.png new file mode 100644 index 000000000..861533e7e Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id4@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id5.png b/assets/images/guide/how-it-works/ecash/cashu-id5.png new file mode 100644 index 000000000..7f5b70406 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id5.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-id5@2x.png b/assets/images/guide/how-it-works/ecash/cashu-id5@2x.png new file mode 100644 index 000000000..dc3ecc09b Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-id5@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-details-default-set-confirmation.png b/assets/images/guide/how-it-works/ecash/cashu-mint-details-default-set-confirmation.png new file mode 100644 index 000000000..18875935d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-details-default-set-confirmation.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-details-default-set-confirmation@2x.png b/assets/images/guide/how-it-works/ecash/cashu-mint-details-default-set-confirmation@2x.png new file mode 100644 index 000000000..de284f3e3 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-details-default-set-confirmation@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-details-settings.png b/assets/images/guide/how-it-works/ecash/cashu-mint-details-settings.png new file mode 100644 index 000000000..a9db3cf74 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-details-settings.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-details-settings@2x.png b/assets/images/guide/how-it-works/ecash/cashu-mint-details-settings@2x.png new file mode 100644 index 000000000..4d6df871d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-details-settings@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-details.png b/assets/images/guide/how-it-works/ecash/cashu-mint-details.png new file mode 100644 index 000000000..e1565d4b4 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-details.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-details@2x.png b/assets/images/guide/how-it-works/ecash/cashu-mint-details@2x.png new file mode 100644 index 000000000..0209755df Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-details@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-features.png b/assets/images/guide/how-it-works/ecash/cashu-mint-features.png new file mode 100644 index 000000000..33d1a29f1 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-features.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-features@2x.png b/assets/images/guide/how-it-works/ecash/cashu-mint-features@2x.png new file mode 100644 index 000000000..d44b21e1f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-features@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-list.png b/assets/images/guide/how-it-works/ecash/cashu-mint-list.png new file mode 100644 index 000000000..720846b57 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-list.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-list@2x.png b/assets/images/guide/how-it-works/ecash/cashu-mint-list@2x.png new file mode 100644 index 000000000..08f1dc9eb Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-list@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-url-edit.png b/assets/images/guide/how-it-works/ecash/cashu-mint-url-edit.png new file mode 100644 index 000000000..925d2ee15 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-url-edit.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mint-url-edit@2x.png b/assets/images/guide/how-it-works/ecash/cashu-mint-url-edit@2x.png new file mode 100644 index 000000000..a84963e02 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mint-url-edit@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mobile.jpg b/assets/images/guide/how-it-works/ecash/cashu-mobile.jpg new file mode 100644 index 000000000..e7a471a42 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashu-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/cashu-mobile@2x.jpg new file mode 100644 index 000000000..11267785d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashu.jpg b/assets/images/guide/how-it-works/ecash/cashu.jpg new file mode 100644 index 000000000..d3c9d976a Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashu@2x.jpg b/assets/images/guide/how-it-works/ecash/cashu@2x.jpg new file mode 100644 index 000000000..896d22a5f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashu@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashumint-mobile.jpg b/assets/images/guide/how-it-works/ecash/cashumint-mobile.jpg new file mode 100644 index 000000000..7115be1b9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashumint-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashumint-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/cashumint-mobile@2x.jpg new file mode 100644 index 000000000..9e2e2f1b7 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashumint-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashumint.jpg b/assets/images/guide/how-it-works/ecash/cashumint.jpg new file mode 100644 index 000000000..c6ca4ef72 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashumint.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/cashumint@2x.jpg b/assets/images/guide/how-it-works/ecash/cashumint@2x.jpg new file mode 100644 index 000000000..a7e43cbf2 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/cashumint@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/connected.png b/assets/images/guide/how-it-works/ecash/connected.png new file mode 100644 index 000000000..bb0326496 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/connected.png differ diff --git a/assets/images/guide/how-it-works/ecash/connected@2x.png b/assets/images/guide/how-it-works/ecash/connected@2x.png new file mode 100644 index 000000000..7dec76b57 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/connected@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/creation-and-redemption.png b/assets/images/guide/how-it-works/ecash/creation-and-redemption.png new file mode 100644 index 000000000..6e4a417be Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/creation-and-redemption.png differ diff --git a/assets/images/guide/how-it-works/ecash/creation-and-redemption@2x.png b/assets/images/guide/how-it-works/ecash/creation-and-redemption@2x.png new file mode 100644 index 000000000..ec9f9c2ec Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/creation-and-redemption@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/custody-spectrum.png b/assets/images/guide/how-it-works/ecash/custody-spectrum.png new file mode 100644 index 000000000..9a93f0c6c Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/custody-spectrum.png differ diff --git a/assets/images/guide/how-it-works/ecash/custody-spectrum@2x.png b/assets/images/guide/how-it-works/ecash/custody-spectrum@2x.png new file mode 100644 index 000000000..d25016db1 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/custody-spectrum@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-intro-image.jpg b/assets/images/guide/how-it-works/ecash/ecash-intro-image.jpg new file mode 100644 index 000000000..6cc668e76 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-intro-image.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg b/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg new file mode 100644 index 000000000..36102376f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/ecash-mobile@2x.jpg new file mode 100644 index 000000000..af031ce50 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-01.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-01.png new file mode 100644 index 000000000..ff5e52ae9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-01.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-01@2x.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-01@2x.png new file mode 100644 index 000000000..906da27fd Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-01@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-02.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-02.png new file mode 100644 index 000000000..2a43fb3a3 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-02.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-02@2x.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-02@2x.png new file mode 100644 index 000000000..9dcb8af29 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-02@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-03.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-03.png new file mode 100644 index 000000000..72dfa061b Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-03.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-03@2x.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-03@2x.png new file mode 100644 index 000000000..e757f0c21 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-03@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-04.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-04.png new file mode 100644 index 000000000..245718b36 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-04.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-onboarding-04@2x.png b/assets/images/guide/how-it-works/ecash/ecash-onboarding-04@2x.png new file mode 100644 index 000000000..c2b31b094 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-onboarding-04@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-protocol-logos.jpg b/assets/images/guide/how-it-works/ecash/ecash-protocol-logos.jpg new file mode 100644 index 000000000..9196028dc Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-protocol-logos.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/ecash-protocol-logos@2x.jpg b/assets/images/guide/how-it-works/ecash/ecash-protocol-logos@2x.jpg new file mode 100644 index 000000000..96a3c7ceb Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash-protocol-logos@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/ecash.jpg b/assets/images/guide/how-it-works/ecash/ecash.jpg new file mode 100644 index 000000000..0a1bda031 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/ecash@2x.jpg b/assets/images/guide/how-it-works/ecash/ecash@2x.jpg new file mode 100644 index 000000000..e980e02d0 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/ecash@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/enter-p2pk.png b/assets/images/guide/how-it-works/ecash/enter-p2pk.png new file mode 100644 index 000000000..180cfe3ff Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/enter-p2pk.png differ diff --git a/assets/images/guide/how-it-works/ecash/enter-p2pk@2x.png b/assets/images/guide/how-it-works/ecash/enter-p2pk@2x.png new file mode 100644 index 000000000..996bc2310 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/enter-p2pk@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federated-mint-mobile.jpg b/assets/images/guide/how-it-works/ecash/federated-mint-mobile.jpg new file mode 100644 index 000000000..a422545f1 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federated-mint-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/federated-mint-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/federated-mint-mobile@2x.jpg new file mode 100644 index 000000000..31d06c7b7 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federated-mint-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/federated-mint.jpg b/assets/images/guide/how-it-works/ecash/federated-mint.jpg new file mode 100644 index 000000000..d20215e87 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federated-mint.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/federated-mint@2x.jpg b/assets/images/guide/how-it-works/ecash/federated-mint@2x.jpg new file mode 100644 index 000000000..50d1776c4 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federated-mint@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-bad.png b/assets/images/guide/how-it-works/ecash/federation-guardian-bad.png new file mode 100644 index 000000000..35bc6150d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-bad.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-bad@2x.png b/assets/images/guide/how-it-works/ecash/federation-guardian-bad@2x.png new file mode 100644 index 000000000..6b9dc3e0f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-bad@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-expiry-join.png b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry-join.png new file mode 100644 index 000000000..012b76481 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry-join.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-expiry-join@2x.png b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry-join@2x.png new file mode 100644 index 000000000..4990a0fda Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry-join@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-expiry.png b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry.png new file mode 100644 index 000000000..5079b8a58 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-expiry@2x.png b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry@2x.png new file mode 100644 index 000000000..0906f02f7 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-expiry@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-good.png b/assets/images/guide/how-it-works/ecash/federation-guardian-good.png new file mode 100644 index 000000000..2ee9d7a15 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-good.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-good@2x.png b/assets/images/guide/how-it-works/ecash/federation-guardian-good@2x.png new file mode 100644 index 000000000..a43c456c6 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-good@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-info.png b/assets/images/guide/how-it-works/ecash/federation-guardian-info.png new file mode 100644 index 000000000..5b28d4b82 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-info.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-info@2x.png b/assets/images/guide/how-it-works/ecash/federation-guardian-info@2x.png new file mode 100644 index 000000000..c468d5c51 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-info@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-ok.png b/assets/images/guide/how-it-works/ecash/federation-guardian-ok.png new file mode 100644 index 000000000..b9e53675f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-ok.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-guardian-ok@2x.png b/assets/images/guide/how-it-works/ecash/federation-guardian-ok@2x.png new file mode 100644 index 000000000..a215efaf4 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-guardian-ok@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-list.png b/assets/images/guide/how-it-works/ecash/federation-list.png new file mode 100644 index 000000000..3d8d4649b Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-list.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-list@2x.png b/assets/images/guide/how-it-works/ecash/federation-list@2x.png new file mode 100644 index 000000000..c70f14ef9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-list@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-welcome.png b/assets/images/guide/how-it-works/ecash/federation-welcome.png new file mode 100644 index 000000000..af8b1efce Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-welcome.png differ diff --git a/assets/images/guide/how-it-works/ecash/federation-welcome@2x.png b/assets/images/guide/how-it-works/ecash/federation-welcome@2x.png new file mode 100644 index 000000000..65e1b95aa Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/federation-welcome@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/fedimint-mobile.jpg b/assets/images/guide/how-it-works/ecash/fedimint-mobile.jpg new file mode 100644 index 000000000..cc41a05ab Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/fedimint-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/fedimint-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/fedimint-mobile@2x.jpg new file mode 100644 index 000000000..13ba6df11 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/fedimint-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/fedimint.jpg b/assets/images/guide/how-it-works/ecash/fedimint.jpg new file mode 100644 index 000000000..e9dd7345d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/fedimint.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/fedimint@2x.jpg b/assets/images/guide/how-it-works/ecash/fedimint@2x.jpg new file mode 100644 index 000000000..ee42dd9ac Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/fedimint@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/gateways.png b/assets/images/guide/how-it-works/ecash/gateways.png new file mode 100644 index 000000000..6e25cd620 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/gateways.png differ diff --git a/assets/images/guide/how-it-works/ecash/gateways@2x.png b/assets/images/guide/how-it-works/ecash/gateways@2x.png new file mode 100644 index 000000000..01c73719b Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/gateways@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/generate-token.png b/assets/images/guide/how-it-works/ecash/generate-token.png new file mode 100644 index 000000000..7c2e8549e Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/generate-token.png differ diff --git a/assets/images/guide/how-it-works/ecash/generate-token@2x.png b/assets/images/guide/how-it-works/ecash/generate-token@2x.png new file mode 100644 index 000000000..9bc24ec6e Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/generate-token@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/how-ecash-works.png b/assets/images/guide/how-it-works/ecash/how-ecash-works.png new file mode 100644 index 000000000..86f0bf274 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/how-ecash-works.png differ diff --git a/assets/images/guide/how-it-works/ecash/how-ecash-works@2x.png b/assets/images/guide/how-it-works/ecash/how-ecash-works@2x.png new file mode 100644 index 000000000..0739b1d93 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/how-ecash-works@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-mint-back-up.png b/assets/images/guide/how-it-works/ecash/manual-backup-mint-back-up.png new file mode 100644 index 000000000..e5eaa2424 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-mint-back-up.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-mint-back-up@2x.png b/assets/images/guide/how-it-works/ecash/manual-backup-mint-back-up@2x.png new file mode 100644 index 000000000..47901a632 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-mint-back-up@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-mint-intro.png b/assets/images/guide/how-it-works/ecash/manual-backup-mint-intro.png new file mode 100644 index 000000000..448ff99ab Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-mint-intro.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-mint-intro@2x.png b/assets/images/guide/how-it-works/ecash/manual-backup-mint-intro@2x.png new file mode 100644 index 000000000..796df8aa5 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-mint-intro@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase-intro.png b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase-intro.png new file mode 100644 index 000000000..5294b51ce Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase-intro.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase-intro@2x.png b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase-intro@2x.png new file mode 100644 index 000000000..7c3fed436 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase-intro@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase.png b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase.png new file mode 100644 index 000000000..cfafc8609 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase.png differ diff --git a/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase@2x.png b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase@2x.png new file mode 100644 index 000000000..418df1ea3 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/manual-backup-recovery-phrase@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/pending-token.png b/assets/images/guide/how-it-works/ecash/pending-token.png new file mode 100644 index 000000000..18a631f2d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/pending-token.png differ diff --git a/assets/images/guide/how-it-works/ecash/pending-token@2x.png b/assets/images/guide/how-it-works/ecash/pending-token@2x.png new file mode 100644 index 000000000..856e90df3 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/pending-token@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/pending-transaction-details.png b/assets/images/guide/how-it-works/ecash/pending-transaction-details.png new file mode 100644 index 000000000..0adfdfac9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/pending-transaction-details.png differ diff --git a/assets/images/guide/how-it-works/ecash/pending-transaction-details@2x.png b/assets/images/guide/how-it-works/ecash/pending-transaction-details@2x.png new file mode 100644 index 000000000..d5c2d2be2 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/pending-transaction-details@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/pending-transaction-qr.png b/assets/images/guide/how-it-works/ecash/pending-transaction-qr.png new file mode 100644 index 000000000..f2b1cfdc5 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/pending-transaction-qr.png differ diff --git a/assets/images/guide/how-it-works/ecash/pending-transaction-qr@2x.png b/assets/images/guide/how-it-works/ecash/pending-transaction-qr@2x.png new file mode 100644 index 000000000..d630398c0 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/pending-transaction-qr@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-manual-recovery-phrase-complete@1x.png b/assets/images/guide/how-it-works/ecash/restore-manual-recovery-phrase-complete@1x.png new file mode 100644 index 000000000..74e4b5da0 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-manual-recovery-phrase-complete@1x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-manual-recovery-phrase-complete@2x.png b/assets/images/guide/how-it-works/ecash/restore-manual-recovery-phrase-complete@2x.png new file mode 100644 index 000000000..1926c4dc9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-manual-recovery-phrase-complete@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-mint-info-add.png b/assets/images/guide/how-it-works/ecash/restore-mint-info-add.png new file mode 100644 index 000000000..4f226e61f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-mint-info-add.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-mint-info-add@2x.png b/assets/images/guide/how-it-works/ecash/restore-mint-info-add@2x.png new file mode 100644 index 000000000..ca6059627 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-mint-info-add@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-mint-info@1x.png b/assets/images/guide/how-it-works/ecash/restore-mint-info@1x.png new file mode 100644 index 000000000..a26218e32 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-mint-info@1x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-mint-info@2x.png b/assets/images/guide/how-it-works/ecash/restore-mint-info@2x.png new file mode 100644 index 000000000..1daf0e85c Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-mint-info@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-mints@1x.png b/assets/images/guide/how-it-works/ecash/restore-mints@1x.png new file mode 100644 index 000000000..b5d9d648c Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-mints@1x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-mints@2x.png b/assets/images/guide/how-it-works/ecash/restore-mints@2x.png new file mode 100644 index 000000000..8dddd4cd6 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-mints@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-start@1x.png b/assets/images/guide/how-it-works/ecash/restore-start@1x.png new file mode 100644 index 000000000..134ea702d Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-start@1x.png differ diff --git a/assets/images/guide/how-it-works/ecash/restore-start@2x.png b/assets/images/guide/how-it-works/ecash/restore-start@2x.png new file mode 100644 index 000000000..655a91cfb Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/restore-start@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/scan.png b/assets/images/guide/how-it-works/ecash/scan.png new file mode 100644 index 000000000..167a37004 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/scan.png differ diff --git a/assets/images/guide/how-it-works/ecash/scan@2x.png b/assets/images/guide/how-it-works/ecash/scan@2x.png new file mode 100644 index 000000000..1ce4374f9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/scan@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/sending-and-receiving.png b/assets/images/guide/how-it-works/ecash/sending-and-receiving.png new file mode 100644 index 000000000..82b5b9d1f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/sending-and-receiving.png differ diff --git a/assets/images/guide/how-it-works/ecash/sending-and-receiving@2x.png b/assets/images/guide/how-it-works/ecash/sending-and-receiving@2x.png new file mode 100644 index 000000000..a24b85eac Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/sending-and-receiving@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.jpg b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.jpg new file mode 100644 index 000000000..ff1fc4c06 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.png b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.png new file mode 100644 index 000000000..3547d70f4 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.png differ diff --git a/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.jpg b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.jpg new file mode 100644 index 000000000..41a4c62c1 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.png b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.png new file mode 100644 index 000000000..97b15cb16 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/share-ecash.png b/assets/images/guide/how-it-works/ecash/share-ecash.png new file mode 100644 index 000000000..4d4272eaa Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/share-ecash.png differ diff --git a/assets/images/guide/how-it-works/ecash/share-ecash@2x.png b/assets/images/guide/how-it-works/ecash/share-ecash@2x.png new file mode 100644 index 000000000..f182fc3db Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/share-ecash@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/single-mint-mobile.jpg b/assets/images/guide/how-it-works/ecash/single-mint-mobile.jpg new file mode 100644 index 000000000..33465bceb Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/single-mint-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/single-mint-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/single-mint-mobile@2x.jpg new file mode 100644 index 000000000..80e21d0c6 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/single-mint-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/single-mint.jpg b/assets/images/guide/how-it-works/ecash/single-mint.jpg new file mode 100644 index 000000000..ebe9212d9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/single-mint.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/single-mint@2x.jpg b/assets/images/guide/how-it-works/ecash/single-mint@2x.jpg new file mode 100644 index 000000000..f4d513c9f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/single-mint@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/solomint-mobile.jpg b/assets/images/guide/how-it-works/ecash/solomint-mobile.jpg new file mode 100644 index 000000000..e3afb859c Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/solomint-mobile.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/solomint-mobile@2x.jpg b/assets/images/guide/how-it-works/ecash/solomint-mobile@2x.jpg new file mode 100644 index 000000000..3af8f53e6 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/solomint-mobile@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/solomint.jpg b/assets/images/guide/how-it-works/ecash/solomint.jpg new file mode 100644 index 000000000..b3ddde3f8 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/solomint.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/solomint@2x.jpg b/assets/images/guide/how-it-works/ecash/solomint@2x.jpg new file mode 100644 index 000000000..b1b1e4395 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/solomint@2x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/trust-mint.png b/assets/images/guide/how-it-works/ecash/trust-mint.png new file mode 100644 index 000000000..5d26db912 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/trust-mint.png differ diff --git a/assets/images/guide/how-it-works/ecash/trust-mint@2x.png b/assets/images/guide/how-it-works/ecash/trust-mint@2x.png new file mode 100644 index 000000000..272c68761 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/trust-mint@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-01.png b/assets/images/guide/how-it-works/ecash/unknown-mint-01.png new file mode 100644 index 000000000..3d2e13ac4 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-01.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-01@2x.png b/assets/images/guide/how-it-works/ecash/unknown-mint-01@2x.png new file mode 100644 index 000000000..6ee676352 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-01@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-02.png b/assets/images/guide/how-it-works/ecash/unknown-mint-02.png new file mode 100644 index 000000000..906f7ad43 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-02.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-02@2x.png b/assets/images/guide/how-it-works/ecash/unknown-mint-02@2x.png new file mode 100644 index 000000000..d344bdab9 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-02@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-03.png b/assets/images/guide/how-it-works/ecash/unknown-mint-03.png new file mode 100644 index 000000000..e19d111fd Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-03.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-03@2x.png b/assets/images/guide/how-it-works/ecash/unknown-mint-03@2x.png new file mode 100644 index 000000000..08b8bf23f Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-03@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-04.png b/assets/images/guide/how-it-works/ecash/unknown-mint-04.png new file mode 100644 index 000000000..271aeea6a Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-04.png differ diff --git a/assets/images/guide/how-it-works/ecash/unknown-mint-04@2x.png b/assets/images/guide/how-it-works/ecash/unknown-mint-04@2x.png new file mode 100644 index 000000000..d61fb345a Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/unknown-mint-04@2x.png differ diff --git a/assets/images/guide/how-it-works/ecash/using-ecash.jpg b/assets/images/guide/how-it-works/ecash/using-ecash.jpg new file mode 100644 index 000000000..41519e23b Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/using-ecash.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/using-ecash@1x.jpg b/assets/images/guide/how-it-works/ecash/using-ecash@1x.jpg new file mode 100644 index 000000000..9ef9980a0 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/using-ecash@1x.jpg differ diff --git a/assets/images/guide/how-it-works/ecash/using-ecash@2x.jpg b/assets/images/guide/how-it-works/ecash/using-ecash@2x.jpg new file mode 100644 index 000000000..9ec64ab44 Binary files /dev/null and b/assets/images/guide/how-it-works/ecash/using-ecash@2x.jpg differ diff --git a/guide/how-it-works/ecash/cashu.md b/guide/how-it-works/ecash/cashu.md new file mode 100644 index 000000000..65618bf17 --- /dev/null +++ b/guide/how-it-works/ecash/cashu.md @@ -0,0 +1,146 @@ +--- +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/cashu.jpg +main_classes: -no-top-padding +image_base: /assets/images/guide/how-it-works/ecash/ +images_backup: + - file: manual-backup-recovery-phrase-intro + modalImage: manual-backup-recovery-phrase-intro-full + alt: TBD + caption: TBD + - file: manual-backup-recovery-phrase + modalImage: manual-backup-recovery-phrase-full + alt: TBD + caption: TBD + - file: manual-backup-mint-intro + modalImage: manual-backup-mint-intro-full + alt: TBD + caption: TBD + - file: manual-backup-mint-back-up + modalImage: manual-backup-mint-back-up-full + alt: TBD + caption: TBD +images_restore: + - file: restore-start + modalImage: restore-start-full + alt: TBD + caption: TBD + - file: restore-manual-recovery-phrase-complete + modalImage: restore-manual-recovery-phrase-complete-full + alt: TBD + caption: TBD + - file: restore-mints + modalImage: restore-mints-full + alt: TBD + caption: TBD + - file: restore-mint-info + modalImage: restore-mint-info-full + alt: TBD + caption: TBD +--- + + + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashu.jpg" + retina = "/assets/images/guide/how-it-works/ecash/cashu@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/cashu-mobile.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/cashu-mobile@2x.jpg" + alt-text = "ecash overview illustration" + width = 1600 + height = 600 + layout = "full-width" +%} + +# Cashu +Cashu is an [ecash protocol]({{ '/guide/how-it-works/ecash/introduction/' | relative_url }}) that operates on a model where any user can run their own solo mint, or join existing mints run by others. This makes Cashu an easy to deploy, flexible, and agile approach to managing bitcoin-backed ecash. + +## Design Best Practices +This page is about the unique approach of Cashu to ecash. To learn more about design aspects, check out the [Design best practices]({{ '/guide/how-it-works/ecash/design-best-practices' | relative_url }}) page. + +## Cashu Mints + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashumint.jpg" + retina = "/assets/images/guide/how-it-works/ecash/cashumint@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/cashumint-mobile@2x.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/cashumint-mobile@2x.jpg" + alt-text = "An illustration of how users, ecash, and a Cashu mint interact." + caption = "How a Cashu mint interacts with users." + width = 800 + height = 456 + layout = "full-width" +%} + +A Cashu mint operates simply and centrally. One entity (the mint) handles the entire process: issuing bitcoin-backed ecash tokens when users deposit bitcoin and redeeming them when users request withdrawals. This centralized model enables fast payments but requires trust in the mint’s integrity and security. + +Cashu’s design prioritizes simplicity and speed, relying on a single operator to manage all operations. Cashu currently only supports lightning payments, but in the future it will support on-chain payments as well. + +#### Pros: + +* **Quick and Easy Setup** - Ideal for those who need a simple, low-cost solution. + +* **Cost-Effective** - Fewer resources are required, making it an attractive option for smaller operations. + +#### Cons: + +* **High Risk** - With all control in the hands of one operator, the risks of loss or theft are much higher. Additionally, if the server goes offline, users lose access to the mint until it’s restored. + +## When to Use Cashu + +* **Rapid Deployment and Simple Integration** - Great for projects that need to be launched quickly with minimal setup. Cashu has a much smaller codebase and is easier to understand and modify compared to Fedimint. + +* **Localized or Small Community Solutions** - Independent mints can be operated by trusted local entities to serve their communities, based on existing trust relationships and customized to local needs. + +## Products That Use Cashu + +### Wallets +- [Boardwalk Cash](https://boardwalkcash.com/) +- [Cashu.me](https://wallet.cashu.me/) +- [eNuts](https://www.enuts.cash/) +- [Macadamia](https://macadamia.cash/) +- [Minibits](https://www.minibits.cash/) +- [Nutshell](https://github.com/cashubtc/nutshell) +- [Nutstash](https://nutstash.app/) +- [Sovran](https://sovranbitcoin.com/) + +### Services +- [npub.cash](https://npub.cash/) +- [Shopstr](https://shopstr.store/) +- [Cashu Decoder](https://nostrapps.github.io/cashu/) + +For a comprehensive list of products and services that use Cashu visit [Awesome Cashu](https://github.com/cashubtc/awesome-cashu). + +## Cashu Resources +Cashu Documentation - Access the official Cashu documentation for detailed information on setup, usage, and integration. +- [Cashu Website](https://cashu.space/) +- [Cashu Documentation](https://docs.cashu.space/) +- [Cashu Only Mint List](https://cashumints.space/) +- [Cashu & Fedimint Mint List](https://bitcoinmints.com) + +--- + +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/introduction/" + previousName = "Introduction" + nextUrl = "/guide/how-it-works/ecash/fedimint/" + nextName = "Fedimint" +%} \ No newline at end of file diff --git a/guide/how-it-works/ecash/design-best-practices.md b/guide/how-it-works/ecash/design-best-practices.md new file mode 100644 index 000000000..4fb36fc97 --- /dev/null +++ b/guide/how-it-works/ecash/design-best-practices.md @@ -0,0 +1,590 @@ +--- +layout: guide +title: Design best practices +description: An overview on best design practices for bitcoin-backed ecash. +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: https://bitcoin.design/assets/images/guide/how-it-works/ecash/best-practicies.jpg +image_base: /assets/images/guide/how-it-works/ecash/ + +images_onboarding: + - file: ecash-onboarding-01 + modalImage: ecash-onboarding-01@2x + alt: Onboarding screen introducing ‘Satoshi Cash,’ a bitcoin-backed ecash wallet. The screen highlights that the wallet offers fast and private transactions and features a video thumbnail with an explainer video. + caption: Landing screen for Satoshi Cash, a bitcoin-backed ecash wallet. + - file: ecash-onboarding-02 + modalImage: ecash-onboarding-02@2x + alt: Screen explaining that ecash in Satoshi Cash is custodial, meaning funds are held by a trusted mint or federation. Visual elements show federations as circles around a central icon to illustrate the custodial structure. + caption: Explanation of ecash custodial model. Users are informed that their funds are managed by a trusted mint or federation, which holds custody over their ecash. + - file: ecash-onboarding-03 + modalImage: ecash-onboarding-03@2x + alt: Screen instructing users on choosing a mint or federation to manage their ecash. Three mint cards are displayed with names, logos, reviews, and star ratings, encouraging users to make an informed choice. + caption: Guidance for selecting a mint or federation to hold your ecash. Users choose based on reviews and trustworthiness. + - file: ecash-onboarding-04 + modalImage: ecash-onboarding-04@2x + alt: Final onboarding screen with confetti graphics, indicating that the user setup is complete. The message encourages users to start using ecash and consider a non-custodial wallet for larger savings. + caption: Completion screen celebrating setup success. Users are ready to start using ecash and are advised to consider non-custodial options for larger holdings. + +images_unknown-mint: + - file: unknown-mint-01 + modalImage: unknown-mint-01@2x + alt: Empty state home screen of the bitcoin-backed ecash wallet, with a “Ready to start?” message and a button labeled “Join a mint.” The balance shows as 0, and the bottom navigation includes “Home,” “Mints,” “Settings,” and buttons for “Send” and “Receive.” + caption: Initial empty state of the wallet’s home screen, prompting the user to join a mint to get started. + - file: unknown-mint-02 + modalImage: unknown-mint-02@2x + alt: Home screen of the bitcoin-backed ecash wallet, showing a message prompting the user to “Add a mint to get up and running.” The options include “Discover mints” from a recommended list or “Add a trusted mint” manually. + caption: Encourage users to add a mint by offering options to discover recommended mints or add a known mint by scanning a QR code or entering the URL. + - file: unknown-mint-03 + modalImage: unknown-mint-03@2x + alt: Discover mints screen displaying a list of available mints for the bitcoin-backed ecash wallet. Each mint has its name, URL, number of reviews, and star rating. A note above the list advises users to “Do your own research before joining a mint.” + caption: Mint discovery interface displaying a list of available mints with ratings and reviews, encouraging users to do their own research before connecting. + - file: unknown-mint-04 + modalImage: unknown-mint-04@2x + alt: Onboarding screen for a bitcoin-backed ecash wallet showing a successful connection to “Minibits Mint.” The screen includes a message about the mint being in BETA and advises users not to store large amounts of ecash. A “Continue” button is displayed at the bottom. + caption: Confirmation screen showing a successful connection to a mint, with a reminder for users to exercise caution and avoid storing large amounts of ecash. + +images_mint-list: + - file: federation-list + modalImage: federation-list@2x + alt: List of federations with QR codes for easy scanning and joining. + caption: Allow users to easily invite others to a mint or federation, by using well-placed QR codes containing the federation's URL. + - file: cashu-mint-list + modalImage: cashu-mint-list@2x + alt: List of Cashu mints with mint addresses displayed. + caption: Cashu mints with mint addresses displayed. + +images_pending: + - file: pending-token + modalImage: pending-token@2x + alt: A payment history that shows received, pending, and sent payments each with their own visual indicator. + caption: Received, pending, and sent transaction each with their own visual indicator. + - file: pending-transaction-details + modalImage: pending-transaction-details@2x + alt: Expanded view of a pending payment, showing the memo, amount, and the mint that created the token. + caption: Expanded view of a pending payment. + - file: pending-transaction-qr + modalImage: pending-transaction-qr@2x + alt: A QR code for a pending payment with the token string available to copy to clipboard. + caption: QR code for a pending token. + +images_mint-default: + - file: cashu-mint-details + modalImage: cashu-mint-details@2x + alt: Cashu Mint metadata fields displayed in a wallet interface. + caption: Cashu Mint metadata fields displayed in a wallet interface. + - file: cashu-mint-details-settings + modalImage: cashu-mint-details-settings@2x + alt: A mobile ecash wallet with a bottom sheet that lists the following actions, refresh mint settings, update mint url, set as default mint, and remove mint. + caption: Advanced mint operations like setting a default mint, updating mint url, and removing a mint. + - file: cashu-mint-details-default-set-confirmation + modalImage: cashu-mint-details-default-set-confirmation@2x + alt: A success confirmation that the mint has been set as default. + caption: Confirmation when a mint has been set as default. + - file: cashu-default-applied + modalImage: cashu-default-applied@2x + alt: A list of mints with the default mint highlighted by a home icon. + caption: Default mint highlighted by a home icon. + +images_backup: + - file: manual-backup-recovery-phrase-intro + modalImage: manual-backup-recovery-phrase-intro@2x + alt: A mobile wallet interface with a screen that explains what a recovery phrase is. + caption: Explain what a recovery phrase is. + - file: manual-backup-recovery-phrase + modalImage: manual-backup-recovery-phrase@2x + alt: A mobile wallet interface with a screen that shows the recovery phrase with numbering. + caption: Give the user an option to download a print template. + - file: manual-backup-mint-intro + modalImage: manual-backup-mint-intro@2x + alt: A mobile wallet interface with a screen that explains to the user that they need to back up their mints by providing the mint url. + caption: Explain to the user that they need to back up their mints by providing the mint url. + - file: manual-backup-mint-back-up + modalImage: manual-backup-mint-back-up@2x + alt: A mobile wallet interface with a screen that shows a list of mints along with their mint url. + caption: Give the user an option to download a print template. + +images_restore: + - file: restore-start + modalImage: restore-start@2x + alt: A mobile wallet interface that explains what a manual restore is. + caption: Explain what a manual restore is. + - file: restore-manual-recovery-phrase-complete + modalImage: restore-manual-recovery-phrase-complete@2x + alt: A mobile wallet interfact that shows a list of a 12 word recovery phrase with numbering. + caption: Allow user to enter the recovery phrase, include numbering. + - file: restore-mints + modalImage: restore-mints@2x + alt: A mobile wallet interfact that explains what type of mint information is needed before proceeding, and give user the option to back out. + caption: Explain what the mint information is needed before proceeding, and give user the option to back out. + - file: restore-mint-info-add + modalImage: restore-mint-info-add@2x + alt: A mobile wallet interfact that shows a user entering a mint url and the mint name automatically populating. + caption: Requiring the user to enter the mint url prevents any errors. All other mint information (metadata) can be retrieved from the mint url. + - file: restore-mint-info + modalImage: restore-mint-info@2x + alt: A mobile wallet interfact that shows a list of mints that the user has entered along with the option to add a new mint or continue with the restoration process. + caption: Provide user with the option to type mint information or scan a mint's QR code. + +images_mint-url-edit: + - file: cashu-mint-details + modalImage: cashu-mint-details@2x + alt: A mobile wallet interface showing a mint details screen with an input field to edit the mint url. + caption: Give the user the option to edit the mint url. + - file: cashu-mint-url-edit + modalImage: cashu-mint-url-edit@2x + alt: A mobile wallet interface showing a user typing a mint url into the mint url input field. + caption: Allow the user to manually type the mint url. + +images_p2pk: + - file: generate-token + modalImage: generate-token@2x + alt: A mobile wallet interface showing a payment about to be sent. The bitcoin and fiat denominated balance is displayed at the top, along with an advance options button at the bottom. + caption: P2PK is an advance feature and should not be displayed as a regular feature. + - file: advance-settings + modalImage: advance-settings@2x + alt: A mobile wallet interface with a bottom sheet that lists the following actions, Coin control, and P2PK Lock. + caption: Consider showing advance features like P2PK in a bottom sheet or modal. + - file: enter-p2pk + modalImage: enter-p2pk@2x + alt: A mobile wallet interface with an input field to enter the recipient's public key. + caption: Allow the user to manually enter the recipient's public key or + - file: share-ecash + modalImage: share-ecash@2x + alt: A QR code for a generate ecash token with the token string available to copy to clipboard. + caption: Allow the user to copy the token string to clipboard by tapping on QR code or text string. + +images_guardian-status: + - file: federation-guardian-good + modalImage: federation-guardian-good@2x + alt: A mobile wallet interface with a screen that shows a federation and their health status in the form of a green progress bar. The more the progress bar is filled, the more the guardian has maintained uptime. + caption: Consider the privacy implications of showing the status and name of guardians. + - file: federation-guardian-ok + modalImage: federation-guardian-ok@2x + alt: A mobile wallet interface with a screen that shows a federation experiencing partial connecetivity issues due to one guardian being offline. + caption: Show the user the current status of the federation. + - file: federation-guardian-bad + modalImage: federation-guardian-bad@2x + alt: A mobile wallet interface with a screen that shows an unreliable federation and their health status in the form of a red progress bar along with a message that the federation is offline. + caption: Clearly inform a user if a federation is offline. + +images_guardian-expiry: + - file: federation-guardian-expiry + modalImage: federation-guardian-expiry@2x + alt: A mobile wallet interface with a screen that shows a countdown timer and a message that the federation will shut down in 15 days. + caption: Federation expiration timestamp displayed as a countdown alter when less 30 days remaining. + - file: federation-guardian-expiry-join + modalImage: federation-guardian-expiry-join@2x + alt: A mobile wallet interface with a screen that shows a countdown timer and a message that the federation will shut down in 15 days. + caption: Federation expiration timestamp displayed as a data field when more than 30 days remain or the user hasn't yet joined the federation. + +images_auto-swap: + - file: pending-token + modalImage: pending-token@2x + alt: A mobile wallet interface with a screen that shows a scan button at the bottom. + caption: User scans or recieves an ecash token + - file: scan + modalImage: scan@2x + alt: A mobile wallet interface showing a camera scanning a QR code. + caption: User scans or recieves an ecash token. + - file: trust-mint + modalImage: trust-mint@2x + alt: A mobile wallet interface showing a bottom sheet with the option to trust the mint that the token is being sent from, or to auto-swap the mint to their default mint. + caption: For privacy-focused wallets, ask users to confirm trust or offer auto-swap to their default mint when receiving ecash from an unknown mint. + +images_federation-guardian-info: + - file: federation-guardian-info + modalImage: federation-guardian-info@2x + alt: Example of a guardian status display in a wallet interface. + caption: Example of a guardian status display in a wallet interface. + +images_federation-welcome: + - file: federation-welcome + modalImage: federation-welcome@2x + alt: Federation welcome message display in a wallet interface. + caption: A welcome message being used durring the new user onboarding process. + +images_federation-expiry: + - file: federation-guardian-expiry + modalImage: federation-guardian-expiry@2x + alt: A mobile wallet interface with a screen that shows a countdown timer and a message that the federation will shut down in 15 days. + caption: Federation expiration timestamp displayed as a countdown alter when less 30 days remaining. + - file: federation-guardian-expiry-join + modalImage: federation-guardian-expiry-join@2x + alt: A mobile wallet interface with a screen that shows a countdown timer and a message that the federation will shut down in 15 days. + caption: Federation expiration timestamp displayed as a data field when more than 30 days remain or the user hasn't yet joined the federation. + +images_federation-id: + - file: federation-id1 + modalImage: federation-id1@2x + alt: Federation identity and version display in a wallet interface + caption: Consider the most important information to display to the user about the federation. + - file: federation-id2 + modalImage: federation-id2@2x + alt: Federation descriptions display in a wallet interface + caption: Different federation operator may use the description fields differently. Consider this when designing your federation details screen. + - file: federation-id3 + modalImage: federation-id3@2x + alt: Federation contact information display in a wallet interface + caption: Contact information is optional for the federation operator to include. If there is no contact information, consider not displaying this metadata. + - file: federation-id4 + modalImage: federation-id4@2x + alt: Example of important announcements display in a wallet interface + caption: A message of the day can consists of anything the federation operator wants to tell the user. It can for example be used to announce a new feature or a upcoming maintenance. + +images_cashu-id: + - file: cashu-id1 + modalImage: cashu-id1@2x + alt: Mint identity and version display in a wallet interface + caption: Consider the most important information to display to the user about the mint. + - file: cashu-id2 + modalImage: cashu-id2@2x + alt: Mint descriptions display in a wallet interface + caption: Different mint operator may use the description fields differently. Consider this when designing your mint details screen. + - file: cashu-id3 + modalImage: cashu-id3@2x + alt: Mint contact information display in a wallet interface + caption: Contact information is optional for the mint operator to include. If there is no contact information, consider not displaying this metadata. + - file: cashu-id4 + modalImage: cashu-id4@2x + alt: Example of important announcements display in a wallet interface + caption: A message of the day can consists of anything the mint operator wants to tell the user. It can for example be used to announce a new feature or a upcoming maintenance. + - file: cashu-id5 + modalImage: cashu-id5@2x + alt: Example of supported features display in a wallet interface + caption: Supported features are pulled by indexing a mints information and reading what nuts the mint has implemented. + +--- +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/best-practicies.jpg" + retina = "/assets/images/guide/how-it-works/ecash/best-practicies@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/best-practicies-mobile.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/best-practicies-mobile@2x.jpg" + alt-text = "ecash best practices illustration" + width = 1600 + height = 600 + layout = "full-width" +%} + + + +# Ecash design best practices +{: .no_toc } + +--- + +
+ * Table of contents +{:toc} +
+ +--- +## Common ecash design guidelines +When designing bitcoin-backed ecash applications, it’s important to prioritize clear and intuitive interfaces that allow users to easily manage their tokens, whether minting, sending, or redeeming them. Many of the same design principles for [sending]({{ '/guide/daily-spending-wallet/sending/' | relative_url }}) and [requesting]({{ '/guide/daily-spending-wallet/requesting/' | relative_url }}) from the [lightning wallet reference design]({{ '/guide/guide/daily-spending-wallet/' | relative_url }}) apply here as well. + +Since ecash is still a relatively new technology this guide focuses on best practices for managing tokens and communicating mint and federation details. As the ecash ecosystem develops we encourage designers and developers to contribute their insights and help improveme this guide. + +### User onboarding +{% include image-gallery.html pages = page.images_onboarding %} + +It is recomended to start the onboarding process by explaining the risks associated with ecash and then guide the user through the process of joining their first mint or federation. + +#### Joining unknown mints or federations +{% include image-gallery.html pages = page.images_unknown-mint %} +During the inital mint selection screen a wallet could display a list of recommended mints or federations based on the user's device information, location, and other factors. One current example of this is [Bitcoin Mints](https://bitcoinmints.com/). Their mint list can be integrated into the wallet so it's easier for the user to see a list of mints and ratings and make their own decision as to which mint or federation to join. + +#### Joining known mints or federations +If a user is already aware of the specific mint or federation they want to join, wallets should support the ability to manually enter the mint name or address or scan a QR code to add the mint or federation to their wallet. + +{% include tip/open.html color="blue" icon="info" label="Web of Trust" %} + +Applications should try to leverage webs of trust when displaying lists of mints. For example, [Bitcoin Mints](https://bitcoinmints.com/) allows users to login with their nostr key and then see filter the list of mints by ratings left by users they are connected to. This allows for a way of discovering mints that are recommended by their network peers. +{% include tip/close.html %} + +### Multiple mint or federation display +{% include image-gallery.html pages = page.images_mint-list %} + +When displaying multiple mints or federations in a bitcoin-backed ecash application, there are several best practices to consider: + +1. **Clear hierarchy and organization**: Ensure that mints or federations are organized in a way that is easy for users to navigate. Group mints by relevance, trust level, or frequency of use, and consider using sorting or filtering options to help users find the right mint or federation quickly. + +2. **Prominent metadata display**: Use metadata fields like mint name, icon, URL, and description, to give users insight into each mint or federations identity. Display this information prominently, so users can easily verify the authenticity and relevance of each mint or federation. + +3. **Quick mint access**: Provide easy access to mint or federation details directly from the mint or federation list. This allows users to interact with mints or federations more fluidly without needing to navigate through multiple screens. + +### Default mint +{% include image-gallery.html pages = page.images_mint-default %} + +Users may prefer to use a trusted mint for their payments. By allowing them to select a default mint, you simplify their experience and reduce the risk of exposure to a potentially malicious mint. Additionally, consider offering auto-swap preferences. + +### Auto-swapping to a default mint +{% include image-gallery.html pages = page.images_auto-swap %} +Wallets can provide the option to automatically swap ecash from an unknown mint to their default mint or federation. This optional feature can simplify payments by routing all ecash through the assigned default mint or federation. + +{% include tip/open.html color="blue" icon="info" label="Auto-Swapping Involves Fees" %} + +It's important to inform users that swapping requires a a lightning payment and involves fees. The amount of fees depends on the amount of ecash they want to swap and the current network conditions. + +{% include tip/close.html %} + +### Pending tokens +{% include image-gallery.html pages = page.images_pending %} + +It's useful to display generated tokens in the payment history along with their status—whether pending or redeemed. While token is pending, anyone with the token string can claim it. This helps users quickly assess their payment status. Providing the ability to expand on a token to view details and take actions like resending or redeeming is also important. This feature becomes particularly valuable if a token was lost or never claimed. + + +### Backup +{% include image-gallery.html pages = page.images_backup %} + +Both Fedimint and Cashu support the ability to use a seed phrase to backup and restore ecash tokens. 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 [Backup & recovery]({{ '/guide/daily-spending-wallet/backup-and-recovery/landing-page/' | relative_url }}) section also apply to ecash applications and wallets. + +{% include tip/open.html color="blue" icon="info" label="Mint Information Needed" %} + +Instruct the user to keep a record of the mints or federations they are connected to. During the restoration process, users will need to reconnect to these specific mints or federations to re-verify their ecash. Without this information, they will not be able to fully restore their wallet. + +{% include tip/close.html %} + +### Restore +{% include image-gallery.html pages = page.images_restore %} +When restoring a wallet, users must first enter their seed phrase, which regenerates the secrets previously used to mint ecash. Currently, all Cashu wallets require users to manually input the mint URL for each mint they were previously connected to. The mint then verifies these blinded messages against its records to confirm if they've been seen before and can reissue the signature if valid. + +In the future, applications may implement encrypted, privacy-preserving backup servers that maintain a list of federations or mints the user has joined, simplifying the restoration process. + + +## Cashu design guidelines + +### Edit mint URL & refresh mint settings + +{% include image-gallery.html pages = page.images_mint-url-edit %} + +It's useful to provide users with the ability to manually update or refresh mint settings in their wallets. While best practices suggest that wallets should auto-refresh and update mint settings periodically, there may be cases where this isn't supported, or a mint undergoes significant updates, such as a URL change. By allowing users to edit the mint URL or refresh settings manually, you ensure that users always have the latest mint configurations. + +### Metadata and information management + +[NUT06](https://github.com/cashubtc/nuts/blob/main/06.md) provides a standardized way to display metadata for Cashu mints. Incorporating these metadata fields makes your application more transparent and informative. Here's a breakdown of each field and how it can be used in wallet design: + +#### Mint identity and version + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashu-id1.png" + retina = "/assets/images/guide/how-it-works/ecash/cashu-id1@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/cashu-id1@2x.png" + alt-text = "Mint identity and version display in a wallet interface" + width = 507 + height = 813 + layout = "float-right-desktop -background -shadow" + caption = "Consider the most important information to display to the user about the mint." +%} + +`name`: The name of the mint. Display this prominently in mint listings and details pages to help users quickly identify different mints. + +`version`: Shows the implementation name and software version of the mint. Consider displaying this in the mint details to inform users about the mint's current software status. + +
+ +#### Mint descriptions + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashu-id2.png" + retina = "/assets/images/guide/how-it-works/ecash/cashu-id2@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/cashu-id2@2x.png" + alt-text = "Mint descriptions display in a wallet interface" + width = 600 + height = 813 + layout = "float-right-desktop -background -shadow" + caption = "Different mint operator may use the description fields differently. Consider this when designing your mint details screen." +%} + +`description`: A short description of the mint. Consider displaying this in mint listings or as a subtitle under the mint name to give users a quick overview. + +`description_long`: A more detailed description. This can be displayed on a dedicated mint information page or in an expandable section for users who want more details. + +
+ +#### Contact information + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashu-id3.png" + retina = "/assets/images/guide/how-it-works/ecash/cashu-id3@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/cashu-id3@2x.png" + alt-text = "" + width = 493 + height = 813 + layout = "float-right-desktop -background -shadow" + caption = "Contact information is optional for the mint operator to include. If there is no contact information, consider not displaying this metadata." +%} + +`contact`: An list of contact methods for the mint operator. Consider displaying this in the mint details, using appropriate icons for each contact method (e.g., nostr, email icon, website icon) to make it easy for users to reach out if needed. + +
+ +#### Important announcements + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashu-id4.png" + retina = "/assets/images/guide/how-it-works/ecash/cashu-id4@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/cashu-id4@2x.png" + alt-text = "Example of important announcements display in a wallet interface" + width = 521 + height = 813 + layout = "float-right-desktop -background -shadow" + caption = "A message of the day can consists of anything the mint operator wants to tell the user. It can for example be used to announce a new feature or a upcoming maintenance." +%} + +`motd` (Message of the Day): Used for important announcements. Consider displaying this in a prominent, dismissible notification area when users interact with the mint, making sure they don't miss any critical information. + +
+ +#### Supported features + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/cashu-id5.png" + retina = "/assets/images/guide/how-it-works/ecash/cashu-id5@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/cashu-id5@2x.png" + alt-text = "Example of important announcements display in a wallet interface" + width = 515 + height = 813 + layout = "float-right-desktop -background -shadow" + caption = "Supported features are pulled by indexing a mints information and reading what nuts the mint has implemented." +%} + +`nuts`: Indicates which NUT specifications the mint supports and their settings. Create a "Features" or "Capabilities" section in the mint details, translating technical NUT numbers into user-friendly feature descriptions. + +
+ +{% include tip/open.html color="green" icon="check" label="Avoid Jargon & NUTs 01-06" %} + +When displaying [NUTs](https://github.com/cashubtc/nuts) (Notation, Usage, and Terminology) that a mint supports, avoid simply listing NUT01, NUT02, etc. Instead, provide users with clear descriptions of each NUTs functionality. This helps users understand the features and capabilities of the mint at a glance. Since NUTs 01-06 are mandatory for Cashu protocol interoperability, focus on optional NUTs that add unique functionality. Consider using the descriptions provided in the official documentation to keep the information accurate. + +{% include tip/close.html %} + +#### Organizing Cashu metadata fields +When designing your Cashu wallet, consider organizing these metadata fields in a logical, user-friendly manner to help users understand and interact with different mints. Here are some suggestions: + +- Use the `name` and short `description` in mint listings for quick identification of mints. +- Display a detailed mint information page using `description_long`, `version`, and `contact` details. +- Display the `motd` as a prominent notification when relevant to the specific mint. +- Use the `nuts` information to create a features list that helps users understand each mint's capabilities. + +By effectively incorporating these Cashu metadata fields, you can create a more transparent and informative experience for users, helping them make informed decisions about which Cashu mints to trust and use. This is particularly important for Cashu, as users interact directly with individual mints rather than a federation structure like in Fedimint. + +### Pay to public key (P2PK) + +{% include image-gallery.html pages = page.images_p2pk %} + +[NUT11](https://github.com/cashubtc/nuts/blob/main/11.md) is a powerful feature that allows bitcoin-backed ecash tokens to be securely locked to another user's public key, which is generated by the recipient's wallet. This ensures that only the intended recipient can redeem the ecash. NUT11 enables secure offline payments, preventing double-spending. Beyond these basics, NUT11 supports advanced use cases like timelocks and multisignature (multisig) setups, where ecash can be conditionally spent or jointly owned by multiple parties. When designing make sure these functionalities are clearly communicated to users, highlighting their practical benefits and flexibility. + +{% include tip/open.html color="blue" icon="info" label="P2PK ecash backup limitations" %} + +P2PK ecash tokens are not derived from a seed phrase. This means they cannot be backed up using a seed phrase, and in the event of a recovery from seed phrase the P2PK ecash tokens will be lost. + +{% include tip/close.html %} + +## Fedimint design guidelines + +### Federation status display + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/federation-guardian-info" + retina = "/assets/images/guide/how-it-works/ecash/federation-guardian-info@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/federation-guardian-info@2x.png" + alt-text = "" + width = 375 + height = 812 + layout = "float-right-desktop -background -shadow" + caption = "Example of a guardian status display in a wallet interface." +%} + +Consider using a prominent, color-coded indicator to show the overall status of the federation. This should reflect whether the federation is fully operational, partially degraded, or offline. This helps users quickly assess the health of a federation. + +
+### Guardian Status Indicators +{% include image-gallery.html pages = page.images_guardian-status %} + +Consider displaying real-time indicators of each guardian's status, such as the connection status and last activity. This information builds trust by keeping users informed about the reliability and performance of the guardians managing their funds. + +### Metadata and information management + +#### Federation metadata fields: Explanation and usage + +Federations can provide configuration and metadata to users. These metadata fields are consensus-relevant, meaning they must be consistent across all federation members. This ensures that users can rely on their accuracy. Let's explore the core metadata fields defined in the Fedimint protocol: + +#### Federation overview and expiration + +
+ +{% include image-gallery.html pages = page.images_guardian-expiry %} + +`federation_name`: This field provides the name of the federation. It should be displayed prominently in the federation overview to help users quickly identify which federation they are interacting with. + +`federation_expiry_timestamp`: This field contains a timestamp indicating when the federation will shut down. It's crucial to display this information clearly to users, possibly with a countdown or warning as the expiration date approaches. + +
+ +#### User onboarding and information + +
+ +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/federation-welcome.png" + retina = "/assets/images/guide/how-it-works/ecash/federation-welcome@2x.png" + modalImage = "/assets/images/guide/how-it-works/ecash/federation-welcome@2x.png" + alt-text = "Federation welcome message display in a wallet interface." + width = 632 + height = 812 + layout = "float-right-desktop -background -shadow" + caption = "A welcome message being used durring the new user onboarding process." +%} + +`welcome_message`: This field contains a welcome message for new users joining the federation. It could be displayed during the onboarding process to provide users with important information or instructions. + +
+ +{% include tip/open.html color="blue" icon="info" label="Flexible Use of Welcome Message" %} +Different federations may choose to display the welcome message in different contexts. Some may use it as a welcome message, others may use it to display the terms of service or other important information. +{% include tip/close.html %} + +#### Organizing Fedimint Metadata Fields + +When designing your Fedimint wallet interface, consider organizing these metadata fields in a logical, user-friendly manner to help users understand and interact with the federation. Here are some suggestions: + +1. Display the `federation_name` prominently in the federation overview for quick identification. +2. Create a detailed federation information page incorporating the `welcome_message` and `federation_expiry_timestamp`, ensuring users are aware of important information and any time limitations. +3. Implement notifications or warnings based on the `federation_expiry_timestamp` to keep users informed about the federation's lifespan. + +By effectively incorporating these Fedimint metadata fields you can create a more transparent and informative experience for users, helping them understand the federation's structure, rules, and trusted entities. + +--- +Next, learn how [transactions]({{ '/guide/how-it-works/transactions/' | relative_url }}) work. + +{% include next-previous.html + previousUrl = "/guide/how-it-works/ecash/fedimint/" + previousName = "Fedimint" + nextUrl = "/guide/how-it-works/transactions/" + nextName = "Transactions" +%} \ No newline at end of file diff --git a/guide/how-it-works/ecash/fedimint.md b/guide/how-it-works/ecash/fedimint.md new file mode 100644 index 000000000..08eb39b1f --- /dev/null +++ b/guide/how-it-works/ecash/fedimint.md @@ -0,0 +1,173 @@ +--- +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/fedimint.jpg +main_classes: -no-top-padding +--- + + + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/fedimint.jpg" + retina = "/assets/images/guide/how-it-works/ecash/fedimint@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/fedimint-mobile.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/fedimint-mobile@2x.jpg" + alt-text = "ecash overview illustration" + width = 1600 + height = 600 + layout = "full-width" +%} + +# Fedimint +Fedimint is the first bitcoin-backed ecash protocol. Fedimint decentralizes trust across a federation of guardians, ensuring that no single guardian has complete control over user funds. Fedimint allows for various Federation configurations, each catering to a community's specific needs and trust relationships + +## Federated mints + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/federated-mint.jpg" + retina = "/assets/images/guide/how-it-works/ecash/federated-mint@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/federated-mint-mobile.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/federated-mint-mobile@2x.jpg" + alt-text = "An illustration of how users, ecash, and a federated mint interact." + caption = "How guardians interact with users of federated mint." + width = 800 + height = 500 + layout = "full-width" +%} + +Federated Mints are the standard when it comes to security and resilience in the Fedimint protocol. Managed by four or more guardians, each running their own Fedimint server, this setup distributes control and minimizes risk. + +#### Pros: + +* **Security** - No single guardian can control the mint, reducing the risk of theft or mismanagement. + +* **High resilience** - The mint remains operational even if one or more guardians are temporarily offline, ensuring continuous access. + +#### Cons: + +* **Complex setup** - Coordinating multiple guardians adds steps and cost. + +## Role of guardians +Guardians are participants who collaboratively manage a federation's operations. They secure the federation's funds using multi-sig wallets, validate payments through consensus, and control ecash issuance and redemption. + +## Role of gateways + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/gateways.png" + retina = "/assets/images/guide/how-it-works/ecash/gateways@2x.png" + mobile = "/assets/images/guide/how-it-works/ecash/gateways.png" + mobileRetina = "/assets/images/guide/how-it-works/ecash/gateways@2x.png" + alt-text = "Network diagram showing how gateways connect federations (represented by blue dots) with the lightning network (represented by orange dots). The nodes are linked by dashed lines, visualizing the interconnected structure of federations and lightning nodes." + caption = "Gateways connect a federation’s ecash and bitcoin via the lightning network." + width = 800 + height = 508 + layout = "full-width" +%} + +A gateway is a service that facilitates interactions between the federation and the lightning network. A gateway acts as a bridge, enabling users within the federation to make payments to and receive payments on the lightning network. + +**How gateways work**: The gateway accepts bitcoin payments on the lightning network and converts them into the bitcoin-backed ecash tokens used within the federation. It can also convert bitcoin-backed ecash tokens into bitcoin and send them over the lightning network. This is crucial because it allows the users within a federation to interact with the outside bitcoin and lightning network. + +## Design Best Practices +To learn more about Fedimint specific design best practices you can check out the [Design best practices]({{ '/guide/how-it-works/ecash/design-best-practices' | relative_url }}) section. + + + + +## When to use fedimint +Use Fedimint whenever a custodial Lightning and ecash wallet is required, and single points of failure aren't acceptable. For example, when larger amounts are being stored or reliability is a concern. + +## Products that use fedimint + +### Wallets +- [Fedi](https://www.fedi.xyz) +- [Mutiny](https://www.mutinywallet.com/ ) +- [Webimint](https://github.com/elsirion/webimint-rs) + +### Services +- [Clovyr](https://clovyr.app/) + +For a comprehensive list of products and services that use Fedimint visit [Awesome Fedimint](https://github.com/fedimint/awesome-fedimint). + +## Fedimint resources +- [Fedimint Website](https://fedimint.org/) +- [Fedimint Documentation](https://docs.fedimint.org/) +- [Fedimint Observer](https://observer.fedimint.org/) + +--- + +Next, let's take a look at some [ecash design best practices]({{ '/guide/how-it-works/ecash/design-best-practices' | relative_url }}). + +{% include next-previous.html + previousUrl = "/guide/how-it-works/ecash/cashu/" + previousName = "Cashu" + nextUrl = "/guide/how-it-works/ecash/design-best-practices/" + nextName = "Ecash design best practices" +%} \ No newline at end of file diff --git a/guide/how-it-works/ecash/introduction.md b/guide/how-it-works/ecash/introduction.md new file mode 100644 index 000000000..85f4d8f9e --- /dev/null +++ b/guide/how-it-works/ecash/introduction.md @@ -0,0 +1,242 @@ +--- +layout: guide +title: Ecash +description: An overview of bitcoin-backed ecash, protocols, and design best practices. +nav_order: 7 +parent: How it works +has_children: true +permalink: /guide/how-it-works/ecash/introduction/ +main_classes: -no-top-padding +image: https://bitcoin.design/assets/images/guide/how-it-works/ecash/ecash-intro-image.jpg +--- + + + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/ecash.jpg" + retina = "/assets/images/guide/how-it-works/ecash/ecash@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/ecash-mobile.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/ecash-mobile@2x.jpg" + alt-text = "Futuristic scene featuring a person dressed in a glossy pink suit with a headset and visor, sitting at a desk. The person is working on a retro-styled computer with a monitor displaying dollar bills. A potted plant sits on the desk, contrasting with the vibrant, pastel-colored background." + width = 1600 + height = 600 + layout = "full-width" +%} + +# Ecash + +Ecash is a digital payment system, developed by [David Chaum](https://en.wikipedia.org/wiki/David_Chaum) in 1983, that uses cryptographic techniques to ensure secure and private payments. + +It operates through a mint that issues digital tokens in exchange for deposited funds. These tokens can be spent and received without revealing user identities or payment details. Users can redeem their tokens for the original funds at any time. + +Since no accounts or personal information are needed; the mint cannot see your balance, tokens, or payment details, offering a highly private and efficient method for digital payments. + +## How bitcoin-backed ecash works +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/how-ecash-works.png" + retina = "/assets/images/guide/how-it-works/ecash/how-ecash-works@2x.png" + mobile = "/assets/images/guide/how-it-works/ecash/how-ecash-works@2x.png" + mobileRetina = "/assets/images/guide/how-it-works/ecash/how-ecash-works@2x.png" + alt-text = "Diagram showing three mints (Mint 1, Mint 2, Mint 3) managing digital ecash payments with groups of users. Each mint is connected to a group of users represented by icons holding digital cash. The mints are interconnected with lightning bolts symbolizing fast or real-time payments, and the Bitcoin symbol appears beneath each mint, indicating that the system is based on Bitcoin technology." + caption = "Three mints manage ecash tokens for users, connected by the lightning network." + width = 800 + height = 508 + layout = "full-width" +%} + +Bitcoin-backed ecash works by using protocols like [Fedimint]({{ '/guide/how-it-works/ecash/fedimint' | relative_url }}) and [Cashu]({{ '/guide/how-it-works/ecash/cashu/' | relative_url }}). Users deposit bitcoin, and in return, they receive bitcoin-backed ecash tokens. Users can then spend and receive these ecash tokens, which remain anonymous and unlinkable to their identity, enabling private payments within the bitcoin ecosystem. + +### Key benefits + +* **Faster payments** - Ecash systems process payments almost instantly since they rely on a centralized mint. They do not require [network-wide consensus]({{ '/guide/how-it-works/nodes' | relative_url }}) or routing through multiple [lightning nodes]({{ '/guide/how-it-works/nodes/#routing-nodes' | relative_url }}). + +* **Higher volume** - The centralized mint allows ecash systems to handle a larger volume of payments efficiently. The bottlenecks typical of decentralized networks like the lightning network are avoided. + +* **Simplified processing** - payments are validated and settled internally within the mint. This reduces complexity and avoids potential delays associated with routing and liquidity issues in the lightning network. + +* **Consistent speed** - Ecash systems offer consistent payment speeds regardless of network conditions. Unlike the lightning network, where payment speeds can be affected by channel capacity, node connectivity, and node hardware. + +* **Enhanced privacy** - [Blinded signatures](https://en.wikipedia.org/wiki/Blind_signature) safeguard user identities and total balances. While the mint can see amounts for individual payments (like paying an invoice or swapping proofs), it cannot associate these with specific users or determine anyone's total ecash holdings, as there are no user accounts. + +--- +### Ecash protocols + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/ecash-protocol-logos.jpg" + retina = "/assets/images/guide/how-it-works/ecash/ecash-protocol-logos@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/ecash-protocol-logos@2x.jpg" + mobileRetina = "assets/images/guide/how-it-works/ecash/ecash-protocol-logos@2x.jpg" + alt-text = "Split-screen image showing two open-source protocols. The left side features ‘Fedimint’ on a blue background, described as ‘An open-source protocol for creating federated ecash mints.’ The right side shows ‘Cashu’ on a purple background, described as ‘An open-source protocol for creating solo ecash mints.’ In the background, there is a computer screen with a Bitcoin logo and a retro-tech aesthetic." + width = 800 + height = 508 + layout = "full-width" +%} + +**Fedimint** and **Cashu** are two unqiue bitcoin-backed ecash protocols. They differ in their approach to trust and governance. + +--- + +### [Cashu]({{ '/guide/how-it-works/ecash/cashu/' | relative_url }}) + +Cashu lets users run and operate their own solo mints or place trust in a solo mint they choose to use. + +--- + +### [Fedimint]({{ '/guide/how-it-works/ecash/fedimint' | relative_url }}) + +Fedimint operates through a federated model where a group of trusted entities (called "guardians") manage funds collectively through the use of multi-sig. + +--- + +## Using ecash + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/using-ecash.jpg" + retina = "/assets/images/guide/how-it-works/ecash/using-ecash@2x.jpg" + mobile = "/assets/images/guide/how-it-works/ecash/using-ecash@2x.jpg" + mobileRetina = "/assets/images/guide/how-it-works/ecash/using-ecash@2x.jpg" + alt-text = "Surreal image featuring two people extending their arms from opposite sides, exchanging dollar bills in front of a retro computer. The computer, with a blank screen and an old keyboard, sits on a small desk. One person is dressed in a pink suit, while the other wears a yellow outfit, set against a vibrant pink and orange background." + width = 800 + height = 508 + layout = "full-width" +%} + +### Creating and redeeming ecash +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/creation-and-redemption.png" + retina = "/assets/images/guide/how-it-works/ecash/creation-and-redemption@2x.png" + mobile = "/assets/images/guide/how-it-works/ecash/creation-and-redemption@2x.png" + mobileRetina = "/assets/images/guide/how-it-works/ecash/creation-and-redemption@2x.png" + alt-text = "Diagram illustrating the creation and redemption of ecash by Alice. On the left side, under ‘Creation,’ Alice sends 100 sats to an ecash mint, which creates ecash tokens, and Alice receives 100 sats in ecash form. On the right side, under ‘Redemption,’ Alice sends 100 sats in ecash form to the mint, which burns the ecash tokens, and Alice receives 100 sats back in Bitcoin. The process flow is represented with dashed arrows and labeled steps." + caption = "Alice mints 100 sats into ecash through a mint and later redeems the ecash tokens to reclaim her original 100 sats in bitcoin." + width = 800 + height = 508 + layout = "full-width" +%} + +Cashu and Fedimint use various terms for the processes of creating, redeeming, and transferring bitcoin-backed ecash. To provide clarity, we'll use neutral terms in our explanations and provide a translation table for specific implementations. + +#### Creating ecash + +**1. User deposits funds** - The user deposits bitcoin into a mint or federation. Typically this is done by generating a lightning invoice through the mint and paying it. + +**2. Ecash creation** - Upon successful payment, the wallet generates secrets and [blinds](https://en.wikipedia.org/wiki/Blinding_(cryptography)) them. The wallet then sends the blinded messages to the mint or federation, which returns [blind signature](https://en.wikipedia.org/wiki/Blind_signature) on the blinded messages. The blinding process ensures that the mint cannot link the tokens to the user, preserving privacy. + +**3. Ecash receipt** - The user receives a set of proofs that correspond to specific amounts of bitcoin. These proofs can be combined to create an ecash token of any amount denominated in bitcoin. + +#### Converting ecash to bitcoin + +**1. User initiates conversion** - User initiates a conversion request with their mint or federation. + +**2. Ecash verification and invalidation** - The mint or federation verifies the validity of the ecash tokens. Upon verification, the mint or federation invalidates these tokens, ensuring they cannot be reused. This step prevents double-spending. + +**3. Bitcoin transfer** - Once the tokens are verified and invalidated, the mint or federation sends an equivalent amount of bitcoin to the user. + +#### Terminology translation table + +| Generic term | Cashu term | Fedimint term | +|-------|----------|----------| +| Create ecash | Mint | Issue | +| Send ecash | Swap | Reissue | +| Convert ecash to bitcoin | Melt | Redeem | +| Token | Token | Note | + +### Sending and receiving ecash +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/sending-and-receiving.png" + retina = "/assets/images/guide/how-it-works/ecash/sending-and-receiving@2x.png" + mobile = "/assets/images/guide/how-it-works/ecash/sending-and-receiving@2x.png" + mobileRetina = "/assets/images/guide/how-it-works/ecash/sending-and-receiving@2x.png" + alt-text = "Diagram showing Alice exchanging 100 sats with an ecash mint and receiving 100 sats in ecash form. Alice then transfers 100 sats in ecash to Bob, who also interacts with an ecash mint. The process is represented with dashed arrows and labeled amounts, illustrating the flow of sats between Alice, the mint, and Bob." + caption = "Alice mints 100 sats into ecash then sends the ecash to Bob. The ecash mint makes sure the ecash token is valid before issuing new one to Bob." + width = 800 + height = 508 + layout = "full-width" +%} +When a user sends an ecash token to another user, the wallet verifies the mint's signature to confirm the token's authenticity. The mint then checks its database to ensure the token has not been previously spent. If the token is valid, it is invalidated and replaced with a new token, which is then issued to the recipient. This cycle of invalidating the old token and issuing a new one prevents double spending while maintaining user privacy and security. + +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow.png" + retina = "/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.png" + mobile = "/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.png" + mobileRetina = "/assets/images/guide/how-it-works/ecash/sending-bitcoin-flow@2x.png" + alt-text = "Diagram comparing three types of payments: On-chain bitcoin, lightning, and ecash. The On-chain bitcoin section shows Alice sending bitcoin to Bob via an address, resulting in a payment on the network. The lightning section illustrates Alice sending bitcoin to Bob via an invoice, resulting in a payment on the lightning network. The ecash section shows Alice sending an ecash token to Bob, who redeems it through a mint." + caption = "On-chain Bitcoin uses addresses, lightning usually employs invoices, and ecash transfers are mediated by mints using tokens." + width = 800 + height = 508 + layout = "full-width" +%} + +Sending ecash and receiving can be done via multiple methods to suit different needs. One of the advantages of bitcoin-backed ecash is that the tokens are just text, which is very flexible and can be transmitted via any communication medium. Some unique ways that ecash can be sent and received, which are not possible with on-chain or Lightning payments, include the following: + +#### Text message, such as email or SMS +Users can send ecash by copying and pasting the token string. This is particularly useful for online payments or when using text based communication platforms. + +#### Bluetooth transmission +Most applications allow users to share a token via Bluetooth. However, more comprehensive Bluetooth sending and receiving functionalities have not yet been fully developed. + +#### QR codes +On the base chain and Lightning network, QR codes provide directions for where to send Bitcoin. In contrast, ecash tokens can be embedded within a QR code itself. The ecash token can be claimed by simply scanning the QR code. This method is particularly useful for in person payments or quick transfers, and also enables physical bearer assets like paper notes. + +--- + +### [Design Best Practices]({{ '/guide/how-it-works/ecash/design-best-practices/' | relative_url }}) + +Explore guidelines and best practices for optimizing the use of ecash on Bitcoin. + +--- + +## Comparisons and considerations +{% include tip/open.html color="blue" icon="info" label="Ecash is a custodial solution" %} + +This means someone else holds your bitcoin. Be aware that this subjects users to custodial risks. + +{% include tip/close.html %} + +Since ecash is a custodial solution, it’s important to weigh its benefits against the risks of other custodial options. The risk profile of ecash is similar to custodial Lightning, but with some added benefits. + + +### Bitcoin custody spectrum +{% include picture.html + image = "/assets/images/guide/how-it-works/ecash/custody-spectrum.png" + retina = "/assets/images/guide/how-it-works/ecash/custody-spectrum@2x.png" + mobile = "/assets/images/guide/how-it-works/ecash/custody-spectrum.png" + mobileRetina = "/assets/images/guide/how-it-works/ecash/custody-spectrum@2x.png" + alt-text = "Horizontal scale showing different financial systems ranked from ‘Least centralized, lowest risk’ to ‘Most centralized, highest risk.’ The scale includes, from left to right: on-chain, lightning, ecash (federated mint), ecash (solo mint), custodial lightning, exchange, and ETF. Each system is represented by a dot, progressing from decentralized to more centralized." + caption = "Comparison of systems based on centralization and risk." + width = 800 + height = 212 + layout = "full-width" +%} + + +The spectrum of decentralization and custody for bitcoin ranges from highly decentralized to highly centralized. Holding self-custodial Bitcoin on the base layer is the least risky and most decentralized. Self-custodial lightning is slightly more centralized, while custodial lightning moves further towards centralization. ETFs sit at the other extreme, being the most centralized and risky. Ecash improves over custodial lightning by providing better privacy and security. + +### Ecash considerations +* **Privacy** - Ecash enhances user privacy, making it more difficult to trace payments back to individuals. In contrast, custodial lightning provides less privacy, as the custodians can associate payments with user activities. + +* **Secure against theft (rug pulls)** - Custodial lightning and solo mints run by a single entity (such as Cashu mints) are more susceptible to rug pull scenarios. Multiple-guardian federations are more secure against theft, as funds are stored in a multi-sig wallet and require multiple guardians to be malicious or compromised for theft to occur. + +* **Offline transfer** - Ecash can be transferred offline, while custodial lightning typically requires an online connection. However, ecash needs to be redeemed online, and until then, the recipient risks double spending. In such cases, proof of double spend can help deter theft in some social situations. + +* **Regulatory risk** - Ecash and custodial lightning are both subject to regulatory actions that can impact their operations. Custodial services are required to hold money on behalf of other people and facilitate payments, which typically requires licenses. Both could be affected by changes in laws or enforcement actions. + +--- + +Next, we do a technical deep dive into how [Cashu]({{ '/guide/how-it-works/ecash/cashu' | relative_url }}) works. + +{% include next-previous.html + previousUrl = "/guide/how-it-works/payment-request-formats/" + previousName = "Payment Request Formats" + nextUrl = "/guide/how-it-works/ecash/cashu/" + nextName = "Cashu" +%} diff --git a/guide/how-it-works/payment-request-formats.md b/guide/how-it-works/payment-request-formats.md index 5d6d788b0..4be6b5eec 100644 --- a/guide/how-it-works/payment-request-formats.md +++ b/guide/how-it-works/payment-request-formats.md @@ -262,11 +262,11 @@ You can learn more about unified payment requests [here](https://bitcoinqr.dev/) --- -Next, we will learn about the different [private key schemes]({{ '/guide/how-it-works/private-key-management/introduction/' | relative_url }}) used to secure your bitcoin. +Next, we will learn about [ecash]({{ '/guide/how-it-works/ecash/introduction/' | relative_url }}). {% include next-previous.html previousUrl = "/guide/how-it-works/nodes/" previousName = "Nodes" - nextUrl = "/guide/how-it-works/private-key-management/introduction/" - nextName = "Private key management" + nextUrl = "/guide/how-it-works/ecash/introduction/" + nextName = "Ecash" %}