solidity语言
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. 数据类型值类型

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语言的更多相关文章
- 用solidity语言开发代币智能合约
智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助. 以太坊的应用被称为去中心化应用(DApp),DApp的开发 ...
- 第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约
智能合约是以太坊的核心之一,用户可以利用智能合约实现更灵活的代币以及其他DApp.不过在深入讲解如何开发智能合约之前,需要先介绍一下以太坊中用于开发智能合约的Solidity语言,以及相关的开发和测试 ...
- Solidity语言系列教程
Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在 以太坊虚拟机(EVM) 上运行. ...
- solidity语言介绍以及开发环境准备
solidity语言介绍以及开发环境准备 Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的 ...
- 用C++生成solidity语言描述的buchi自动机的初级经验
我的项目rvtool(https://github.com/Zeraka/rvtool)中增加了生成solidity语言格式的监控器的模块. solidity特殊之处在于,它是运行在以太坊虚拟机环境中 ...
- Solidity语言基础 和 Etherum ERC20合约基础
1. 类型只能从第一次赋值中推断出来,因此以下代码中的循环是无限的, 小. for (var i = 0; i < 2000; i++) { ... } --- Solidity Types ...
- solidity语言14
库(Libraries) 库类似合约,实现仅在专门地址部署一次,使用EVM的DELEGATECALL的功能重复使用的目的.意思是当库函数被调用后,代码执行在被调用的合约的环境.例如,使用this调用合 ...
- solidity语言13
函数过载 合约内允许定义同名函数,但是输入参数不一致 pragma solidity ^0.4.17; contract A { function f(uint _in) public pure re ...
- solidity语言12
View Functions 函数声明为视图,将无权修改状态 pragma solidity ^0.4.16; contract C { function f(uint a, uint b) publ ...
随机推荐
- R:魔兽世界终极版
描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 .... N ( N <= 20 ).红魔军的司令部算作编号为0 ...
- SpringBoot Maven多模块整合MyBatis 打包jar
最近公司开始新的项目,框架选定为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 源码:https://github.com/12641561 ...
- [译文]Casperjs1.1.0参考文档-安装
安装 Casperjs能被安装在mac osx,windows 和大多数linux版本 依赖项 PhantomJS1.82及以上 Python2.6及以上(很多人忘了安装python导致安装失败) 1 ...
- RFC3920
RFC3920 可扩展的消息和出席信息协议 (XMPP): 核心协议 关于本文的说明 本文为互联网社区定义了一个互联网标准跟踪协议,并且申请讨论协议和提出了改进的建议.请参照"互联网官方协议 ...
- 在FC中如何获取fcdot文件
在FlexiCapture中一些客户在问如何获取.fcdot文件(在测试序列号下或者没有测试模板的情况下) 第一步: 1.查看License Manager查看是否找到序列号 首先我们在开始菜单里面打 ...
- Wormholes 虫洞 BZOJ 1715 spfa判断负环
John在他的农场中闲逛时发现了许多虫洞.虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前).John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地 ...
- 二分答案 & 洛谷 P2678 跳石头
首先让我们先学一下二分答案这个东西... 二分答案,肯定与二分有关,还与可能是答案的东西有关... 二分答案的准确定义: 二分答案是指在答案具有单调性的前提下,利用二分的思想枚举答案,将求解问题转 ...
- adminlte+layui框架搭建3 - layui弹出层
在amdinlte首页引入layui.js 和layui.css后添加代码 <script> layui.use(['layer'], function () { var layer = ...
- adminlte+layui框架搭建1
之前写过一篇layui-master的UI搭建,但是感觉layui-master缺少一些东西(前台页面不过多研究),比如说页面的皮肤.菜单.插件,当然我也希望layui的插件可以越来越多,支持多个浏览 ...
- 提交post请求,参数为xml格式
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...