CHA:区块链研究实验室| HyperLedger Fabric架构构建ERC20令牌 part I

由于其高TPS和作为区块链作为服务平台的行为,许多新创新者正在选择Hyperledger来部署他们的区块链业务。因此,在本博客中,我们将讨论使用node.js在Hyperledger中创建基于erc20的令牌链代码的方法。

为何选择ERC20?

ERC20是以太坊广泛测试和接受的,将其整合到Hyperledger中,可以轻松地为基于Hyperledger的任何令牌编写安全且可扩展的链码。

我们将在本教程中参考以下开源存储库。

注意:我们假设您已经熟悉Hyperledger结构,并且您的系统配备了启动Hyperledger开发的先决条件。如果没有,请参阅Hyperledger文档中的先决条件、关键概念和教程。

此存储库中的代码已在以下环境中进行了测试:

node:v8.9.3和v8.11.4

Hyperledger:v1.2

Docker:18.06.1-ce

Python:2.7.12

动态 | 慢雾区块链攻防对抗总结:11 月数据泄露趋势愈发普遍:据慢雾 BTI 系统监测发现,暗网中陆续出现区块链相关的数据泄露情报,包括:GateHub 140 万用户信息、数字货币交易所用户信息等,此前 BitMex 也因工作失误导致大量用户邮箱信息泄露。11 月另一个重大安全事件是韩国交易所 Upbit 被黑导致 34.2 万 ETH 从热钱包中被盗,慢雾安全团队怀疑该事件可能和 APT(高级持续性威胁)攻击有关,这种攻击的特点是长期潜伏,直到碰到可操作的大资金,一次性大笔盗走。

过去数月,慢雾 BTI 系统还曾披露假充值漏洞攻击、供应链攻击、提币地址劫持替换攻击等,慢雾安全团队在此提醒各项目方,做好安全漏洞自查,进一步增强人员安全意识及平台风控体系,必要时可联系专业的区块链安全公司寻求帮助,避免遭受损失。[2019/12/1]

Go:go1.9.3linux/amd64

curl:7.47.0

我们建议在适应代码的同时使用相同的版本。

确保先决条件安装正确后,请执行以下步骤:

声音 | 高延敏:希望工信部消费品工业司与微信积极推动区块链等在传统消费品领域的应用:据新华社报道,7月2日,由工业和信息化部指导中国电子信息产业发展研究院和腾讯微信开发的“婴配乳粉追溯”微信小程序正式上线。工信部消费品工业司与腾讯微信当天签署了合作备忘录。工信部消费品工业司司长高延敏表示,希望双方做到强强联合、优势互补,积极推动移动互联网、大数据、云计算、区块链等新兴技术在传统消费品领域的应用,在实施增品种、提品质、创品牌“三品”专项行动、开展婴幼儿配方乳粉等产品质量安全追溯体系建设、引导居民消费升级等方面作出有益贡献。[2019/7/2]

cd?path/to/repository/foldercd?network

进入网络文件夹后,即可创建超级账本网络环境。它将分别为您创建2个组织,Orderer每个组织有2个对等组。

Housekeeping

如果这是您第二次运行本教程,或者您已成功运行任何其他基于HyperLedgerFabric的代码,那么我们建议您首先运行以下命令:

./buildERC20TokenNetwork.sh?down

声音 | 清华大学徐恪:未来区块链会引领新的去中心化世界:据DoNews消息,近日,上海市科委主导的“上海市区块链工程技术中心”成立,清华大学计算机系副主任徐恪教授表示:“区块链还处于一个成长期,很多问题需要解决,很多应用有待挖掘,但是我们确实相信,区块链在未来,会引领一个新的去中心化世界。”[2019/2/20]

它将要求确认:

Stopping?for?channel?'mychannel'?with?CLI?timeout?of?'10'?seconds?and?CLI?delay?of?'3'?secondsContinue??

按Y并继续。

注意:您可以使用以下命令检查Docker有多少个容器或卷正在运行:

dockerps

dockervolumels

如果使用脚本很难关闭容器和卷,请尝试运行以下命令:

dockernetworkprune

dockervolumeprune

