Hyperledger -超级账本 学习报告

Hyperledger -超级账本 学习报告

 

一、什么是区块链?

 

区块链的基本原理,基本组件包括:

交易:对账本状态的改变;

区块:记录交易和状态,是对当前账本状态的一次确认;

链:状态变化的日志记录。

把区块链作为一个状态机,则每次交易就是试图改变一次状态,每次生成区块就是参与者对于其中包括的所有交易改变状态的结果确认。

 

目前区块链的三种发展项目:

 

分类:

公开(public):任何人都可以参与使用和维护,典型的如比特币区块链,信息是完全公开的

 

引入许可机制后,产生私有(private)链和联盟链(consortium),

私有链:集中管理者进行限制,只能得到内部少数人可以使用,信息不公开。

联盟链:介于公开链和私有链之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如银联组织。

 

 

二、什么是hyperledger

2015 年 12 月,Linux 基金 会牵头,联合 30 家初始成员共同 宣告 了Hyperledger 项目的成立。

该项目的出现,实际上宣布区块链技术已经不单纯是一个开源技术了,已经正式被主流机构和市场认可;同时,Hyperledger 首次提出和实现的完备权限管理、创新的一致性算法和可拔插的框架,对于区块链相关技术和产业的发展都将产生深远的影响。

 

目前有fabric和sawtooth Lake两个子项目。

fabric:包括 fabric 和 fabric-api,目标是区块链的基础核心平台,支持 pbft 等新的共识机制,支持权限管理,最早由 IBM 和 DAH 发起。

sawtooth Lake:包括 arcade、core、dev-tools、validator、mktplace 等。是 Intel 主要贡献和主导的区块链平台,支持全新的共识机制 Proof of Elapsed Time(PoET)。

 

 

三、hyperledger fabric 项目的安装部署。

 

系统:Linux最新版,eg.ubuntu16.04就可以 ,官网可下。

①安装docker

ubuntu 高级版本自带安装包,执行命令

# apt-get -y install docker.io

#sudo docker version  //查看版本

 

②安装docker-compose

首先,安装 pip

# sudo aptitude install python-pip

安装 docker-compose

# sudo pip install docker-compose

 

③下载相关docker镜像,并进行配置。镜像地址https://hub.docker.com/r/yeasy/hyperledger

当然也可以到Github官方下载。

# docker pull yeasy/hyperledger:latest

# docker tag yeasy/hyperledger:latest hyperledger/fabric-baseimage:latest

# docker pull yeasy/hyperledger-peer:latest

# docker pull yeasy/hyperledger-membersrvc:latest

 

④使用 PBFT 模式

PBFT 是经典的分布式一致性算法,也是 hyperledger 目前最推荐的算法,该算法至少需要 4个节点。

首先,下载 compose 文件。

#  git clone https://github.com/yeasy/docker-compose-files

此时目录下多了一个docker-compose-files文件夹。

 

 

(1)采用CLI测试

手动启动docker-daemon

#service docker stop

#sudo docker daemon --api-cors-header="*" -H tcp://0.0.0.0:2375 -H unix:///var/run/do

cker.sock

进入 hyperledger 项目,启动集群。

# cd docker-compose-files/hyperledger

# docker-compose up

此时生成四个节点,vp0,vp1,vp2,vp3

进入节点vp0

#docker exec -it vp0 bash

部署两个账户a,b分别分配100200.

#peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/

chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'

 

返回CORE_CHAINCODE_ID_NAME(一串地址)

以如下形式:

a5389f7dfb9efae379900a41db1503fea2199fe400272b61ac5fe7bd0c6b97cf10ce3aa8dd00cd7626ce02f18accc7e5f2059dae6eb0786838042958352b89fb

 

查询账户余额

#peer chaincode query -n CORE_CHAINCODE_ID_NAME -c '{"Function": "query", "Args": ["a"]}'

应当返回100

进行交易

peer chaincode invoke -n CORE_CHAINCODE_ID_NAME -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'

交易进行后 a减少10,b增加10

可再次查询验证交易结果。

 

(2)Post rest测试

 

注:POST测试可采用postman谷歌浏览器插件或各种在线POST工具进行,此处将采用curl工具,在Linux窗口进行POST操作。

 

手动启动docker-daemon

#service docker stop

#sudo docker daemon --api-cors-header="*" -H tcp://0.0.0.0:2375 -H unix:///var/run/do

cker.sock

打开hyperledger项目,启动pbft集群,生成节点

#docker-compose -f docker-compose-with-membersrvc.yml up

1、进行Rest 测试,登录用户Jim

#curl -H "Content-Type: application/json" -X  POST  --data '{"enrollId": "jim","enrollSecret": "6avZQLwcUe9b"}'  http://localhost:5000/registrar

显示如下

 

2、chaincode部署

