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

如: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中。可直接对变量进行赋值

  

Solidity基本数据结构的更多相关文章

  1. 智能合约语言 Solidity 教程系列4 - 数据存储位置分析

    写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 这部分的内容官方英文文档讲的不是很透,因此我在参考Soli ...

  2. 智能合约语言 Solidity 教程系列6 - 结构体与映射

    写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 本系列文章一部分是参考Solidity官方文档(当前最新版 ...

  3. Solidity 中文文档 —— 第一章:Introduction to Smart Contracts

    第一章:智能合约简介 粗略地翻译了 Ethereum 的智能合约开发语言的文档:Solidity.欢迎转载,注明出处. 有任何问题请联系我,本人微信:wx1076869692,更多详情见文末. 我是 ...

  4. Solidity by Example详解 - Voting

    Example地址:https://solidity.readthedocs.io/en/develop/solidity-by-example.html#voting Voting程序的功能: 这个 ...

  5. 智能合约开发solidity编程语言开发一个以太坊应用区块链投票实例

    智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ...

  6. solidity learning (1)

    学习文档笔记:http://solidity-cn.readthedocs.io/zh/develop/layout-of-source-files.html 1.pragma solidity ^0 ...

  7. Solidity合约记录——(三)如何在合约中对操作进行权限控制

    合约中一般会有多种针对不同数据的操作:例如对于存证内容的增加.更新及查询,若不进行一套符合要求的权限控制,事实上整个合约在真实环境下是没有多少使用价值的.那么应当如何对合约的权限进行划分?我们针对So ...

  8. solidity学习-cryptoPunks为实例

    在这里使用cryptoPunks为实例来进行solidity的介绍,一般这些内容理解了就能够进行相对简单的智能合约的编写了,同时会添加一些我认为也十分重要的内容学习文档为http://solidity ...

  9. 以太坊智能合约介绍,Solidity介绍

    以太坊智能合约介绍,Solidity介绍 一个简单的智能合约 先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节. Storage contract SimpleSt ...

随机推荐

  1. C++之Boost准标准库配置

    下载安装 进入官网下载地址:https://www.boost.org/users/download/ 本教程直接下载官方已编译库,不涉及源代码手动编译 点击官方编号好的链接,然后进入一个下载地址:h ...

  2. Kubernetes 升级记录:从 1.16.3 升级至 1.17.0

    参考官方文档 Upgrading kubeadm clusters 在 ubuntu 18.04 上完成了升级,记录一下升级步骤. 一.升级第一个 master 节点 apt-get 安装 kubea ...

  3. 吴裕雄 python 机器学习——伯努利贝叶斯BernoulliNB模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from skl ...

  4. 吴裕雄 python 机器学习——局部线性嵌入LLE降维模型

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...

  5. rabbitmq - 简单认识

    1. 概述 与 rabbitmq 做交互 amqp 最著名的实现 与 jms 最明显的区别 消息 不是去找 queue 而是去找 exchange 2. rabbitmq 基本组件 sender 发送 ...

  6. Linux - Shell - 字符串拼接

    概述 shell 的字符串拼接 1. 字符串声明 概述 字符串的基本操作 脚本 1 # 声明字符串 str01="str01" echo ${str01} # 单引号也可以 # 不 ...

  7. easyExcel+poi导出Excel出现乱码

    这种问题肯定是浏览器编码问题,修改官方给的util就好了

  8. Python--比较两个字典部分value是否相等(可以用于接口自动化)

    eg:例如你调用了一个新增的接口,以往功能测试的话,你再web端新增一个店铺之后,你肯定要去数据库中查看,这些数据插入的对不对,是否正确的插入了每个字段 # 比较两个字典部分是否相等 def comp ...

  9. MyCat of Middleware

    第一章 入门概述 1.1 是什么 Mycat 是数据库中间件. 1.数据库中间件 中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通. 例子:Tomcat,web中间件. 数据库 ...

  10. 【C语言】判断某一正整数是否为完数

    什么是完数? 如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”). 例如,6的因子为1.2.3,而 6=1+2+3,因此6是“完数”. 程序框图:m  问题分析 根据完数的定义,解决本题的 ...