开发步奏:

1.创建教育联盟

2.区块链服务平台自动生成通道id

3.区块链网络服务人员通过命令行在区块链网络中创建对应通道

4.创建相关教育组织

5.邀请相关组织加入联盟

6.区块链网络管理人员通过命令行在区块链网络创建组织并加入通道

7.教育组织相关开发人员通过区块链网络进行系统开发

实现功能:

联盟管理

组织管理

联盟邀请

证书下载

实现联盟相关组织签名同意机制、实现智能合约在线上传

其他需求:

1、把区块链显示仪表盘的接口实现换成Java的(目前:node.js)

2、Java查看区块链信息的api接口 ------------- blockWalker

借鉴腾讯区块链平台搭建思想

①创建联盟

②创建网络(选择区块链引擎[Fabric、Bcos、TrustSQL])

=======================> ③选择区块链类型:私有链、公有链 =====> 创建对应channel

④设置网络信息 ------> 邀请组织(绑定channel中的org、peer)

智能合约部分

运行在docker容器里面,如果需要调试只能通过打日志log方式

一个合约,就是一个用户用go/java/ node编写的文件(包括:字符,方法,返回信息)

在区块中 (chaincode目录下),一个合约只能对应一个目录

用户上传的智能合约都是存放在hyperledger安装的以下目录:(注:src目录结构之前的是用户自定义安装目录结构)

/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/chaincode

下面目录有用go/java/node语言开发智能合约的代码

下面网址可以查看channel跟存入的数据等(一个合约跟一个channel会生成一个库)

一个channel下可以安装多个合约,每个合约都会生成一个数据库

安装合约

命令行代码

解释:

-n : 合约名称

-v:合约版本

-p:合约所在目录

说明:

合约所在目录从github.com开始,因为前面会自动从根目录(opt)目录层拼上路径

安装后,状态查看

实例化合约

实例化操作是会存到区块链上的,需要指定是在哪个channel里面上传区块。

指令:

说明:

  -n、-v跟上面指令相同

  -o:指定order的节点 //上块操作都必须指定order节点

  --tls --cafile:指定tls证书 //保证数据的安全性

  -c:执行方法名参数 //-c '{"Args":["init"]}'

  -P:指定倍数策略 //上面指令只装一台节点

实例化后,状态查看

实例化完整之后,可以触发合约

往合约里面上传一条数据【invoke命令】

查询刚刚上传的数据【调用自定义的合约方法】

调用自定义的query方法,查询结果

通过create database查看上传的数据

合约代码调试(log打印方式)

升级合约

情景:增加新功能、有新的优化等

注意:不需要再实例化

1、修改、

2、重新安装当前合约(版本更改2.0)

3、调用升级指令(会在区块链上生成一个区块)

  a、升级之前先查询当前channel区块信息

  结果:高度 = 9

  b、执行升级指令

  c、升级之后再查询一次channel区块信息,看height增加了没有

  注意:更新之后,调用原来合约的查询方法,得到的都是最新数据,原来的版本数据作废

合约里对私有数据(字段)处理【只能指定人查看】

使用private data

1、修改合约代码

调用api存储和取值时,换成保存私有数据的api

2、定义一个json

说明:

name:私有字段名称

policy:策略(允许哪些组织机构访问)

requiredPeerCount:除了倍数节点以外,哪些节点还可以作为私有数据的存储备份

maxPeerCount:私有数据备份的最大数量

blockToLive:私有数据存储上链之后,增加?个块,当前私有数据消失(0:永远不消失)

memberOnlyRead:只有当前定义的组织机构成员可以访问

3、指定实例化合约的路径

说明:所有的策略都是在实例化的时候指定的

channel部分

创建channel

方法一、服务器命令行创建

方法二、Java sdk 创建

1、在服务器生成tlx证书文件

命令: configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel-artifacts/sunsheen.tx -channelID sunsheen

说明:红色部分是证书名

在first-network目录下面执行当前命令

查看当前生成的证书

2、将证书文件下载到本地

channel-artifacts目录下....

3、编写userContext类;编写FabricClient类;测试

FabricClient:

上面获取channel方法需要修改

测试:

优化:

先创建channel,返回后再加入peer跟order ...

查看新创建的channel

问题点:

1、docker没有正常启动 ---- > docker ps

· 命令查看,重新启动

