在认可政策文档中,规定如下:
通过策略限制的评估时间(终止),确定性,性能和安全性保证,动态添加批注策略(例如,通过在链代码部署时间上部署事务)非常敏感。因此,不允许动态添加背书策略,但将来可以支持。
如果我对制定更灵活的背书政策感兴趣,从而我们不断添加新的同行,并且希望背书政策基于与特定交易相关的一组唯一的同行,那么可能吗?
即在某些情况下,交易是在两个特定的对等方之间进行的,因此它们都应该是有效的背书人。存在其他五个同龄人,可以说他们是竞争对手,在这种情况下,不应允许他们认可。
在1.1中,似乎没有像https://jira.hyperledger.org/browse/FAB-8729中提到的那样可以部署自己的自定义ESCC / VSCC。
使用新的1.2可插拔体系结构,我看不到如何获得对ChaincodeStubInterface
的访问权以处理基于传递的事务参数的自定义逻辑。例如,旧的1.1可插拔链式代码体系结构扩展了Chaincode interface
。
鉴于以下方法签名,是否可以使用新方法签名中的数据访问ChaincodeStubInterface
?
https://hyperledger-fabric.readthedocs.io/en/release-1.2/pluggable_endorsement_and_validation.html
Endorse(payload []byte, sp *peer.SignedProposal) (*peer.Endorsement, []byte, error)
Validate(block *common.Block, namespace string, txPosition int, actionPosition int, contextData ...ContextDatum) error
具体来说,我想访问类似args := stub.GetStringArgs()
之类的东西,甚至只访问有效负载的复合键/索引名。
答案 0 :(得分:0)
我最近尝试在自己的应用程序上开发类似的功能。尽管当前版本不支持动态认可策略,但是我们可以使用动态配置来帮助我们定义我们期望在应用中使用哪种认可方法。
我不确定是否可以使用方法签名直接访问ChaincodeStubInterface
,但是我将尝试并继续进行更新。
这是我的解决方案。希望这会有所帮助。
这是示例配置文件的一部分,由官方提供:
orderers:
- orderer.example.com
peers:
peer0.org1.example.com:
endorsingPeer: true
chaincodeQuery: true
ledgerQuery: true
eventSource: true
peer0.org2.example.com:
endorsingPeer: true
chaincodeQuery: true
ledgerQuery: true
eventSource: true
chaincodes:
- mycc:v0
peer0.org2.endorsingPeer
设置为false
,当用户完成setConfigSetting
并加载连接配置文件后,有人向结构网络发送调用建议的情况发生时,事务只能被peer0.org1认可。这三个选项的其余部分与endorsingPeer
相同。