SUI中的,ability key 和store 的本质是什么,以及作用是什么?

G-XBT
发布于 阅读 644

1,key是什么?

key 是和uid 结合在一起使用的。uid 是一个地址。这两者的结合就是 建立一个全局索引,而这个全局索引的内容就是uid,就是这个地址,这个地址,就是对象地址。通过这个地址,可以找到这个对象。
我们可以建立空的全局索引,也就是空对象,也就是如下结构:

struct Car has key { 
  id:UID
}

2,store是什么?

store 声明一个全局存储。一般和key一起使用,这样可以通过key,找到store的内容,也就是对象的内容。如下:

struct  Car has key store { 
   id:UID,
   color: u16
}

这个struct 必须拥有store 声明,color 的内容才会被全局存储。也才拥有通过key(对象地址)检索到 color的能力。

如果一个结构只有store,没有key,一般是用来拆分比较的大struct结构。比如:

struct CarColor has store { 
    color:u16,
}
struct Car has key store { 
    id: UID,
    color: CarColor
}

而这样,CarColor的存储内容,我们是无法访问的,只能通过Car来间接索引访问CarColor这个全局存储。

key 和store,这样大家可能不理解,我换一个表现形式,大家就理解了。 (key => store)

{
   "key1":value1,
   "key2": value2,
   "key3": value3
}

store1 拆分出来单独定义,就是 store

struct store1 { 
    ll: value3,
}

key1 拆分出来,就是key

{
  "key":null
}

key store,就是把这两个给组合到一起,哈哈哈

{
 "key1":value1,
   "key2": value2,
   "key3": store1
}

so easy

标签: 每日闲话
评论