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

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。
Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:
- 以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的
Address的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)。 - 由于语言内嵌框架是支持支付的,所以提供了一些关键字,如
payable,可以在语言层面直接支持支付,而且超级简单。 - 存储是使用网络上的区块链,数据的每一个状态都可以永久存储,所以需要确定变量使用内存,还是区块链。
- 运行环境是在去中心化的网络上,会比较强调合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络上的节点中的代码执行,分布式的感觉。
- 最后一个非常大的不同则是它的异常机制,一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。
代码示例:
pragma solidity ^0.4.20;
contract HelloWorld{
uint balance;
function HelloWorld() {
balance = **;
}
function update(uint amount) returns (address, uint){
balance += amount;
return (msg.sender, balance);
}
}
工欲善其事必先利其器,下面介绍开发的IDE以及环境搭建:
可用的 Solidity 集成
-
基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件。
-
IntelliJ IDEA 的 Solidity 插件(可用于其他所有的 JetBrains IDE)
-
Microsoft Visual Studio 的 Solidity 插件,包含 Solidity 编译器。
Package for SublimeText — Solidity language syntax
SublimeText 编辑器的语法高亮包。
-
Atom 编辑器的插件,支持高亮、编译和运行时环境(兼容后端节点和虚拟机)。
-
Atom 编辑器的插件,提供 Solidity 语言的 Lint 检查(静态检查)。
-
Atom 的可配置的 Solidty 静态检查器,基于 Solium。
-
一种静态检查器,识别和修复 Solidity 中的风格以及安全问题。
-
一种静态检查器,提供安全和风格指南以及智能合约验证的最佳实践规则。
-
Microsoft Visual Studio Code 插件,包含语法高亮和 Solidity 编译器。
-
Emacs 编辑器的插件,提供语法高亮和编译错误报告。
-
Vim 编辑器的插件,提供语法高亮。
-
Vim 编辑器的插件,提供编译检查。
不再维护:
-
基于 Qt 的 IDE,可以设计、调试和测试 Solidity 智能合约。
-
专门的网页 IDE,也提供一个完整以太坊环境的脚本访问。
Solidity 工具列表
-
Solidity 语言的构建工具、包管理器以及部署助手。
-
一个命令行控制台,可以让你立刻尝试 Solidity 语言。
-
可视化的 Solidity 控制流,并能标明潜在的安全漏洞。
-
EVM 反汇编程序,可以执行字节码的静态分析,能提供比 EVM 操作更高级的抽象。
-
Solidity 语言的文档生成器。
第三方 Solidity 解析器和语法
-
JavaScript 的 Solidity 解析器
-
ANTLR 4 解析器生成器的 Solidity 语法
我个人主要atom配合 Remix开发的,下面介绍一下Remix的使用
功能
这里我们使用在线编译器,打开网址

文件夹管理
最左边是文件夹管理,里面列出了当前的工作区里的文件,remix可以支持从本地文件夹读取文件。
工作区
正中间是工作区,工作区上半部是代码编辑区,在这里可以写solidity合约。
下半部是日志区,在执行智能合约时,会显示transaction相关的信息。在输出日志的时候还可以查看Details和Debug信息。
功能区
最右边的是功能区,里面有编译,运行,设置和分析以及调试器和支持。
在编译器点击Details可以查看编译细节,里面有NAME,METADATA,BYTECODE,ABI 等一些相关信息。

在设置里面可以选择我们的编译器版本,和一些IDE的使用设置。
其他就不介绍了,使用是很简单的。
Solidity 0.5.12 documentation(英文版)
solidity语言介绍以及开发环境准备的更多相关文章
- GO语言介绍以及开发环境配置
一.介绍 GO语言是静态强类型语言 静态也就是编译型语言 二.安装 1.下载地址 下载地址 https://golang.google.cn/dl/ 2.安装 Linux安装 1.下载二进制包:go1 ...
- 一、Java语言概述与开发环境、第一个java程序
目录: 1.1 Java特点 1.2 Java程序运行机制 1.3 安装JDl和配置环境变量 1.4 第一个JAVA程序 1.5 第一个JAVA程序的含义 前言 Java语言历时近二十年,已发展成为人 ...
- Go语言Windows 10开发环境搭建:Eclipse+GoClipse
Intel Core i5-8250U,Windows 10家庭中文版,go version go1.11 windows/amd64, Eclipse IDE for C/C++ Developer ...
- Scala语言简介和开发环境配置
Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...
- 01--Java语言概述与开发环境 最适合入门的Java教程
Java 程序运行机制 编译型语言: 使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性"翻 译"成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该 ...
- 嵌入式Linux开发——内容介绍与开发环境的搭建
嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...
- 1. React介绍 React开发环境搭建 React第一个程序
什么是 React React 是 Facebook 发布的 JavaScript 库,以其高性能和独特的设计理念受到了广泛关注. React的开发背景 Faceboo ...
- SDL 开发实战(一):SDL介绍及开发环境配置
一.什么是SDL? SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. SDL使用C语言写成 ...
- 1、Java语言概述与开发环境——Java程序运行机制
Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...
随机推荐
- 2013.4.26 - KDD第八天
下午上Android课,我看中秋也选这个课了,然后在上半节的时候速补了一下秦海龙师兄的那篇文章.中间休息的时候窜到了中秋那里,然后讨论了半节课现在的情况. 现在的情况是这样的: 中 秋开始是没有进行主 ...
- 倍增法求lca:暗的连锁
https://loj.ac/problem/10131 #include<bits/stdc++.h> using namespace std; struct node{ int to, ...
- 基于h5+的微信分享,hbuilder打包
1.打开app项目的manifest.json的文件,选择模块权限配置,将Share(分享)模块添加至已选模块中 2.选择SDK配置,在plus.share·分享中,勾选□ 微信消息及朋友圈,配置好a ...
- 行为型模式(八) 职责链模式(Chain of Responsibility)
一.动机(Motivate) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合.如何使请求的发送者不需要指定 ...
- 三种Timer
一.基于 Windows 的标准计时器(System.Windows.Forms.Timer) 首先注意一点就是:Windows 计时器是为单线程环境设计的.它直接继承自Componet.Timer控 ...
- 在PHP中使用CURL实现GET和POST请求的方法
1.CURL介绍 CURL是一个利用URL语法规定来传输文件和数据的工具.支持很多协议,如HTTP.FTP.TELNET等. 幸运的是PHP也支持CURL库.本文将介绍curl的一些高级特性,以及在P ...
- 接口中的JSON报文
原始报文: 请求报文: [ { "appNo" : "", "applicantCredentialCode" : "" ...
- Õ() Big-O-notation
Õ只是大\(O\)表示法的变种,忽略了对数因子: \[f(n) \in \tilde O(h(n))\] \[=> \exists k : f(n) \in O \!\left( h(n)\lo ...
- 域渗透:LSA Protection
简介:微软在 2014 年 3 月 12 日添加了 LSA 保护策略,用来防止对进程 lsass.exe 的代码注入,这样一来就无法使用 mimikatz 对 lsass.exe 进行注入,相关操作也 ...
- BZOJ 2406 矩阵(二分+有源汇上下界可行流)
题意 题解 二分答案+可行流判断. 模板题. CODE #include <cstdio> #include <cstring> #include <algorithm& ...