声音 | 杨红星:区块链应用有助于跨国公司供应链金融计划:据人民网消息,海尔集团供应链金融总监杨红星表示,2017年以后,区块链的应用,使大多数的跨国公司都已经广泛的实施了供应链金融计划,跨国企业大概有60%,在澳大利亚只有4%,在中国感觉连1%都不到。杨红星指出,未来将帮助供应链的供应商和经销商提供更好的金融服务。[2018/10/30]

dockerrm-f$(dockerps-aq)

令牌网络设置

完成Housekeeping后,您就可以使用以下命令启动网络了:

执行可能需要一些时间。但是,如果您在终端中看到以下日志,则表示它已成功执行,您的网络已准备就绪。

使用crypto-config.yaml文件在您的网络目录中名为crypto-config的文件夹中为HyperLedger的每个实体创建了所需的证书。

创建了channel.tx,genesis.block,Org1MSPanchors.tx和Org1MSPanchors.tx。

纳斯达克宣布将利用区块链储存资产所有权信息:纳斯达克近日向美国专利及商标局提交一份专利申请,将利用分布式账本记录用户资产信息,确定资产所有权,同时建立电子钱包以方便用户管理资产。[2017/11/17]

它还为以下内容创建了Docker容器和卷:

peer0andpeer1orOrg1

peer0andpeer1ofOrg2

orderer

CLI

chaincode

使用dockerps和dockervolumels检查它们。我们还在Org1和Org2之间创建了一个频道名称mychannel,每个组织的同伴都是该频道的一部分。然后在每个组织的peer0上安装我们的链代码并实例化我们的链代码,命名为mycc。您可以使用以下方法查看相应对等/链代码的日志:

docker?logs??//?type?peer?and?then?tab?to?see?your?optionsdocker?logs??//?type?dev?and?then?tab?to?see?your?options

注意:对于调试,您可以访问您的链代码和对等日志dockerlogs<按TAB查看选项>;如果您没有看到链代码的容器,那么实例化我们的令牌链代码就会出现问题。

我们的代币

现在我们的chaincode已经启动并运行,让我们尝试一些getter和setter函数来更好地理解它。为此,我们需要输入我们创建的cli容器。

docker?exec?-it?cli?bash

你将会看到以下结果:

:/opt/gopath/src/github.com/hyperledger/fabric/peer#

getter函数

一旦进入了cli,就可以调用simpletoken中提供的getter函数。我们将逐一讨论您可以访问的每一个:

获得所有权人

此函数将返回令牌合同的所有者。现在是MSPID实例化了契约,您可以在这里看到它。

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'Org1MSP

这里,mychannel是我们的通道名称,mycc是我们的chaincode的名称,如您所见,org1msp是我们chaincode的当前所有者。

getName

此函数将返回令牌合同的名称。它在实例化合同时被设置为简单令牌,您可以在这里看到它。

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'Simple?Token

如您所见,SimpleToken是我们当前的令牌名称。

getSymbol

此函数将返回我们的令牌合约的符号。在实例化合同时将其设置为SMT,您可以在此处查看

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'SMT

如您所见,SMT是我们当前的令牌符号。

getTotalSupply

此函数将返回令牌合同的总供应量。在设置之前,它默认为0。您可以在这里找到所需的逻辑。

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'0

如你所见,0是我们目前的总供应量。

isMintingAllowed

此getter返回存储在Hyperledger上的IsMintingAllowed布尔值。它默认为未定义,直到设置一次。您可以在这里找到所需的逻辑。

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'undefined

正如你所看到的,isMintingAllowed现在是未定义的。一旦稍后设置,它将返回true或false。

getAllowance

此getter返回令牌所有者为SpenderMSPID设置的津贴值。它将“inputthemspidtoken”owner作为第一个参数,将“mspidofspender”作为第二个参数。在设置之前,它默认为0。

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'0

如你所见,getallowance现在是0。稍后设置后,它将返回float。我们还要检查一下还有没有其他组合,看看它是否返回0。

peer?chaincode?query?-C?mychannel?-n?mycc?-c?'{"Args":}'0

getBalanceOf

最后一个getter是getbalanceof函数,它返回我们输入的每个mspid的令牌平衡。如果mspid没有任何令牌平衡,它也默认为0。

本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120??

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:46ms0-0:548ms