ceramic research

这篇博客探讨了Ceramic网络中的3ID DID身份系统,强调其在账户和身份验证中的应用。内容涵盖了3ID DID的使用,包括self.id和相关组件。讨论了DataModel的创建、注册与思考,以及节点的数据可用性和性能问题。总结指出,Ceramic适合用于Web3的数据管理,但存在数据丢失、性能和聚合问题等挑战。开发框架SELF.ID提供了用户认证和数据管理功能,并建议使用DID data store和tile-loader等工具优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 入口(账户,身份)

3ID DID

格式:

3idv1 = "did:3:<StreamId>"

由于DID 文档存储为 Ceramic 流,因此支持多个身份验证密钥和轮换这些密钥等功能
依赖于ceramic网络服务,使用参考self.id

1.selfid使用
 const getEthereumAuthProvider = async () => {
    const wrappedProvider = await getProvider();
    const signer = wrappedProvider.getSigner();
    const address = await signer.getAddress();
    return new EthereumAuthProvider(wrappedProvider.provider, address);
  };

  const getProvider = async () => {
    const provider = await web3ModalRef.current.connect();
    const wrappedProvider = new Web3Provider(provider);
    return wrappedProvider;
  };
2. 3ID DID resolver 3ID DID provider 3ID Connect

支持使用 authID 和 secret创建3id
权限

Key DID

不可修改

DataModel

使用

已注册的模型不需要配置,SelfId中默认可用

自定义的模型,加载使用

import { Core } from '@self.id/core'

const aliases = {
  definitions: {
    profile: 'kjzl6cwe1jw145cjbeko9kil8g9bxszjhyde21ob8epxuxkaon1izyqsu8wgcic',
  },
  schemas: {
    Profile:
      'ceramic://k3y52l7qbv1frxt706gqfzmq6cbqdkptzk8uudaryhlkf6ly9vx21hqu4r6k1jqio',
  },
  tiles: {},
}

const core = new Core({ ceramic: 'testnet-clay', aliases })

const profile = await core.get('profile', id)

创建模型

glaze model:add my-model schema MySchema '{"$schema":"http://json-schema.org/draft-07/schema#","title":"MySchema","type":"object","properties":{}}' --key=<your key>

glaze model:deploy my-model

注册

如果想共享,可以部署后向官方提交注册

思考

同一个StreamId频繁修改会影响性能
stream太多,需要聚合,多维度聚合如何实现
数据量大,如何整理,计算(链下统计)
目前一个流都是一个用户管控,不支持多用户

节点

个人认为作为协议方,不需要太关心这个。
开发连接测试节点即可
生产连接自己的节点更稳定,需要注册锚定服务
节点只关心相关的流

数据可用性

提交过程中重启或关闭,可能造成数据丢失
日志存储在IPLD上
状态存储在节点上
目前没有激励机制

总结

动态数据存储,基于did的索引,scheam的索引,适合用作web3的数据管理

开发框架为SELF.ID
包含用户认证 数据管理模块
用户认证默认采用3id did 能通过钱包进行用户认证,已封装REACT组件
更高级的功能可使用3ID DID resolver 3ID DID provider 3ID Connect 来实现

可以同时支持key did

数据模块
支持根据dataModel获取,设置数据
高级的读取流工具tile-loader 可以批量读取,提高客户端性能
更高级的用户相关可以使用DID data store

通过GLAZE套件发布自己的模型,所有调用实现同一个model的id

隐患:
提交过程中重启或关闭,可能造成数据丢失
目前没有激励机制

同一个StreamId频繁修改会影响性能
stream太多,需要聚合,多维度聚合如何实现
数据量大,如何整理,计算(链下统计)
目前一个流都是一个用户管控,不支持多用户

流数据会被定时的垃圾回收,要永久保存需要使用Pinning
最好让多个 IPFS 节点在不同的环境中运行并固定相同的流。

后续会支持归档

协议:
输入:
定义不同类型的model 尽量每次产生新的streamId

输出:
针对不同model聚合数据,可以考虑链下存储

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值