了解如何使用IBMBlockchainPlatform的VSCode扩展来简化智能合约的开发、测试和部署过程。完成本教程后,您将了解如何使用VSCode在本地HyperledgerFabric网络上快速开发、演示和部署区块链应用程序。本教程假设您对HyperledgerFabric有一些基本的了解。学习目标安装IBMBlockchainPlatformVSCode扩展。创建一个新的JavaScript智能合约。打包智能合约。创建、探索和了解HyperledgerFabric网络。在本地HyperledgerFabric实例上部署智能合约。使用Node.jsSDK与已部署的智能合约包进行交互。先决条件您需要安装以下组件才能使用扩展:nodev8.x或更高版本和npmv5.x或更高版本。约曼(哟)v2.x。Docker版本v17.06.2-ce或更高版本。DockerComposev1.14.0或更高版本。VSCode1.28.2或更高版本。如果您使用的是Windows,还必须确保满足以下条件:您的Windows版本支持Hyper-V和Docker:Windows10企业版、专业版或教育版,带有1607周年更新或更高版本。适用于Windows的Docker配置为使用Linux容器(这是默认设置)。您已从windows-build-tools安装了适用于Windows的C++构建工具。您已经从Win32OpenSSL安装了OpenSSLv1.0.2安装普通版本,而不是标记为light的版本。在32位系统上将Win32版本安装到C:\OpenSSL-Win32。在64位系统上将Win64版本安装到C:\OpenSSL-Win64。您可以通过从终端运行以下命令来检查安装的版本:node--versionnpm--versionyo--versiondocker--versiondocker-compose--version预计时间安装先决条件后,大约需要30-45分钟才能完成.步骤:1.启动2.新建智能合约项目3.修改智能合约4.打包智能合约5.安装智能合约6.实例化智能合约7.导出连接详情8.提交交易9.更新智能合约10.提交更多交易11.查询分类帐12.测试合约1.入门您需要做的第一件事是安装IBMBlockchainPlatformVSCode扩展。为此,您需要安装最新版本的VSCode;要查看您是否有最新的VSCode扩展,请转到代码>检查更新。如果此时VSCode崩溃(这发生在我身上),这可能意味着你没有最新版本。如果您的VSCode崩溃,请查看下面的故障排除部分。否则,请更新您的VSCode,完成后,单击屏幕左侧边栏中的扩展。在顶部,在扩展市场中搜索IBMBlockchainPlatform。单击安装,然后单击重新加载。现在你应该已经准备好使用扩展了!2.创建新的智能合约项目要创建智能合约项目:1.单击新下载的IBMBlockchainPlatform扩展。它应该是左侧边栏底部的延伸。2.接下来,使用键盘快捷键Shift+CMD+P调出命令面板。从下拉列表中选择IBMBlockchainPlatform:创建智能合约项目。3.在下拉列表中单击JavaScript。4.单击“新建文件夹”并根据需要为项目命名。我将我的demoContract命名为。5.单击创建,然后打开刚刚创建的新文件夹。接下来,从下拉列表中单击添加到工作区。6、完成扩展包合约后,可以打开lib/my-contract.js文件查看智能合约代码框架。干得好!3、修改智能合约在lib/my-contract.js文件中,继续复制粘贴如下代码:'usestrict';const{Contract}=require('fabric-contract-api');classMyContractextendsContract{//用问候语更新账本以显示函数被调用asyncinstantiate(ctx){letgreeting={text:'Instantiatewascalled!'};awaitctx.stub.putState('GREETING',Buffer.from(JSON.stringify(greeting)));}//获取参数并创建一个问候对象以更新到账本asynctransaction1(ctx,arg1){console.info('transaction1',arg1);letgreeting={text:arg1};awaitctx.stub.putState('GREETING',Buffer.from(JSON.stringify(greeting)));返回JSON.stringify(问候);}}module.exports=MyContract;注意:.gifs可能比上面的更聪明合同不完全匹配,但它是您现在应该在lib/my-contract.js文件中拥有的合同!让我们看看您刚刚定义的函数。实例化函数创建一个问候语对象,然后使用键GREETING将其存储在分类帐中。transaction1函数采用HyperledgerFabric上下文和用于存储用户定义的问候语的参数arg1。ctx.stub.putState方法用于在账本上记录问候语,然后返回对象。保存文件并继续!4.打包智能合约现在您已经创建了智能合约并了解了您定义的功能,是时候打包它以便您可以将它安装在节点设备上了。使用Shift+CMD+P打开命令面板并选择包智能合约。在左侧边栏中,单击IBMBlockchainPlatform图标(它看起来像一个正方形)。在左上角,你会看到所有的智能合约包。如果一切顺利,您应该会看到demoContract@0.0.1。5.安装智能合约好的,你已经完成了一半多了。现在是有趣的部分!让我们在节点上安装这个合约!为此,您必须首先连接到HyperledgerFabric网络。VSCode扩展附带的网络非常适合开发,为开发和测试合约提供了最小的占用空间。以下Docker容器在本地机器上启动,每个容器在网络中具有不同的角色:Orderer、CertificateAuthority、CouchDB和Peer。要启动网络,请单击编辑器左侧的IBMBlockchainPlatform扩展。这是一个看起来像正方形的图标。1.点击扩展后,您应该会在编辑器的左侧看到LOCALFABRICOPS。在LOCALFABRICOPS的右侧,您应该会看到一个三点符号。单击该按钮,然后单击StartFabricRuntime。您的扩展现在将为充当网络节点的Docker容器提供服务。配置完成后,您应该会在LOCALFABRICOPS下看到智能合约部分。2.在智能合约下,单击+install。3.接下来,扩展程序会询问您要在哪个节点上安装智能合约。选择peer0.org1.examplee.com。4.扩展会问你要安装哪个包:选择demoContract@0.0.1。如果一切顺利,您应该会在右下角看到一条通知:Successfullyinstalledonnodepeer0.org1.example.com就是这样!干得好!6.实例化智能合约这才是真正的考验,你的智能合约会被正确实例化吗?让我们来看看...1.在智能合约下,您会看到一个说明实例化的部分。单击实例化+实例化。2.然后,插件会询问你在哪个频道实例化智能合约,选择mychannel。3.然后扩展会问你要实例化哪个合约和版本,选择demoContract@0.0.1。4.然后扩展会问你调用哪个函数,输入instantiate。5.接下来,它会询问您参数。不,所以只需按回车键。该扩展将做一些工作,然后在右下角,您应该会看到合约已成功实例化。长命!7.导出连接细节此时,您需要开始与Fabric实例进行更紧密的交互。您需要向证书颁发机构证明您可以在Web上创建数字身份。这是通过向证书颁发机构出示您的证书和私钥来完成的。1.在本教程后面,我们将查询网络。为此,我们需要一些脚本。在您的智能合约目录之外克隆此GithubRepo,以获取查询网络所需的必要脚本。$git克隆https://github.com/horeaporutiu/VSCodeTutorialBlockchain.git2。右键单击VSCode智能合约目录下的空白区域,然后选择Addfoldertoworkspace,将此文件夹导入VSCode工作区。找到最近克隆的文件夹VSCodeTutorialBlockchain并双击它。3.在VSCode中,单击左侧栏中的IBMBlockchainPlatform扩展。4.单击LOCALFABRICOPS下的Nodes。右键单击peer0.org1.example.com节点。选择导出连接详细信息。5.扩展会询问将连接配置文件保存到哪个文件夹。选择VSCodeTutorialBlockchain目录。如果一切顺利,您应该会看到类似这样的内容:Successfullyexportedconnectiondetailsto/Users/Horea.Porutiu@ibm.com/Workdir/VSCodeTutorialBlockchain/local_fabric8.提交交易密钥导出到我们的钱包,那现在呢?所以,现在是实际调用智能合约中函数的时候了!为此,您可以使用VSCode扩展。1.在LOCALFABRICOPS下,您应该看到FABRICGATEWAYS。2.单击local_fabric,然后单击Admin@org1.example.com。3.如果一切顺利,您应该会看到一条通知,提示正在连接到fabric正在连接到local_fabric。4.接下来,在FABRICGATEWAYS和Channels下,您应该会看到我的mychannel。单击以展开它。然后展开demoContract@0.0.1。您应该看到两个函数,instantiate和transaction1。5.右击transaction1并选择submittransaction。对于参数,输入“hello”。干得好!您刚刚成功向Fabric网络提交了一笔交易并更新了账本!9.更新智能合约在上一步中,您使用putStateAPI更新了账本,传入了键和值。键刚好是greeting,值也赋给了对象。{text:'hello'}最后你应该学习的是如何查询,如何从账本中检索数据。您将使用getStateAPI执行此操作,该API获取一个键并在找到该键时返回与该键关联的值。让我们向demoContract添加一个查询函数。1.将以下代码复制并粘贴到lib/my-contract.js文件中:'usestrict';const{Contract}=require('fabric-contract-api');classMyContractextendsContract{//updateledgerwith问候语异步实例化(ctx){letgreeting={text:'Instantiatewascalled!'};awaitctx.stub.putState('GREETING',Buffer.from(JSON.stringify(greeting)));}//添加成员及其电子邮件、姓名、地址和电话号码此代码添加一个addMember函数,该函数从用户那里接收电子邮件、姓名、地址和电话号码等参数,并将该数据作为键值对保存在在分类帐中。这段代码还增加了一个查询功能;这个函数接受一个参数,这是查找的关键。该函数返回与给定键关联的值(如果有)。2.更新package.json文件,使包含版本号的第3行现在显示为:“版本”:“0.0.2”,保存文件。3.将您现有的智能合约升级到LOCALFABRICOPS下的新版本。展开Instantiation直到您看到demoContract@0.0.1。接下来,右键单击demoContract并选择升级智能合约。4.扩展会询问使用哪个版本来执行升级。选择演示合约。5、插件会询问在哪个节点上安装智能合约,请选择peer0.org1.example.com。6.分机会要求调用一个函数。输入实例化。7.扩展会要求传递参数。将其留空并按Enter。经过一些繁重的计算(和一点时间),如果一切顺利,你应该会在右下角收到一条通知,提示“成功升级智能合约”。10.提交更多交易现在您已经更新了您的智能合约,查看FABRICGATEWAYS并展开Channels。接下来,展开我的频道,您应该会看到demoContract@0.0.2。1、接下来展开demoContract@0.0.2可以看到更新后的智能合约my-contract.js的功能,分别是instantiate、addMember、query。2.右击addMember,然后点击提交交易。对于参数,复制并粘贴以下内容:ginny@ibm.com,GinnyRometty,WallStreetNY,1234567890在输出中,您应该看到以下内容:提交带有args的事务addMemberGinnyRometty,WallStreetNY,1234567890,ginny@ibm.com让我们再添加一个成员,重复此步骤,但对于参数,复制并粘贴以下内容:arvind@ibm.com,ArvindKrishna,BroadwayStreetNY,1231231111干得好。我们快完成了!11.查询账本现在,你们一直在等待……让我们看看账本上写的是什么!为此,我们将使用VSCodeTutorialBlockchain文件夹中的query.js文件。1、检查VSCodeTutorialBlockchain目录下的query.js文件。它与invoke.js文件非常相似,除了它有一个主要区别:letresponse=awaitcontract.evaluateTransaction('query','GREETING');主要区别在于,在此文件中,您将使用evaluateTransactionAPI,它不会将交易发送到排序服务。因此,它不会更新分类帐。这个非常重要。在invoke.js文件中,您向排序服务提交交易,这些交易被写入账本,但在query.js文件中,您不更新账本。2.使用VSCode中的终端导航到VSCodeTutorialBlockchain文件夹。从那里,安装所需的依赖项:VSCodeTutorialBlockchain$npminstall3。接下来,使用以下命令运行query.js:VSCodeTutorialBlockchain$nodequery.js您应该会看到以下输出:ConnectedtoFabricgateway.{text:'Instantiatewascalled!'}断开与Fabric网关的连接。完成4。接下来,询问金妮罗睿兰。更改以下行:letresponse=awaitcontract.evaluateTransaction('query','GREETING');为此:让response=awaitcontract.evaluateTransaction('query','ginny@ibm.com');您应该看到以下输出:VSCodeTutorialBlockchain$nodequery.jsConnectedtoFabricgateway.{"address":"WallStreetNY","email":"ginny@ibm.com","name":"GinnyRometty","number":"1234567890"}断开与Fabric网关的连接。完成5。最后查询Arvind。修改请求如下:letresponse=awaitcontract.evaluateTransaction('query','arvind@ibm.com');除了Arvind的数据外,输出应该与上面的相似。12.测试合约测试功能是IBMBlockchain扩展的一个功能,可以通过UI完成。单击左侧的IBMBlockchainPlatform扩展图标。在FABRICGATEWAYS下,展开Channels下的mychannel,右键单击最新的智能合约demoContract@0.0.2,然后选择GenerateSmartContractTests。该扩展程序将询问您生成测试文件所用的语言。选择JavaScript。生成测试以完成扩展后,您可以从demoContract目录运行npm测试,或者您可以从MyContract-demoContract@0.0.2.test.js文件中单击VSCodeUI中的运行测试按钮,如动图。总结得真好!您学习了如何使用Hyperledger的最新API创建、打包、安装、实例化和调用智能合约。此时,您可以专注于开发智能合约和更新my-contract.js文件,知道您已经处理了区块链的网络方面。您还可以使用VSCode、Node.js和Docker成功调用和更新分类帐。如果有错误请告诉我,请在这篇文章中发表评论,我会修复它们。非常感谢您阅读本教程。我希望你喜欢它!Horea区块链出来了!========================================================================分享一些与比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程教程:Java比特币开发教程,本课程面向初学者,涵盖了比特币的核心概念,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,还详细讲解了如何在Java代码中集成比特币支持功能,如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。Php比特币开发教程,本课程面向初学者,内容涵盖了比特币的核心概念,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,同时还详细讲解了如何使用PhpIntegrating比特币在代码中的支持功能,如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习教程。c#比特币开发教程,本课程面向初学者,内容涵盖了比特币的核心概念,如区块链存储、去中心化共识机制、密钥和脚本、交易和UTXO等,还详细讲解了如何使用C#集成比特币在代码中的支持功能,如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习教程。Java以太坊开发教程,主要为java和android程序员讲解区块链以太坊开发的web3j详解。PythonEthereum,主要供python工程师使用web3.py详细开发区块链以太坊。PHPEthereum主要介绍使用PHP进行智能合约开发交互、账户创建、交易、转账、代币开发、过滤器和交易等。以太坊入门教程,主要介绍智能合约和dapp应用开发,适合入门。以太坊开发进阶教程,主要介绍使用node.js、mongodb、blockchain、ipfs实现去中心化电商DApp实战,适合进阶。ERC721EthereumPassDemonstration,课程着重于一个数字艺术品创作和分享DApp的实际开发,深入讲解以太坊非同质化通证的概念、标准和开发方案。内容包括独立实现ERC-721标准,讲解OpenZeppelin合约代码库的二次开发,以及使用Truffle、IPFS的实际项目,实现通证和去中心化通证交换。C#以太坊主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器与交易等。EOS入门教程,本课程帮助您快速上手EOS区块链去中心化应用开发,涵盖EOS工具链、账户和钱包、发行代币、智能合约开发和部署等核心知识,使用代码和智能合约交互要点,最后利用所有知识点完成一个粘性的开发注意DApp。本课程着重讲述手机EOS钱包的完整开发过程,深入学习EOS区块链应用开发。课程内容涵盖账户、计算资源、智能合约、动作和交易等核心概念,同时讲解如何使用eosjs和eosjs-ecc开发包接入EOS区块链,以及如何集成对EOS的支持React前端应用程序中的区块链。课程内容简单易懂,非常适合前端工程师深入学习EOS区块链应用开发。HyperledgerFabric区块链开发详解,本课程面向初学者,内容包括HyperledgerFabric身份证书和MSP服务、权限策略、通道配置和启动、链码通信接口等核心概念,还包括Fabric网络设计、nodejs链代码和应用开发的操作实践是Nodejs工程师学习Fabric区块链开发的最佳选择。HyperledgerFabricjava区块链开发详解,课程面向初学者,内容包括HyperledgerFabric身份证书和MSP服务、权限策略、通道配置和启动、链码通信接口等核心概念,还包括Fabric网络设计、javachain代码和应用开发的操作实践,是Java工程师学习Fabric区块链开发的最佳选择。tendermint区块链开发详解。本课程适合想要使用tendermint进行区块链开发的工程师。课程内容包含了tendermint应用开发模型中的核心概念,如ABCI接口、Merkle树、多版本状态库等,包含了丰富的代币发行等实用代码,是go语言工程师快速上手的最佳选择开始区块链开发。汇智网原创翻译,转载请注明出处。这是HyperledgerFabric和VSCode的IBM区块链扩展,用于开发智能合约
