How to setup and build Hyperledger Fabric Blockchain Applications

This is an introduction to how to configure and launch the Hyperledger Fabric v1.0 permissioned blockchain network on an Ubuntu 16.04 Virtual Machine on AWS.

If you want to skip configuring the VM/images check out the IBM Bluemix Fabric managed service: https://console.ng.bluemix.net/catalog/services/blockchain/

Below is the command line steps in addition to links to additional guides on configuring your network.

The first part of this article is focused on the infrastructure layer, Hyperledger Fabric.

The second part of this article is focused on the application layer, Fabric Composer.

You can spin up the latest versions of Fabric V1 and use the shell scripts for standup and teardown of the network in the second part.

The Infrastructure Layer

Creating your VM on AWS

The first thing you are going to do is go to AWS and create a new account:

Go to https://aws.amazon.com/

Create your account and you will need to create a support request to increase the number of EC2 instances you can have.

Once your limit has increased you will launch a new EC2 Virtual Machine using the Launch Wizard.

Choose your Instance Type: c3.large

Go through the configuration screens and add storage to your VM 8/32/64 GB should work.

Once this has been done go to the Launch screen and generate a new key-pair for this Virtual Machine.

You will download the key pair and put it in some folder on your local machine.

Next the instance will launch and you will be able to see on your dashboard.

Copy the URL from your Virtual Machine

Open Git on your machine and go to the directory where you have downloaded the key to your Virtual Machine.

then ssh -i ./yourkeyname.pem ubuntu@yoururlname

once you have sshed in, you are now able to use the Virtual Machine.

The below is the exact steps or you can continue to the more verbose version in the rest of the article.

This is the exact step by step way to do it in less then 20 minutes:


sudo apt-get update
wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz
sudo tar -xvf go1.7.4.linux-amd64.tar.gz
sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-add-repository ‘deb https://apt.dockerproject.org/repo ubuntu-xenial main’
sudo apt-get install -y docker-engine
sudo curl -o /usr/local/bin/docker-compose -L “https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)”
sudo chmod +x /usr/local/bin/docker-compose
mkdir ~/fabric-tools && cd ~/fabric-tools
curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip
sudo apt install unzip
unzip fabric-dev-servers.zip
curl -O https://hyperledger.github.io/composer/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.sh
cd fabric-tools
./downloadFabric.sh
./startFabric.sh
./createComposerProfile
cd..
git clone https://github.com/hyperledger/composer-sample-networks.git
cp -r ./composer-sample-networks/packages/basic-sample-network/ ./my-network
rm -rf composer-sample-networks
cd my-network
npm install
npm install -g composer-cli
npm install -g composer-rest-server
cd dist
composer network deploy -p hlfv1 -a basic-sample-network.bna -i PeerAdmin
composer-rest-server

Don’t forget to change your security groups to open inbound/outbound traffic!


 

Configuring your Virtual Machine

There are a number of packages that you are going to need to install and configure in your VM.

Install Git, Nodejs and GO

Digital Ocean Guide – Node.js

Installing GO and setting your GOPATH

*** update USE NVM for node and npm, no sudo required, will be important for your fabric composer setup ***

sudo apt-get update

sudo apt-get install git

sudo apt-get install nodejs use nvm

sudo apt-get install npm  use nvm

wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz
$ sudo tar -xvf go1.7.4.linux-amd64.tar.gz
$ sudo mv go /usr/local
cd ubuntu
mkdir yourgodirectoryname
export GOROOT=/usr/local/go 
export GOPATH=$HOME/yourgodirectoryname
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
sudo nano ~/.profile

Add the above three commands to the bttom of the /.profile file

Install Docker 1.12 and Docker-Compose 1.18

Digital Ocean Guide

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
sudo apt-get update

sudo apt-get install -y docker-engine

docker


sudo curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)"
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v

*****At this point you should have a Linux VM fully setup and you are now ready to download the docker images for the various components of your Blockchain network.****

Clone the Hyperledger Fabric v1 Images

You can download the images here and this will show you how to call chaincode directly at the command line. Later on we will use Composer to spin up docker images and write to the chain by deploying a business network archive.

Architecture Overview
All Hyperledger projects follow a design philosophy that includes a modular extensible
approach, interoperability, an emphasis on highly secure solutions, a token-agnostic
approach with no native cryptocurrency, and the development of a rich and easy-touse
Application Programming Interface (API). The Hyperledger Architecture WG has
distinguished the following business blockchain components:
• Consensus Layer – Responsible for generating an agreement on the order and
confirming the correctness of the set of transactions that constitute a block.
• Smart Contract Layer – Responsible for processing transaction requests and
determining if transactions are valid by executing business logic.
• Communication Layer – Responsible for peer-to-peer message transport between
the nodes that participate in a shared ledger instance.
• Data Store Abstraction – Allows different data-stores to be used by other modules.
• Crypto Abstraction – Allows different crypto algorithms or modules to be swapped
out without affecting other modules.
• Identity Services – Enables the establishment of a root of trust during setup of a
blockchain instance, the enrollment and registration of identities or system entities
during network operation, and the management of changes like drops, adds, and
revocations. Also, provides authentication and authorization.
• Policy Services – Responsible for policy management of various policies specified
in the system, such as the endorsement policy, consensus policy, or group
management policy. It interfaces and depends on other modules to enforce the
various policies.
• APIs – Enables clients and applications to interface to blockchains.
• Interoperation – Supports the interoperation between different blockchain instances.

 

SOURCE: https://www.hyperledger.org/wp-content/uploads/2017/08/HyperLedger_Arch_WG_Paper_1_Consensus.pdf

Getting Started

This is the Fabric Getting Started Guide and here is the end-to-end guide on Github

