Status of Datt, Yours and Fullnode

March 27, 2016

Updates since the hackathon:

  • Darren M has created beautiful new layouts for Yours based on some mockup work by Steven McKie. The new layouts include the hot page, all page, wallet page, and submit new content page.
  • Yours has been rewritten (almost) from scratch. The most significant change is that we no longer depend on a database hosted on AWS. Yours now uses the Datt database on the server (and client, as before).
  • Clemens Ley is visiting San Francisco, and we are working on getting something launchable out soon. The Yours product has also changed slightly - rather than endorsing a random earlier endorser, you now endorse all earlier endorsers evenly. We haven’t yet integrated Darren’s layouts into the Yours UI.
  • Yours now sorts content on the front-page more like reddit, where the most “upvoted” content reaches the top spot.
  • We have removed the UI from Datt since we are now focused on building the UI for Yours, and don’t want to maintain both UIs are the same time. Datt should still have its own UI intended for a technical audience, but that can be added later. Philosophically, we now consider Datt to be a backend that can power many possible products, of which Yours is just one example.
  • Fullnode has a new worker interface that is being use extensively both throughout Fullnode itself and throughout Datt. The interface is very easy to use - all common methods that need to be put in a worker now have “async” versions, e.g. the async version of bip32.toString() is simply bip32.asyncToString().

How to Monetize Internet Memes

March 24, 2016

What if you could be paid a million dollars for creating a viral internet meme? People who are good at creating viral content, the type of content that brings value to huge numbers of people, would be able to quit their jobs and do what they love, and consumers would get more, and better, of the type of content they want. It sounds wonderful, but there is a problem: people don’t like to pay for stuff they can get for free. So how can we encourage people to pay for internet memes?

The answer is to financially incentivize payments. What if you could invest in an internet meme? Each investment would pay both the original author and one earlier investor. Investors aren’t just tipping the original author — they are making an investment that may pay back more than they put in. If the meme takes off, an investor may profit significantly. If the meme doesn’t take off, then the investor may not profit, but at least they’ve still paid something to the creator of content they like.

A few weeks ago my collaborators and I built a product that does this: Yours. The mission of Yours is to solve the incentives problem of social media. We want to make it possible for content creators to get paid, and to do so, we want to make it profitable to pay them. This aligns the incentives of everyone who uses Yours. Not only do content creators get paid for producing good content, but people who are good at curating (the “investors”), also get paid. Of course, not everyone will profit — people who are not very good at creating content won’t get paid much, and people who aren’t very good at curating may lose what they put in. But this is exactly how it should be: The people creating and curating valuable content profit, and the people creating and curating content that isn’t valuable either don’t get paid or lose money. The right behavior is encouraged — good content wins.

It would be technically easy to build Yours with a dependency on the legacy financial system. However, it would be socially difficult to convince third party banks and regulators to let us run this experiment. After having worked in the modern fintech movement and watched many companies struggle to convince banks and regulators to approve their products, I don’t think we would get permission from banks or the regulators in a timely or cost effective manner. Fortunately, we now have bitcoin — the permissionless financial system. We don’t have to get anyone’s permission launch Yours.

The permissionless approach is socially easier, but it is technically harder. While we will be able to launch the MVP of Yours soon, reaching the long-term potential of bitcoin micropayments in Yours will require that we write a lot more software. Most significantly, we need to add payment channels, a hub-and-spoke payment system, and ultimately the lightning network. We already have our own implementation of bitcoin, but the next steps will require many thousands of lines more of cryptographically delicate code. It won’t be easy. If you would like to help, please join the Datt project. Our platform is open-source.

The big picture of content monetization on the internet is bright. Not only will pleasurable content like puppy pics be profitable, but educational videos, scientific research, and product designs for 3D printers will all be profitable. The way the world works will change — bitcoin micropayments on the internet enables the birth of the information economy, a social improvement comparable to, but greater than, the transition to the industrial age. The full potential is incomprehensibly large and positive.

This article was originally published on The Ryan X. Charles Times.

Solutions to the Copyright Problem

March 13, 2016

