zoukankan      html  css  js  c++  java
  • Solidity基本数据结构

    任何一个智能合约都会在最开头表示使用的编译器版本

    如:prama solidity ^0.4.0

    数组:

      //静态数组 大小长度确定

      uint[2] fixedArray;

      //动态数组,可以随意添加元素

      uint[ ] fixedArray;

      使用push指令来添加   fixedArray,push()//添加后会返回一个引索值

      //公共数组,使用关键字public。可以被别人调用读取但是不能修改

      uint[ ] public people;

      //struct数组

      结构体[ ] 数组名

      数组.push()返数组的长度跟C一样的应用数组下标

      

    定义函数:

    function eatHamburgers(string_name,uint _amout){

    }

    function 函数名(参数){

    }

    在solidity中的函数默认为公有,但是可以设置为私有。可以保护合约

    function _addToArray(uint _number) private{

      函数体

    }//在函数后面添加private即可。和函数的参数类似私有函数的用下划线开始

    除了public和private在solidity中还有internalexternal两种描述函数可见性的修饰词

      internal和private类似表示私有,但是internal修饰的函数在另一个继承合约是可以使用的

      external和public类似,但是只能在其他合约中调用这个函数,在该合约一种不能被其他函数调用。

    跟Go语言同样是可以定义返回值的类型

    function _addToArray() public returns (string){   //需要注意的是这里是returns

    }

    函数修饰分为 view和pure:

    view指只能读取数据不能更改数据//使用view标记的函数只用提取,所以可以节省gas但只能是在该合约里面如果从别人的合约中提取view一样需要提供gas。

    pure函数 指函数不访问应用的数据,返回值完全取决于输入的参数

     函数修饰符:函数修饰符跟函数是类似的,不用是用来修饰已有的函数,在其他语句执行前,为它先检验条件。关键字modifier(修饰符)

    Ownable合约非常常用,大多数Solidity DApp首先继承出它的子类再在上面开发

    调用函数修饰符常常用在函数的后面跟public和private等一个位置用来判断是否执行该函数

       函数修饰符通常使用下划线结尾

      如:modifier olderThan(uint _age,uint _userId){

        require(age[_userID]>= _age);

        _;  //以_;结尾表示函数正常返回继续执行之前的功能

    }

    Keccak256:

      ethereum内部有散列函数keccak256,用SHA3版本。这散列函数的作用就是把这字符串转化为一256位的16进制数字。

    映射(Mapping)和地址(Address):

      1.Address

        在区块链中Address相当于你的账户名字。

        当用户使用你的DApp交互时,生成的所有权被设置在调用者的Address

      2.Mapping:

        其实就是键值对

        定义:

          创建映射:

            mapping(键类型 => 值类型)名字

        运用映射:(得使用msg.sender)//在solidity中有一些全局变量可以被所有函数调用,msg.sender就是其中的一个变量,它指的是当前调用者(或智能合约的address)

            在mapping中存储数据跟数组类似: 名字[键名] = value

    时间单位:

      Solidity使用自己的本地时间单位变量now将返回当前的unix世界戳(自1970年1月1日以来经历的描述)(Unix传统用32位来存储,但导致2038年不够用)调整到64位会导致gas使用太多。

        Solidity还包含了seconds,minutes,hours,days,weeks,years等会转化为对应的秒数放入uint中。可直接对变量进行赋值

      

  • 相关阅读:
    Ximarin.Android 百度地图
    利用Chrome浏览器 保存网页成PDF
    SQL 笔记
    windows server 2008 r2 IIS PHP
    自动化分页,HTML代码控制 思想
    simple
    testtitle
    PyQt5中中文问题的不完全解决
    ubuntu下搭建python2.7+PyQt5并实现一个小词典
    opensuse安装深度截图,深度影音和深度播放器
  • 原文地址:https://www.cnblogs.com/beautiful7/p/12364956.html
Copyright © 2011-2022 走看看