cd ubuntu
cd yourgodirectoryname
mkdir src
cd src
mkdir github.com
cd github.com
mkdir hyperledger
cd hyperledger
git clone https://github.com/hyperledger/fabric.git
sudo apt install libtool libltdl-dev

Download the Docker Images for Fabric v1.0

cd fabric
make release-all
make docker
docker images

You should see your docker images    (this is for x86_64-1.0.0-alpha2)

REPOSITORY TAG IMAGE ID CREATED SIZE
dev-peer0.org1.example.com-marbles-1.0 latest 73c7549744f3 6 days ago 176MB
hyperledger/fabric-couchdb latest 3d89ac4895f9 12 days ago 1.51GB
hyperledger/fabric-couchdb x86_64-1.0.0-alpha2 3d89ac4895f9 12 days ago 1.51GB
hyperledger/fabric-ca latest 86f4e4280690 12 days ago 241MB
hyperledger/fabric-ca x86_64-1.0.0-alpha2 86f4e4280690 12 days ago 241MB
hyperledger/fabric-kafka latest b77440c116b3 12 days ago 1.3GB
hyperledger/fabric-kafka x86_64-1.0.0-alpha2 b77440c116b3 12 days ago 1.3GB
hyperledger/fabric-zookeeper latest fb8ae6cea9bf 12 days ago 1.31GB
hyperledger/fabric-zookeeper x86_64-1.0.0-alpha2 fb8ae6cea9bf 12 days ago 1.31GB
hyperledger/fabric-orderer latest 9a63e8bac1f5 12 days ago 182MB
hyperledger/fabric-orderer x86_64-1.0.0-alpha2 9a63e8bac1f5 12 days ago 182MB
hyperledger/fabric-peer latest 23b4aedef57f 12 days ago 185MB
hyperledger/fabric-peer x86_64-1.0.0-alpha2 23b4aedef57f 12 days ago 185MB
hyperledger/fabric-javaenv latest a9ca2c90a6bf 12 days ago 1.43GB
hyperledger/fabric-javaenv x86_64-1.0.0-alpha2 a9ca2c90a6bf 12 days ago 1.43GB
hyperledger/fabric-ccenv latest c984ae2a1936 12 days ago 1.29GB
hyperledger/fabric-ccenv x86_64-1.0.0-alpha2 c984ae2a1936 12 days ago 1.29GB
hyperledger/fabric-baseos x86_64-0.3.0 c3a4cf3b3350 4 months ago 161MB

Create your network artifacts

cd examples
cd e2e_cli
./generateArtifacts.sh <channel-ID>

Make sure to choose a channel name for <channel-ID> ie mychannel

then the below to launch the network

CHANNEL_NAME=<channel-id> TIMEOUT=<pick_a_value> docker-compose -f docker-compose-cli.yaml up -d

or use this script to launch the network in one command.

./network_setup.sh up <channel-ID> <timeout-value>
docker ps

To manually run and call the network use

Open the docker-compose-cli.yaml file and comment out the command to run script.sh. Navigate down to the cli container and place a # to the left of the command. For example:

  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
# command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'

Save the file and return to the /e2e_cli directory.

# Environment variables for PEER0
CORE_PEER_MSPCONFIGPATH=$GOPATH/src/github.com/hyperledger/fabric/peer/crypto/peer/peer0/localMspConfig
CORE_PEER_ADDRESS=peer0:7051
CORE_PEER_LOCALMSPID="Org0MSP"
CORE_PEER_TLS_ROOTCERT_FILE=$GOPATH/src/github.com/hyperledger/fabric/peer/crypto/peer/peer0/localMspConfig/cacerts/peerOrg0.pem
docker exec -it cli bash
peer channel join -b yourchannelname.block
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
# remember to preface this command with the global environment variables for the appropriate peer
# remember to pass in the correct string for the -C argument.  The default is mychannel
peer chaincode instantiate -o orderer0:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $GOPATH/src/github.com/hyperledger/fabric/peer/crypto/orderer/localMspConfig/cacerts/ordererOrg0.pem -C mychannel -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org0MSP.member','Org1MSP.member')"
peer chaincode invoke -o orderer0:7050  --tls $CORE_PEER_TLS_ENABLED --cafile $GOPATH/src/github.com/hyperledger/fabric/peer/crypto/orderer/localMspConfig/cacerts/ordererOrg0.pem  -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

You now should have a functioning network that you can call.

To Setup and use Couch DB for richer queries follow the tutorial here.

To clean and bring down the network use 

./network_setup.sh down
sudo docker ps

you shouldn’t see any containers running.

To stop individual various containers use

sudo docker stop <name>

sudo docker rm <name>

To learn about the Hyperledger Fabric API visit http://jimthematrix.github.io/ This is a great resource for learning about the intricacies of the network and the different certificates needed for trusted transactions.

Below is the second part the Application Layer, Fabric Composer.

The Application Layer

You have configured and setup a VM, you have your docker containers running, your Hyperledger Fabric V1.0 blockchain infrastructure is live; now you want to model, build and deploy a business application on this network. This article will show you exactly how to wire up the application layer and the infrastructure layer.

You can run the network locally using npm or docker

  npm install -g composer-playground
 docker run -d -p 8080:8080 hyperledger/composer-playground

Once you have configure your business network you can export it in a BNA (business network archive file).

 

The Business Network

Permissioned blockchain technology applications built for the enterprise and commercial applications need an abstraction layer. This is provided by Fabric Composer; a toolset and application framework that enables you to quickly model and deploy applications to Fabric infrastructure. It is a framework that enables you to reason about the Participants, the Assets, and the Transaction logic that drive state changes on your distributed ledger. This business logic and processes are what will drive the distributed state changes to the peers on your network.

Hyperledger Fabric Composer

