首先说明一下链码是支持跨链访问,即能够调用不是当前通道的链码;但是仅仅支持的操作是查询事物。
链码命名空间
链码的命名空间允许它保持其世界状态与其他链码分开,简单地说,相同的链码中的智能合约共享同一个世界状态并可以直接访问,而不同链码中的智能合约是不能直接访问彼此的世界状态。如果智能合约需要访问另一个链码世界的状态,它可以通过执行链码到链码的调用来做到这一点。
让我们现在想象一个场景,B链码的执行必须以A链码中的数据为基础。在这种情况就需要实现跨链码访问,即访问另一个链码的世界状态。
跨链码访问
invokeChaincode(chaincodeName, args, channel)
作用:用于调用指定的链码
规则:
- 如果被调用的链码在同一个通道上,它只是将调用的链码读取集和写入集添加到调用事务中。
- 如果被调用的链码在不同的通道上,则只有响应返回给调用的链码;来自被调用链码的任何putState()调用都不会对账本产生任何影响。
参数