Skip to content
End-to-end encrypted, onion-routed, censorship-resistant, peer-to-peer instant messaging over Lightning
Go Other
  1. Go 99.6%
  2. Other 0.4%
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github CODEOWNERS: remove top level catch all Jul 10, 2019
aezeed multi: fix dropped errors Sep 13, 2019
autopilot multi: remove dead code Sep 10, 2019
brontide brontide: fix goroutine in test Sep 13, 2019
buffer buffer+pool: add buffer.Read and pool.ReadBuffer Feb 16, 2019
build build: expand reproducible build system with build and verification s… Oct 10, 2019
chainntnfs chainntnfs/neutrino: don't ignore failed filter fetches Oct 15, 2019
chanacceptor chanacceptor: adding tests for the RPCAcceptor Sep 25, 2019
chanbackup chanbackup: create new Single version for tweakless commitment chans Sep 26, 2019
channeldb Revert "channeldb: require minimum db upgrade version" Oct 12, 2019
channelnotifier multi: remove dead code Sep 10, 2019
cmd lncli: fix error handling Nov 4, 2019
contractcourt contractcourt: use legacy chain actions of commitSet not found Oct 4, 2019
contrib contrib: add basic bash completion for lncli Jan 30, 2017
discovery discovery/gossiper: fix minor typo Oct 15, 2019
docker Merge pull request #3393 from wroscoe/patch-1 Sep 25, 2019
docs docs: update watchtower docs to include wtclientrpc info Sep 25, 2019
htlcswitch chat via lightning Nov 2, 2019
input input: update CommitSpendNoDelay to be aware of tweakless commits, ad… Sep 26, 2019
invoices multi: fix canceled spelling Oct 3, 2019
keychain multi: support sync freelist option within btcwallet Oct 4, 2019
lncfg lncfg+lnd: gate usage of tweakless commitments based on local/global … Sep 26, 2019
lnpeer peer+lnpeer: add new methods to expose local+global features for lnpe… Sep 26, 2019
lnrpc chat via lightning Nov 2, 2019
lntest lnd_test: give peers more time to successfully attempt connection Oct 7, 2019
lntypes lntypes: add ZeroHash Jun 5, 2019
lnwallet Merge pull request #3578 from wpaulino/no-freelist-sync-option Oct 4, 2019
lnwire Merge pull request #3572 from joostjager/canceled-spelling Oct 3, 2019
macaroons macaroons: stdlib context Sep 28, 2019
make Makefile: ensure submodules are linted, covered, and tested Aug 8, 2019
mobile mobile: Updating sample_lnd.conf to contain norest config Sep 9, 2019
monitoring multi: remove dead code Sep 10, 2019
multimutex multimutex: add new multimutex package Jan 24, 2018
nat server: add periodic renewal of port forwarding Apr 13, 2019
netann multi: remove dead code Sep 10, 2019
peernotifier peernotifier: Add peer notifier package for peer online/offline events Aug 2, 2019
pool multi: fix spelling mistakes May 4, 2019
queue queue: run go mod tidy Sep 23, 2019
record record+tlv/onion_types: move type constants to route/hop Sep 4, 2019
routing routing/chainview: check GetCFilter error Oct 15, 2019
scripts build: bump to bitcoind 0.18.1 for itests Oct 1, 2019
shachain multi: remove dead code Sep 10, 2019
signal signal: don't attempt to catch SIGSTOP Apr 3, 2019
subscribe multi: fix canceled spelling Oct 3, 2019
sweep multi: fix canceled spelling Oct 3, 2019
ticker ticker+queue: run go mod tidy Jul 26, 2019
tlv tlv: return parsed types from DecodeWithParsedTypes Sep 5, 2019
tor Merge pull request #3044 from cfromknecht/spelling-fixes May 7, 2019
walletunlocker multi: support sync freelist option within btcwallet Oct 4, 2019
watchtower watchtower+htlcswitch: update client tower logic to recognize safu co… Sep 26, 2019
zpay32 zpay32: check invoice length while decoding Sep 24, 2019
.gitignore gitignore: add mobile/build Sep 5, 2019
.golangci.yml build: nerf linter Sep 25, 2019
.travis.yml build: bump to bitcoind 0.18.1 for itests Oct 1, 2019
Dockerfile Fixed dockerfile by adding version numbers to base containers Sep 30, 2019
LICENSE lnd: update copyright notice Nov 2, 2018
Makefile chat via lightning Nov 2, 2019
README.md readme: add link to whatsat paid Nov 13, 2019
breacharbiter.go lnwallet+breacharbiter: update breach logic to be aware of new commit… Sep 26, 2019
breacharbiter_test.go lnwallet+breacharbiter: update breach logic to be aware of new commit… Sep 26, 2019
chainparams.go add litecoin regtest configuration to lnd Apr 27, 2019
chainregistry.go config: add sync freelist cli flag Oct 4, 2019
chancloser.go chancloser: mark commitment broadcast before publish Sep 25, 2019
channel_notifier.go lnd: rename package main->lnd Apr 23, 2019
chanrestore.go multi: fix canceled spelling Oct 3, 2019
config.go config: add sync freelist cli flag Oct 4, 2019
doc.go lnd: rename package main->lnd Apr 23, 2019
fundingmanager.go lnwallet+funding: expose new ValidateChannel method for 1st party val… Oct 3, 2019
fundingmanager_test.go peer+lnpeer: add new methods to expose local+global features for lnpe… Sep 26, 2019
go.mod chat via lightning Nov 2, 2019
go.sum chat via lightning Nov 2, 2019
lnd.go config: add sync freelist cli flag Oct 4, 2019
log.go rpc: add unary+streaming interceptors to log all errors Aug 7, 2019
logo.png README: add logo to top portion of page Sep 29, 2017
mock.go multi: remove dead code Sep 10, 2019
nursery_store.go lnd: rename package main->lnd Apr 23, 2019
nursery_store_test.go lnd: rename package main->lnd Apr 23, 2019
peer.go peer+server: wait until peer is active to begin channel opening process Oct 1, 2019
peer_test.go lnd: rename package main->lnd Apr 23, 2019
pilot.go pilot: fix log message in initAutoPilot Sep 6, 2019
rpcserver.go chat via lightning Nov 2, 2019
sample-lnd.conf sample-lnd.conf: add watchtower and wtclient sample confs Jul 1, 2019
server.go multi: fix canceled spelling Oct 3, 2019
server_test.go lnd: remove global var access from genCertPair Jul 22, 2019
subrpcserver_config.go lnrpc/walletrpc: use current height as height hint for cpfp Aug 22, 2019
test_utils.go multi: update funding workflow to be aware of new tweakless commits Sep 26, 2019
utxonursery.go utxonursery: lower shutdown message log level Sep 12, 2019
utxonursery_test.go multi: remove dead code Sep 10, 2019
whatsat.gif update readme Nov 2, 2019
witness_beacon.go witness_beacon: do not look up invoice preimages May 15, 2019