Fabric Composer is an open-source project and part of the Hyperledger Foundation.

First, ssh into the same VM you setup.

ssh -i ./yourkeyname.pem ubuntu@yoururlname

Installing Fabric Composer Dev Tools

You should have the majority of these tools installed in your configured VM but this script will make sure everything is correct versions and you haven’t missed anything.

curl -O https://hyperledger.github.io/composer/prereqs-ubuntu.sh

chmod u+x prereqs-ubuntu.sh
./prereqs-ubuntu.sh
  1. To install composer-cli run the following command:
    npm install -g composer-cli
    

    The composer-cli contains all the command line operations for developing business networks.

  2. To install generator-hyperledger-composer run the following command:
    npm install -g generator-hyperledger-composer
    

    The generator-hyperledger-composer is a Yeoman plugin that creates bespoke applications for your business network.

  3. To install composer-rest-server run the following command:
    npm install -g composer-rest-server
    

    The composer-rest-server uses the Hyperledger Composer LoopBack Connector to connect to a business network, extract the models and then present a page containing the REST APIs that have been generated for the model.

  4. To install Yeoman run the following command:
    npm install -g yo
    

    Yeoman is a tool for generating applications. When combined with the generator-hyperledger-composer component, it can interpret business networks and generate applications based on them.

If you use VSCode, install the Hyperledger Composer VSCode plugin from the VSCode marketplace. There is also a plugin for Atom as well.

Make sure you have the V1 images, if you have any old ones use:

sudo docker rmi <image> --force
sudo docker container prune

Fabric Tools 

mkdir ~/fabric-tools && cd ~/fabric-tools

curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip
sudo apt install unzip
unzip fabric-dev-servers.zip
export FABRIC_VERSION=hlfv1

To download Hyperledger-Fabric use the script below:

cd ~/fabric-tools
./downloadFabric.sh
sudo docker images
hyperledger/fabric-ca x86_64-1.0.1 5f30bda5f7ee 2 weeks ago 238MB
hyperledger/fabric-couchdb x86_64-1.0.1 dd645e1e92c7 2 weeks ago 1.48GB
hyperledger/fabric-orderer x86_64-1.0.1 bbf2708c9487 2 weeks ago 179MB
hyperledger/fabric-peer x86_64-1.0.1 abb05def5cfb 2 weeks ago 182MB
hyperledger/fabric-ccenv x86_64-1.0.1 7e2019cf8174 2 weeks ago 1.29GB

You can start Hyperledger Fabric using this script:

./startFabric.sh

if you run:

sudo docker ps

You should see your network is up and running

Create and Connect your Hyperledger Composer Profile

Hyperledger Fabric is distinguished as a platform for permissioned networks, where all participants have known identities.

UPDATE: ID Cards

The below line should be a huge ah-hah moment.

**********An ID Card contains an Identity for a single Participant within a deployed business network. ************

You have defined a Participant in your business network (modeled, but also actually created a record of one) given the participant an ID (id, name email) and now; the above. The ID Card contains an Identity for that single Participant within the deployed business network.

It is like your auth method. You create the participant on the network and then you can go and create an ID that lets you sign as as that participant. Then create another participant, maybe same type, different type; then create another ID for that one.

*** Command Line – Create Profile ***

Issue from the fabric-tools directory ./createComposerProfile.sh

This script will create an PeerAmin Profile for you.

Connection profiles are a bit confusing and can be frustrating to setup, but, this is an integral part to being able to build and deploy your business network.

There are two folders on your machine:

cd ~/.composer-credentials

and

cd ~/.composer-connection-profiles

When you run Composer locally using Docker containers the Profiles you create will be stored there.

You can find you and PeerAdmin Profile pub, priv keys in the composer-credentials directory.

You then have to import you Composer Profile using this command:

$ composer identity import -p hlfv1 -u PeerAdmin -k
/c/Users/domst/.composer-credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-priv
 -c /c/Users/domst/.composer-credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-pub

OR

composer identity import -p hlfv1 -u PeerAdmin -c ${HOME}/.composer-credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-pub -k ${HOME}/.composer-credentials/114aab0e76bf0c78308f89efc4b8c9423e31568da0c340ca187a9b17aa9a4457-priv

You should get a Command Successful Message.

You may run into a problem command if your setup is still sudoed out, so you will need to check and see using

ls -la /home/ubuntu/.composer-credentials

Then if it is run

sudo chown -R ubuntu /home/ubuntu/.composer-credentials

Network Teardown

Also, here are some more scripts more to stop and tear down the infrastructure layer.

./stopFabric.sh

At this point you can go should be ready to get dialed in and ready to model out and wire up a business network. Grab some coffee, a nice glass of water, new piece of gum; you’re just about to get going. This next part we are going to connect a Sample Business Network to your Hyperledger Fabric V1 Blockchain.

To start over do this

./teardownFabric.sh

Or continue On… to connect a Sample Business Network to your Hyperledger Fabric V1 Blockchain.

Building Your Business Network

This section isn’t mandatory but if you want to use the playground editor this is some background on how to to access it in the browser Or you can skip this and use vim.

Make sure fabric composer is running, your security groups have inbounds and outbounds open and go to your amazon web services url:

then go to the extension for composer editor.

http://yourURL.compute.amazonaws.com:8080/editor

Model your Business Network using the Hyperledger Composer Playground. A Hyperledger Composer Business Network Definition is composed of a set of model files and a set of scripts.  This can be run in the browser or locally using a docker container.

Modeling a Business Network consist of :

  • Participants – Members of the Business Network
  • Assets –
  • Transactions – State change mechanism of the Network

You also are able to use:

  • Concepts
  • enum
  • abstract

Lastly, the Business Network can define:

  • Events – Defined indicators that can be subscribed to by external systems
  • Access Control – Permissions for state changes

