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. CSS3外轮廓属性

    外轮廓outline在页面中呈现的效果和边框border呈现的效果极其相似,但和元素边框border完全不同,外轮廓线不占用网页布局空间,不一定是矩形,外轮廓是属于一种动态样式,只有元素获取到焦点或者 ...

  2. path入门 20141102-1405

    那Python有哪些缺点呢? 第一个缺点就是运行速度慢,和C程序相比非常慢, 第二个缺点就是代码不能加密. Python是解释型的 不是编译型的 Python解释器-CPython 命令行: 只需要在 ...

  3. Servlet 基础认识 使用

    参考书<JSP Web 开发案例教程> 在jsp项目中的src文件下面创建HelloServletTest.java,代码如下,注意src的包名,我的包名是zhbit.com packag ...

  4. PS:WINRAR制作32位安装程序和64位安装程序选项

    32位 64位

  5. VS VC++ 设置版本号

    我并不是专职的VC++的开发者,只是有时候偶尔要开发一些C++的DLL,每当要发布新版本的时候,隔得时间长一点总会忘记了在那里设置生成文件的版本号. 在这里把VC++设置的步骤记录下来,以备忘! 设置 ...

  6. 【CSA49F】【XSY3317】card 博弈论 DP

    题目大意 不会博弈论的 yww 在和博弈论大师 yxq 玩一个游戏. 有 \(n\) 种卡牌,第 \(i\) 种卡牌有 \(b_i\) 张. yww 会先把所有 \(B=\sum_{i=1}^nb_i ...

  7. IE中操作粘贴板复制和粘贴

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【树莓派】RPi desktop系统重启或关机挂起几个问题:plymouth-reboot.service、plymouth-poweroff.service、Deconfiguring network interfaces

    在基于intel平台安装的RPi desktop关机或者重启时,会存在挂起的问题,一直卡着不动. 挂起问题有3个: 系统关机时候,停留在:plymouth-poweroff.service 系统重启时 ...

  9. JVM知识(五):垃圾回收算法

    在介绍垃圾回收算法之前,我们需要先了解一个词“stop the world”,stop the world会在执行某一个垃圾回收算法的时候产生,JVM为了执行垃圾回收,会暂时java应用程序的执行,等 ...

  10. [PHP] ubuntu16.04配置Lamp环境(搭建linux+apache+mysql+php7环境)

    reference : http://blog.csdn.net/Abyss_sliver/article/details/77621404 好久没有在Linux环境下进行开发了,比较常用的还是win ...