1. 程式人生 > >fabric的nodejs的sdk開發,官方balance-transfer部署及測試

fabric的nodejs的sdk開發,官方balance-transfer部署及測試

開發環境

作業系統:Ubuntu 18.04.1 LTS
軟體工具版本:

[email protected]:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer# node -v
v8.9.4
[email protected]:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer# npm -v
5.6.0
[email protected]:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer# docker -v
Docker version 18.06.1-ce, build e68fc7a
[email protected]
:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer# docker-compose -v docker-compose version 1.23.1, build b02f1306

軟體工具的版本取決於專案目錄下的package.json

"engines": {
    "node": ">=8.9.4 <9.0",
    "npm": ">=5.6.0 <6.0"
  },

如果使用虛擬機器,不能在Ubuntu和Windows的共享資料夾操作示例,會導致檔案許可權問題。要把官方示例下載到ubuntu本機的資料夾中。

下載fabric官方的示例

然後

ls

可看到fabric-samples-1.3.0
在這裡插入圖片描述

然後執行,進入專案目錄

cd fabric-samples-1.3.0/balance-transfer

執行 ./runApp.sh

進入balance-transfer專案目錄
直接執行

./runApp.sh

出現如下錯誤

gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied, mkdir '/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer/node_modules/dtrace-provider/build'
gyp ERR! System Linux 4.15.0-39-generic
gyp ERR! command "/opt/node-v8.9.4-linux-x64/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer/node_modules/dtrace-provider
gyp ERR! node -v v8.9.4
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok

說明node_modules下載出現錯誤
需要設定上網代理,然後手動npm安裝node_modules

設定上網代理(搭梯子)

export http_proxy=http://192.168.10.158:1080

在192.168.10.158,開啟上網代理,並啟用本地埠1080,允許來自區域網的連線

測試代理設定是否成功

出現如下資訊

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

手動npm安裝

刪除專案目錄下的node_modules

rm -r node_modules

需要設定上網代理,然後執行命令

npm install --unsafe-perm=true

啟動nodejs的服務端

在啟動服務端前需要刪除上網代理

export -n http_proxy

執行命令

PORT=4000 node app

即可成功啟動服務端

[2018-11-18 23:59:07.860] [INFO] SampleWebApp - ****************** SERVER STARTED ************************
[2018-11-18 23:59:07.862] [INFO] SampleWebApp - ***************  http://localhost:4000  ******************
(node:34938) DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition instead

說明啟動成功

使用 ./testAPIs.sh進行介面測試

在專案目錄執行

./testAPIs.sh

POST request Enroll on Org1  ...

{"success":true,"secret":"","message":"Jim enrolled Successfully","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4NzksInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE1NDI2MTM4Nzl9.nEsR5xVG5l3DmLBhanCIq1KPQq1t0YDQV6udyoluD94"}

ORG1 token is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4NzksInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE1NDI2MTM4Nzl9.nEsR5xVG5l3DmLBhanCIq1KPQq1t0YDQV6udyoluD94

POST request Enroll on Org2 ...

{"success":true,"secret":"","message":"Barry enrolled Successfully","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4ODEsInVzZXJuYW1lIjoiQmFycnkiLCJvcmdOYW1lIjoiT3JnMiIsImlhdCI6MTU0MjYxMzg4MX0.qjaSpwtITLz0TGCpSf_-rt8FMKDhoBwyYDvW6Gz8Hwk"}

ORG2 token is eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4ODEsInVzZXJuYW1lIjoiQmFycnkiLCJvcmdOYW1lIjoiT3JnMiIsImlhdCI6MTU0MjYxMzg4MX0.qjaSpwtITLz0TGCpSf_-rt8FMKDhoBwyYDvW6Gz8Hwk


POST request Create channel  ...

{"success":true,"message":"Channel 'mychannel' created Successfully"}

POST request Join channel on Org1

{"success":true,"message":"Successfully joined peers in organization Org1 to the channel:mychannel"}

POST request Join channel on Org2