You can use Javascript to define the transactional logic that you would like to use in your applications. We are just going to use a Sample Business Network, this can be edited and redeployed to update the Blockchain.

Clone a sample network using this repo:

git clone https://github.com/hyperledger/composer-sample-networks.git
cd packages

cd basic-sample-network

npm install

You should get something like this:

Creating Business Network Archive

Looking for package.json of Business Network Definition
Input directory: /home/ubuntu/my-network

Found:
Description: The Hello World of Hyperledger Composer samples
Name: my-network
Identifier: my-network@0.1.8

Written Business Network Definition Archive file to
Output file: ./dist/my-network.bna

Command succeeded

 

Deploying Your Business Network To Your Blockchain Infrastructure

Once you have your Sample Business Network you are going to want to create a BNA file. A BNA is the Business Network Archive, it is a file that describes your network configuration and application and can be deployed the the infrastructure you have setup. To deploy your network use:

composer network deploy -a my-network.bna -p hlfv1 -i PeerAdmin -s randomString

TROUBLESHOOTING:

✖ Deploying business network definition. This may take a minute…

Error: Error trying deploy. Error: Error trying install chaincode. Error: Failed to deserialize creator identity, err ParseCertificate failed asn1: structure error: tags don’t match (2 vs {class:0 tag:6 length:7 isCompound:false}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} @2
Command failed

Stack Overflow Answer

Setting up our REST Server

Hyperledger Fabric v1.0 provides basic API using Protocol Buffers over gRPC for applications to interact with the blockchain network. Composer enables you to create REST server and communicate with the Blockchain network using JSON. This part is important and you should have an understanding of it before starting on modeling out your business network / application. Composer enables you to create a REST server that is dynamically generated based on the business network participants and asset you design. You can configure your network and launch a REST Api that can be called from other applications.

composer-rest-server

Wiring It All Up

Once your business Network is deployed to your infrastructure you should be able to verify it using the top right, your connection profile is connected. You are now ready to send transactions to the blockchain directly from the composer interface or by calling your REST server from a client.

If you are running into any trouble feel free to reach out at dominic@dapps.ai

Versions:

https://gateway.ipfs.io/ipfs/QmXMaNJRGstyib8iAZCZ5HxShorCxCDFDzeG2Hx73hTYcp

5.26 – using v1.0

https://gateway.ipfs.io/ipfs/QmWtaoMGA8SVc7kdjUnRP5hS1KsX51TEYH57VNTPJWQPFh

5.27 – using v1.0 alpha2 docker images and added in fabric composer (current)

https://gateway.ipfs.io/ipfs/Qme6FT3HQzUsY8z69P6KCutaUogmc4BBxCSPJDt3czaM6M

 

Coined: Semantics, Bitcoin, and Law

Semantics are the human window into the language of thought.

The existing financial terms are in place as ideals and generally accepted principles that businesses are supposed to know and abide by in order to provide consumer protection. The proposed BitLicense by the NYDFS is a perfect example of where existing financial terms overlook the capabilities of blockchain technology. The businesses and customers involved in “Virtual Currency Business Activities” do in fact need to be protected. However, the proposed rules and regulations in Part 200 Virtual Currencies will undoubtedly stifle innovation and the proposal completely ignores the underlying applications and functions of this new blockchain technology. In an effort to classify this technology with existing terms, the IRS classifies Bitcoin as an asset however FinCEN classifies companies in this space as money transmitters. So which one is it? How would you describe Bitcoin? A digital currency|commodity|network that enables the digital transfer and store of value over the internet? How would you describe the Internet? Really what is the Internet? A global network that enables transfer of bits of data? A digital medium that facilitates connection and communication?

The value in bitcoin and blockchain technology is in its transparent and equal cryptography nature. Application Programming Interfaces (APIs) with the blockchain’s and sidechains will create an unlimited range of financial tools and protective measures for consumers and businesses to:

  • ensure compliance with domestic and international laws, rules, and regulations.
  • augment the ability for anti-fraud, anti-money laundering, cyber security, and counter-terrorism finance.
  • protect consumers from privacy and information security events, fiat insolvency and ultimately financial instability.

Bitcoin calls the bluff of the existing financial terms. Software built on top of Blockchain technology does not allow default. The third party needed in so many of our trust based models is replaced by code. The escrow is software built in the form of mathematically bound hedges. Multi-signature cryptographic keys predetermine outputs based upon met or unmet inputs. The blockchain provides a perpetual and irreversible universal balance sheet with the most recent time stamped state of ownership. This universal ledger and medium of exchange is a digitally stored value technology that will bring everyone and everything on the same financial grid.

The existing lexicon doesn’t seem fit. We understand entities in terms of four things:

  • who or what brought it about
  • what it’s made of
  • what shape it has
  • what it’s for

There is this idea to get across; a huge, complex idea that value can be transferred as fast as bits of data travel over the internet. There is this narrative. It’s an unwritten script. It’s a public ledger. A universal digital ledger. Mathematically open for anyone to build on top of. The API for transferring assets without a trusted third party. There will only be 21 million coins and these coins are divisible down to 8 decimal places, 2.1 quadrillion units. It is radical, the network is universal. It augments the ability to check, store, and transfer value; human or machine.

The wordsmith, Satoshi Nakamoto, coined the word in a way so that other’s could relate it to what they already know. Language evokes meaning, it is what we use to form the metaphors that bring literal meaning from one dimension to the next . The correct word choice means everything.

Bit = Byte = Data –> Transfer Data over the Internet

Coin = Currency = Exchange –> Transfer of Value