One of the questions I get asked most frequently about Datt is, “how are you going to prevent people from posting other people’s content, and thus getting paid for content they didn’t create?” First of all, note that this problem is not unique to Datt. This is the same copyright problem that book publishers addressed (but never fully solved) a long time ago by encouraging governments to create copyright law.

It’s interesting to note that the fact that so many people detect that copyright is still a problem indicates that copyright law never actually solved the problem. It is the case today that people will often resell books, movies, or other forms of intellectual property as if they created them, and not give any proceeds to the the actual author. Datt will create a market for information, where people can post their own content and get paid for it. This will invite fraud the same way any market invites fraud - some people will try to scam others by posting information they didn’t create.

Not only might some people most content they didn’t create, but the worst case scenario is that the people buying information actually want this. That is that Datt unwittingly turns into a market specifically for and focused on incorrectly attributed content. For instance, what if people primarily post Hollywood movies, when they themselves did not play any role in creating those movies? And worse, what if the users of Datt specifically want to pay these people, without giving any money to the actual creators, because they are able to watch the movies more conveniently via Datt?

First of all, technically, copyright law still applies. If someone uses Datt to sell information belonging to someone else, that is illegal. However, I don’t think the government will help us, because they have no incentive to help, and would probably to try to shut Datt down rather than contribute meaningfully to a solution. Thus, it will be important for Datt to integrate technical or social solutions to the copyright problem that don’t rely on government. Here are some ways Datt can combat the copyright problem:

  • Allow users to flag content as incorrectly attributed. This is a human-powered solution to identity probable copyright violations. If you noticed someone is posting something they didn’t create and passing it off as their own, flag that content as “incorrectly attributed” or “copyright violation”.
  • Develop, purchase or otherwise leverage automated content flagging systems, like those used by Youtube and Soundcloud. Both Youtube and Soundcloud have systems that scan audio and video and pattern match against known copyrighted content, such as MPAA movies or RIAA music. Although running such software is computationally expensive, Datt, Inc. can offer this service to the community to flag probable stolen content, and the default client can be set to hide probable stolen content.
  • Enable escrow for payments until content is known to be original or is unlikely to be fraudulent. Although when p2p payments are involved it is not possible to force anybody to use escrow, it is still possible to enable escrow to people who wish to use it. Payments could either be escrowed through Datt, Inc. or through a market of escrow providers, who delay payouts until the probability that content is original increases highly enough. For instance, if a user validates their Datt keypair against a Facebook profile, Twitter profile, LinkedIn profile and email address, and they have a long history on all of these profiles, then they are probably a real person who doesn’t want to risk their reputation, and thus the escrow can make payments to them rapidly. If someone does not validate their account in any way, then payouts to them can be delayed until other users have a chance to flag their content as copyrighted or not. If it turns out that content is incorrectly attributed, then payments to not go to the poster at all, but are reversed and sent back to the payers.
  • Curate a culture of respecting copyright. One of the goals of Datt is to reward original content producers. The goal absolutely is not to reward people for presenting someone else’s content as their own. By making this a clear cultural principle at every step by encouraging original content and discouraging incorrectly attributed content in the language of the application and in the actions of the core users, we can facilitate the type of culture we want to see using Datt.
  • Long-term, leverage blockchain technology to track content ownership. If, ultimately, a global system of tracking ownership of content were created, the problem could be solved globally and would not require any custom solutions in Datt.

Datt will not be the first marketplace to have to deal with the copyright problem, but we can employ technical and social means to make it more difficult or costly to post incorrectly attributed content. Copyright law, unfortunately, will not help much at all. Instead, the solutions are, 1) Human flagging, 2) Automated flagging, 3) Payment escrow, 4) Curating a culture of original content creation, and 5) Long-term adopting a global blockchain-based solution. We will also be able to iterate on solutions over time depending on exactly how big of a problem this is.

fullnode+Datt

March 11, 2016

