了解使用IBM Blockchain Platform的VSCode扩展来简化开发,测试和部署智能合约的过程。完成本教程后,你将了解如何使用VSCode在本地Hyperledger Fabric网络上快速开发,演示和部署区块链应用程序。本教程假设你对Hyperledger Fabric有一些基本的了解。php
你须要安装如下内容才能使用扩展程序:html
若是你使用的是Windows,则还必须确保如下内容:前端
light
的版本。你能够经过从终端运行如下命令来检查已安装的版本:java
node --version
npm --version
yo --version
docker --version
docker-compose --version
安装必备组件后,大约须要30-45分钟才能完成。node
步骤:python
图片没法上传,有须要看原文。android
你须要作的第一件事是安装IBM Blockchain Platform VSCode扩展。为此,你须要安装最新版本的VSCode;要查看你是否拥有最新的VSCode扩展,请转到代码>检查更新(Code > Check for Updates)。若是此时VSCode崩溃(我遇到了),则可能意味着你没有最新版本。若是你的VSCode崩溃,请查看下面的故障排除部分。不然,请更新你的VSCode,完成后,单击屏幕左侧边栏中的扩展名。在顶部,在扩展市场中搜索IBM Blockchain Platform。单击Install,而后单击reload。如今你应该所有使用扩展!git
图片没法上传,有须要看原文。程序员
要建立智能合约项目:github
Shift+CMD+P
调出命令pallete
。从下拉列表中选择IBM Blockchain Platform:Create Smart Contract Project
。JavaScript
。New Folder
,而后将项目命名为所需名称。我将个人名字命名为demoContract
。Creat
,而后Open
刚刚建立的新文件夹。接下来,从下拉列表中单击添加到工做区Add to WrokSpace
。lib/my-contract.js
文件以查看智能合约代码框架。不错的工做!图片没法上传,有须要看原文。
在lib/my-contract.js
文件中,继续复制并粘贴如下代码:
'use strict';
const { Contract } = require('fabric-contract-api');
class MyContract extends Contract {
//update ledger with a greeting to show that the function was called
async instantiate(ctx) {
let greeting = { text: 'Instantiate was called!' };
await ctx.stub.putState('GREETING', Buffer.from(JSON.stringify(greeting)));
}
//take argument and create a greeting object to be updated to the ledger
async transaction1(ctx, arg1) {
console.info('transaction1', arg1);
let greeting = { text: arg1 };
await ctx.stub.putState('GREETING', Buffer.from(JSON.stringify(greeting)));
return JSON.stringify(greeting);
}
}
module.exports = MyContract;
复制代码
注意:.gifs可能与上面的智能合约不彻底匹配,但这是你如今应该在lib/my-contract.js
文件中应该拥有的那个!
让咱们来看看你刚刚定义的函数。实例化函数建立一个greeting
对象,而后使用密钥GREETING
将其存储在分类账中。transaction1
函数采用Hyperledger Fabric上下文和一个参数arg1,该参数用于存储用户定义的问候语。ctx.stub.putState
方法用于记录分类账上的greeting
,而后返回该对象。保存文件而后继续!
如今你已经建立了智能合约并了解了你已定义的功能,如今能够将其打包,以便你能够将其安装在节点设备上。
使用Shift+CMD+P
打开命令pallete
并选择包智能合约。在左侧边栏中,单击IBM Blockchain Platform图标(它看起来像一个正方形)。在左上角,你将看到全部智能合约包。若是一切顺利,你应该看到demoContract@0.0.1
。
好的,你已经完成超过一半了。如今是有趣的部分!让咱们在节点上安装这份合约!为此,你必须首先链接到Hyperledger Fabric网络。VSCode扩展附带的网络很是适合开发,它为开发和测试合约提供了最少的资源占用。
如下Docker容器在本地计算机上启动,每一个容器在网络中具备不一样的角色:Orderer,Certificate Authority,CouchDB和Peer。
要启动网络,请单击编辑器左侧的IBM Blockchain Platform扩展。这是一个看起来像正方形的图标。
LOCAL FABRIC OPS
。在LOCAL FABRIC OPS
右侧,你应该看到一个三点符号。单击该按钮,而后单击启动Fabric运行时Start Fabric Runtime
。你的扩展程序如今将提供将充当网络中节点的Docker容器。配置完成后,你应该会看到LOCAL FABRIC OPS
下的智能合约Smart Contracts
部分。
Smart Contracts
下,单击+install
。peer0.org1.examplee.com
。demoContract@0.0.1
。若是一切顺利,你应该会在右下角看到通知:已成功安装在节点peer0.org1.example.com
上就是这样!不错的工做!这是真正的考验,你的智能合约是否会正确实例化?咱们来看看......
Smart Contracts
下,你将看到一个显示实例化的部分。单击实例化+ Instantiate
。mychannel
。demoContract@0.0.1
。instantiate
。扩展将执行一些工做,而后在右下角,你应该看到合约已成功实例化。万岁!
此时,你须要开始与Fabric实例进行更密切的交互。你须要向证书颁发机构证实你能够在网络上建立数字身份。这是经过向证书颁发机构显示你的证书和私钥来完成的。
$ git clone https://github.com/horeaporutiu/VSCodeTutorialBlockchain.git
复制代码
Add folder to workspace
,将此文件夹导入VSCode工做区。找到最近克隆的文件夹VSCodeTutorialBlockchain
并双击它。IBM Blockchain Platform
扩展。LOCAL FABRIC OPS
下点击Nodes
。右键单击peer0.org1.example.com
节点。选择导出链接细节Export Connection Details
。VSCodeTutorialBlockchain
目录。若是一切顺利,你应该看到相似的东西:
Successfully exported connection details to
/Users/Horea.Porutiu@ibm.com/Workdir/VSCodeTutorialBlockchain/local_fabric
复制代码
好的,因此你已经实例化你的合约,把咱们的密钥输出到咱们的钱包里,那么如今呢? 那么,如今是时候实际调用智能合约中的功能了!为此,你可使用VSCode扩展。
LOCAL FABRIC OPS
下你应该看到FABRIC GATEWAYS
。local_fabric
,而后单击Admin@org1.example.com
。Connecting to local_fabric
。FABRIC GATEWAYS
和Channels
下你应该看到个人mychannel
。单击以展开它。而后展开demoContract@0.0.1
。你应该看到两个函数,instantiate
和transaction1
。transaction1
,而后选择提交交易submit transaction
。对于参数,请输入'hello'。不错的工做!你刚刚成功向Fabric网络提交了一笔交易,并更新了分类账!
在上一步中,你使用putState API
更新了分类账,并传入了密钥和值。key刚好是greeting
,值也赋予了对象。
{
text: 'hello'
}
复制代码
你应该学习的最后一件事是如何查询,如何从分类账中检索数据。你将经过使用getState API
执行此操做,该API接收密钥并返回与该密钥关联的值(若是找到它)。
让咱们为demoContract
添加一个查询功能。
lib/my-contract.js
文件中:'use strict';
const { Contract } = require('fabric-contract-api');
class MyContract extends Contract {
//update ledger with a greeting
async instantiate(ctx) {
let greeting = { text: 'Instantiate was called!' };
await ctx.stub.putState('GREETING', Buffer.from(JSON.stringify(greeting)));
}
//add a member along with their email, name, address, and number
复制代码
该代码添加了一个addMember
函数,该函数接收来自用户的参数,如电子邮件,姓名,地址和电话号码,并将该数据做为键值对保存在分类账中。
此代码还添加了查询功能; 这个函数接受一个参数,这是查找的关键。该函数返回与给定键关联的值(若是有)。
"version": "0.0.2",
复制代码
保存文件。
LOCAL FABRIC OPS
下将你现有的智能合约升级到新版本。展开实例化,直到你看到demoContract@0.0.1
。接下来,右键单击demoContract
并选择Upgrade Smart Contract
。demoContract
。peer0.org1.example.com
。instantiate
。Enter
键。通过一些繁重的计算(以及一点点时间),若是一切顺利,你应该在右下角收到一条通知说成功升级智能合约Successfully upgraded smart contract
。如今你已经更新了智能合约,请在FABRIC GATEWAYS
下查看并展开频道Channels
。接下来,展开mychannel
,你应该看到demoContract@0.0.2
。
demoContract@0.0.2
以查看已更新智能合约my-contract.js
的函数,即instantiate
,addMember
和query
。addMember
,而后单击Submit Transaction
。对于参数,请复制并粘贴如下内容:ginny@ibm.com, Ginny Rometty, Wall Street NY, 1234567890
复制代码
在输出中,你应该看到如下内容:
Submitting transaction addMember with args Ginny Rometty, Wall Street NY, 1234567890, ginny@ibm.com
复制代码
让咱们再添加一个成员,重复此步骤,可是对于参数,请复制并粘贴如下内容:
arvind@ibm.com, Arvind Krishna, Broadway Street NY, 1231231111
复制代码
不错的工做。 咱们差很少完成了!
而如今,大家一直都在等待...让咱们真正看到写在分类帐上的内容!为此,咱们将使用VSCodeTutorialBlockchain
文件夹中的query.js
文件。
VSCodeTutorialBlockchain
目录中的query.js
文件。它与invoke.js
文件很是类似,只是它有一个主要区别:let response = await contract.evaluateTransaction('query', 'GREETING');
复制代码
主要区别在于,在此文件中,你将使用evaluateTransaction API
,它不会将交易发送到ordering服务。所以,它不会更新分类账。这是很是重要的。在invoke.js
文件中,你将交易提交到ordering服务,这些交易都将写入分类账,但在query.js
文件中,你不会更新分类账。
VSCodeTutorialBlockchain
文件夹。从那里,使用如下命令安装所需的依赖项:VSCodeTutorialBlockchain $ npm install
复制代码
query.js
:VSCodeTutorialBlockchain$ node query.js
复制代码
你应该看到下面的输出:
Connected to Fabric gateway.
{ text: 'Instantiate was called!' }
Disconnect from Fabric gateway.
done
复制代码
Ginny Rometty
。更改如下行:let response = await contract.evaluateTransaction('query', 'GREETING');
复制代码
对此:
let response = await contract.evaluateTransaction('query', 'ginny@ibm.com');
复制代码
你应该看到下面的输出:
VSCodeTutorialBlockchain$ node query.js
Connected to Fabric gateway.
{"address":" Wall Street NY","email":"ginny@ibm.com","name":" Ginny Rometty","number":" 1234567890"}
Disconnect from Fabric gateway.
done
复制代码
Arvind
。修改请求以下:let response = await contract.evaluateTransaction('query', 'arvind@ibm.com');
复制代码
除了Arvind的数据外,输出应该相似于上面的输出。
测试功能是IBM Blockchain扩展的一项功能,能够经过UI完成。单击左侧的IBM Blockchain Platform扩展图标。
在FABRIC GATEWAYS
下,在频道Channels
下展开mychannel
,右键单击最新的智能合约demoContract@0.0.2
,而后选择Generate Smart Contract Tests
。
扩展程序将询问你生成测试文件的语言。选择JavaScript
。
生成测试完成扩展后,你能够从demoContract
目录运行npm test
,也能够从MyContract-demoContract@0.0.2.test.js
文件中单击VSCode UI
中的运行测试按钮,如gif所示。
干得好!你学习了如何使用Hyperledger的最新API建立,打包,安装,实例化和调用智能合约。此时,你能够专一于开发智能合约并更新my-contract.js文件,由于你知道已经处理了区块链的网络方面。你还可使用VSCode,Node.js和Docker成功调用和更新分类账。若是有错误,请拜托我,请对这篇文章发表评论,我会修复它们。很是感谢你阅读本教程。我但愿你喜欢它!Horea Blockchain出来了!
======================================================================
分享一些比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程实战教程:
- java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
- php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
- c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
- java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
- python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
- php以太坊,主要是介绍使用php进行智能合约开发交互,进行帐号建立、交易、转帐、代币开发以及过滤器和交易等内容。
- 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- ERC721以太坊通证明战,课程以一个数字艺术品创做与分享DApp的实战开发为主线,深刻讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括帐户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
- EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、帐户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
- 深刻浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深刻学习EOS区块链应用开发,课程内容即涵盖帐户、计算资源、智能合约、动做与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深刻浅出,很是适合前端工程师深刻学习EOS区块链应用开发。
- Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通讯接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操做实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
- Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通讯接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操做实践,是java工程师学习Fabric区块链开发的最佳选择。
- tendermint区块链开发详解,本课程适合但愿使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。
汇智网原创翻译,转载请标明出处。这里是Hyperledger Fabric和VSCode的IBM区块链扩展开发智能合约