2017-10-12 5 views
1

状態オブジェクトのプロパティの値を変更するとします。たとえば、状態オブジェクトの有効期間中のある段階で、所有者をAliceからBobに変更します。この変更のタイムスタンプを効率的に取得するにはどうすればよいですか?Cordaでは、状態オブジェクトに特定の変更が加えられたときのタイムスタンプをどのように特定すればよいですか?

私が考えることができる唯一の方法は、linearIdに基づいて状態オブジェクトの履歴全体を取得することです。次に、各レコードを前のレコードと比較して、特定の変更がいつ発生したかを確認し、対応するトランザクションのタイムスタンプを検索します。より効率的な方法がありますか?

特定の添付ファイルハッシュを含むトランザクションを取得するためにトランザクション履歴を照会する方法はありますか?

答えて

1

現在、特定の添付ハッシュを含むトランザクションを取得することはできません。リニア検索を行う必要があります。同様にタイムスタンプを取得する。これらは追加可能なAPIです。

これは実際に自分で追加するのはかなり簡単です。 jdbcSessionプロパティーをServiceHubとし、タイムスタンプ/アタッチメントハッシュに基づいてトランザクションテーブルを照会するCordaServiceを作成することができます。

+0

ありがとうRoger。状態オブジェクトに対する「タイムスタンプ」の変更のための新しい機能を提案できますか?現在のところ、状態オブジェクト(state.ref.txhash)から関連するトランザクションハッシュを取得し、statesMetadata内のハッシュを検索してrecordsTimeを取得すると、タイムスタンプを取得できることがわかります – BrianRice

+0

これは、トランザクション提案者は、トランザクション出力状態オブジェクト内のフィールドをトランザクションの記録時間(それが何になるかを知る前に)と等しくなるように設定します。私はこれがEVM-Solidityの 'now'キーワードと同様に動作すると思います。実際にブロック時間を知る前に、ブロック時間と同等の値を設定することができます。 – BrianRice

+0

ブライアンありがとう - 私は製品管理チームと一緒にそれを上げます。 –

関連する問題