首页 > 解决方案 > 在 Corda 中,如何获取交易发生时间的时间戳?

问题描述

我正在使用 Corda 3.2。给定 a SignedTransaction,我如何确定它何时被记录?

标签: corda

解决方案


没有用于确定何时记录事务的直接 API。但是,您可以通过检查以下任一项来实现此目的:

  1. 当交易的输入之一被消耗时:

    val inputStateRef = signedTx.inputs[0]
    val queryCriteria = QueryCriteria.VaultQueryCriteria(stateRefs = listOf(inputStateRef))
    val results = serviceHub.vaultService.queryBy<ContractState>(queryCriteria)
    val consumedTime = results.statesMetadata.single().consumedTime!!
    
  2. 当交易的输出之一被记录时:

    val ledgerTx = signedTx.toLedgerTransaction(serviceHub)
    val outputStateRef = StateRef(signedTx.id, 0)
    val queryCriteria = QueryCriteria.VaultQueryCriteria(stateRefs = listOf(outputStateRef))
    val results = serviceHub.vaultService.queryBy<ContractState>(queryCriteria)
    val recordedTime = results.statesMetadata.single().recordedTime
    

推荐阅读