setter函数
完成getter调用后,让我们研究simpletoken中提供的setter函数。在进行这些交易之前,您需要满足认可政策,在该帐户中,您将在此处看到一些额外的字段。第一次调用setter到特定对等体时也需要一些时间,之后它几乎立即返回结果。 此外,CLI的配置也设置为Org1 peer0,您可以使用以下命令检查:
您可以通过运行以下命令更改为peer0,Org2:
对其他同行使用类似的策略。
updateMintingState
我们假设您的配置设置为org1的peer0,否则使用以下命令进行设置:
现在让我们尝试将铸造状态更新为true。 我们需要指定Orderer和同行以满足我们的认可政策。
现在运行getter查看它是否实际更改:
peer chaincode query -C mychannel -n mycc -c '{"Args":["isMintingAllowed"]}'
true
注意:如果使用Org2的peer0调用它,它将失败并返回以下结果:
Error: endorsement failure during invoke. chaincode result: <nil>
您可以打开另一个终端并检查错误日志,如下所示:
注意:您可以以类似的方式查询其他错误,只需确保您找到了正确的同行。要了解更多关于其他验证的信息,可以在这里检查链代码。
mint
此功能可用于由令牌所有者创建/铸造令牌。 但isMintingAllowed应该设置为true。 让我们为Org1MSP注入一些令牌。 确保您的配置设置为令牌所有者。
您可以使用我们的getter检查余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["getBalanceOf", "Org1MSP"]}'
100.2345
transfer
现在,我们知道我们有100.2345个在org1Msp下注册的令牌。让我们尝试将10个令牌转移到org2Msp。
您可以使用以下方法检查Org2的余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["getBalanceOf", "Org2MSP"]}' 10
updateTokenName
您可以使用此setter更新令牌名称。
检查使用:
peer chaincode query -C mychannel -n mycc -c '{"Args":["getName"]}'
TECH COIN
updateTokenSymbol
您可以使用此setter更新标记符号。
检查使用:
peer chaincode query -C mychannel -n mycc -c '{"Args":["getAllowance", "Org1MSP", "Org2MSP"]}'
30
transferFrom
一旦您批准了org2代表org1进行转移。首先在cli中为org2设置config,这样您就可以代表它调用函数。
现在让我们将一个浮点值转移到一个不存在但有效的mspid。
注意:可以稍后创建这样的mspid,并将令牌预先分配给它们,就像以太坊地址一样。
检查使用:
transferOwnership
最后,将配置设置回令牌的所有者,并尝试传输令牌所有权。
检查使用:
Zeppelin的ERC20
我们使用Zeppelin Solidity测试标准在HyperLedger上创建此ERC20令牌版本。 熟悉JS的Solidity开发人员很容易合并。 您可以在这里参考ERC20的架构模型:
-
帮助程序 - 包括在链代码调用或查询期间必须满足的验证,检查; 和utils用于使代码DRY。
-
示例 - 一个简单的链代码,演示如何使用存储库中提供的基本链代码创建简单令牌。
-
令牌 - HyperLedger上可替换的ERC20令牌的标准接口。
本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120