To ease the listeners understanding of the coinage, we create a metaphor that reminds them of the idea and hopes it evokes a similar idea in their mind. Then at some point, the metaphorical ladder is kicked it out, and it just is. At this point everyone agrees on and understands what you mean. Right now, we are just relating it to things we know already know, to be able to understand what it is, when really, what it actually is, is something much more profound than that. So if the listener comes from a financial background then you own shares and that mining is like doing the accounting. If they come from a computational background you talk about the merkel trees.

If someone asked you “What is the Internet?” You would respond, what do you mean what is the Internet, it just is.

If someone today said “I am going to start an Internet company”, it would sound also sound redundant. Information technology has really almost upended the meaning of tech as a whole. “What type of internet company”, you would ask. This will be analogous for fintech companies in the next 20 years, they won’t be saying I am starting a Bitcoin company, it will be something built on top of the Bitcoin network and technology, similar to all of the huge venture backed companies built on top of the internet.

Nevertheless, right now the lexicon we use when dealing with Bitcoin is the difference between riches and jail.

I am mining Bitcoin and then I can use the Bitcoin in an app called Gyft to buy a giftcard to Amazon.com and redeem it online when at check out when I want to buy something. I am printing out a digital currency that I can use to purchase gift cards and then use these gift cards to buy things on the internet. In existing financial terms it,  kinda sounds like counter-fitting and money laundering.

Here’s another example:

“A crowdsale of digital tokens” is a lot different then “Initial coin offerings”

One sounds like kickstarter, the other sounds like unregistered securities offerings.

There is this block between what we know we can use Bitcoin for and what this technology has everyone excited about. Yeah we know, we can send an unlimited amount of money to anyone, anywhere with a bitcoin wallet. But this already exists, Bitcoin just makes it much more efficient. But then you take the block chain, the universal ledger that allows for trust-less transactions, an irreversible history of every transaction, and a exponentially growing network; and there is this whole new unknown realm of applications. It is a true technological advancement. People following this are becoming more cognizant of this. People dismissing it still see a fake internet currency. The conventions and abstractions that we are  trying to imagine will be the Facebook, the Google, the Twitter, the Amazon, that are going to be created on top of Bitcoin. Why should the businesses that are building the wallets, exchanges, and financial tools that are laying down the foundation for these abstractions be subject to this kind such a strict regulatory environment? How could these regulations affect our advancement if the proposal is used as a guide for future legislation in the United States?

There is this need for a new payment system. Creditcards were not made for the internet. Look at the huge corporate security breaches at Home Depot, Target, and JP Morgan. Information that leads to identity, such as name, physical address, and card numbers all compromised.

The existing terms fall short of the potential of the underlying Blockchain technology of Bitcoin. The recent FinCEN update suggest that all companies in this space are money transmitters when the use cases for decentralized Blockchain technology go far beyond just money. They need to trust the trust-less network and what it is backed by. As Galileo once said, ” Our Universe is a “grand book” written in the language of mathematics.” Bitcoin is the next chapter, waiting to be written.

So…

  • If you are going to build a Bitcoin business do not have it involve the transmission of money
  • If you are going to, get a money transmission license. (Federal and State Laws)
  • Apply for a bank account
  • KNC and anti-money laundering reporting is a necessity
  • Use the right vocabulary and make it well documented
  • Find someone with a talent for cooperation

Bitcoin 2.0: Decentralized Asset Transfer

Bitcoin’s Killer Apps – Chain.com’s Blog –  by Adam Ludwin

Some ideas for native bitcoin apps – by Chris Dixon

Bitcoin 2.0 relates to the non-currency use cases of the Bitcoin blockchain as a distributed ledger for tracking ownership of various other assets. These have been coined as native applications or use cases that would not be possible without Bitcoin technology. These are the 0 to 1’s that will completely disrupt a number of verticals over the next coming years.

The first stage of Bitcoin was about transferring currency from A to B without C. Doing things that we already know how to do as far as transferring money or buying things but in a more efficient and effective way in terms of speed and reach because of the blockchain. The next stage is the non-currency use cases. The abstractions that provide services that would not be possible without Bitcoin and blockchain technology. Another way to think about it is building the use cases for non-monetary transactions. Moving any amount of value on an open ledger between things connected to the internet. In this sense Bitcoin 2.0 is not a BIP or a newer version of the protocol, but instead a namespace for the new use cases that will be be built on top of and embedded into the blockchain.

It turns money as we know it into bits of data on a decentralized ledger that operate as token of allowances based upon the timestamps and parameters set by the parties involved. These smart contracts can allocate digital resources such as bandwidth, storage, computation, and private keys between people and things connected to the internet. The parameters of the contract are set in code using if-then statements which predetermine what value producing assets are aware and what terms are at hand.  This can enable a whole new set of IoT micrometering and communication by passing the data through mesh networks like Zigbee. This is being recognized at the enterprise level by IBM in the form of its premium solutions partner Adept. They are building open source software that allows devices to communicate and then authenticate instructions based on real-time data that is being pulled from the blockchain.

The abstractions that use blockchain technology will remove friction in various processes by removing the middlemen necessary in current models. Combined with multisig and additional opt-in signatures to attach identity, these types of contracts will be completely transparent and automated. The hard part is conceptualizing these 2.0 abstractions and developing the various models using blockchain tools like Chain. This technology brings everyone and everything on the entire planet to the same financial grid.

2.0 applications:

Platforms

Sources

Panel at Perkins Coie and virtualcurrencyreport.com

Thoughts

How do we increase the volume the transaction capacity of the blockchain but compress entire size of the blockchain?

How do we incentivize people to run a full bitcoin node? Or how do we increase the number of bitcoin nodes?

What is the transaction equivalent in frequency, speed, and scale of tweets and likes?

The Power of The Blockchain: Future Developments and Applications

Talent hits a target others can’t hit, Genius hits a target others can’t see. – Arthur Schopenhauer

