推扬网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
推扬网 › 门户 ›互联网动态 › 查看内容

fabric是什么意思(Fabric教程之编写应用程序)

2020-5-2 16:12| 发布者: admin| 查看: 248| 评论: 0

摘要: 设置开发环境: 学习我们将要使用的智能合约的参数。智能合约包含各种各样的函数,可以让我们和账本进行交互。 开发可以查询和更新账本资产的应用。 完成本教程后,你应该基本了解应用程序如何与智能合约一起编 ...

Fabric教程之编写应用程序(一)

  1. 设置开发环境:
  2. 学习我们将要使用的智能合约的参数。智能合约包含各种各样的函数,可以让我们和账本进行交互。
  3. 开发可以查询和更新账本资产的应用。

完成本教程后,你应该基本了解应用程序如何与智能合约一起编程,以及与Fabric网络上的账本进行交互。

设置开发环境

注意,我们需要按照之前的教程在本地安装好开发环境。可以参考这篇文章:

手把手教你运行Fabric网络

在我们每次运行Fabric网络之前,我们需要先把之前存在的Fabric网络给清除掉,可以使用下面的命令:

./byfn.sh down

当一切安装完成的时候,我们进入fabcar目录:

cd fabric-samples/fabcar && ls

我们可以看到下面的文件:

Fabric教程之编写应用程序(一)

我们还需要杀掉一些存在的容器:

Fabric教程之编写应用程序(一)

清除掉在缓存中存在的网络:

Fabric教程之编写应用程序(一)

如果你之前运行过本demo,可以使用下面的命令删除fabcar智能合约:

docker rmi dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba

Fabric教程之编写应用程序(一)

注册管理员用户

提示:打印CA日志对我们很有帮助。为了打印CA日志,新建一个命令行窗口,输入下面的命令:

docker logs -f ca.example.com

当运行Fabric网络的时候管理员账户被注册到CA。现在我们需要向CA服务器发送请求,获取用户的注册证书。通过下面的命令调用CA服务器:

Fabric教程之编写应用程序(一)

这个程序将会调用证书签名请求(CSR),最终输出eCert和密钥在一个新创建的文件夹中hfc-key-store 。此后,我们的app在需要的时候,将会加载这个文件。

Fabric教程之编写应用程序(一)

同样的,我们在hfc-key-store 目录下可以看到user1的相关信息。

查询账本

Fabric教程之编写应用程序(一)

首先,我们运行query.js程序,返回账本上的所有车。

Fabric教程之编写应用程序(一)

返回了10辆车。如上图所示,下面我们来深入研究query.js文件。

这里指定了通道的名字和网络终端,以及证书的位置。

var channel = fabric_client.newChannel('mychannel');
var peer = fabric_client.newPeer('grpc://localhost:7051');
channel.addPeer(peer);
var member_user = null;
var store_path = path.join(__dirname, 'hfc-key-store');
console.log('Store path:'+store_path);
var tx_id = null;

下面是我们的查询函数:

// queryCar chaincode function - requires 1 argument, ex: args: ['CAR4'],
// queryAllCars chaincode function - requires no arguments , ex: args: [''],
const request = {
 //targets : --- letting this default to the peers assigned to the channel
 chaincodeId: 'fabcar',
 fcn: 'queryAllCars',
 args: ['']
};

当应用运行的时候,将会调用peer节点上的链码,运行queryAllCars函数,什么参数也不传递。

Fabric教程之编写应用程序(一)

我们首先创建一辆车,更新的操作在invoke.js中定义。

// createCar chaincode function - requires 5 args, ex: args: ['CAR12', 'Honda', 'Accord', 'Black', 'Tom'],
// changeCarOwner chaincode function - requires 2 args , ex: args: ['CAR10', 'Barry'],
// must send the proposal to endorsing peers
var request = {
 //targets: let default to the peer assigned to the client
 chaincodeId: 'fabcar',
 fcn: '',
 args: [''],
 chainId: 'mychannel',
 txId: tx_id
};

其中有两个函数,createcar和changeCarOwner。首先,我们创建一辆车,

var request = {
 //targets: let default to the peer assigned to the client
 chaincodeId: 'fabcar',
 fcn: 'createCar',
 args: ['CAR10', 'Chevy', 'Volt', 'Red', 'Nick'],
 chainId: 'mychannel',
 txId: tx_id
};

下面我们执行node invoke.js,结果如下:

Fabric教程之编写应用程序(一)

接下来,我们使用query.js即可查询到刚才添加的car:

Fabric教程之编写应用程序(一)

 

 


鲜花

握手

雷人

路过

鸡蛋

最新评论

推荐阅读
精彩推荐

广告服务|投稿要求|禁言标准|版权说明|免责声明|手机版|小黑屋|推扬网 ( 粤ICP备18134897号 )|网站地图 | 邮箱:vayae@hotmail.com

GMT+8, 2026-11-11 04:59 , Processed in 0.133377 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部