Corda技术核心概念之状态(State)

概要

 

  • 状态代表着账单上的事实
  • 涉及状态的有两个操作:一是把当前的状态标记为历史状态;二是创建一个新的状态。所以做查询的时候有CONSUMEND,UNCOMSUMED,ALL三种状态
  • 每一个节点或者叫做party都有一个Valut(Corda中是一个Mysql数据库)来存储state

 

概览

 

一个状态是一个不可改变的对象代表着一个事实,并且这个事实在一个确切的时间点被一个或者多个Corda节点所知道。状态可以包含任意数据,代表着不同种类的事实(现实生活中的一些实体)比如股票,证券,贷款,KYC 数据以及身份信息。

 

比如,下面这个状态代表一个业务  IOU (I own you)----- Alice owns Bob ,表达Alice和Bob达成一致协议。

 

 

确切地说,这个状态代表着Alice欠了Bob10美元。IOU  就是一个状态。IOU 表达现实生活中的一种关系,我欠你东西。

状态包含任意信息,状态也包含Contract的一个引用,这个Contract掌管着状态随着时间的进化(把当前的状态标记为historic,然后创建一个新的状态)。

 

状态序列

 

在状态的世界中,你不能直接去修改状态来反应它的改变(更新),因为状态是不可变的。在区块链的世界中数据一旦上链,则不可更改,在Corda的世界中也是如此。

在一个可被分享事实的生命周期中,随着时间的变化,这些被分享的事实也会“更新”,这一连串的事实也就组成了一个状态序列。当一个状态需要改变的时候,我们就创建一个新的状态版本,这个新的状态版本代表着这个世界的一个新的状态,就把已经存在的状态标记为历史。

随着时间的流动(线性流动),这个状态序列一直在更替,因此给了我们一个可分享事实进化的全部视角。我们可以捕获到如下场景:

数据库(vault)

 

在这个网络中,每一个节点都维持着一个Vault(数据库),在这个数据中可以追溯状态的当前与历史状态。可追溯。

在Corda中,状态有两种情况:一是我们标记为历史的那就是CONSUMED HISTORICAL STATES。二是UNCONSUMED。

在Corda中,持久使用的是Hibernate,在拼接查询条件的时候,默认查询UNCONSUMED。而查询条件有三种选择,CONSUMED,UNCONSUMED,ALL。

我们可以从节点拥有所有当前状态集合的观点来思考账单

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值