区块链 区块链技术 比特币公众号手机端

Move基础语法2

liumuhui 8个月前 (01-28) 阅读数 119 #区块链
文章标签 MoveSui

常用的设计模式

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,...)
  • 简单理解就是烫手的山芋,拿到手处理不了,还要写还回去的功能
  • 结构体无任何能力
  • 需对外提供创建这个结构体的方法
  • 需对外提供销毁这个结构体的方法
版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门