{"success":true,"message":"Successfully joined peers in organization Org2 to the channel:mychannel"}

POST Install chaincode on Org1

{"success":true,"message":"Successfully installed chaincode"}

POST Install chaincode on Org2

{"success":true,"message":"Successfully installed chaincode"}

POST instantiate chaincode on Org1



POST invoke chaincode on peers of Org1 and Org2

說明可以實現部分功能,但是instantiate chaincode on Org1,出現錯誤

手動post鏈碼初始化

接下來,使用手動命令列進行鏈碼的初始化,需要拷貝org1的token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4NzksInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE1NDI2MTM4Nzl9.nEsR5xVG5l3DmLBhanCIq1KPQq1t0YDQV6udyoluD94

curl -s -X POST
http://localhost:4000/channels/mychannel/chaincodes
-H “authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4NzksInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE1NDI2MTM4Nzl9.nEsR5xVG5l3DmLBhanCIq1KPQq1t0YDQV6udyoluD94”
-H “content-type: application/json”
-d “{
“chaincodeName”:“mycc”,
“chaincodeVersion”:“v0”,
“chaincodeType”: “$LANGUAGE”,
“args”:[“a”,“100”,“b”,“200”]
}”

執行結果

{"success":true,"message":"Successfully instantiate chaincode in organization Org1 to the channel 'mychannel'"}

說明鏈碼初始化成功,之後進行查詢驗證

手動post查詢已初始化鏈碼

拷貝org1的token,執行命令

curl -s -X GET
http://localhost:4000/channels/mychannel/chaincodes?peer=peer0.org1.example.com
-H “authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDI2NDk4NzksInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Ik9yZzEiLCJpYXQiOjE1NDI2MTM4Nzl9.nEsR5xVG5l3DmLBhanCIq1KPQq1t0YDQV6udyoluD94”
-H “content-type: application/json”

執行後返回結果

["name: mycc, version: v0, path: github.com/example_cc/go"]

說明查詢成功

相關推薦

fabric的nodejs的sdk開發官方balance-transfer部署測試

開發環境 作業系統:Ubuntu 18.04.1 LTS 軟體工具版本: [email protected]:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer# node -v

[開源地址] 放棄Flink.NET5.0開發CSharpFlink簡要設計、部署二次開發說明。

github地址:https://github.com/wxzz/CSharpFlinkgitee地址:https://gitee.com/wxzz/CSharpFlink  1 概述及背景       我們有一個全國性質的面向工業的公

Hystrix已經停止開發官方推薦替代專案Resilience4j

隨著微服務的流行,熔斷作為其中一項很重要的技術也廣為人知。當微服務的執行質量低於某個臨界值時,啟動熔斷機制,暫停微服務呼叫一段時間,以保障後端的微服務不會因為持續過負荷而宕機。本文介紹了新一代熔斷器Resilience4j如何使用。     譯者注:Hystrix官方已經停止開發

balance transfer 解析api深度追蹤(三)加入通道

一 程式碼解析 var util = require(‘util’); var path = require(‘path’); var fs = require(‘fs’); var Peer = require(‘fabric-client/lib/Peer.

Extjs上傳附件實戰開發實現批量上傳線上預覽功能(二)

SWFUpload的使用:         SWFUpload採用czpae86的UploadPanel二次開發,在此鳴謝。         SWFUpload下載最新版本swfupload.swf.v2.5.0.beta3.2.zip,你會發現資料夾裡只有swfuploa

Kafka集群部署測試

str conn 單位 大數據 list compress baseline 類型 消費者 題記 眼下我們對大數據進行研究方向以Spark為主,當中Spark Streaming是能夠接收動態數據流並進行處理。那麽Spark Streaming支持多源的數據發送端

學習手記-基於iTOP4412開發板NFS服務器搭建測試

udp 都是 使用 共享目錄 none padding rgb 安裝 通訊 NFS特點:1)基於UDP/IP2)功能和網盤基本上差不多,但性能沒那麽強。NFS服務器搭建步驟:在ubantu上安裝nfs軟件:nfs-kernel-server配置文件1)打開配置文件:/etc

