RPC中的vaultQuery在哪里从PersistentState

时间:2019-07-03 01:03:34

标签: corda

以cordapp-example为例,其中IOUstate是queryableState并保持不变。在数据库中,您将看到一个新表IOU_States,其中包含您所定义的列值。

  1. 构建项目并启动节点
  2. 创建从partyA到partyB的Tx

    流程开始ExampleFlow iouValue:50,otherParty:“ O = PartyB,L = New York,C = US”

  3. 在partyA上运行vaultquery()并注意显示的输出(标签显示为1)

    运行vaultQuery contractStateType:com.example.state.IOUState

  4. 将H2控制台附加到partyA的数据库

  5. 在IOU_States表上运行搜索
  6. 您将看到IOUState状态对象作为行项目,请注意值50
  7. 运行更新以将值从50更改为60
  8. 在IOU_States表上运行搜索以确认更改
  9. 在partyA上运行vaultquery()并注意显示的输出(如显示2所示)
  10. 显示1 =显示2

问题: 1.当我破坏了我的持久表时,我到底做了什么改变? 2. vaultQuery()是否改为查询node_transactions并从Blob中反序列化? 3.在Vault_states表中,我们曾经有一个Contract_states列,但现在不再存在。那就是我们倾向于更改快照以测试先前篡改的数据。现在该状态的快照保存在哪里?

1 个答案:

答案 0 :(得分:0)

更改状态表不会破坏交易,电子仓库查询也会对电子仓库进行操作,因此,即使您更新数据,任何处于受控状态的交易也不会出现不一致情况