HushList Protocol Whitepaper
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Duke Leto b9390a5f58 Update to new HUSH v3 mainnet ports 4 years ago
bin Add old script to upload files that never got added 5 years ago
docs add threat model doc 7 years ago
lib Update to new HUSH v3 mainnet ports 4 years ago
t Detect valid privkeys 6 years ago
whitepaper Add some sections about things that are staying the same and things that are changing 5 years ago
.gitignore ignore a bunch of LaTeX temp files 6 years ago
Build.PL Update dependencies, thanks CPANtesters 6 years ago
LICENSE G is for GPLv3, its good enough for me 6 years ago
MANIFEST Bump version 6 years ago
README.md Use a proper ZEC/HUSH prefix for addresses in our examples 6 years ago
hush_logo.png Add hush_logo.png for testing 6 years ago

README.md

Hushlist: Censorship Resistant Metadata-Minimizing Multi-Blockchain Communication

Hushlist uses the Hush blockchain (Zcash and some other forks will be supported) to implement anonymous and pseudonymous mailing lists using the encrypted 512 byte memo field of the Zcash Protocol. Hush inherits all RPCs from Bitcoin 0.11.2 and Zcash, which are used to implement Hushlist.

Requirements

Hushlist requires a computer with Perl 5.8+, and access to a fullnode RPC server which is often run on localhost. Hushlist supports all platforms that Hush currently supports, which is Linux, Mac and Windows. A testnet (TUSH) node can also be used.

Sending shielded transactions (involving zaddrs) can be very resource intensive, and at least 4GB of RAM is recommended, although 2GB may work in some situations, depending on hardware, software, virtual machine use and OS.

Supported Blockchains

  • HUSH
  • TUSH (HUSH testnet)
  • Zcash (ZEC)
  • TAZ (ZEC testnet)
  • Komodo (KMD) - planned

Examples

# create a new Hush contact
hushlist contact add chani zc1234...
hushlist contact add stilgar zc1456....

# see an overview of your local Hushlists
hushlist status

# create a new private Hushlist, which exists locally only
# and has no cost associated, since nothing is sent to the blockchain
hushlist new fremen

# see the status of a list
hushlist status fremen

# add one or more people to a Hushlist
hushlist add fremen chani stilgar

hushlist send listname "A beginning is the time for taking the most delicate care that the balances are correct."

# send using a non-default chain
hushlist send listname --chain tush "If wishes were fishes, we'd all cast nets. -- Stilgar"

# show overview of lists and messages
hushlist show

# show most recent messages for listname
hushlist show listname

# donate to the nice dev who wrote this, from your main hushlist zaddr
hushlist donate 5 hush
hushlist donate 0.5 zec

In development commands

This will rely on z_embedstring RPC which will hopefully be in the Hush 1.0.13 release, it is currently in the z_embedstring branch:

# make an already created private hushlist PUBLIC, i.e.
# publish it's privkey to the blockchain. This costs HUSH, since
# we need to send an xtn to the blockchain
hushlist public listname

How Is This Different Than Hush Messenger?

Hush Messenger has similar functions, but it more closely maps to "chat program" versus "mailing list software". Messenger also has a different tech stack (Javascript vs Perl) and runs in the browser while Hushlist avoids the convenience of browsers to reduce it's attack surface.

Hushlist is happy to be one of the first Hush Applications with Hush Messenger and hopes that each project can learn from the other and cross-pollinate ideas which will turn into more options for Hush users.

License

GPLv3