Corda中如何查看未完成Flow内的待处理交易及对方待签交易?
在Corda中查看未完成Flow及待处理交易的方法
针对你提出的两个问题,我结合实际开发和运维经验整理了以下方案:
1. 查看未完成Flow中的待处理交易
要追踪未完成Flow里的待处理交易,主要可以通过节点CLI命令和自定义Flow状态跟踪两种方式:
- 使用节点CLI命令:
- 首先执行
flow list命令,列出当前节点所有正在运行的Flow,获取每个Flow的唯一ID; - 接着针对目标Flow运行
flow info <flow-id>,该命令会返回Flow的详细运行状态,包括当前所处阶段(比如等待签署、等待公证)、已生成的交易草稿核心信息(如交易ID、参与方列表、已签署状态); - 如果需要更底层的原始数据,可直接查询节点的内部数据库(如H2、PostgreSQL),查看
node_transactions表中状态为PENDING或SIGNED_BY_PARTIES的记录,这些就是待处理的交易条目。
- 首先执行
- 自定义Flow状态跟踪:
在编写Flow时,可以在关键节点(比如生成交易草稿、完成本地签署后)将交易信息存入节点的自定义数据库表,或利用ServiceHub的KeyValueStorage做临时存储,后续通过自定义接口或工具即可查询这些待处理交易。
2. 查看已签署、等待对方签署的待处理交易列表
当然可以!这类交易属于已完成本地签署但未达成多方共识的状态,你可以通过以下方式批量查看:
- CLI批量筛选:
先运行flow list筛选出所有处于WAITING_FOR_SIGNATURES状态的Flow,再对每个Flow执行flow info提取关联交易信息;Corda 4.5及以上版本的部分环境,还支持通过flow query命令直接过滤出等待对方签署的Flow及对应交易。 - 数据库直接查询:
直接查询节点数据库的node_transactions表,筛选status字段为SIGNED且notarised为false的记录,同时结合node_flow_states表关联Flow的运行状态,就能得到完整的待处理交易列表。 - 自定义监控组件:
基于Corda的StateMachineManagerAPI开发监控工具,实时订阅Flow的状态变更事件,当Flow进入等待对方签署的阶段时,自动记录关联的交易信息,形成可随时查询的待处理列表。
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