生成tx证书

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel-artifacts/ws.tx -channelID ws

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel-artifacts/sunsheen.tx -channelID sunsheen

通过生成的证书创建channel

/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/fabric-ca-server/ca-cert.pem

/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem

/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

/home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem

peer channel create -o orderer.example.com:7050 -c testChannel -f ./channel-artifacts/testChannel.tx --tls --cafile /home/ubuntu/gopath/src/github.com/hyperledger/fabric-samples/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

peer channel fetch config config_block.pb -o orderer.example.com:7050 -c testchainid

ideal:

阿里有区块链API,下下来,直接调用。

https://help.aliyun.com/document_detail/141372.html?spm=a2c4g.11186623.6.606.281c379evInTeZ

链码里不写业务  不同的业务控制接口

hyperledger fabric 智能合约开发的更多相关文章

  1. Hyperledger Fabric 智能合约开发及 fabric-sdk-go/fabric-gateway 使用示例

    前言 在上个实验 Hyperledger Fabric 多组织多排序节点部署在多个主机上 中,我们已经实现了多组织多排序节点部署在多个主机上,但到目前为止,我们所有的实验都只是研究了联盟链的网络配置方 ...

  2. 使用IBM Blockchain Platform extension开发你的第一个fabric智能合约

    文章目录 安装IBM Blockchain Platform extension for VS Code 创建一个智能合约项目 理解智能合约 打包智能合约 Local Fabric Ops 安装智能合 ...

  3. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  4. 智能合约开发环境搭建及Hello World合约

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...

  5. 智能合约开发solidity编程语言开发一个以太坊应用区块链投票实例

    智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ...

  6. NEO智能合约开发(二)再续不可能的任务

      NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试.   鉴权合约比较麻 ...

  7. EOS智能合约开发(四):智能合约部署及调试(附编程示例)

    EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ...

  8. EOS智能合约开发(三):EOS创建和管理账号

    没有看前面文章的小伙伴可以看一下 EOS智能合约开发(一):EOS环境搭建和启动节点 EOS智能合约开发(二):EOS创建和管理钱包 创建好钱包.密钥之后,接下来你就可以创建账号了,账号是什么?账号保 ...

  9. 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明

    以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...

随机推荐

  1. Java基础高级篇 NIO

    nio模型与io模型的对比 netty 是什么 怎么使用

  2. webgl实现发光线框(glow wireframe)效果

    在之前这篇文章, WebGL 单通道wireframe渲染 我们介绍了webgl如何实现单通道wireframe的效果. 本篇文章就是在此技术原理基础之上,来实现发光的wireframe效果. 要实现 ...

  3. SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解

    SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...

  4. C#设计模式之7-桥接模式

    桥接模式(Bridge Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/401 访问. 桥接模式属于结构 ...

  5. CSS 点击img 或者 div 增加抖动(shake)效果

    一般使用场景: 登录的错误验证 或者 强提醒 template 部分 <img id="barcode" :class="{ shaking: toShake}&q ...

  6. 编译原理 First集和Follow集的求法

    转载地址 https://blog.csdn.net/Alexander_Frank/article/details/51280798 自上而下分析: FIRST集求法 First集合最终是对产生式右 ...

  7. vs2017引用vue组件中文乱码

    原因:文件默认编码格式为ASNI编码,需要改成UTF-8编码 解决方案: ①用记事本打开component.js文件 ②另存文件,修改编码为UTF-8编码,保存

  8. Kruscal算法求图的最小生成树

    Kruscal算法求图的最小生成树 概述   和Prim算法求图的最小生成树一样,Kruscal算法求最小生成树也用到了贪心的思想,只不过前者是贪心地选择点,后者是贪心地选择边.而且在算法的实现中,我 ...

  9. unity探索者之UGUI图片描边

    版权声明:本文为原创文章,转载请声明https://www.cnblogs.com/unityExplorer/p/13524270.html 自从UGUI出现之后,我就已经放弃使用NGUI了,原因不 ...

  10. 转行做程序员,培训or自学?过来人亲身经历良心分享

    大家好,我是良许. 熟悉我的朋友应该知道我是学机械出身的,但是毕业后就自学转行成了一名 Linux 应用开发工程师了.我之前也做了几个跟转行相关的视频,有兴趣的小伙伴可以去看看. 在本文里,我将给大家 ...