README.md

Lightning Network Daemon - special WHATSAT edition

This repo is a fork of lnd that demonstrates how the Lightning Network can be used as an end-to-end encrypted, onion-routed, censorship-resistant, peer-to-peer chat messages protocol.

screencast

Recent changes to the protocol made it easier then before to attach arbitrary data to a payment. This demo leverages that by attaching a text message and a sender signature.

A Lightning payment delivers the message, but no actual money is paid. Because the sender uses a random payment hash, the receiver is not able to settle the payment. The failure message that is returned to the sender serves as a delivery confirmation.

This means that chatting is currently free. However, there is a future in which 'free failures' don't exist anymore. Nodes may start charging a prepaid relay fee and/or start rate limiting sources that produce too many failures. In that case, chatting over Lightning may switch to actually settling the messaging payments and dropping off a few millisats at every hop.

A version of whatsat that does pay for messages is located here.

Usage

  • Set up a Lightning Node as usual and open a channel to a well-connected node.

  • Run lncli chat <pubkey> to start chatting with your chosen destination.

    If running lncli chat without a pubkey, a pubkey to send to can be set by typing /<pubkey> in the send box.

Disclaimer

This code only serves to demonstrate the concept and doesn't pass the required quality checks. Use with testnet sats only.

You can’t perform that action at this time.