The first thing we need to do is generate a Bitcoin wallet.
We can generate a wallet with a long passphrase that we remember. This is known as a brain wallet. The same passphrase will always return the same wallet. This is convienient to our demonstration but impractical in use with actual Bitcoin.
Brain wallets, like passwords, are not by themselves a reliable part of self-authentication. Third-party services and physical devices are helpful in the the process of key management.
Now that we've got our wallet we can get some info about it from a public blockchain API.
There are a number of testnet faucets like this at bitcoinfaucet.uo1.net. Use the above Wallet Address with one of these faucets and send yourself some testnet coin.
When you've done that, click on "Get Wallet" again to refresh you balance.
Sometimes it can take awhile for testnet transactions to post.
Bitstore is a content-addressable cloud storage web service that uses Bitcoin public key infrastructure for authentication and payment.
The basic idea is that customers pay for the storage and retrieval costs of their digital media. Here at Blockai we are committed to building consumer products that never rely on advertising or selling personal data to third-party companies to cover our costs. In essence, we're building products where people own their own content and with that comes taking on financial responsibility.
How it works is a customer sends a small amount of Bitcoin to a deposit address provided by Bitstore and their account is immediately credited. Once their credits are in place they are free to store and retrieve media on a per-file and per-use basis. Once a customer's credits have been used up the file is no longer available for retrieval, however anyone can make a deposit to any account.
If we did our math correctly it currently costs about 1/3rd of a cent to upload a photograph and distribute a 100 copies but I expect adjustments to our initial pricing mechanism. Needless to say, using Bitstore will cost very little and we don't really expect people to purchase more than a few dollars worth of credits, depending on their distribution needs.
Content-addressable means that the file is referenced not by a name but by a cryptographic hash of the contents. Bitstore supports MD5, SHA-1, SHA-256 and BitTorrent Info Hash as identifiers.
On the software side of things we need to generate a Bitstore client.
The Bitstore client uses a Bitcoin wallet to sign tokens for identification and to authorize with the Bitstore servers. In effect your Bitcoin wallet address is your ID.
Bitstore is a pay-per-use, per-file service and needs Bitcoin in order to operate.
We need to send some Bitcoin from our brain wallet to the Bitstore deposit address in order to top up our balance.
We're going to build and post our own Bitcoin transaction.
First we need to get a list of all the unspent outputs for our wallet. These unspent outputs represent all the Bitcoin that was sent to our wallet. We'll use them to build our own transaction.
Once your Bitstore account has some credits you can start uploading files. The browser client has a convenient interface that pairs well with this drag-drop module on npm.
Now we're ready to register our file with the Open Publish protocol and claim ownership over a digital asset that represents the copyright of this document.
Any honest third-party software can read the state of ownership from the Bitcoin blockchain and create software the directs payments to the legitimate owners of the content in the form of direct tips, monthly subscriptions or various synchronization licenses modeled on existant royalty contracts.
For example, we could write software that displays media with a consumer Bitcoin wallet allowing for people to easily and directly tip the rights-holders.
It assumes that the wallet address that posted the Open Publish registration transaction to the Bitcoin blockchain is controlled by the owner of the registered media.
Open Publish is a simple open source colored coin protocol similar in functionality to Open Assets.
In addition to registering media the Open Publish protocol allows for transfering part ownership.
Open Publish transactions are native Bitcoin transactions. This means they are broadcast and stored on all nodes in the Bitcoin network. Anyone can freely stream, read, and write their own Open Publish transactions in same equal-access manner as native Bitcoin transactions. Open Publish takes advantage of the unique distributed yet single-source-of-truth nature of the Bitcoin blockchain.
What this means is that neither Blockai nor any other private entity is required to register or transfer media with Open Publish.
Open Publish is not dependent on Bitstore. Hosting and distribution of content is not the goal of Open Publish although an optional link to the content can be part of the metadata.
The Blockai website reads the Bitcoin blockchain and displays media that was registered with Open Publish.