The sentiment surrounding Bitcoin has transformed. It has gone from being known as the anonymous payment mechanism to facilitate illegal transactions, to a speculative digital bubble with no intrinsic value, to what industry leaders are now calling the greatest and most disruptive technological breakthrough since the Internet.

The paradigm has shifted, entrepreneurs and world-class venture capitalist firms are teaming up to improve the efficiency and effectiveness of this new payment ecosystem through:

  • online exchanges
  • single-signature wallets
  • multi-signature wallets
  • merchant integration services
  • B2B enterprise solutions
  • mobile user applications

So far, what has been built is a secure and effective means to “pay” someone else without the need for a third party. It is simply a global transfer of ownership mechanism using a mathematically distributed digital asset that is growing in scarcity because of an increase in the awareness of its namespace and purposiveness. It is a decentralized peer-2-peer transfer of ownership protocol using a consensus timestamping mechanism, and ultimately, it works.

The underlying technology that facilitates the transfer of Bitcoins, the blockchain, the namespace not in the headlines, is what will transform almost every domestic and international vertical market. The blockchain is intrinsically powerful in that it is the backbone of this new type of open source, verifiable, distributed mechanism of transfer and record. It is the “third-party” that is needed in so many of our modern trust base models for various goods and services. It is the “universal balance sheet” used to record and verify the most recent state of various digital ownerships.

The blockchain is the foundation for so much more than just a payment network the same way the internet is the foundation for so much more than just e-mail. If the blockchain is what’s important, then “Bitcoin” is simply the global onloading mechanism. It is the first tier, an introduction to a new age of what is possible through decentralized networking and computing.

Tier 1: A Decentralized Digital Currency and Payment Network

  • Why is Bitcoin being developed in the form of multiple online exchanges and wallets based on geographical location and currency?
  • What if there was one was global exchange that allowed anyone to buy and sell any form of digital or physical asset regardless of location in world?
  • How could a global asset exchange such as this increase the security, transparency, and efficiency of global finance and trade?

Tier 2: Decentralized Networks and Development Platforms

  • Why are digital currencies the only things being built up on top of this blockchain technology?
  • What if anything that could logically be expressed in code could be implemented on a blockchain?
  • How could this type of network and platform be adopted by the global economy?

This concept has the namespace of Ethereum, Eris (on Ethereum), Colored Coins, “Smart Contracts”, Bitcoin 2.0, and “side-chains”.

The crux of this whole phenomenon is that “Bitcoin” is a currency application to the blockchain.

Ethereum wants to make it so ANY type of deal, organization, service, or system, can be decentralized. It just requires the parties involved to set the parameters expressed in code. So what will be built on top of the Ethereum network for consensus verification?

Third-party Trust Models

  • Real Estate escrow between parties can be implemented using multi signature contracts.
  • Insurance Policies can be engrained in the blockchain.

Digital Commodity Pricing

  • Commodities pegged at consensus-aggregated value

Weather Based Contracts

  • Contract premiums based on season conditions.
  • A Farmer makes an insurance agreement based upon rainfall data.

File and Data Storage

  • Proof of Existence on Bitcoin Blockchain
  • Dropbox / Box type cloud storage
  • Enterprise storage, buy space from others on the network

Smart Contracts and Escrow

  • Hedging accountability
  • No option of default

Signatures

  • Docusign
  • Multisignature to set proportional abilities on access to assets given certain number of keys

Private Keys to Share Economy Assets

  • Home and Apartment Leases
  • Home and Apartment Keys
  • Hotel Keys

-Airbnb

  • Car and Ride Leases
  • Car and Ride Keys
  • Autonomous Vehicles
  • Safety Deposit Box Keys
  • Package Delivery Key

Permits to Controlled Assets

  • Guns
  • Prescriptions
  • Timestamped verifiable access

Audit and Financial Services

  • Taxes
  • Returns

Gambling and Betting

  • Proof of a Bet
  • Undisbutable

APIs with Global Mobile Banking

  • MPesa
  • WeChat
  • Alipay

Non-Disclosure Agreements

  • Timestamped Verification

Patents, Copyrights, and Trademarks

  • Timestamped Intellectual Property Rights

Payment Processors

DAOs (Decentralized Autonomous Organizations)

  • An organization run and bound by code.

Domain Names

  • Namecoin
    • First to exist
    • ICANN Replacement

Governance

  • Opt-In
  • Laws consensus driven

Voting Systems and Records

Reputation Systems 

Online Identification Systems and Records

Medical Records

Incentivized Truth Consensus Crowdsourcing

  • Range of n inputs for a sought after accurate condition or state of n, correct answers is rewarded x

What is actually enabling individuals to trade any amount of Bitcoin regardless of their location in the world is … “mining”. 
The cryptographic time-stamping mechanism that replaces centralized authority with community consensus. The blockchain needs miners to survive. It needs nodes to verify valid blocks with valid transactions. But what if the mining becomes centralized thus, Bitcoin becomes centralized? It is now self-evident to anyone who has been following the development of this cryptocurrency that the “mining” and “the blockchain” is what really matters.

The incentivized mining mechanism is what should make this ecosystem thrive, not the companies building a new type of wallet or security feature. 
 User adoption isn’t people buying up, holding and dumping after a price increase, it’s about people mining, becoming another node therefore increasing the security and transaction volume capacity of the network. It’s them realizing they can be part of a truly empowering decentralized global network. The network effect is what makes this technology powerful, its functionality as a type of distributed consensus technology increases overtime.

So the Bitcoin blockchain is being “mined” for a currency because it’s catching on, people are starting to accept it, online and offline. There is incentive.For all of these other future blockchain applications to work, you need people to mine “ether” from the Ethereum blockchain. I don’t know if I will be able to spend “ether” anytime around the corner but the important thing is that if given the right incentives, a blockchain has the potential to become very powerful.

