了解使用IBM Blockchain Platform的VSCode扩展来简化开发,测试和部署智能合约的过程。完成本教程后,你将了解如何使用VSCode在本地Hyperledger Fabric网络上快速开发,演示和部署区块链应用程序。本教程假设你对Hyperledger Fabric有一些基本的了解。
学习目标
- 安装IBM Blockchain Platform VSCode扩展。
- 创建一个新的JavaScript智能合约。
- 打包智能合约。
- 创建,探索和了解Hyperledger Fabric网络。
- 在本地Hyperledger Fabric实例上部署智能合约。
- 使用Node.js SDK与已部署的智能合约包进行交互。
先决条件
你需要安装以下内容才能使用扩展程序:
- node v8.x或更高版本以及npm v5.x或更高版本。
- Yeoman(yo) v2.x。
- Docker版本v17.06.2-ce或更高版本。
- Docker Compose v1.14.0或更高版本。
- VSCode 1.28.2或更高版本。
如果你使用的是Windows,则还必须确保以下内容:
- 你的Windows版本支持Hyper-V和Docker:
- Windows 10 Enterprise,Pro或具有1607 Anniversary更新或更高版本的教育版。
- Docker for Windows配置为使用Linux容器(这是默认设置)。
- 你已经从windows-build-tools安装了适用于Windows的C ++ Build Tools。
- 你已从Win32 OpenSSL安装了OpenSSL v1.0.2
- 安装正常版本,而不是标记为
light
的版本。 - 在32位系统上将Win32版本安装到C:\OpenSSL-Win32中。
- 在64位系统上将Win64版本安装到C:\OpenSSL-Win64中。
你可以通过从终端运行以下命令来检查已安装的版本:
node --version
npm --version
yo --version
docker --version
docker-compose --version
预计的时间
安装必备组件后,大约需要30-45分钟才能完成。
步骤:
- 1.开始
- 2.创建一个新的智能合约项目
- 3.修改智能合约
- 4.打包智能合约
- 5.安装智能合约
- 6.实例化智能合约
- 7.导出连接详细信息
- 8.提交交易
- 9.更新智能合约
- 10.提交更多交易
- 11.查询分类帐
- 12.测试合约
1.开始
[图片上传失败...(image-ec7d1a-1554341613028)]
你需要做的第一件事是安装IBM Blockchain Platform VSCode扩展。为此,你需要安装最新版本的VSCode;要查看你是否拥有最新的VSCode扩展,请转到代码>检查更新(Code > Check for Updates)。如果此时VSCode崩溃(我遇到了),则可能意味着你没有最新版本。如果你的VSCode崩溃,请查看下面的故障排除部分。否则,请更新你的VSCode,完成后,单击屏幕左侧边栏中的扩展名。在顶部,在扩展市场中搜索IBM Blockchain Platform。单击Install,然后单击reload。现在你应该全部使用扩展!
2.创建一个新的智能合约项目
[图片上传失败...(image-861ed1-1554341613028)]
要创建智能合约项目:
- 1.单击新下载的IBM Blockchain Platform扩展。它应该是左侧边栏底部的一直延伸。
- 2.接下来,使用键盘快捷键
Shift+CMD+P
调出命令pallete
。从下拉列表中选择IBM Blockchain Platform:Create Smart Contract Project
。 - 3.点击下拉列表中的
JavaScript
。 - 4.单击新建文件夹
New Folder
,然后将项目命名为所需名称。我将我的名字命名为demoContract
。 - 5.单击创建
Creat
,然后Open
刚刚创建的新文件夹。接下来,从下拉列表中单击添加到工作区Add to WrokSpace
。 - 6.完成扩展打包合约后,你可以打开
lib/my-contract.js
文件以查看智能合约代码框架。不错的工作!
3.修改智能合约
[图片上传失败...(image-ba93d9-1554341613028)]
在lib/my-contract.js
文件中,继续复制并粘贴以下代码:
'use strict';
const { Contract } = require('fabric-contract-api');
class MyContract extends Contract {
//update ledge