IDE:Atom

  插件:autocomplete-solidity 代码自动补齐

      linter-solium,linter-solidity代码检查错误

      language-ethereum支持solidity代码高亮

1. 合约文件结构

  版本号  :

  import

  合约 :contract

pragma solidity ^0.4.0;

import "solidity_for_import.sol";

// this is a test contract
contract Test{
uint a;
function setA(uint x) public {
a = x;
}
//事件
event Set_A(uint x); //结构体
struct Pos{//经纬度
int lat;
int lng;
} address public owerAddr;
//函数修改器, 在函数执行前先执行函数修改器的代码
modifier owner() {
require(msg.sender == owerAddr);
_;
}
function mine () public owner{
a+=1;
}
}

solidity1.sol

2. 数据类型值类型

  solidity官网

pragma solidity ^0.4.0;

// this is a test contract
contract Test{
uint a=10;
uint b=20;
function setA(uint x) public constant returns (uint) {
a=x;
return a+10;
} }

2.1 bool

取值:true/false

运算符:!  && || == !=

2.2 整形

  int/unit

  运算符:<   <=   ==

    位运算:& |  ^(异或)  ~(位取反)

    算数运算:+,-,* ,/,%,**,<<,>>

  constant 关键字的函数不会修改状态变量的值

2.3 常量

  数字常量计算不会溢出

pragma solidity ^0.4.0;

// this is a test contract
contract Test{
  //状态变量
uint a=10;
uint b=20;
function testLiterals() public constant returns(int){
return 1+2e10;
}
}

  字符串常量:  "hello world"

  十六进制常量:hex"abcd"

十六进制数可以转化为字节数组

    function testHex() public constant returns(bytes2,bytes1,bytes1){
bytes2 a=hex"abcd";
return (a, a[0], a[1]);
}

  地址常量:用20个字节的16进制数表示

属性:balance表示余额

    transfer() 用来转义以太币

合约也是个地址类型。

  

pragma solidity ^0.4.0;

contract AddrTest{
//接受以太币
function deposit() public payable{ }
//获取当前地址的余额
function getBalance() public constant returns(uint){
return this.balance;
}
// transfer ether
function transferEther(address target) public {
target.transfer(10);
}
}

3. 引用类型

  memory, storege

3.1 数组 Arrays

  对于非中文字符,占用1个字节【ASCII】;对于中文字符,占用三个字节【】

    function newMem(uint len) constant public{
//内存变量
uint[] memory arr = new uint[](len);
}
function param(uint[3] arr) constant public{ }

4. 区块和交易属性

5. 错误处理

处理函数: assert,require

solidity语言的更多相关文章

  1. 用solidity语言开发代币智能合约

    智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助. 以太坊的应用被称为去中心化应用(DApp),DApp的开发 ...

  2. 第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约

    智能合约是以太坊的核心之一,用户可以利用智能合约实现更灵活的代币以及其他DApp.不过在深入讲解如何开发智能合约之前,需要先介绍一下以太坊中用于开发智能合约的Solidity语言,以及相关的开发和测试 ...

  3. Solidity语言系列教程

    Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在 以太坊虚拟机(EVM) 上运行. ...

  4. solidity语言介绍以及开发环境准备

    solidity语言介绍以及开发环境准备   Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的 ...

  5. 用C++生成solidity语言描述的buchi自动机的初级经验

    我的项目rvtool(https://github.com/Zeraka/rvtool)中增加了生成solidity语言格式的监控器的模块. solidity特殊之处在于,它是运行在以太坊虚拟机环境中 ...

  6. Solidity语言基础 和 Etherum ERC20合约基础

    1. 类型只能从第一次赋值中推断出来,因此以下代码中的循环是无限的,  小. for (var i = 0; i < 2000; i++) { ... } --- Solidity Types ...

  7. solidity语言14

    库(Libraries) 库类似合约,实现仅在专门地址部署一次,使用EVM的DELEGATECALL的功能重复使用的目的.意思是当库函数被调用后,代码执行在被调用的合约的环境.例如,使用this调用合 ...

  8. solidity语言13

    函数过载 合约内允许定义同名函数,但是输入参数不一致 pragma solidity ^0.4.17; contract A { function f(uint _in) public pure re ...

  9. solidity语言12

    View Functions 函数声明为视图,将无权修改状态 pragma solidity ^0.4.16; contract C { function f(uint a, uint b) publ ...

随机推荐

  1. Windows10电脑系统时间校准

    有时候新安装电脑系统,系统时间不对,需要主动去校准系统时间. 1.点击时间 2.日期和时间设置 3.其他日期.时间和区域设置 4.设置时间和日期 5.Internet 时间 6.点击立即更新,如果更新 ...

  2. django使用auth模块进行身份认证

    https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests djang ...

  3. Linux里的用户管理

    在linux中系统中,它并不认识帐号名称.它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中.我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passw ...

  4. 关于RN热更新-iOS端捕获加载jsbundle异常解决方案

    1.监听加载jsbundle异常的处理 模拟情况:合并增量后jsbundle文件出现部分错误调试发现当加载jsbundle出现异常时,RN模块RCTBatchedBridge.m中如下代码会执行: - ...

  5. BZOJ1012 [JSOI2008]最大数 线段树

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:LLL不超过当前数列的长度.(L> ...

  6. js 获取滚动条事件

    function getScroll() { return { left: window.pageXOffset || document.documentElement.scrollLeft || d ...

  7. poll?transport=longpoll&connection...烦人的请求

    2016-06-19 11:50 76人阅读 评论(0) 收藏 举报  分类: C#那点事 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.问题描述: 最近使用miniui做了一个后台管理系 ...

  8. netstat查看tcp连接的状态

    netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

  9. shell-002:统计IP访问量

    统计IP访问量 #!/bin/bash # 统计IP的访问量 # 第一步首先得获取到日志的IP # 第二步给IP排序,这样相同的的IP就会在一起 sort # 第三步则给重复的IP统计数量,去重 un ...

  10. Qt 学习之路 2(56):使用模型操作数据库

    Qt 学习之路 2(56):使用模型操作数据库 (okgogo: skip) 豆子 2013年6月20日 Qt 学习之路 2 13条评论 前一章我们使用 SQL 语句完成了对数据库的常规操作,包括简单 ...