哈工大LTP部署測試Demo

#coding: utf-8 import os from pyltp import SentenceSplitter from pyltp import Segmentor from pyltp import Postagger from pyltp import Nam

ansible安裝部署測試

(1)下載pip(2)解壓安裝解壓下載的檔案(windows下只用解壓工具解壓如RAR,Linux下終端輸入tar -xf pip-9.0.1.tar.gz,即tar -xf 檔名),進入解壓後的資料夾中,調出命令列視窗或者終端,windows下輸入python setup.

Linux下Eclipse安裝配置OpenCV2.4.8用C++呼叫OpenCV測試例項

首先從官網上下載安裝opencv,安裝教程可以從網上搜索一下,需要用到cmake。然後在Eclipse中配置opencv,目的在於讓其找到opencv的庫,就是g++ test.cpp -o test -I .........................-l.....

Hive 安裝部署測試

標籤(空格分隔): hive 1) Hive 如何配置與Hadoop 關聯,進行建立表,載入資料測試 2) 在Linux下安裝MySQL資料庫 3) 配置Hive元資料儲存在MySQL中,檢視相關元資料表資訊 4) 熟悉基本的DML和DDL語句(

【JIRA、Confluence中文官方技術部落格】分享JIRA、Confluence、Bamboo等Atlassian產品的安裝部署使用技巧營造全面高效的學習交流空間。上atlassian.csdn.net下載享用,諮詢QQ:2714137330

分享JIRA、Confluence、Bamboo等Atlassian產品的安裝部署及使用技巧,營造全面高效的學習交流空間。上atlassian.csdn.net下載享用,諮詢QQ:2714137330...

linux開發腳本自動部署監控

linux開發 標準 bin systemctl eve 共享 connect name weight linux開發腳本自動部署及監控 開發腳本自動部署及監控一、編寫腳本自動部署反向代理、web、nfs;要求:1、部署nginx反向代理三個web服務,調度算法使用加權

使用IDEA 開發SpringMaven-->並且部署到 tomcat

創建 https mave nsh div 兩個 detail ring shu 參考兩個博客: 1.如何創建Spring MVC項目。https://www.jianshu.com/p/2101d176555b 2. 如何部署。http://blog.csdn.net/a

es6+require混合開發兼容es6 moduleimport,export之 加載css公用date-main

plugins symbol 默認參數 安裝插件 alt 路徑 目的 編譯參數 row 大家好!上篇文章已經介紹了搭建文件夾,以及加載js文件。現在講一下加載css ,以及對baseUrl的理解 1.對項目結構的認知 一個項目的結構是根據項目的架構來決定的,當然也可以做到更

走進自動化運維之Ansible服務部署附帶(參數模塊)詳解!

輸入 epel源 檢測 鏈接文件 日誌輸出 運維 介紹 講解 book 何為Ansible: 簡單的自動化運維管理工具,不需要配置代理工具,基於Python研發。 Ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ans

Android開發--Kotlin初體驗java轉Kotlin程式碼異常排除

Kotlin火了一段時間了,近段關於java版權的官司谷歌也輸了。趁著最近有時間,瞭解下Kotlin。為了更方便檢視與java開發的區別,決定拿一個小專案直接改成Kotlin程式碼。 看別人部落格的時候發現AS自帶有Java轉Kotlin的工具,於是,我們可以很方便的使用快

balance transfer程式碼解析api深度追蹤(五)初始化鏈碼

一程式碼解析 var path = require(‘path’); var fs = require(‘fs’); var util = require(‘util’); var hfc = require(‘fabric-client’); var Peer

balance transfer程式碼解析api深度追蹤(六)執行鏈碼

一程式碼解析 var path = require(‘path’); var fs = require(‘fs’); var util = require(‘util’); var hfc = require(‘fabric-client’); var Peer

balance transfer程式碼解析api深度追蹤(七)查詢交易

一程式碼解析 var queryChaincode = function(peer, channelName, chaincodeName, args, fcn, username, org) { var channel = helper.getChannelF