Corda 3环境Cash组件及Obligation CorDapp现金操作报错求助
解决Corda 3中Cash组件相关的Mock网络及Obligation CorDapp错误
我来帮你梳理下在Corda 3环境中遇到的这几个Cash组件相关问题,结合官方文档的核心思路给你一些具体的排查和解决方向:
1. Mock网络使用Cash组件时出现Please register the entity <ENTITY_NAME>错误
这个错误说明节点的持久化上下文里没有注册对应的实体类,你可以试试这些操作:
- 在Mock网络的节点初始化阶段,手动注册相关实体类。比如在测试代码中,节点启动后调用:
node.services.withEntityManager { em -> em.registerEntityClass(<ENTITY_NAME>::class.java) } - 确认Mock网络是否正确加载了Cash CorDapp的完整jar包,实体类(包括Schema类)通常包含在Cash CorDapp的schema模块中,未加载的话节点无法识别这些类。
2. Obligation CorDapp中现金发行报错Cannot find contract attachments for [net.corda.finance.contracts.asset.Cash]
这个问题是节点找不到Cash合约的附件,你可以从这几个方面排查:
- 检查Obligation CorDapp的
build.gradle配置,确保正确引入了Corda Finance相关依赖,比如:
注意依赖版本要和你的Corda 3版本完全一致。dependencies { cordaCompile "net.corda:corda-finance-contracts:$corda_version" cordaCompile "net.corda:corda-finance-workflows:$corda_version" } - 如果是使用Mock网络,启动时要把Cash CorDapp加入节点的CorDapp列表,比如:
val mockNetwork = MockNetwork(listOf("net.corda.finance", "com.your.obligation.cordapp")) - 验证合约约束配置:Cash合约默认使用签名约束,确保你的节点信任Cash CorDapp的签名方;如果是测试环境,也可以配置哈希约束并确保节点能获取到正确的合约哈希。
3. 结算操作时出现Please register the entity ‘net.corda.finance.schemas.CashSchemaV1’错误
这个错误指向Cash的Schema类未注册到持久化层,你可以尝试:
- 在节点初始化或测试代码中手动注册该Schema类,比如:
node.services.persistenceService.registerEntity(CashSchemaV1::class.java) - 检查CorDapp的依赖是否包含
corda-finance-schemas模块,缺少的话要在build.gradle中添加:cordaCompile "net.corda:corda-finance-schemas:$corda_version" - 确认序列化配置中包含了
net.corda.finance.schemas包,比如在节点的序列化白名单里添加这个包,避免序列化时无法识别该类。
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