fullnode is a javascript bitcoin library I created in the summer of 2014, and which provides most of the bitcoin functionality of Datt. If you read the commit history, you’ll see it was originally called “privsec”, because it was going to be a bitcoin wallet focused on privacy and security. It was not going to be a full implementation of bitcoin - just a wallet. I was an engineer at BitPay working on bitcore at the time, and I realized that I didn’t like the interface to bitcore and would rather reimplement things with a better interface for my wallet. In short order I realized the real solution was simply to rewrite bitcore with a better interface, and thus privsec became bitcore2. Not long after that, I left BitPay to join reddit. But in my spare time in between, I forked bitcore2 to a new project called “fullnode” with the vision of turning fullnode into a bitcoin full node. fullnode then temporarily became the reddit implementation of bitcoin. Meanwhile, the engineers at BitPay pulled in bitcore2 and fullnode into a new version of bitcore, which was later named bitcore 1.0. To this day, fullnode and what is now bitcore-lib share hundreds of the same commits and a similar architecture because they are largely the same code.

I’ve kept fullnode as a separate project rather than merging with bitcore or another project because it is valuable to be able to shape the project according to my needs. Right now the only project using fullnode in practice is Datt, which is heavily dependent on fullnode. I think the right way to think about fullnode is “Datt’s bitcoin library”, and as such, as of today, I have moved the fullnode repo from my GitHub page to the Datt GitHub page. We can now consider fullnode to be The Official Bitcoin Library of Datt.

fullnode has a lot of bitcoin functionality, but not all. I never finished the actual “full node” part of fullnode. fullnode cannot download the blockchain or serve an API for it. It can, however, perform all of the basic cryptography of bitcoin, and has a notion of most major bitcoin data structures, and most importantly can build and sign bitcoin transactions.

The future of fullnode will be shaped by the needs of Datt. It will be important to finish the blockchain part of fullnode so that it can serve as the blockchain API for Datt. Additionally, we will need to support segregated witness and the lightning network in order to enable genuine bitcoin micropayments in Datt. The GitHub issues page lists all near-term problems to be solved in fullnode. As time allows, I will create issues for segregated witness and the lightning network and sketch out a path for how we can implement those protocols in fullnode.

What Yours Needs From Datt

March 03, 2016

Yours is a product based on Datt we developed at the LAUNCH Hackathon last weekend (1, 2, 3, 4). Yours needs some but not all the features of Datt to reach MVP. In order to reach MVP of Yours sooner rather than later, I suggest it needs the following properties of Datt:

  • Yours does not need genuine micropayments. It is worth experimenting with moderately large payments such as at least $0.25 or perhaps $1.00. The current Datt wallet is almost good enough for Yours. We just need to make sure it doesn’t lose money and has an easy way to backup and restore.
  • Yours needs consensus about what content and payments were created and when, but this consensus does not need to be decentralized for MVP. However, it should be forwards compatible with a decentralized solution, i.e. can be converted to a decentralized solution once that software is ready. The way to do this is basically to design a centralized blockchain that is hosted on Yours servers. There will need to be a plan on how to migrate it to something decentralized later, but this does not have to be decentralized for the MVP.
  • Yours does not need decentralized content storage, because it is more valuable to get the MVP out sooner so that we can learn what people actually want than waiting for decentralized storage. However, as with consensus about content, it is desirable to have a path forward. For this we need to make sure content and actions are addressed by hash, as they already are, and as such can be stored and retrieved on ipfs or something similar at a later date.
  • Yours does not need a full identity solution for MVP, but needs at least some features to prevent spam accounts. An easy to way to do this is to link Yours accounts to existing social media. For instance, perhaps you have to place your Yours public key on your twitter account and your twitter account must have at least 100 followers to be used with Yours. This “social media” identity feature probably does not belong in Datt itself, and can be included in Yours directly.

Thus, the features we need to build in Datt to be used in Yours are:

  • A slightly more robust bitcoin wallet (but not lightning network).
  • A “centralized blockchain” as a record of content and actions that can be signed by Yours.
  • A key-value database for storing the actual content and actions.
  • No improvements to identity - it’s good enough as-is.

I have created a yoursMVP milestone for Datt to keep track of what detailed issues need to be solved to enable the Yours MVP.

Towards an MVP

March 02, 2016

The Datt prototype has a primitive p2p protocol that is only capable of 1) simultaneously connecting to all peers, 2) broadcasting and receiving content from all peers. Some important ways in which it is lacking are, 1) cannot scale beyond a few users, 2) has no ability to retrieve content that you were not online to see, 3) has no consensus about what the content is or what order it should be displayed in.

