Move基础语法2

常用的设计模式

常用的设计模式

AdminCap 管理员权限

public struct AdminCap has key{
    id:UID,
}
public struct Counter has key{
    id:UID,
    amount:u64,
}
fun init(ctx:&mut TxContext){
    let admin=AdminCap{
        id:object::new(ctx)
    };
    //将管理员权限转移给发布者
    transfer(admin,ctx.sender());

    let counter=Counter{
        id:object::new(ctx),
        amount:0,
    };
    //共享
    share_object(counter);
}
//验证调用地址是否有admin权限
public entry fun use_counter(admin:&AdminCap,counter:&mut Counter,ctx:&mut TxContext){
    counter.amont=counter.amount+1;
}

witness 见证者模式

public struct Witness has drop{} 这个结构体创建出来的实例是为了创建了一个资产需要的一种权限,创建同一个实例只能使用一次,这个结构体创建出来需要可以销毁

  • 结构体没有字段,只有drop能力,实例只能使用一次

    one-time-witness 见证者模式20.05

    只能使用一次

    hot-potato 设计模式

public struct Receipt{price:u64}
public fun create(xx:XX,....):(Receipt{},Coin<x>)
public fun burn(rece:Recipt,...)
  • 简单理解就是烫手的山芋,拿到手处理不了,还要写还回去的功能
  • 结构体无任何能力
  • 需对外提供创建这个结构体的方法
  • 需对外提供销毁这个结构体的方法
  • 原创
  • 学分: 5
  • 分类: Sui
  • 标签: Move 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0xkrypton
0xkrypton
江湖只有他的大名,没有他的介绍。