curl -H "Content-Type: application/json" -X  POST  --data '{

"jsonrpc": "2.0",

"method": "deploy",

"params": {

"type": 1,

"chaincodeID":{

"path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02"

},

"ctorMsg": {

"function":"init",

"args":["a", "1000", "b", "2000"]

},

"secureContext": "jim"

},

"id": 1

}'  http://localhost:5000/chaincode

Response如下

{

"jsonrpc": "2.0",

"result": {

"status": "OK",

"message": "28bb2b2316171a706bb2810ec35d095f430877bf443f1061ef0f60bbe753ed440700a

5312c16390d3b30199fe9465c3b75d5944358caae01ca81ef28128a1bfb"

},

"id": 1

}

3、chaincode调用

转账,invoke调用

#curl -H "Content-Type: application/json" -X  POST  --data '{

"jsonrpc": "2.0",

"method": "invoke",

"params": {

"type": 1,

"chaincodeID":{

"name":"28bb2b2316171a706bb2810ec35d095f430877bf443f1061ef0f60bbe753ed440700

a5312c16390d3b30199fe9465c3b75d5944358caae01ca81ef28128a1bfb"

},

"ctorMsg": {

"function":"invoke",

"args":["a", "b", "100"]

},

"secureContext": "jim"

},

"id": 3

}'  http://localhost:5000/chaincode

 

Response如下:

{

"jsonrpc": "2.0",

"result": {

"status": "OK",

"message": "509b7500-96da-4411-8464-e24c61d5477d"

},

"id": 3

}

3、chaincode查询

调用query

curl -H "Content-Type: application/json" -X  POST  --data '{

"jsonrpc": "2.0",

"method": "query",

"params": {

"type": 1,

"chaincodeID":{

"name":"28bb2b2316171a706bb2810ec35d095f430877bf443f1061ef0f60bbe753ed440700a5312c16390d3b30199fe9465c3b75d5944358caae01ca81ef28128a1bfb"

},

"ctorMsg": {

"function":"query",

"args":["a"]

},

"secureContext": "jim"

},

"id": 5

}'  http://localhost:5000/chaincode

返回

 

4、区块信息查询

URL

GET localhost:5000/chain/blocks/2

#curl  http://localhost:5000/chain/blocks/2

 

 

(3)python客户端交互

利用Python客户端与hyperledger进行交互

1、安装python

#pip install hyperledger --upgrade

2、进入python客户端

#python

>>>from hyperledger.client import Client

>>>c = Client(base_url="http://localhost:5000")    

>>>c.peer_list()//返回区块链节点组成的网络信息

返回如下:

 

>>> c.block_get('2')   //获取区块信息

>>>c.chain_list()   //获取当前blockchain状态

>>>

具体API使用见 https://github.com/yeasy/hyperledger-py/blob/master/docs/api.md

 


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
由于 Hyperledger-Fabric 是一个底层的区块链框架,它的系统架构比较复杂,包括了多个组件和模块。下面是一个简化的 Hyperledger-Fabric 系统架构图: ![Hyperledger-Fabric 系统架构图](https://i.imgur.com/A8I6NuL.png) 从图中可以看出,Hyperledger-Fabric 的系统架构主要包括以下组件和模块: - 客户端(Client):客户端是区块链系统的使用者,可以通过 SDK 与区块链网络进行交互,包括提交交易、查询数据等操作。客户端可以是 Web 应用程序、移动应用程序、IoT 设备等。 - 区块链网络(Blockchain Network):区块链网络由多个 Peer 和一个 Ordering Service 组成,每个 Peer 都有自己的账本,用于保存区块链上的交易记录和状态数据。 - Peer 节点(Peer Node):Peer 节点是区块链网络的核心,它可以执行智能合约、验证交易,并将交易记录和状态数据保存到自己的账本中。Peer 节点之间可以相互通信和交互数据,还可以进行背书(Endorsement)操作,即对交易进行签名,用于确保交易的真实性和合法性。 - Ordering Service 节点(Ordering Service Node):Ordering Service 节点是区块链网络的一部分,负责将交易打包成区块,并将区块传播到所有的 Peer 节点。Ordering Service 节点可以使用不同的共识算法来处理交易,例如 Kafka、Raft 等。 - 智能合约(Smart Contract):智能合约是 Hyperledger-Fabric 的核心概念,它是一段可编程的代码,用于对交易进行处理和执行。智能合约可以使用不同的编程语言编写,例如 Go、Java、JavaScript 等。 - 认证和授权服务(Authentication and Authorization Service):认证和授权服务是用于验证客户端和 Peer 节点身份的服务,它可以使用不同的身份验证协议和技术,例如 TLS、PKI 等。 - 数据库(Database):Hyperledger-Fabric 使用不同的数据库系统来保存交易记录和状态数据,例如 LevelDB、CouchDB 等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值