介绍

Move特点与优势
Move是由Facebook公司开发设计的智能合约语言。Move它提出的一套完整的面向数字资产的编程体系。与现有的区块链编程语言相比,Move着重强化了数字资产的地位。使用Move语言,开发者能够更灵活、安全地在链上定义和管理数字资产。
Move 通过省略某些特征——动态调度和一般指针——来限制语言的表达,而对语言灵活性的大规模限制可能会引发重入错误。
Move 支持“资源类型”(受线性类型系统启发)。模块可以定义特定类型的数据为“资源”,这意味着模块外部的任何代码都不不能查看该类型值的内容:它们只能在变量之间移动并传递给函数,这虽然能够帮助 Move 的开发?人员确保资源得到保存,但它们还不足以确保功能的正确性——Move 设计者也同意这一点,并认为最终他们将需要使用形式化验证。
关于执行的问题:Move 的编译器会生成类型化的字节码,同时,有一个可以检查输出类型是否正确的“字节码验证器”。需要说明的是,这种“验证器”与形式化验证无关 ,它仅是对输出类型进行一次完整性的检查。当然, 仍然可能会存在它创建类型正确但内容错误的编译器 bug。
综上而言,Move 语言额外添加了一层规范,可以避免很多 Solidity 的漏洞,然而这些安全性和正确性的保障仍旧是单独存在的壁垒加持。
----摘自官网介绍

加减乘除 Demo

  • 函数
script { 
    use 0x01::Wmhxx_Math; 
    use 0x1::Debug; 
    fun main(){ 
        let a:u8 = 3; 
        let b:u8 = 2; 
        Debug::print(&Wmhxx_Math::add(a,b));
        Debug::print(&Wmhxx_Math::subtract(a,b));
        Debug::print(&Wmhxx_Math::multiply(a,b));
        Debug::print(&Wmhxx_Math::divide(a,b));
        Debug::print(&Wmhxx_Math::mod(a,b));
    } 
}
  • 资源
module 0x01::Wmhxx_Math { 
        public fun add(a: u8,b: u8): u8 { 
            a * b 
        } 
 
        public fun subtract(a: u8,b: u8): u8 { 
            a - b 
        } 
         
        public fun multiply(a: u8,b: u8): u8 { 
            a * b 
        } 
         
        public fun divide(a: u8,b: u8): u8 { 
            a / b 
        } 

        public fun mod(a: u8, b: u8): u8{
            a % b
        }
    } 

NumberUtil

自己封装的工具类

module 0x11::NumberUtil{ 
    use 0x1::Debug; 
 

    public fun validation_even_number(a:u8):bool{ 
        if(a % 2 == 0 ){ 
            true 
        }else{ 
            false 
        } 
    }

    public fun max_number(a:u8,b:u8):u8{
        if(a > b ){
            return a
        };
        return b
    }

    public fun mix_number(a:u8,b:u8):u8{
        if(a > b ){
            return b
        };
        return a
    }


    public fun get_number_list(a:u128): u128{
        let index = 0;

        while(index < a){
            index = index + 1;
            Debug::print(&index);
        };
        index
    }
 
 
}

函数

script{
    use 0x11::NumberUtil;
    use 0x1::Debug;
    
    fun main(){
            let a :u8 = 89;
            let a1 = NumberUtil::validation_even_number(a);
            Debug::print(&a1);
            let b :u8 = 90;
            let b1 = NumberUtil::validation_even_number(b);
            Debug::print(&b1);
            let c = NumberUtil::max_number(a,b);
            Debug::print(&c);
            let c = NumberUtil::mix_number(a,b);
            Debug::print(&c);
            let d:u128 = 10;
        
        //2022-10-23
        let d1 = NumberUtil::get_number_list(d);
        Debug::print(&d1);

        //if(d1 == 10) abort 1024;

        //assert!(d1 != 10 , 1024);
    }

}
文章作者: 烦恼的夏洛克
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 烦恼的夏洛克
move 区块链
喜欢就支持一下吧