Create incentive for people to decentralize a type of process:

Bitcoin

Create a platform that allows people to decentralize any type of process:

Ethereum

Additional Reading on this:

http://www.wired.com/2014/03/decentralized-applications-built-bitcoin-great-except-whos-responsible-outcomes/

http://www.telegraph.co.uk/technology/news/10881213/The-coming-digital-anarchy.html

http://diginomica.com/2014/06/16/internets-disruptive-hold-tight-blockchain/

Bitcoin: The Digital Denominator

ipfs:QmeUdjeZv9Gkmxsj6mFEqW8bZk9UMwLcbrvpViajMdBnkV

Abstract

The ability to transfer and hold value is intrinsic to human nature. The classic gold standard established a common denominator for countries to participate in international trade, investment, and finance. After World War II, the Bretton Woods monetary system reformed the gold standard and made the United States dollar the centerpiece of the global monetary order. This established a standard where the value of other currencies would float compared to the dollar which was pegged at 35 dollars per ounce of gold. In 1973, in an effort to give itself more monetary freedom, the United States government chose to abandon the gold standard under the Bretton Woods system. Today there are regional monetary systems that vary in stability based upon geographical location but ultimately there is an absence of a global monetary system.

Introduction

The globalization of our economy and the outsourcing of manufacturing has shattered the Ford Model which would pay high wages to its workers so they could go out and buy the products they made domestically. American corporations now outsource production to geographical markets where there is more cost effective labor and resources. These businesses leverage the interconnectedness of the global economy to augment economic production and surplus value. Despite these capital gains at the enterprise level, wages for middle class domestic workers have remained stagnant and the United States economy is 70% based on consumer spending. Globalization and the Internet changed the demand for domestic employment and furthermore increased the demand for imports of goods and services. The global flow of information via the Internet has created exponential growth and development for companies due to the cost effectiveness of software and different types of digital technologies. Despite these advancements, there is global economic turmoil as seen in financial crisis in Europe, the bail-in in Cyprus, inflation of currencies in Latin America, and the Great Recession in the United States. A functioning global monetary system over the internet that serves as a common denominator has not been established and is needed for the recovery of the global economy. The Bitcoin protocol, the first namespace for deregulated international transfer of ownership, will serve as a common denominator for international trade and be the single greatest technological achievement thus far in the 21st century.

The Protocol

The technology to implement such a global monetary system has emerged through a combinational creativity of cryptography, mathematical proofs, global internet infrastructure, and failure in the security and transparency of current international monetary regimes. This new system, the Internet of Money, is a digital time stamped public ledger operated by a network of computers around the world. These computers verify peer-2-peer transactions without the need for a third party institution. Why is it that any transfer of ownership has to go through a third-party or fiat institution? What if there was a way to store and transfer any scarce asset of any amount on your own mobile apparatus regardless of geographical location? How could such an empowering technology become adopted and used by consumers and merchants to optimize trade efficiency, specialization between international markets, and ultimately increase the effectiveness of secure, transparent international finance? The core technology of this global financial platform is analogous to the HTTP protocol which is what the Internet and every social network is built upon. The intrinsic value of this new system, like many new network effect protocols, is in its user base. The network effect of this global financial revolution will augment the abilities of international small and medium enterprises to operate in a free global market.

The Potential

Many industries have been turned upside by the digitization of content over the Internet. Blockbuster Video was replaced by Netflix, Barnes & Nobles lost considerable market share to Amazon, and this new exchange technology has even more disruptive potential in almost every industry. By the year 2020, there will be 5 billion people connected to the internet. These people will be able to share their thoughts, moments, projects in a globally connected world. With existing international financial regimes, the unbanked in developing countries will be unable to reap the benefits of an interconnected global economy. Bitcoin will empower developing countries to leap into a new global economy. It will also enable developed countries to find new market channels in e-commerce and furthermore increase the revenue per user in international ventures.

The Blockchain and Bitcoin

To understand why a global deregulated public ledger will be effective for international trade, we have to look at the block chain, the core technology of bitcoin. The block chain is as intrinsic to bitcoin as the HTTP protocol is intrinsic to the Internet. The block chain is a timestamp server that prevents the double-spending of bitcoin by giving computational proof that the network of servers verified the original transfer of ownership. The first application that utilizes the block chain transfer of ownership is the in form of a digital currency. This namespace for this application is Bitcoin. Bitcoin is a non-fiat digital crypto currency and payment network operated by computers around the world that verify peer-2-peer transactions on a public ledger. Bitcoin is analogous to the light bulb in relation to the electrical grid. There are much more intricate and coupled applications that are built on the electrical grid such as water systems, defense protocols, and communication networks. However, the incandescent light bulb was the on loading mechanism in what would ultimately substitute candles and transform into a digitally connected globe. The development of these other technologies happened over the course of a century but ultimately electricity was implemented and served as self-evident. The ability to move value electronically without counter parties and without IOUs and promises is very useful. Bitcoin is the first digital verifiable proof of ownership without the need for a third party institution. The current transfer system that is in place depends on a third party bank or fiat institution to know the identities of the parties involved and keep transactions hidden.
20140521-094524-35124233.jpg

This new distributed system is built on the block chain that detaches the identity of the parties involved but publishes every transaction to verify by the network of computers.

The Network

