Exploring direct payments

What are the use cases?

The following should be a list of the situations where one party wants to make a payment to another party.

In-person

The two parties are in close proximity to each other, standing next to each other would be a precise example of this. In this situation, alternative methods of communication that do not involve the internet, are available. Let’s try and work out if they are suitable for our needs.

Remotely

The two parties are not able to stand next to each other, and are perhaps not even in the same room, or even the same country. In this situation, the sole method of communication between the parties should be over the internet. And this will also actually apply even when they are in the same room, and standing beside each other. We may as well just go straight to this case for all cases, for ElectrumSV.

Wallet servers

The current servers

At this point, from the perspective of ElectrumSV, this is the only solution that works. We already have wallet server software (called electrumx) that runs on public servers for our users, run by community members at no cost to the user, that do the following:

  • They provide us with the header when a new block is mined.
  • They provide us with notification that payments within transactions arrive on our addresses.
  • They provide us with transactions and the merkle proofs for those transactions, so that the transactions can be verified based on proof of work.

Current expectations of future needs

We’ve seen the recent news that it is becoming more and more expensive to run a node, and it is a given that going into the future our users are going to have to pay to use the servers that ElectrumSV requires access to, to be able to operate.

Paying for server access

Above I came to the conclusion that in order to provide the universal ability for our users to connect to each other, we would always need at least the ability for users to use third party internet accessible online services to facilitate that connection. We already plan to monetise our servers so that the people who operate it can at least subsidise their expenses, but we also believe that these servers have a lot of leeway to expand and offer optional additional services for a variety of purposes. And not just for ElectrumSV, for any wallet who wants to do away with having to run their own node.

Do you really trust this to not be stealing your keys?

How users might connect via the servers

Two users whether standing side by side, or talking on instant messaging or exchanging emails, just have to go “What’s your paymail address?” They each enter it in ElectrumSV, and ElectrumSV retrieves the relevant public keys somehow and employs some protocol to send the contact details (IP addresses of whatever form) of each user to the server.

Payments without servers

So we’ve covered the various ways payments might be made, and pretty much come to the conclusion that using our servers to coordinate communication does two immensely valuable things that are otherwise hard:

  • Allows two users to establish communication.
  • Allows two users who directly communication, to do so reliably.
  • Working out how a desktop wallet might operate as a NFC-based merchant payments solution. Are there NFC USB dongles?
  • Working out user friendly UI and protocols for detecting ability to directly connect over local or internet IPv4 or IPv6 addresses. And how the two wallets tell each other their addresses to begin with, so that they can know where to connect.

Loose ends

Using the blockchain for communication

You might think that one alternative to us using the servers in this way, is users publishing transactions to the blockchain, and getting 0-conf notifications in order to coordinate communication. One problem with this is that it is a regression back to monitoring the blockchain, rather than making direct payments and avoiding that. I’m not that interested in this as a solution, and would be reticent to allow support for it to be merged into ElectrumSV.

The offline edge case

Users are going to find themselves in the situation where they are without an internet connection, or cannot be bothered to gain access to the internet. We will handle this case in some user friendly way, but it is an exception to the rule, and warrants special handling.

Do our servers need to support Paymail to monetise?

No. But it is one option. And one that builds on the best identity standard. They may not even need to self-host Paymail to accept payments. Who knows, there’s a lot of room for how this might play out.

Further discussion

As always you can contact us in the #electrumsv channel on either of Unwriter’s slack, or the Metanet ICU slack (if you are a member with access). Twitter is a painful platform to use for discussion, so do not expect any discussion initiated there.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store