Skip to content

Commit 019419d

Browse files
committed
v0.6 additions
added v1.0 preview added SDK to TOC added starter kit moved starter kit to top of TOC [ci skip] Change-Id: I20607bcd163289f0bfbdaa459952b3ae72112703 Signed-off-by: Nick Gaski <[email protected]>
1 parent adc1600 commit 019419d

File tree

3 files changed

+214
-0
lines changed

3 files changed

+214
-0
lines changed

docs/abstract_v1.md

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# HYPERLEDGER FABRIC v1.0
2+
3+
Hyperledger fabric is a platform that enables the delivery of a secure, robust, permissioned blockchain for the enterprise that incorporates a byzantine fault tolerant consensus. We have learned much as we progressed through the v0.6-preview release. In particular, that in order to provide for the scalability and confidentiality needs of many use cases, a refactoring of the architecture was needed. The v0.6-preview release will be the final (barring any bug fixes) release based upon the original architecture.
4+
5+
Hyperledger fabric's v1.0 architecture has been designed to address two vital enterprise-grade requirements – **security** and **scalability**. Businesses and organizations can leverage this new architecture to execute confidential transactions on networks with shared or common assets – e.g. supply chain, FOREX market, healthcare, etc. The progression to v1.0 will be incremental, with myriad windows for community members to contribute code and start curating the fabric to fit specific business needs.
6+
7+
## WHERE WE ARE:
8+
9+
The current implementation involves every validating peer shouldering the responsibility for the full gauntlet of network functionality. They execute transactions, perform consensus, and maintain the shared ledger. Not only does this configuration lay a huge computational burden on each peer, hindering scalability, but it also constricts important facets of privacy and confidentiality. Namely, there is no mechanism to “channel” or “silo” confidential transactions. Every peer can see the logic for every transaction.
10+
11+
## WHERE WE'RE GOING
12+
13+
The new architecture introduces a clear functional separation of peer roles, and allows a transaction to pass through the network in a structured and modularized fashion. The peers are diverged into two distinct roles – Endorser & Committer. As an endorser, the peer will simulate the transaction and ensure that the outcome is both deterministic and stable. As a committer, the peer will validate the integrity of a transaction and then append to the ledger. Now confidential transactions can be sent to specific endorsers and their correlating committers, without the network being made cognizant of the transaction. Additionally, policies can be set to determine what levels of “endorsement” and “validation” are acceptable for a specific class of transactions. A failure to meet these thresholds would simply result in a transaction being withdrawn, rather than imploding or stagnating the entire network. This new model also introduces the possibility for more elaborate networks, such as a foreign exchange market. Entities may need to only participate as endorsers for their transactions, while leaving consensus and commitment (i.e. settlement in this scenario) to a trusted third party such as a clearing house.
14+
15+
The consensus process (i.e. algorithmic computation) is entirely abstracted from the peer. This modularity not only provides a powerful security layer – the consenting nodes are agnostic to the transaction logic – but it also generates a framework where consensus can become pluggable and scalability can truly occur. There is no longer a parallel relationship between the number of peers in a network and the number of consenters. Now networks can grow dynamically (i.e. add endorsers and committers) without having to add corresponding consenters, and exist in a modular infrastructure designed to support high transaction throughput. Moreover, networks now have the capability to completely liberate themselves from the computational and legal burden of consensus by tapping into a pre-existing consensus cloud.
16+
17+
As v1.0 manifests, we will see the foundation for interoperable blockchain networks that have the ability to scale and transact in a manner adherent with regulatory and industry standards. Watch how fabric v1.0 and the Hyperledger Project are building a true blockchain for business -
18+
19+
[![HYPERLEDGERv1.0_ANIMATION](http://img.youtube.com/vi/EKa5Gh9whgU/0.jpg)](http://www.youtube.com/watch?v=EKa5Gh9whgU)
20+
21+
## HOW TO CONTRIBUTE
22+
23+
Use the following links to explore upcoming additions to fabric's codebase that will spawn the capabilities in v1.0:
24+
25+
* Familiarize yourself with the [guidelines for code contributions](CONTRIBUTING.md) to this project. **Note**: In order to participate in the development of the Hyperledger fabric project, you will need an [LF account](Gerrit/lf-account.md). This will give you single
26+
sign-on to JIRA and Gerrit.
27+
* Explore the design document for the new [architecture](https://github.com/hyperledger-archives/fabric/wiki/Next-Consensus-Architecture-Proposal)
28+
* Explore [JIRA](https://jira.hyperledger.org/projects/FAB/issues/) for open Hyperledger fabric issues.
29+
* Explore the [JIRA](https://jira.hyperledger.org/projects/FAB/issues/) backlog for upcoming Hyperledger fabric issues.
30+
* Explore [JIRA](https://jira.hyperledger.org/issues/?filter=10147) for Hyperledger fabric issues tagged with "help wanted."
31+
* Explore the [source code](https://github.com/hyperledger/fabric)
32+
* Explore the [documentation](http://hyperledger-fabric.readthedocs.io/en/latest/)

docs/starter/fabric-starter-kit.md

+170
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
# Fabric Starter Kit
2+
3+
This section describes how to set up a self-contained environment for
4+
application development with the Hyperledger fabric. The setup
5+
uses **Docker** to provide a controlled environment with all the necessary
6+
Hyperledger fabric components to support a Node.js application built with
7+
the fabric's Node.js SDK, and chaincode written in Go.
8+
9+
There are three Docker images that, when run, will provide a basic
10+
network environment. There is an image to run a single `peer`, one to run
11+
the `membersrvc`, and one to run both your Node.js application and your
12+
chaincode. See [Application Developer's Overview](../nodeSDK/app-overview.md) on how the
13+
components running within the containers will communicate.
14+
15+
The starter kit comes with a sample Node.js application ready to execute and
16+
sample chaincode. The starter kit will be running in chaincode developer mode.
17+
In this mode, the chaincode is built and started prior to the application
18+
making a call to deploy it.
19+
20+
**Note:** The deployment of chaincode in network mode requires that the
21+
Hyperledger fabric Node.js SDK has access to the chaincode source code and all
22+
of its dependencies, in order to properly build a deploy request. It also
23+
requires that the `peer` have access to the Docker daemon to be able to build
24+
and deploy the new Docker image that will run the chaincode. *This is a more
25+
complicated configuration and not suitable to an introduction to the
26+
Hyperledger fabric.* We recommend first running in chaincode development mode.
27+
28+
## Further exploration
29+
30+
If you wish, there are a number of chaincode examples near by.
31+
```
32+
cd ../../chaincode
33+
```
34+
## Getting started
35+
36+
**Note:** This sample was prepared using Docker for Mac 1.12.0
37+
38+
* Prerequisite software to install:
39+
40+
* [Docker](https://www.docker.com/products/overview)
41+
* docker-compose (may be packaged with Docker)
42+
43+
* Copy our [docker-compose.yml](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml) file to a local directory:
44+
45+
```
46+
curl -o docker-compose.yml https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml
47+
```
48+
The docker-compose environment uses three Docker images. Two are published to
49+
DockerHub. However, with the third, we provide you the source to build your own,
50+
so that you can customize it to inject your application code for development. The following [Dockerfile](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile)
51+
is used to build the base **fabric-starter-kit** image and may be used as
52+
a starting point for your own customizations.
53+
54+
```
55+
curl -o Dockerfile https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile
56+
docker build -t hyperledger/fabric-starter-kit:latest .
57+
```
58+
59+
* Start the fabric network environment using docker-compose. From a terminal
60+
session that has the working directory of where the above *docker-compose.yml*
61+
is located, execute one of following `docker-compose` commands.
62+
63+
* to run as detached containers:
64+
65+
```
66+
docker-compose up -d
67+
```
68+
**note:** to see the logs for the `peer` container use the
69+
`docker logs peer` command
70+
71+
* to run in the foreground and see the log output in the current terminal
72+
session:
73+
74+
```
75+
docker-compose up
76+
```
77+
78+
Both commands will start three Docker containers. To view the container
79+
status use the `docker ps` command. The first time this is run, the Docker
80+
images will be downloaded. This may take 10 minutes or more depending on the
81+
network connections of the system running the command.
82+
83+
```
84+
docker ps
85+
```
86+
You should see something similar to the following:
87+
88+
```
89+
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
90+
bb01a2fa96ef hyperledger/fabric-starter-kit "sh -c 'sleep 20; /op" About a minute ago Up 59 seconds starter
91+
ec7572e65f12 hyperledger/fabric-peer "sh -c 'sleep 10; pee" About a minute ago Up About a minute peer
92+
118ef6da1709 hyperledger/fabric-membersrvc "membersrvc" About a minute ago Up About a minute membersrvc
93+
```
94+
95+
* Start a terminal session in the **starter** container. This is where the
96+
Node.js application is located.
97+
98+
**note:** Be sure to wait 20 seconds after starting the network using the
99+
`docker-compose up` command before executing the following command to allow
100+
the network to initialize:
101+
102+
```
103+
docker exec -it starter /bin/bash
104+
```
105+
106+
* From the terminal session in the **starter** container execute the standalone
107+
Node.js application. The Docker terminal session should be in the working
108+
directory of the sample application called **app.js** (*/opt/gopath/src/github.com/hyperledger/fabric/examples/sdk/node*). Execute
109+
the following Node.js command to run the application:
110+
111+
```
112+
node app
113+
```
114+
In another terminal session on the host you can view the logs for the peer
115+
by executing the following command (not in the docker shell above, in a new
116+
terminal session of the real system):
117+
118+
```
119+
docker logs peer
120+
```
121+
122+
* If you wish to run your own Node.js application using the pre-built Docker
123+
images:
124+
* use the directories in the `volumes` tag under **starter** in the
125+
`docker-compose.yml` file as a place to store your programs from the host
126+
system into the docker container. The first path is the top level system
127+
(host system) and the second is created in the Docker container. If you wish
128+
to use a host location that is not under the `/Users` directory (`~` is
129+
under `/Users') then you must add that to the Docker file sharing
130+
under Docker preferences.
131+
132+
```yaml
133+
volumes:
134+
- ~/mytest:/user/mytest
135+
```
136+
* copy or create and edit your application in the `~/mytest` directory as
137+
stated in the `docker-compose.yml` `volumes` tag under **starter** container.
138+
* run npm to install Hyperledger fabric Node.js SDK in the `mytest` directory:
139+
140+
```
141+
npm install /opt/gopath/src/github.com/hyperledger/fabric/sdk/node
142+
```
143+
* run the application from within the **starter** Docker container using the
144+
following commands:
145+
146+
```
147+
docker exec -it starter /bin/bash
148+
```
149+
once in the shell, and assuming your Node.js application is called `app.js`:
150+
151+
```
152+
cd /user/mytest
153+
node app
154+
```
155+
* To shutdown the environment, execute the following **docker-compose** command
156+
in the directory where the *docker-compose.yml* is located. Any changes you made
157+
to the sample application or deployment of a chaincode will be lost. Only
158+
changes made to the shared area defined in the 'volumes' tag of the **starter**
159+
container will persist. This will shutdown each of the containers and remove
160+
the containers from Docker:
161+
162+
```
163+
docker-compose down
164+
```
165+
or if you wish to keep your changes and just stop the containers, which will
166+
be restarted on the next `up` command:
167+
168+
```
169+
docker-compose kill
170+
```

mkdocs.yml

+12
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ pages:
1010
- Protocol Spec: protocol-spec.md
1111
- Usecases: biz/usecases.md
1212

13+
- Starter Kit:
14+
- Starter Kit: starter/fabric-starter-kit.md
15+
1316
- Installation and setup:
1417
- Chaincode or Application Developer Setup: Setup/Chaincode-setup.md
1518
- Java Chaincode Setup: Setup/JAVAChaincode.md
@@ -25,6 +28,7 @@ pages:
2528
- System Chaincode: SystemChaincodes/noop.md
2629

2730
- Fabric Developer:
31+
- v1.0 Preview: abstract_v1.md
2832
- Contributing: CONTRIBUTING.md
2933
- Getting an Account: Gerrit/lf-account.md
3034
- Gerrit: Gerrit/gerrit.md
@@ -49,6 +53,14 @@ pages:
4953
- Attributes: tech/attributes.md
5054
- Best Practices: tech/best-practices.md
5155

56+
- NodeSDK:
57+
- App-developer-env-setup: nodeSDK/app-developer-env-setup.md
58+
- App-Overview: nodeSDK/app-overview.md
59+
- Node-SDK-guide: nodeSDK/node-sdk-guide.md
60+
- Node-SDK-indepth: nodeSDK/node-sdk-indepth.md
61+
- Sample-Standalone-app: nodeSDK/sample-standalone-app.md
62+
- Sample-web-app: nodeSDK/sample-web-app.md
63+
5264
markdown_extensions:
5365
- extra
5466
- tables

0 commit comments

Comments
 (0)