Flowee Pay: yet another wallet?

Flowee is a family of products and our goal is to move the world towards a Bitcoin Cash economy.
Flowee started with the low level infrastructure: the Hub (full node), indexer, bitcore APIs, etc. Now available in git is a new direction: the Flowee Pay project, which gives you a wallet.

The basic wallet functionality is available, importing a paper wallet and getting your balance. Sending actual payments. The basics. This took about a month of development time to do. The short time to start a new wallet gives it away; this is not all new code. Instead the Flowee libraries have been used to do most of the heavy lifting. Flowee libraries are the product of various other Bitcoin Cash products and many of the classes in the libs stem from the Satoshi client itself. Proven, stable code.

Why make yet another wallet?

Its probably because I’m picky. But much more is that I think the user experience for Bitcoin Cash payments can be much improved. And I’ve been complaining and suggesting improvements there, but in the end you need to actually do the work to see the change.

Open Source

For the vast majority of people that we want to start using Bitcoin Cash the wallet they run on their device is not just the main user interface, it is the only place of trust. Compromise the wallet and you lose control or even your money.

It should be obvious, then, that it is important for our ecosystem to avoid lock-in, to avoid big tech companies the ability to control our wallet.

There is a simple and known way to do this and that is by keeping the product open source. Because no matter how much you trust a company, the pressure to censor or otherwise control users money is always there when they can get away with it. Doesn’t even have to be approved by the CEO, governments can force them.

Don’t accept lock-in solutions, use open source wallets.

Have pure SPV as a way to get updates

Flowee Pay connects to the existing Bitcoin Cash Peer-2-peer network. This is another way to avoid lock-in as most alternatives have a very limited number of peers available to find your payment data. Next to this the P2P network provides the best anonymity opportunity for every resident of every country.

More details on how this provides a lot of privacy, see this post: https://read.cash/@TomZ/floweep2pnet-312d182c

The point here is that the client should have the possibility to fall back to the most secure and private method available: the p2p layer. A client that requires some central server is just too risky because it forces lock-in.

Payment Protocol innovation

This is a long topic. The short version is that the payer and the payee have their wallets talk to each other using a known payment protocol and finish the transaction with minimal user-interaction. The PP makes payments (and related actions) easier.

The main used one today is a simple QR code with an amount and an address. A better one is BIP70 which adds a lot of useful features. We don’t have enough wallets even supporting that one, and I think we need to continue research to make the payment experience better.

Privacy innovations

Another really long topic. From UTXO management to avoid connecting persona’s, to active mixing of outputs. All this is not really happening enough and we need the momentum to pick up again.

Easy to skin and port to new platforms.

In the last 5 or so years we’ve seen a lot of companies come and go which needed some wallet of their own. It is rather insane that those companies all ended up writing their own wallet. The wallet was NOT the core business of those companies, many have benefitted from sharing a wallet codebase for most of the features. Only adding your own GUI on top of the core design.

Flowee Pay is a C++ core with a QML (JavaScript) GUI on top. This is known to work well on all popular platforms and it makes porting the app to a new form factor a reasonably easy thing to do. Additionally, the difference of languages between front-end and back-end reflects the different people that are good at such things.

Wallet for users, not traders

The goal of Flowee Pay is to be the best solution for users, it therefore supports one chain (BCH) only. Traders that want to have a bunch of coins will likely be happier elsewhere.

What is it that you want to build?

In short, the best payment experience anywhere.

To do this a lot of research is needed, many of them are topics of their own. But here is my roadmap at this point:

Where can I find this?

This is part of Flowee, which has its home on gitlab.

1 Like

Regarding p2pnet, do you have an estimate of the bandwidth it needs, especially compared to e.g. using electrum servers?

Would you consider adding Reusable Private Addresses in addition to or in replacement of bip47? would rather see time invested in that than bip47.

1 Like

The downside of the traditional SPV system that is merkle-blocks is that you need to send a message for each block. Bandwidth wise its not really all that relevant. A tiny message per block plus once a 50KB bloom filter.

Replies of actual hits (this uses the bloom filters) are indeed a bit bigger than actual transactions. This is because you first get a partial merkle-tree. Which includes the sha256s of the branches you need to connect the transaction to the header.

All in all, you are likely looking at 2 or 3 times the amount of data that a search and targetted download of transactions would take (this assumes trusted peer)

You compared this to electrum and there we actually have the same merkle-tree construct with AFAIK (I’m no expert on that protocol) the same overhead. Which makes the difference here much much less, its probably about even because the data intensive approaches are practically identical.

The main differences between electum and merkle-block downloads are:

  • P2P is easier to make more private. If only because there are a lot more P2P servers and 2nd, bloom filters may not be perfect but they actually add some privacy which electrum does not do.
  • P2P / merkle-block approach demands more from the server because the server does the lookup on the fly instead of using a lookup database.

I personally have no preference on which privacy system works best, I think its too early to tell without more experience. If the code is written then I will certainly like to see it merged.

The usecases for repeatedly sending to the same party are minimal. Our entire economy is based on pull requests where you get a bill from your energy company, your landlord or whatever and in Bitcoin Cash, those bills are paid without a need for a reusable address. So what I’m saying is that I think its more important to focus on actual usage, not theoretical ones.