The bitcoin wallet feature is slightly more mature. Although it has bugs, the wallet can actually send and receive real payments. Unfortunately, due to the max block size issue of bitcoin, transactions have a real cost that is high enough to prevent genuine micropayments.

The next step after the Datt prototype is the Datt MVP. The Datt MVP is something that is actually usable to some audience. I propose that the Datt MVP be targeted only at technical users. Datt will mostly be a backend software to be used on more consumer-friendly front-ends. The front-end of Datt will display the features of the Datt backend, but will not necessarily have an interface that is easy to use by a mainstream audience. Meanwhile, Yours (1, 2, 3) will be the first product based on Datt. Yours will have its own MVP independent of Datt. Yours will have an interface that is easy to use by a mainstream audience.

Datt should enable a “decentralized reddit” as was conceived in the original vision. Datt itself will look a lot like a decentralized reddit with a UI similar to Chris’ mockups. On the backend, these technical issues will need to be a part of the Datt MVP:

1) Bitcoin micropayments using the lightning network or something similar. It will take some time to develop the lightning network, but it is the only known way to have genuine p2p micropayments. The steps we will take to implement the lightning network are, first, to develop normal bitcoin payments (done). Next, we will develop payment channels, and then a centralized payment channel hub, and finally a network of hubs (the lightning network).

2) A way of arriving at consensus about content. There does not necessarily need to be global consensus about the content on Datt, but there should at lease be user-level consensus. For instance, if you want to retrieve content written by Kanye West, you should be able to retrieve Kanye West’s content. Everyone should be able to agree about what Kanye West’s content is. One way to do this is to pin a chain of Kanye West’s content to the bitcoin blockchain. We may also want to allow communities to have consensus, which requires a consensus algorithm like proof-of-work or another one. The order of events is to design what a content chain looks like, then allow users to pin their chain to the bitcoin blockchain, and finally have our own Datt blockchain (perhaps based on BigchainDB or similar) to have a record of all content.

3) A decentralized storage system like ipfs or web torrent. We are still at present undecided about what storage system to use. The first step will allow nodes simply to store all data. The Datt node will be always online and users can reliably retrieve data from the Datt node. After this mechanism works, the next step is to place content either on ipfs or on individual torrents for each user. The decision for how to do this will be made later.

4) Identity. For now, we can simply use a master keypair to manage identity. Unfortunately this means usernames are not globally unique. The way to resolve this is either by using Blockstack or a similar system. Blockstack has had an enormous amount of effort put behind it and has recently launched, so it is our first candidate to manage identity.

I believe in creating valuable technology. The outline here for an MVP of Datt is technically complicated, but once all the pieces are fit together, it will enable a genuine decentralized content sharing system with integrated micropayments. That has never existed before, and would enable the information economy to do things that are impossible today.

Datt Tech Proposal

March 02, 2016

I think we should consider splitting the project into two parts (similar to the Datt-Yours split). We could use our core technology to build a “framework for building decentralized web apps with micropayment integration”. On top of that we and others could build apps like Yours.

The advantage of the split would be that the base layer would be of interest to a much larger audience (people who want to build apps on top of it). These would be more likely to contribute to the open source project. We’d also be de-risking the company because launching a consumer product is a bit of a gamble. If there are several applications we’d only need one of them to work (not necessarily the one built by us).

There are two main technical hurdles that need to be overcome in order to build datt: adding persistence and scalability to the current prototype (called the base layer below) and building a payment layer (basically the lightning network). I think we should focus the payment layer first bc the current datt implementation might work quite well while the project is small. In case we hit scale fast we might want to build a persistence layer with a limited feature set on top of IPFS before we start working on the one sketched in the Base Layer section below.

more

Summary of the Second Datt Hackathon

February 29, 2016

The greatest result of the second Datt hackathon is that we successfully built, in just 48 hours, a working demo of a new product based on Datt, “Yours”. Yours is a content sharing application with a twist: You can invest in a piece of content by paying the content creator, and then share in the subsequent payments. This solves the incentive problem on both ends. First, people are incentivized to produce good content, because they may be paid for doing so. But even more importantly, the payments are also correctly incentivized, because the investors may profit, potentially enormously, from investing in a good piece of content early on.

