【发布时间】:2018-09-20 04:46:39
【问题描述】:
我如何确保一个状态的属性对于账本上该状态的所有实例都是唯一的?
假设我有一个PersonState 具有属性name 和ssn(社会安全号码),如何确保没有PersonState 被写入具有与任何ssn 值相同的分类帐PersonState 已经存在于账本上?
如果PersonState 是一个数据库表,而name 和ssn 是列,那么在ssn 上指定唯一性约束很容易,但我不知道如何使用Corda 来做到这一点。
新交易的提议者会在账本上产生一个新的PersonState,显然可以在构建提议时检查现有状态。但这仅在初始提案时确认了唯一性-我看不出如何确保事物在相关流程的生命周期内保持唯一性,以使该值始终保证是唯一的直到结束finality flow(或者如果它不再是唯一的,则保证在此时被拒绝)?
我试图思考是否可以通过公证人以某种方式强制执行的预言机来实施某种独特的价值服务?也许我可以围绕这些想法想出一些东西(可能存在一些致命的逻辑缺陷),但如果 Corda 已经为这类事情制定了一些既定流程,那显然会更好。
PS 是的,我知道将 SSN 存储到分类帐可能是个坏主意,这只是一个示例。
【问题讨论】:
标签: corda