Skip to content

Commit

Permalink
Release to PyPI
Browse files Browse the repository at this point in the history
  • Loading branch information
pjkundert committed Nov 18, 2024
1 parent 2bbb039 commit 4b4dabd
Show file tree
Hide file tree
Showing 24 changed files with 365 additions and 314 deletions.
27 changes: 27 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Release

on:
push:
branches:
- master

jobs:
pypi-publish:
name: Upload release to PyPI
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/python-slip39
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
- name: Build
run: |
python -m pip install -r requirements-dev.txt
python -m build .
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@ dist/
private_keys
images/SLIP-39.iconset
.coverage*
/SLIP39-20*.pdf
54 changes: 30 additions & 24 deletions App.org
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,28 @@ nil
Creating personal Ethereum, Bitcoin and other cryptocurrency accounts is /urgently/ needed, but is
complex and fraught with potential for loss of funds.

All Crypto wallets start with a "Seed": a large, random number used to derive all of your actual
All Crypto wallets start with a large, random number "Seed" used to derive all of your actual
Bitcoin, Ethereum, etc. wallets. You do not want to try to generate such a Seed by yourself, or
trust any hardware/software solution for this -- even us! So, we architected the SLIP-39 App
so you /don't need to trust it/.

The best practice for using these Seed-generated wallets is to load this "Seed" (usually in the form
of a 12- or 24-word BIP-39 Phrase) into a secure hardware device, like a [[https://trezor.go2cloud.org/SH1Y][Trezor "Model T"]] or a
(newer, less costly) [[https://affil.trezor.io/SHUD]["Model One"]] hardware wallet. SLIP-39 Mnemonic cards contain the recovery
words, which are typed directly into the Trezor device to recover the Seed, and all of its
cryptocurrency accounts. For the [[https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f][Ledger Nano]] and other hardware wallets supporting only BIP-39
Mnemonics, you can now use the SLIP-39 App to securely and reliably back up these BIP-39 phrases.

[[https://github.com/pjkundert/python-slip39/releases/latest][Download the macOS (.pkg) or win32 (.msi) SLIP-39 App]] to generate Mnemonic cards and back up this
Seed, securely and reliably, by distributing Mnemonic cards for the Seed to partners, family and
friends. Also, encrypted "Paper Wallets" can be output, to support software cryptocurrency wallets
such as Metamask, Brave or various mobile-phone and computer-based wallets.

Later, if you (or your heirs!) need to recover *all* of your cryptocurrency accounts, they can
collect a sufficient threshold of the cards and regain access to all of the cryptocurrency accounts
related to the Seed.
[[https://github.com/pjkundert/python-slip39/releases/latest][Download the macOS (.pkg) or win32 (.msi) SLIP-39 App]] to generate Mnemonic cards to create (or back
up an existing BIP-39) Seed securely and reliably, by distributing Mnemonic cards for recovering the
Seed to partners, family and friends. Also, encrypted "Paper Wallets" can be output, to support
software cryptocurrency wallets such as Metamask, Brave or various mobile-phone and computer-based
wallets.

The best practice for /using/ these Seed-generated wallets is to load this Seed into a secure
hardware device, like a [[https://affil.trezor.io/SHdv][Trezor Safe 3]] hardware wallet which supports both SLIP-39 and BIP-39 Seeds.
SLIP-39 Mnemonic cards contain the recovery words, which can be typed directly into the Trezor
device to recover the Seed, and all of its cryptocurrency accounts.

For the [[https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f][Ledger Nano]] and all other hardware wallets supporting /only/ BIP-39 Mnemonics, *you can now
use the SLIP-39 App to securely and reliably /back up/ these fragile BIP-39 Mnemonic phrases*.

Later, when you (or your heirs!) need to recover *all* of your cryptocurrency accounts, someone can
collect a sufficient threshold of all of the SLIP-39 cards and regain access to all of the
cryptocurrency accounts related to the Seed.
#+END_ABSTRACT

#+TOC: headlines 2
Expand All @@ -60,7 +62,7 @@ related to the Seed.
Losing this Seed means that *all* of the HD Wallet accounts derived from it are permanently lost.
Therefore, it must be backed up reliably, and be readily accessible.

Therefore, we must:
Therefore, we must /both/:

- Ensure that nobody untrustworthy can recover the Seed, but
- Store the Seed in many places with several (some perhaps untrustworthy) people.
Expand All @@ -80,7 +82,7 @@ related to the Seed.

#+ATTR_LATEX: :width 4in
#+CAPTION: SLIP-39 App
[[./images/slip39.png]]
[[../../images/slip39.png]]

** SLIP-39 Mnemonic Recovery Cards

Expand All @@ -90,7 +92,7 @@ related to the Seed.
Instead, generate a number of SLIP-39 Mnemonic cards, which can be collected to recover the Seed:
#+ATTR_LATEX: :width 4in
#+CAPTION: SLIP-39 Cards PDF
[[./images/slip39-cards.png]]
[[../../images/slip39-cards.png]]

*** Why Not a BIP-39 Mnemonic Phrase?

Expand Down Expand Up @@ -143,7 +145,7 @@ related to the Seed.

#+ATTR_LATEX: :width 4in
#+CAPTION: [[https://youtu.be/t70rRr08vBY][SLIP-39 Overview -- BIP-39 Mnemonic Backup]]
[[./images/slip39-overview-youtube.png]]
[[../../images/slip39-overview-youtube.png]]

** Paper Wallets

Expand All @@ -152,7 +154,7 @@ related to the Seed.

#+ATTR_LATEX: :width 4in
#+CAPTION: Paper Wallets
[[./images/slip39-wallets.png]]
[[../../images/slip39-wallets.png]]

*** Walking-Around Money

Expand Down Expand Up @@ -181,15 +183,19 @@ related to the Seed.

** Trezor

The [[https://trezor.go2cloud.org/SH1Y][Trezor "Model T"]] hardware wallet has built-in SLIP-39 generation and recovery capability.
The [[https://trezor.go2cloud.org/SHdv][Trezor Safe 3]] hardware wallet has built-in SLIP-39 generation and recovery capability.
Enter the words on the SLIP-39 cards directly into the screen of the Trezor to recover your
cryptocurrency accounts.

#+BEGIN_EXPORT html
<a href="https://trezor.go2cloud.org/aff_c?offer_id=134&aff_id=10388&file_id=583" target="_blank"><img src="https://media.go2speed.org/brand/files/trezor/134/Trezor_Model_T_banner_728x90_3.png" width="728" height="90" border="0" /></a><img src="https://trezor.go2cloud.org/aff_i?offer_id=134&file_id=583&aff_id=10388" width="0" height="0" style="position:absolute;visibility:hidden;" border="0" />
<!-- Javascript Ad Tag: 1696 -->
<div id="trezor1696wHdtBw"></div>
<script src="http://affil.trezor.io/aff_ad?campaign_id=1696&aff_id=10388&format=js&divid=trezor1696wHdtBw" type="text/javascript"></script>
<noscript><iframe src="http://affil.trezor.io/aff_ad?campaign_id=1696&aff_id=10388&format=iframe" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" width="728" height="90"></iframe></noscript>
<!-- // End Ad Tag -->
#+END_EXPORT

We recommend the Trezor "Model T" for this reason. No other hardware wallet yet supports direct,
We recommend the Trezor Safe 3 for this reason. No other hardware wallet yet supports direct,
on-screen SLIP-39 Seed recovery.

If you already have one of the less expensive Trezor wallets that only support BIP-39 backup, we
Expand Down
Binary file modified App.pdf
Binary file not shown.
121 changes: 63 additions & 58 deletions App.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,34 @@ Creating personal Ethereum, Bitcoin and other cryptocurrency accounts is
/urgently/ needed, but is complex and fraught with potential for loss of
funds.

All Crypto wallets start with a "Seed": a large, random number used to
All Crypto wallets start with a large, random number "Seed" used to
derive all of your actual Bitcoin, Ethereum, etc. wallets. You do not
want to try to generate such a Seed by yourself, or trust any
hardware/software solution for this – even us! So, we architected the
SLIP-39 App so you /don't need to trust it/.

The best practice for using these Seed-generated wallets is to load this
"Seed" (usually in the form of a 12- or 24-word BIP-39 Phrase) into a
secure hardware device, like a [Trezor "Model T"] or a (newer, less
costly) ["Model One"] hardware wallet. SLIP-39 Mnemonic cards contain
the recovery words, which are typed directly into the Trezor device to
recover the Seed, and all of its cryptocurrency accounts. For the
[Ledger Nano] and other hardware wallets supporting only BIP-39
Mnemonics, you can now use the SLIP-39 App to securely and reliably back
up these BIP-39 phrases.

[Download the macOS (.pkg) or win32 (.msi) SLIP-39 App] to generate
Mnemonic cards and back up this Seed, securely and reliably, by
distributing Mnemonic cards for the Seed to partners, family and
friends. Also, encrypted "Paper Wallets" can be output, to support
software cryptocurrency wallets such as Metamask, Brave or various
mobile-phone and computer-based wallets.

Later, if you (or your heirs!) need to recover *all* of your
cryptocurrency accounts, they can collect a sufficient threshold of the
cards and regain access to all of the cryptocurrency accounts related to
the Seed.
Mnemonic cards to create (or back up an existing BIP-39) Seed securely
and reliably, by distributing Mnemonic cards for recovering the Seed to
partners, family and friends. Also, encrypted "Paper Wallets" can be
output, to support software cryptocurrency wallets such as Metamask,
Brave or various mobile-phone and computer-based wallets.

The best practice for /using/ these Seed-generated wallets is to load
this Seed into a secure hardware device, like a [Trezor Safe 3] hardware
wallet which supports both SLIP-39 and BIP-39 Seeds. SLIP-39 Mnemonic
cards contain the recovery words, which can be typed directly into the
Trezor device to recover the Seed, and all of its cryptocurrency
accounts.

For the [Ledger Nano] and all other hardware wallets supporting /only/
BIP-39 Mnemonics, *you can now use the SLIP-39 App to securely and
reliably /back up/ these fragile BIP-39 Mnemonic phrases*.

Later, when you (or your heirs!) need to recover *all* of your
cryptocurrency accounts, someone can collect a sufficient threshold of
all of the SLIP-39 cards and regain access to all of the cryptocurrency
accounts related to the Seed.

Table of Contents
─────────────────
Expand All @@ -55,16 +56,14 @@ Table of Contents
3. Privacy Policy


[Trezor "Model T"] <https://trezor.go2cloud.org/SH1Y>
[Download the macOS (.pkg) or win32 (.msi) SLIP-39 App]
<https://github.com/pjkundert/python-slip39/releases/latest>

["Model One"] <https://affil.trezor.io/SHUD>
[Trezor Safe 3] <https://affil.trezor.io/SHdv>

[Ledger Nano]
<https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f>

[Download the macOS (.pkg) or win32 (.msi) SLIP-39 App]
<https://github.com/pjkundert/python-slip39/releases/latest>


1 Security with Availability
════════════════════════════
Expand All @@ -80,7 +79,7 @@ Table of Contents
from it are permanently lost. Therefore, it must be backed up
reliably, and be readily accessible.

Therefore, we must:
Therefore, we must /both/:

• Ensure that nobody untrustworthy can recover the Seed, but
• Store the Seed in many places with several (some perhaps
Expand All @@ -104,7 +103,7 @@ Table of Contents
store in different locations. If you lose some of them, you can still
recover the BIP-39 recovery phrase!

<./images/slip39.png>
<../../images/slip39.png>


[SLIP-39 App] <https://slip39.com/app>
Expand All @@ -119,7 +118,7 @@ Table of Contents

Instead, generate a number of SLIP-39 Mnemonic cards, which can be
collected to recover the Seed:
<./images/slip39-cards.png>
<../../images/slip39-cards.png>


1.2.1 Why Not a BIP-39 Mnemonic Phrase?
Expand Down Expand Up @@ -160,14 +159,45 @@ Table of Contents
exposed to this risk of loss.


1.2.3 Recovering your BIP-39 Seed Phrase
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

If you already have a BIP-39 Mnemonic, and would like back it up using
SLIP-39 for more security and recovery reliability, you can use the
SLIP-39 App's Backup Controls to do so. After you create your Seed
Data (or enter an existing BIP-39 Seed Phrase), select "Using BIP-39".
This will generate a set of SLIP-39 Mnemonic Cards that *backs up your
existing BIP-39 Seed Phrase*.

Later, when you need to recover your BIP-39 Mnemonic (say, to
initialize a fresh replacement Ledger hardware wallet), use the
SLIP-39 App, select the Recover Controls, and enter sufficient SLIP-39
card Mnemonics – and click "Using BIP-39" to reveal your original
BIP-39 Seed Phrase. Then, proceed with Ledger wallet recovery as
normal, using the BIP-39 Mnemonic.

This may not /seem/ like an impressive feat. But, it is unexpectedly
important and powerful! Your existing BIP-39 Seed Phrase is
*extremely* risky; it can /easily/ be lost or stolen. By using
SLIP-39 to Backup your BIP-39 Seed Phrase, you can distribute the safe
and reliable SLIP-39 Mnemonic cards to friends and family, and reduce
the risks of theft or loss of your critical cryptocurrency accounts
Seed data.

Learn how to use the SLIP-39 App to "back up" your BIP-39 Mnemonic
Phrase:

<../../images/slip39-overview-youtube.png>


1.3 Paper Wallets
─────────────────

If desired, you can produce encrypted Paper Wallets, to support
software crypto wallets (eg. Metamask, Brave or various mobile- and
computer-based wallets):

<./images/slip39-wallets.png>
<../../images/slip39-wallets.png>


1.3.1 Walking-Around Money
Expand Down Expand Up @@ -206,12 +236,12 @@ Table of Contents
2.1 Trezor
──────────

The [Trezor "Model T"] hardware wallet has built-in SLIP-39 generation
The [Trezor Safe 3] hardware wallet has built-in SLIP-39 generation
and recovery capability. Enter the words on the SLIP-39 cards
directly into the screen of the Trezor to recover your cryptocurrency
accounts.

We recommend the Trezor "Model T" for this reason. No other hardware
We recommend the Trezor Safe 3 for this reason. No other hardware
wallet yet supports direct, on-screen SLIP-39 Seed recovery.

If you already have one of the less expensive Trezor wallets that only
Expand All @@ -220,7 +250,7 @@ Table of Contents
traditional hardware wallets.


[Trezor "Model T"] <https://trezor.go2cloud.org/SH1Y>
[Trezor Safe 3] <https://trezor.go2cloud.org/SHdv>


2.2 Ledger
Expand All @@ -245,31 +275,6 @@ Table of Contents
[Ledger Nano X]
<https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f>

2.2.1 Recovering your BIP-39 Seed Phrase
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

If you already have a BIP-39 Mnemonic, and would like back it up using
SLIP-39 for more security and recovery reliability, you can use the
SLIP-39 App's Backup Controls to do so. After you create your Seed
Data (or enter an existing BIP-39 Seed Phrase), select "Using BIP-39".
This will generate a set of SLIP-39 Mnemonic Cards that *backs up your
existing BIP-39 Seed Phrase*.

Later, when you need to recover your BIP-39 Mnemonic (say, to
initialize a fresh replacement Ledger hardware wallet), use the
SLIP-39 App, select the Recover Controls, and enter sufficient SLIP-39
card Mnemonics – and click "Using BIP-39" to reveal your original
BIP-39 Seed Phrase. Then, proceed with Ledger wallet recovery as
normal, using the BIP-39 Mnemonic.

This may not /seem/ like an impressive feat. But, it is unexpectedly
important and powerful! Your existing BIP-39 Seed Phrase is
*extremely* risky; it can /easily/ be lost or stolen. By using
SLIP-39 to Backup your BIP-39 Seed Phrase, you can distribute the safe
and reliable SLIP-39 Mnemonic cards to friends and family, and reduce
the risks of theft or loss of your critical cryptocurrency accounts
Seed data.


2.3 Netcoins.app
────────────────
Expand Down
6 changes: 3 additions & 3 deletions GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ CXFREEZE_EXT ?= win-$(CXFREEZE_ARCH)-$(CXFREEZE_VER)
#SIGNTOOL ?= "/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86"
SIGNTOOL ?= "c:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\signtool.exe"

NIX_OPTS ?= --pure
NIX_OPTS ?= # --pure

# PY[3] is the target Python interpreter; require 3.11+. Detect if it is named python3 or python.
PY3 ?= $(shell python3 --version >/dev/null 2>&1 && echo python3 || echo python )
Expand Down Expand Up @@ -225,8 +225,8 @@ $(WHEEL): FORCE
install: $(WHEEL) FORCE
$(PY3) -m pip install --force-reinstall $<[all]

install-tests:
$(PY3) -m pip install --upgrade -r requirements-tests.txt
install-%: # ...-dev, -tests
$(PY3) -m pip install --upgrade -r requirements-$*.txt

# Building / Signing / Notarizing and Uploading the macOS or win32 App
# o TODO: no signed and notarized package yet accepted for upload by macOS App Store
Expand Down
Loading

0 comments on commit 4b4dabd

Please sign in to comment.