Advertisement

元宇宙如何接入区块链

阅读量:

元宇宙如何接入区块链

初建中的虚拟空间

    • 1 如何构建协议数据模型?
    • 2 如何获取最新状态数据?
    • 3 如何修改最新状态数据?

1 如何构建协议数据模型?

构建对应元宇宙3d模型的数据模型,例如1号协议:

复制代码
      // 每个账号的标准状态,1号协议消息内容对应 ExInfo 
      type StateAccount struct {
      //Nonce   uint64
      trie    *trie.Trie
      worksex *WorksmsgEx
      //	rcps         map[string]Messagebs
      Balance      *big.Int
      LockedAmount *big.Int // 质押中(投票,质押)
      ExInfo       []byte   // 附加数据,不同的应用协议数据结构不同, []Exinfo rlp 序列化后数据
    
      Receipts []byte //确认消息列表trie key:cid, value: Sign:1 cfm:2 	exc:3 确认状态+追加信息
      }
    
    
      type ExInfo struct {
      Ptlno   int    // 协议编号 1~100000  保留向基金会申请后才能使用,100000 之后用户自己定义,不同用户可能出现协议冲突
      Objdata []byte // 不同协议,用户状态内容编码后数据
      }
    
      // 协议号 1,元宇宙用户画像模型(示例,待标准化
      type MetaEx struct {
      Name     *big.Int // 昵称
      Age      byte     //年龄
      Sex      byte     //性别
      Info     string   // 简介
      Model3d  []byte   //用户3d 模型,加密后实体模型序列化数据,ipfs cid 值
      Metadata []byte   // 个人元宇宙装扮摆设数据
      Ex       []byte   // 扩展数据
      }

2 如何获取最新状态数据?

  • 用户将3D建模数据通过区块链接口加密存储于区块链中;仅凭用户的私钥即可访问;当然也可以将数据公开存储并解析MetaEx数据。
    • 当用户登录系统后,在元宇宙中使用三维建模客户端本地解析和解密获取的3D模型数据,并在本地渲染完成后与其他用户进行交互。
复制代码
    # 通过GetAccount获取账号最新状态
    GetAccount(ctx context.Context, address []byte) (*StateAccount, error)      

3 如何修改最新状态数据?

方式1. 通过协议号修改整个ExInfo.Objdata

复制代码
    Pubmsg向区块链网络发送签名后的消息
    Pubmsg(ctx context.Context, transmsg Messagebs) error     
    type Messagebs struct {
    	Msgtype
    
    	Body   Itrans // 可以是cid ,也可以是body(signmsg)
    
    }
    // Body
    type Exmsg struct {
    	Msgtype Msgtype // models.Trans
    	From    types.Address
    	PtlNo   int
    	ObjData []byte //
    	Time    uint64 //时间
    }
    type SignExmsg struct {
    	Exmsg Exmsg
    	Sign  []byte
    }

方式2. 利用智能合约更新 ExInfo.Objdata 中的某一项信息, 这样能够减少信息量, 进而节约带宽以及存储空间

复制代码
    Pubmsg向区块链网络发送签名后的消息
    Pubmsg(ctx context.Context, transmsg Messagebs) error     
    
    
    # 智能合约编写见[]

方式3. 通过协议号修改整个ExInfo.Objdata,某个字段的值

复制代码
    Pubmsg向区块链网络发送签名后的消息
    Pubmsg(ctx context.Context, transmsg Messagebs) error     
    
    
    // Body
    type Ex2msg struct {
    	Msgtype   Msgtype // models.Trans
    	From      types.Address
    	PtlNo     int
    	FieldId   string
    	FeildData []byte //
    	Time      uint64 //时间
    }
    
    type SignEx2msg struct {
    	Ex2msg Ex2msg
    	Sign  []byte
    }

原文地址:https://github.com/asmbio/doc/blob/master/Meta.md

全部评论 (0)

还没有任何评论哟~