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 集成

  • Remix

    基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件。

  • IntelliJ IDEA plugin

    IntelliJ IDEA 的 Solidity 插件(可用于其他所有的 JetBrains IDE)

  • Visual Studio Extension

    Microsoft Visual Studio 的 Solidity 插件,包含 Solidity 编译器。

  • Package for SublimeText — Solidity language syntax

    SublimeText 编辑器的语法高亮包。

  • Etheratom

    Atom 编辑器的插件,支持高亮、编译和运行时环境(兼容后端节点和虚拟机)。

  • Atom Solidity Linter

    Atom 编辑器的插件,提供 Solidity 语言的 Lint 检查(静态检查)。

  • Atom Solium Linter

    Atom 的可配置的 Solidty 静态检查器,基于 Solium。

  • Solium

    一种静态检查器,识别和修复 Solidity 中的风格以及安全问题。

  • Solhint

    一种静态检查器,提供安全和风格指南以及智能合约验证的最佳实践规则。

  • Visual Studio Code extension

    Microsoft Visual Studio Code 插件,包含语法高亮和 Solidity 编译器。

  • Emacs Solidity

    Emacs 编辑器的插件,提供语法高亮和编译错误报告。

  • Vim Solidity

    Vim 编辑器的插件,提供语法高亮。

  • Vim Syntastic

    Vim 编辑器的插件,提供编译检查。

不再维护:

  • Mix IDE

    基于 Qt 的 IDE,可以设计、调试和测试 Solidity 智能合约。

  • Ethereum Studio

    专门的网页 IDE,也提供一个完整以太坊环境的脚本访问。

Solidity 工具列表

  • Dapp

    Solidity 语言的构建工具、包管理器以及部署助手。

  • Solidity REPL

    一个命令行控制台,可以让你立刻尝试 Solidity 语言。

  • solgraph

    可视化的 Solidity 控制流,并能标明潜在的安全漏洞。

  • evmdis

    EVM 反汇编程序,可以执行字节码的静态分析,能提供比 EVM 操作更高级的抽象。

  • Doxity

    Solidity 语言的文档生成器。

第三方 Solidity 解析器和语法

我个人主要atom配合 Remix开发的,下面介绍一下Remix的使用

功能

这里我们使用在线编译器,打开网址

https://remix.ethereum.org/

 
image

文件夹管理

最左边是文件夹管理,里面列出了当前的工作区里的文件,remix可以支持从本地文件夹读取文件。

工作区

正中间是工作区,工作区上半部是代码编辑区,在这里可以写solidity合约。
下半部是日志区,在执行智能合约时,会显示transaction相关的信息。在输出日志的时候还可以查看Details和Debug信息。

功能区

最右边的是功能区,里面有编译,运行,设置和分析以及调试器和支持。

在编译器点击Details可以查看编译细节,里面有NAME,METADATA,BYTECODE,ABI 等一些相关信息。

 
image

在设置里面可以选择我们的编译器版本,和一些IDE的使用设置。
其他就不介绍了,使用是很简单的。


Solidity 0.5.12 documentation(英文版)

Solidity 有关中文翻译版本

以太坊官网(中文网)

solidity语言介绍以及开发环境准备的更多相关文章

  1. GO语言介绍以及开发环境配置

    一.介绍 GO语言是静态强类型语言 静态也就是编译型语言 二.安装 1.下载地址 下载地址 https://golang.google.cn/dl/ 2.安装 Linux安装 1.下载二进制包:go1 ...

  2. 一、Java语言概述与开发环境、第一个java程序

    目录: 1.1 Java特点 1.2 Java程序运行机制 1.3 安装JDl和配置环境变量 1.4 第一个JAVA程序 1.5 第一个JAVA程序的含义 前言 Java语言历时近二十年,已发展成为人 ...

  3. Go语言Windows 10开发环境搭建:Eclipse+GoClipse

    Intel Core i5-8250U,Windows 10家庭中文版,go version go1.11 windows/amd64, Eclipse IDE for C/C++ Developer ...

  4. Scala语言简介和开发环境配置

    Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...

  5. 01--Java语言概述与开发环境 最适合入门的Java教程

    Java 程序运行机制 编译型语言: 使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性"翻 译"成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该 ...

  6. 嵌入式Linux开发——内容介绍与开发环境的搭建

    嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...

  7. 1. React介绍 React开发环境搭建 React第一个程序

    什么是 React         React 是 Facebook 发布的 JavaScript 库,以其高性能和独特的设计理念受到了广泛关注. React的开发背景         Faceboo ...

  8. SDL 开发实战(一):SDL介绍及开发环境配置

    一.什么是SDL? SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. SDL使用C语言写成 ...

  9. 1、Java语言概述与开发环境——Java程序运行机制

    Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...

随机推荐

  1. 关于元素间的边距重叠问题与BFC

    一.边距重叠常见情况 1.垂直方向上相邻元素的重叠 (水平方向上不会发生重叠) 2. 垂直方向上父子元素间的重叠 二.BFC 1.什么是 BFC BFC(Block Formatting Contex ...

  2. destoon7.0后台栏目分类一键获取所有栏目拼音目录

    近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...

  3. C#向数据库中插入或更新null空值

    一.在SQL语句中直接插入null或空字符串“” int? item = null; item == null ? "null" : item.ToString(); item = ...

  4. 项链与手镯Uva 10294——Polya定理

    题意 项链和手镯都是由若干珠子串成的环形首饰,区别在于手环可以翻转,但项链不可以. 输入整数 $n$ 和 $t$,输出用 $t$ 中颜色 $n$ 颗珠子能制作成的项链和手镯的个数.($1\leq n ...

  5. 国赛 strange_int

    参考文章地址https://www.52pojie.cn/thread-936377-1-1.html https://qrzbing.cn/2019/04/27/CISCN2019-strange- ...

  6. SQL 删除字段 增加字段

    SQL增加字段需要用到sql语句 ALTER TABLE 加(表格名称) ADD 加(字段名称) 加(字段类型)实例:ALTER TABLE T_Basic ADD SEODescription Nv ...

  7. CSP 初赛 知识点整理

    BIOS: BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统".其实,它是一组固化到计算机 ...

  8. centos6.5下安装docker的过程办法

    转载:https://www.cnblogs.com/tymagic/p/10794477.html 在看了网上N多复制粘贴的文章,又尝试无效后,我把我最终成功的办法发出来,希望能帮到拼命干环境的你. ...

  9. 数据库访问优化之四:减少数据库服务器CPU运算

    1.使用绑定变量 绑定变量是指SQL中对变化的值采用变量参数的形式提交,而不是在SQL中直接拼写对应的值. 非绑定变量写法:Select * from employee where id=123456 ...

  10. XOR Clique(按位异或)

    XOR Clique(按位异或): 传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4057 准备:异或:参加运算的两 ...