我已经使用Hyperledger Composer建立了一个基本网络的原型,现在正在致力于将该解决方案迁移到完全基于Fabric的情况。
由于存在一个预先发布了测试数据的网络,所以我只是在Golang中组成了一个新CC,并将源复制到我的频道的对等端以进行部署。
Peer已连接到composer_default
网络通道,该通道是由 composer-tools / fabric-dev-servers startFabric.sh
脚本创建的。
然后,我使用相同的CC名称和递增的CC版本(peer chaincode upgrade
)用Golang链代码构建替换了Fabric网络中的bna链代码。
问题是:新的Fabric CC是否可以通过Composer bna先前提交的现有状态?就像我们使用ChaincodeStubInterface的GetState方法访问它一样:
marbleAsBytes, err := stub.GetState(marbleName)
或者也许可以通过查询将数据拉到CouchDB(通道的当前存储区)?不知道Composer用于存储其写集的真实密钥标识符。
P.S。实际上,我不想从Fabric CC调用Composer bna事务/查询,反之亦然。这只是对现有网络环境的业务逻辑的一种升级。
答案 0 :(得分:0)
我认为应该有可能,因为资产是作为键值对存储的,您可以首先尝试通过本地golang链码查询任何键。像以前一样,我尝试用完全不同的链码升级一个作曲家链码,并且如果我尝试在我的旧作曲家链码中输入先前使用的密钥的数据,则会引发错误。因此,即使链码不同,您也应该能够通过其密钥访问已创建的资产。