These computers have be known as bitcoin “miners”. The owners of these miners are compensated in bitcoin for devoting their electricity and computing power to sustain the network that verifies the transactions. When bitcoins are “mined”, it is the process of computers combining their computational ability to solve the mathematical algorithm that verifies and timestamps a digital chain of chronological transactions over the global bitcoin network. Only 21 million bitcoins will ever be mined to keep currency to a finite amount to prevent inflation. 20140521-094938-35378949.jpg
As more bitcoins are released into the market over time the difficulty of the mathematical algorithm increases and therefore more computing capacity is demanded. The difficulty of the mathematical algorithm is determined by the computing power that is outputted by the miners. It is a proportional mathematical algorithm that allows only 25 bitcoins to be mined every 10 minutes. The number of bitcoins released when a block is mined, or a block of transactions are verified, will retain a half-life so the as it gets closer to 21 million less coins are released into the market. 20140521-163723-59843022.jpgMiners are incentivized to sustain the network by being rewarded the newly created bitcoins released into the market in exchange for their devotion of electrical and computing capacity.

Transfer of Ownership

So why is this the most revolutionary technology known thus far in human history? The reason is the transfer of ownership. It is a programmable way to transfer scarce resources of any kind. The true value in block chains public ledgers is that other applications that enable the exchange of scarce digital assets can be built on this protocol. These block chains could enable real time digital auctions for analog assets such as a parking spot or a share economy physical asset. Any type of transaction where party A can transfer ownership to party B without the need for party C. People connected to the internet in Africa, Asia, India, and South America will be able to participate in a global free market with a common digital denominator. The current international transactions for remittances via Western Union or other third party processors is not only inefficient with regard to time, but it also costs the parties involved higher percentage per transactions. With bitcoin, families will be able to send and receive remittances instantly over borders without having to go to a bank or payment processer. International travelers will also be able to benefit from Bitcoin by avoiding exchange rates and fees for acquiring local currency. There is no central authority or fiat distributor. As a result there is a finite number of Bitcoin therefore it will eventually become scarce and mathematically there is no way of insolvency. The intrinsic value is in the technology that enables the protocol and facilitates the distribution of any scarce asset; digital or physical. Bitcoin removes friction and barriers for the transfer of ownership. Stocks, bonds, real-estate, escrow, microloans, gambling, crowd funding and P2P contracts all will be executed on decentralized networks.

Decentralized Asset Exchange

The multiple block chain applications that will be developed over time have been referred to as colored coins or designated digital “smart contracts” by a new protocol named Ethereum. Ethereum is a platform, a scripting language, and ultimately a new decentralized system for developers around the world to build with. This can be any sort of deal, contract, exchange that can be mathematically expressed in code. It enables the parties to set the terms in a publicly verifiable and protected transaction. There is an even greater application that will emerge from these types of systems. This is the DAO, or Decentralized Autonomous Organization. Imagine a corporation 20 years from now that is completely automated, checked and balanced in its management by computer code, providing a service that is globally accessible. This is the DAO. An organization that relies on the network and the programmers pivoting with hacks that maximize the user experience and delegate operations more efficiently to the computer system. Developers around the world can instill Artificial Intelligence into a publicly traded corporation, a voting system, or even a manufacturing facility. The open source system will enable people to effectively build an organization with code, set it in motion, and delegate operations to machines and data servers around the world. The value in a decentralized distributed system such as Ethereum is that anyone with an apparatus verifying contracts is now an additional node on the network. Marc Andreesen of Andreesen Horowitz predicted that chip manufactures will soon start building chips that can support an OS and mine. 20140521-100154-36114417.jpg
An ever growing network of nodes, in every electronic device, verifying contracts between two people or within autonomous organizations. There will be an unlimited number of applications and organizations that are built on the block chain in the future.

The Promise

Bitcoin is not about price speculation. It is about the promise of the underlying technology and the effect it will have on the global economy for those who wish to embrace and develop it. Bitcoin is the forefront of disruptive technology in the digital world. It is the first application of many to the distributed consensus asset ledger. The protocol is a frictionless digital api for trading and storing scarce resources of virtually any magnitude. Is the Internet like mail, telephones, or broadcast TV? Is Bitcoin commodity, currency, property, protocol? The answer to both questions is all of the above. Many other applications of asset transfer and proof of ownership can and will be implemented with the digital signature, time stamped, public ledger(s). This is gold 2.0, the first programmable currency that lets a computer program set a transaction or series of transaction in motion. This is the first application of many that facilitate a digital exchange system that is not limited by geography.

Development

Ultimately this new technology establishes a global monetary system to replace unstable regional monetary arrangements. Since 1973, international monetary relations have been based on floating exchange rates among the major currencies. This system is outdated and needs to leverage the internet. This protocol is the answer to a new global level international monetary regime. The software engineers and venture capitalist which developed the Internet into the revolutionary technology it is today, are seeing parallels and are captivated by the potential for the applications that Bitcoin and block chain technologies will enable. It will take a couple years to develop; at its core technology by software engineers, by venture capital investments in Bitcoin startups and entrepreneurs, and by merchants and users for mass adoption. There has been a substantial amount of investment in Bitcoin in 2013 and 2014. The same venture capital interest that was surrounding the internet in 1995 is being seen around the Bitcoin ecosystem. The run rate for VC investment in Bitcoin companies is projected to double compare to 2013.

It is an exciting time for our global population in a limitless digital age that continues to exponentially grow. The block chain protocol will enhance domestic trade and global flows of trade between developed and developing countries. Bitcoin is just the first application of many for new mechanisms of transfer of ownership. It can be a common denominator for global finance by leveraging the internet and its user base. This is the internet’s 2.0 version. The first stage put all of the world’s information in your pocket on a mobile apparatus. This emerging stage puts an international programmable bank in your pocket. This is the true definition of mobile, location will be irrelevant when someone wants to buy, sell, or trade and kind of asset to any other person on the globe. The network effect will ultimately be the catalyst for the price value and market capitalization, and overall growth over the next few years. This technology will revolutionize international trade and provide a new more stable and secure global economy.