Corda社区版4.9:如何将节点与公证人的交易详情存入数据库?
Corda社区版4.9 节点与公证人数据库配置及交易详情存储方案
一、核心配置逻辑
Corda节点默认使用H2嵌入式数据库,若要切换至外部SQL/NoSQL数据库,只需修改节点的node.conf配置文件,指定数据库类型与连接参数。配置完成后,节点会自动将交易详情、状态、签名记录等数据持久化到目标数据库中,公证人节点的配置逻辑与普通节点完全一致。
二、SQL数据库配置(以PostgreSQL为例)
1. 添加驱动依赖
在节点项目的build.gradle中引入对应SQL数据库的驱动依赖:
dependencies { cordaCompile "org.postgresql:postgresql:42.2.20" }
2. 修改node.conf配置
替换默认的H2配置,添加SQL数据库连接参数:
dataSourceProperties = { dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource" dataSource.url = "jdbc:postgresql://localhost:5432/corda_node_db" dataSource.user = "db_user" dataSource.password = "db_password" } database = { transactionIsolationLevel = READ_COMMITTED schema = "public" }
- 适配其他SQL数据库时,仅需替换
dataSourceClassName与JDBC URL:- MySQL:
dataSourceClassName为com.mysql.cj.jdbc.MysqlDataSource,JDBC格式为jdbc:mysql://localhost:3306/corda_node_db?serverTimezone=UTC - Oracle:
dataSourceClassName为oracle.jdbc.pool.OracleDataSource,JDBC格式为jdbc:oracle:thin:@localhost:1521:ORCL
- MySQL:
三、NoSQL数据库配置(MongoDB)
Corda 4.9支持MongoDB作为外部数据库,配置步骤如下:
1. 添加驱动依赖
在build.gradle中引入MongoDB驱动:
dependencies { cordaCompile "org.mongodb:mongodb-driver-sync:4.2.3" }
2. 修改node.conf配置
database { type = "MONGO" address = "mongodb://localhost:27017" databaseName = "corda_node_db" username = "mongo_user" password = "mongo_password" }
四、公证人节点配置
公证人节点的数据库配置与普通节点无差异,只需在公证人节点的node.conf中按上述SQL/NoSQL配置填写即可。公证人会自动将其处理的交易签名、公证确认记录等交易详情持久化到配置的数据库中。
五、交易详情存储说明
配置完成后,Corda节点会自动将以下交易相关数据写入数据库,无需额外开发:
- 交易核心信息(交易ID、时间戳、参与方列表)
- 交易输入/输出状态数据
- 节点签名与公证人签名记录
- 交易流转历史与状态变更记录
六、注意事项
- 确保目标数据库服务已启动,且节点服务器能访问数据库端口
- 数据库用户需具备创建表、读写数据的完整权限
- 不同节点(含公证人)建议使用独立数据库实例或不同schema,避免数据冲突
- 生产环境需配置数据库定期备份与监控机制
内容的提问来源于stack exchange,提问作者Ajit Raju
相关产品推荐
相关产品推荐

