You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fixed broken links and formatted node-sdk documents. Copied new images
into images folder in both docs and nodeSDK folder to make images working
from both github and readthedocs. This is a duplicate effort while
submitting changes on these images.
https://jira.hyperledger.org/browse/FAB-406
Change-Id: Ia62ffcc602617574f9e685cfa3b44a3873877a84
Signed-off-by: rameshthoomu <[email protected]>
In the diagram above, the blue boxes are Hyperledger fabric components and the green boxes are application developer components. Each outer box represents a separate process.
19
19
@@ -24,14 +24,16 @@ The **Standalone Application** may be developed in Node.js by using the Hyperled
24
24
25
25
The **SDK** interacts with a **Peer** process. If the Peer process fails, the Node.js Client SDK can fail-over to another Peer as shown by the dotted line from the Node.js Client SDK to another Peer.
26
26
27
-
This interaction with the Peer consists of submitting transactions to the blockchain. There are three types of transactions:
28
-
* deploy - to deploy developer's chaincode as depicted by the green **CC1** boxes in the diagram;
29
-
* invoke - to execute a chaincode function which changes the state of the *blockchain database*;
27
+
This interaction with the Peer consists of submitting transactions to the blockchain. There are three types of transactions:
28
+
29
+
* deploy - to deploy developer's chaincode as depicted by the green **CC1** boxes in the diagram;
30
+
* invoke - to execute a chaincode function which changes the state of the *blockchain database*;
30
31
* query - to execute a chaincode function which may return state information related to the *blockchain database*.
31
32
32
33
The **SDK** also interacts with a **Membership Services** process. In fact, if security is enabled in the Peer (strongly recommended), the Node.js client SDK must interact with Membership Services first in order to retrieve *credentials* which are then used to interact with the Peer. These *credentials* consist of certificates as described in [Membership Services](membership-services.md).
33
34
34
35
The interaction with the Membership Services consists of:
36
+
35
37
* register - to indicate a new user to the blockchain
36
38
* enroll - to get access to the blockchain
37
39
@@ -41,14 +43,14 @@ The interaction with the Membership Services consists of:
41
43
The following diagram provides an overview of the major components of Hyperledger fabric for the web application developer.
42
44
43
45
At a high-level, you can think of the Block Chain as a database with which the web application interacts; therefore, it is similar to the following topology.
In the diagram above, the blue boxes are Hyperledger fabric components and the green boxes are application developer components. Each outer box represents a separate process.
52
55
53
56
The browser interacts with the developer's Node.js web application using the Hyperledger fabric's Node.js client SDK. The SDK handles all interactions with other Hyperledger fabric components in the same manor as described in the [SDK interactions](#sdk-interactions) section of [Standalone Application](#standaloneApp).
Copy file name to clipboardexpand all lines: docs/nodeSDK/node-sdk-indepth.md
+34-33
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,12 @@ The Hyperledger fabric Client (HFC) SDK provides a powerful and easy to use API
4
4
5
5
## Installing only the SDK
6
6
7
-
If you are an experienced node.js developer and already have a blockchain environment set up and running elsewhere, you can set up a client-only environment to run the node.js client by installing the HFC node module as shown below. This assumes npm version 2.11.3 and node.js version 0.12.7 are already installed.
8
-
7
+
If you are an experienced node.js developer and already have a blockchain environment set up and running elsewhere, you can set up a client-only environment to run the node.js client by installing the HFC node module as shown below. This assumes npm version 2.11.3 and node.js version 0.12.7 are already installed.
8
+
9
9
* To install the latest HFC module of Hyperledger fabric
10
+
10
11
```
11
-
npm install hfc
12
+
npm install hfc
12
13
```
13
14
14
15
### Terminology
@@ -49,7 +50,8 @@ The following is a high-level description of the HFC objects (classes and interf
49
50
50
51
HFC was designed to support two pluggable components:
51
52
52
-
1. Pluggable `KeyValStore` key value store which is used to retrieve and store keys associated with a member. The key value store is used to store sensitive private keys, so care must be taken to properly protect access.
53
+
1. Pluggable `KeyValStore` key value store which is used to retrieve and store keys associated with a member. The key value store is used to store sensitive private keys, so care must be taken to properly protect access.
54
+
53
55
**IMPORTANT NOTE**: The default KeyValStore is file-based. If multiple instances of a web application run in a cluster, you must provide an implementation of the KeyValStore which is used by all members of the cluster.
54
56
55
57
2. Pluggable `MemberServices` which is used to register and enroll members. Member services enables hyperledger to be a permissioned blockchain, providing security services such as anonymity, unlinkability of transactions, and confidentiality
@@ -63,40 +65,40 @@ up the chaincode project outside of your Hyperledger fabric source tree to inclu
63
65
following instructions will demonstrate how to properly set up the directory
64
66
structure to deploy *chaincode_example02* in network mode.
65
67
66
-
The chaincode project must be placed under the `$GOPATH/src` directory. For
The chaincode project must be placed under the `$GOPATH/src` directory. For example, the [chaincode_example02](https://github.com/hyperledger/fabric/blob/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go)
69
69
project should be placed under `$GOPATH/src/` as shown below.
cd $GOPATH/src/github.com/chaincode_example02
74
-
curl GET https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go > chaincode_example02.go
cd $GOPATH/src/github.com/chaincode_example02
74
+
curl GET https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go > chaincode_example02.go
75
75
```
76
76
77
77
After you have placed your chaincode project under the `$GOPATH/src`, you will need to vendor the dependencies. From the directory containing your chaincode source, run the following commands:
78
78
79
79
```
80
-
go get -u github.com/kardianos/govendor
81
-
cd $GOPATH/src/github.com/chaincode_example02
Now, execute `go build` to verify that all of the chaincode dependencies are
87
87
present.
88
88
89
89
```
90
-
go build
90
+
go build
91
91
```
92
92
93
93
#### 'dev' mode
94
94
For deploying chaincode in development mode see [Writing, Building, and Running Chaincode in a Development Environment](../Setup/Chaincode-setup.md).
95
95
The chaincode must be running and connected to the peer before issuing the `deploy()` from the Node.js application. The hfc `chain` object must be set to dev mode.
96
+
96
97
```javascript
97
98
chain.setDevMode(true);
98
99
```
99
100
The deploy request must include the `chaincodeName` that the chaincode registered with the peer. The built-in chaincode example checks an environment variable `CORE_CHAINCODE_ID_NAME=mycc` when it starts.
101
+
100
102
```json
101
103
var deployRequest = {
102
104
chaincodeName: 'mycc',
@@ -112,11 +114,11 @@ If you wish to configure TLS with the Membership Services server, the following
112
114
- Modify `$GOPATH/src/github.com/hyperledger/fabric/membersrvc/membersrvc.yaml` as follows:
To configure the peer to connect to the Membership Services server over TLS (otherwise, the connection will fail).
@@ -140,19 +142,18 @@ To configure the peer to connect to the Membership Services server over TLS (oth
140
142
- Copy `/var/hyperledger/production/.membersrvc/tlsca.cert` to `$GOPATH/src/github.com/hyperledger/fabric/sdk/node`.
141
143
142
144
*Note:* If you cleanup the folder `/var/hyperledger/production` then don't forget to copy again the *tlsca.cert* file as described above.
143
-
144
-
145
-
146
-
147
145
148
146
### Troublingshooting
149
147
If you see errors stating that the client has already been registered/enrolled, keep in mind that you can perform the enrollment process only once, as the enrollmentSecret is a one-time-use password. You will see these errors if you have performed a user registration/enrollment and subsequently deleted the cryptographic tokens stored on the client side. The next time you try to enroll, errors similar to the ones below will be seen.
150
148
151
-
```
149
+
```
152
150
Error: identity or token do not match
153
-
```
154
-
```
151
+
152
+
```
153
+
154
+
```
155
155
Error: user is already registered
156
-
```
156
+
157
+
```
157
158
158
159
To address this, remove any stored cryptographic material from the CA server by following the instructions [here](https://github.com/hyperledger/fabric/blob/master/docs/Setup/Chaincode-setup.md#removing-temporary-files-when-security-is-enabled). You will also need to remove any of the cryptographic tokens stored on the client side by deleting the KeyValStore directory. That directory is configurable and is set to `/tmp/keyValStore` within the unit tests.
0 commit comments