天天看点

使用NodeJS开发Hyperledger Fabric笔记1——Get Started

入门参考文档:

https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/test_network.html

想要学习一项技术,最好的开始就是官方文档。

下载hyperledger官方的sample

# 只下载项目
git clone https://github.com/hyperledger/fabric-samples.git
           
# 全面下载
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.2 1.4.9
           

docker确认

如果你的电脑上没有安装先安装docker

sudo apt install docker.io docker-compose
#或
sudo snap install docker docker-compose
           

切换到root环境

这里注意,说明一下,在Linux Ubuntu上,后面所有操作都要在root下进行。

所以开始前先su:

开始部署第一个sample

进入到

fabric-samples/test-network

,执行:

启动fabric在docker上的服务

./network.sh up
           

创建一个channel

./network.sh createChannel
           

启动一套智能合约(链码),在hyperledger上智能合约被叫做链码,非常的奇怪,我还是喜欢eth下的智能合约叫法。

用JS或TS版本的链码

#ts
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-typescript -ccl typescript

#js
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-javascript -ccl javascript
           

测试这sample的合约

因为这里我们要用到peer等一些二进制工具与链码进交互,所以我们添加bin系统环境变量。

如下操作:

# 在root环境下操作
vi ~/.bashrc
# 在root的bashrc中增加:
export PATH=~/fabric/bin:$PATH
export FABRIC_CFG_PATH=~/fabric/config/
           

另外还需要export一些环境变量,是和sample有关的,我们不要写入bashrc中,直接在

test-network

中执行即可:

# Environment variables for Org1

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
           

为了方便,你可以在

test-network

下新建一个

envrc1

文件,然后把上面这几个

export

复制进去,之后进入到

test-network

目录后只需要执行

source ./envrc1

即可导入这些环境变量。

那为什么是1呢?因为还有2啊。在上述步骤中,你应该发现了其实这

network.sh

创建了2个docker peer节点也就是org1和org2,所以针对这两个org我们是有两套环境变量的,分指向这两个组织。

具体说这两个envrc文件里面的都是组织相关的加密文件,用于鉴权。

以下是

envrc2

# Environment variables for Org2

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051
           

开始读写合约的测试

先使用org1来测试:

source ./envrc1
           

首先我们初始化一下账本,先写入一些数据:

然后我们读取一下试试:

我们会看到一堆json数据,这些就是刚刚初始化操作后的账本状态,也就是org1的资产。

接下来我们做一些转账操作:

好了,我们去看下转账后的区账本,我们用org2进行查询,所以

source ./envrc2

执行:

结果:

好的,非常完美,资产属于Christopher了,关于转账细节请查看sample项目

asset-transfer-basic/chaincode-typescript

关闭服务

测试结束,如果需要关闭sample,执行:

./network.sh down
           

继续阅读