<commit_before># i-made-this

This repo contains the completed project files for the i-made-this Bitcore tutorial. Download this project with:

`git clone <EMAIL>:bitpay/i-made-this.git`

To learn how to create this project yourself, read the [tutorial](http://www.bitcore.io/i-made-this).


___


# i-made-this tutorial

In this tutorial, we will build a Desktop app that will communicate with the blockchain to timestamp original files. The timestamp will serve as immutable proof that the files existed at a certain point in time, which can be used to demonstrate ownership of copyrighted material. You can view the completed project files [here](https://github.com/bitpay/i-made-this).

#### Here is what we will need:

1. A [Bitcore](http://bitcore.io/) node to communicate with the blockchain
2. A custom Bitcore service to extend your Bitcore node so that it can timestamp files
3. [Electron](http://electron.atom.io) and [AngularJS](https://angularjs.org/) to serve as the Desktop UI to communicate with your Bitcore server

### Starting your project
<commit_msg>added a how it works section<commit_after># i-made-this

This repo contains the completed project files for the i-made-this Bitcore tutorial. Download this project with:

`git clone <EMAIL>:bitpay/i-made-this.git`

To learn how to create this project yourself, read the [tutorial](http://www.bitcore.io/i-made-this).


___


# i-made-this tutorial

In this tutorial, we will build a Desktop app that will communicate with the blockchain to timestamp original files. The timestamp will serve as immutable proof that the files existed at a certain point in time, which can be used to demonstrate ownership of copyrighted material. You can view the completed project files [here](https://github.com/bitpay/i-made-this).

#### What we need

1. A [Bitcore](http://bitcore.io/) node to communicate with the blockchain
2. A custom Bitcore service to extend your Bitcore node so that it can timestamp files
3. [Electron](http://electron.atom.io) and [AngularJS](https://angularjs.org/) to serve as the Desktop UI to communicate with your Bitcore server

#### How it works
1. The user uploads a file via the UI.
2. The UI hashes the file and asks Bitcore node whether the file hash already been timestamped in the blockchain.
3. If the file has not yet been timestamped, the UI generates a new BTC address and displays that address to the user in the form of a qrcode, prompting the user to send a small amount of BTC to that address.
4. Once the user's BTC arrives at the address, Bitcore node utilizes the user's BTC to broadcast a new transaction with the file hash included, serving as a permanent timestamp in the blockchain.


### Starting your project

{'fraction_non_alphanumeric': 0.07313487688349872, 'fraction_numerical': 0.003675119441381845, 'mean_word_length': 4.285436893203883, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3413316', 'n_tokens_mistral': 731, 'n_tokens_neox': 699, 'n_words': 385}