For me the bottom line is that we should have multiple systems of establishing payments. We will definitely keep the ability to post a QR code with an address on a poster, but that really isn’t the most user friendly way for the majority of usecases.

So all I’m saying here is that one of the main reasons we have not really seen a lot of actual end-user wallets carry those privacy-address schemes is that while they are very clever, maybe a simpler pull request (invoice) solves the problem for most users just fine.

Hi Tom,
Can you provide the word-for-word commands to install your wallet to increase its accessibility to the public?

Sure, its the same as for all PPAs, as linked from Flowee Pay homepage:

sudo add-apt-repository ppa:flowee/ppa
sudo apt-get update
sudo apt-get install flowee-pay

Flowee provides the shortest path to Bitcoin Cash
More info: Flowee PPAs : “Flowee” team
Press [ENTER] to continue or Ctrl-c to cancel adding it.

Get:1 http://dl.google.com/linux/chrome/deb stable InRelease [1,811 B]
Err:1 http://dl.google.com/linux/chrome/deb stable InRelease
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 78BD65473CB3BD13
Hit:3 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:5 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Ign:6 http://ppa.launchpad.net/flowee/ppa/ubuntu bionic InRelease
Hit:7 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:2 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease
Hit:8 http://ppa.launchpad.net/gezakovacs/ppa/ubuntu bionic InRelease
Ign:9 http://ppa.launchpad.net/kirillshkrogalev/ffmpeg-next/ubuntu bionic InRelease
Hit:10 http://ppa.launchpad.net/obsproject/obs-studio/ubuntu bionic InRelease
Err:11 http://ppa.launchpad.net/flowee/ppa/ubuntu bionic Release
404 Not Found [IP: 2001:67c:1560:8008::19 80]
Err:12 http://ppa.launchpad.net/kirillshkrogalev/ffmpeg-next/ubuntu bionic Release
404 Not Found [IP: 2001:67c:1560:8008::19 80]
Reading package lists… Done
W: GPG error: http://dl.google.com/linux/chrome/deb stable InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 78BD65473CB3BD13
E: The repository ‘http://dl.google.com/linux/chrome/deb stable InRelease’ is no longer signed.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: The repository ‘http://ppa.launchpad.net/flowee/ppa/ubuntu bionic Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: The repository ‘http://ppa.launchpad.net/kirillshkrogalev/ffmpeg-next/ubuntu bionic Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Looks like you are using Ubuntu 18.04 while the oldest supported release from Flowee is 20.04 (LTS).

Specifically, the old cmake in that release is not good enough to build flowee.

1 Like

Got it. I will update my OS.

I updated my OS and:
Flowee provides the shortest path to Bitcoin Cash
More info: Flowee PPAs : “Flowee” team
Press [ENTER] to continue or Ctrl-c to cancel adding it.

Get:1 http://dl.google.com/linux/chrome/deb stable InRelease [1,811 B]
Err:1 http://dl.google.com/linux/chrome/deb stable InRelease
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 78BD65473CB3BD13
Hit:2 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:4 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:5 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease
Get:6 http://ppa.launchpad.net/flowee/ppa/ubuntu focal InRelease [18.0 kB]
Hit:7 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:3 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease
Get:8 http://ppa.launchpad.net/flowee/ppa/ubuntu focal/main i386 Packages [1,500 B]
Get:9 http://ppa.launchpad.net/flowee/ppa/ubuntu focal/main amd64 Packages [1,500 B]
Get:10 http://ppa.launchpad.net/flowee/ppa/ubuntu focal/main Translation-en [772 B]
Reading package lists… Done
W: GPG error: http://dl.google.com/linux/chrome/deb stable InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 78BD65473CB3BD13
E: The repository ‘http://dl.google.com/linux/chrome/deb stable InRelease’ is not signed.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

You finished one line of the install instructions, the most important is next;

1 Like

How do I find the wallet and launch it?

you go to the start menu and you can find it there, its called “Flowee Pay”, has a mostly blue icon.

If for some reason you can’t find it, the executable is called “pay”.

I looked in the start menu before I replied and searched everywhere. I’m not sure how I’m going to find the application. It is really strange that it isn’t in the start menu or showing up in the search bar nor in my download files.

I found it I think. How do I run it? Honestly, Tom, this is really complicated, why does it have to be like this to run a wallet? I don’t want to overly-criticize that’s not my intention. It could be user-error, but I consider myself just a regular Ubuntu user.

This message stunned me, there is a nice icon and start menu that is part of the Pay package.

Until I realized that unlike other packaging systems, the PPA (debian) format requires me to list each file in the package again in the packaging files. (others just take what the installer installs).

I pushed a new build of the pay package that now includes the icons and the menu option: 2021.04.1-focal2. Please let me know if that solves the visibility issue.

Great! One step closer, I now have the Icon in my start menu, however, when I launch the wallet my pointer goes into ‘loading’ mode (where it spins) then back to the pointer and nothing happens. Is there something you need me to do to troubleshoot? I will keep messing around with it in the meantime.

So, I went ahead and installed a virtual machine with that Ubuntu release and found the issue. Fixed it and made a new package you can update to.

Thanks for testing this, it shows that after big changes in the app I need to run it on the virtual machine myself as well.

1 Like

Thanks, Tom! I will test it later tonight.

1 Like