• 【Solidity】学习(2)


    address 地址类型

    40个16进制数,160位

    地址包括合约地址和账户地址

    payable 合约充值

    balance,指的是当前地址的账户value,单位是wei

    this指的是当前合约的地址

    可以通过地址查找账户余额

    pragma solidity ^0.4.0;
    
    contract value {
        //合约充值
        function pay() payable{
            
        }   
        function getvalve()  view returns(uint){
            address add = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
            return add.balance;//
        }
        function getthisvalve()  view returns(uint){
            return this.balance;//
        }
        
    }

    transfer

    转账和将合约的价值转移  

    pragma solidity ^0.4.0;
    
    contract value {
        //合约充值
        function pay() payable{
            
        }
        //先pay(),再transfer
        function transfer10rther() payable{
            address receive = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c;
            receive.transfer(10 ether);
        }
        //直接选择value的值,即可转换
        function transfeMSG() payable{
            address receive = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c;
            receive.transfer(msg.value);
        }
        
    }

    send

    send()方法和transfer()类似,但是不安全,在以下情况下会报错:

    • 递归深度大于1024
    • gas不足
    pragma solidity ^0.4.0;
    
    contract value {
        //合约充值
        function pay() payable{
            
        }
        function sendMoney() payable returns (bool){
            address receive = 0x14723a09acff6d2a60dcdf7aa4aff308fddc160c;
            //在图形化界面,如果输入的value的值不是10,则返回false
            return receive.send(10 ether);
        }
        
    }

    mapping

    映射

    pragma solidity ^0.4.0;
    
    contract value {
        mapping (uint =>string)namemapping;
        uint public sum =0;
    
        function initMap(string _name){
            namemapping[sum++] = _name;
            
        }
        function findNameById(uint _id) view returns(string){
            if(_id <=sum)
             return namemapping[_id];
            else
                return "worng";
        }
    }

    函数

    function (<parameter types>){private|internal|external|public}
    [pure|constant|view|payble][returns(<return types>)]

    函数重载

    功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同

    pragma solidity ^0.4.0;
    
    contract value {
        function f1(uint160 a)returns(string){
            return "a";
        }
        function f1(address add)returns(string){
            return "add";
        }
        function test()view returns(string) {
                //下面两个情况编译不通过,uint160和地址类型格式相同
            //f1(0xca35b7d915458ef540ade6068dfe2f44e8fa733c);
            //f1(1);
            address add = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
            return f1(add);
        }
    }
    pragma solidity ^0.4.0;
    
    contract value {
        function f1(uint a,uint b)view returns(uint ,uint ){
            return (a+b,a*b);
        }
        function f2(uint a,uint b)view returns(uint add,uint mul){
            return (a+b,a*b);
        }
    }

  • 相关阅读:
    CFA 财务分析与估值 3.贴现现金流估值模型
    量化 量化回测框架
    Python Python语法
    Python __name__ == '__main__' 到底是什么意思
    量化 多因子策略2 : 单因子有效性,多因子相关性,多因子合成
    去重
    docker搭建redis主从复制
    suse简单使用
    grafana
    mongo学习笔记
  • 原文地址:https://www.cnblogs.com/lhw-/p/10639574.html
Copyright © 2020-2023  润新知