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,...)
- 简单理解就是烫手的山芋,拿到手处理不了,还要写还回去的功能
- 结构体无任何能力
- 需对外提供创建这个结构体的方法
- 需对外提供销毁这个结构体的方法
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。