During the hackathon, we wrote three articles: Yours (the original description), “Making It, Yours”, and We Made It, Yours. We made a new logo. We made a new twitter account. We made a sophisticated theory of how the rewards should work. We bought a new domain name, yours.press. And, of course, we created a new repo and a working release (v0.1.0). Here’s a video demo of the working product. Many new people joined our Slack channel and mailing list throughout the hackathon.

We tried to win the LAUNCH Hackathon with Yours. Unfortunately, during the first round of judging, my computer had a never-before-seen error that prevented all networking from working, even local networking, and as such I wasn’t able to load or use the app without rebooting my computer. The error had nothing to do with the app, but was specific to my computer. Since we only had 4 minutes to demo, I ran out of time to solve my networking issue, and we weren’t able to show the product to the judges. Steven and Anupam did a great job covering while I tried to fix networking. Unfortunately, the judges had a hard time understanding the idea and were very skeptical. We were not selected for a second round of judging.

Regardless, we made a huge amount of progress during the hackathon. During the first Datt hackathon seven months ago, we did not end the weekend with a working demo. This time, we did. Furthermore, I think the Yours product idea is our best product idea to date. The way to look at the distinction between Datt and Yours is that Datt is the underlying technology for combining content and payments that can be used by many different products. The goal of the Datt company is to identify the best product based on the Datt technology. I think Yours may be that product. As such I think we should continue to develop Yours alongside Datt. Datt may still have an interface, but it is intended for a technical or enthusiast audience. Yours is intended for a mainstream, non-technical audience. In the coming week(s), I will sketch out what I believe an MVP looks like for both Datt and Yours.

“Making It, Yours“

February 26, 2016

Datt, and the idea of decentralized content sharing that rewards the users on the network is an idea too big for just one use case. That’s why, we are honing and sharpening the potential for Datt by first creating a system that empowers you to monetize content, from anywhere. Together, we’re making your content, Yours:

more

Yours

February 26, 2016

Yours is a product idea based on Datt. First of all, the name: “Yours” is a normal word that everyone understands, and not based on a niche meme. If something belongs to you, it’s yours. This perfectly describes the essence of what Datt is trying to achieve. Yours gives control of content, moderation, hosting, and payments to the users. If it’s yours, post it on Yours. Yours is the product, but behind the scenes it is based on the Datt software and Datt network. It is a product intended to have a mainstream audience, so it has a mainstream name.

The product itself looks similar to the current Datt prototype. Users have a master keypair which they use to authenticate themselves. They can post new content that is seen by other users, and they have an integrated bitcoin wallet that they can use to pay to a piece of content. Each piece of content has a button to make a payment. However, the payments are not simply tips. A payer is not simply making a voluntary payment to the author, rather they are investing in the post, and get a portion of subsequent payments. This idea was first introduced to me by Clemens Ley, and coincidentally Coinbase also proposed the same idea to me a few days after Clemens.

This scheme correctly solves the incentives problem. Users are incentivized to post qualitity content. If it’s yours, post it on Yours, and you can earn bitcoin. It also solves the incentives of the person who pays. They are not just giving money away with no expectation of a return. They are incentivized to upvote something early. Yes, this costs money, and they might not get that money back. But if they upvote something early, and give it attention, it might catch on and go viral, in which case the investor gets a huge return. The investor gets paid too, just like the content creator. Not all investors will get more than the put in, but many will. This financially gamifies both creating and funding good content.

An important question is precisely what formula do we use to determine how much each investor gets as a fraction of subsequent payments. Investors should be incentivized to invest early, and as such they should get a higher proportion early on. However, exactly what formula to use remains undecided. Furthermore, it is not trivial to create a system like this in a decentralized way. There needs to be consensus about the order of payments. That is tricky to do in a high frequency way (but if 10 minutes is high enough resolution, the bitcoin blockchain will work for that).

Technically, Yours can use Datt on the backend. We can create a new repo with a new UI to satisfy the LAUNCH constraint that it must be written from scratch at the event. Datt will simply be a dependency of the project, like a database or API or any other dependency. Furthermore, only people physically present at LAUNCH will work on Yours to guarantee we satisfy that constraint as well.