How to Create an “Own Your Data” Application with Money Button

Money Button believes in an “own your data” philosophy for the future of the internet to fix the surveillance capitalism model of the internet today.

The default for data on the internet should be private and encrypted. If anyone earns money for the user’s data, it should be the user. Any other parties that earn money, such as social media applications like Facebook and Google, should be opted into by the user, and not the default mode of operation.

Money Button has supported the ability to create payments and data on the blockchain since launch. Because no one entity controls the blockchain, and it is possible to create protocols for data ownership, payments and data are some of the building blocks that form the foundation of a new “own your data” paradigm.

Money Button is already being used as a replacement for the ad-funded model of most social media websites using payments and data. Apps such as Twetch and Cityonchain have found innovative ways to fund themselves and their users without ads (although ads can and often still do play a role, but the users earn some or all of the money).

We can do more. Money Button is a non-custodial client-side Bitcoin SV (BSV) wallet. This means the button holds the users keys, not our company and not other applications.

The same keys that are used to sign transactions can also be used to sign arbitrary data. And the same keys can also be used to encrypt data.

Further, because we integrate deeply with the paymail protocol, we can use the identity key associated with every paymail to have user-friendly names for signatures and encryption.

These additional building blocks, signatures, encryption and decryption, and names, form all of the fundamental building blocks of an “own your data” paradigm.

We have pulled all the pieces together with the Outputs API and Crypto Operations API for Money Button. The Outputs API is used for payments and data. And the Crypto Operations API is used for signatures, encryption, and decryption.

These are the fundamental elements of a “own your data” philosophy. Data can be stored on-chain independently of any particular service provider. Data lock-in can be eliminated. Private and encrypted becomes the default rather than the exception.

Digital signatures, which can be used to prove the authorship of content, allow social connections to be lifted into a protocol rather than locked into a database on a social media app. If you have friends or followers, they can be your friends and followers on any platform, not just the one where you made the connection.

Most importantly, users monetize their own data and opt-in to monetization by third-parties.


Payments are a basic requirement for an “own your data” paradigm so that users can sell or purchase data. Money Button has supported advanced payments features since launch, including the ability to denominate payments in any currency and to send payments to multiple people at the same time.

Payments are simply to use with Money Button. The developer specifies a list of recipients, called “outputs” which include the name of the recipient and the amount and in what currency.

Screen Shot 2019-10-12 at 18.10.24

For full details, see the Money Button documentation.


In order for people to get credit for their work, to know who created something, and to know who you are communicating with, we can use digital signatures. There is only one issue, which is that digital signatures by themselves do not have a name associated with them. You do not know who signed something.

However, this is the problem that paymail solves. With paymail, we can associate a name with a digital signature.

Using paymail digital signatures, we can allow users to sign their data on- or off-chain. Users can provably associate their paymail with the content they publish or send to other users.

The signature method is compatible with the Author Identity Protocol by defining an signature protocol that includes a paymail.

To use the new signature operation inside the button, you can use the ‘sign’ operation in the button arguments.

An example of the sign method in a button looks like this:

Screen Shot 2019-10-10 at 17.12.23

For full details, see the paymail signature documentation and the Crypto Operations API documentation.

Encryption and Decryption

The default for data on the internet should be private and encrypted. If users choose to share their data, they can decrypt it for others.

Communication should work the same way. Messaging should be private and encrypted, and unencrypted only if intended by the user.

Encryption technology has been available for a long time, but it has not been user-friendly due to the difficulty of associating a name to a public key. That problem is solved by paymail.

The identity key associated with each paymail can be used to encrypt data to a paymail using ECIES. We have a standard algorithm for ECIES implemented in Electrum which we refer to as “Electrum ECIES”.

We have integrated Electrum ECIES into the Crypto Operations API to enable encryption to a paymail. By default this encrypts data to a user’s own paymail. Other paymails can be specified to allow encryption to other paymails as well.

In other words, encryption can be used either to encrypt data for one’s self or to encrypt messages for other people

An example of a button that encrypts data looks like this:

Screen Shot 2019-10-10 at 17.15.09

Decryption is similar. For full details, see the encryption and decryption documentation and the Crypto Operations API documentation.


We are creating an “own your data” paradigm for the internet by starting with the basics: payments, data, signatures and encryption. Users can make payments on-chain, post data on-chain, sign data on-chain or off-chain, and they can encrypt and decrypt data on-chain or off-chain.

All of the methods can be implemented by app developers with the outputs API or our Crypto Operations API to create “own your data” applications.

All the users have to do is swipe.




Leave a Reply