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

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

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的使用设置。
其他就不介绍了,使用是很简单的。

目录
相关文章
|
29天前
|
Rust 安全 编译器
初探 Rust 语言与环境搭建
Rust 是一门始于2006年的系统编程语言,由Mozilla研究员Graydon Hoare发起,旨在确保内存安全而不牺牲性能。通过所有权、借用和生命周期机制,Rust避免了空指针和数据竞争等问题,简化了并发编程。相较于C/C++,Rust在编译时预防内存错误,提供类似C++的语法和更高的安全性。Rust适用于系统编程、WebAssembly、嵌入式系统和工具开发等领域。其生态系统包括Cargo包管理器和活跃社区。学习资源如"The Book"和"Rust by Example"帮助新手入门。安装Rust可通过Rustup进行,支持跨平台操作。
初探 Rust 语言与环境搭建
|
19天前
|
存储 安全 编译器
Metamask项目方给Solidity程序员的16个安全建议
文章是Metamask项目方Consensys在2020年发布的关于智能合约安全的博文,提供了16条Solidity程序员的安全建议,包括正确使用assert()、require()、revert()函数,避免使用tx.origin进行授权,注意整数除法舍入问题等,以帮助开发者提高智能合约的安全性。
28 0
|
2月前
solidity 学习
solidity 学习
|
4月前
|
Rust 编译器 Linux
Rust编译过程讲解与开发环境准备
目前主流编译平台有,GNU、MSVC、LLVM。因为rustc调用了llvm,因此我们以LLVM为例,我们从C语言的编译过程聊,再对比Rust,看它们的编译过程有何差异。
217 3
|
9月前
|
存储 Rust JavaScript
Rust 开发命令行工具(中)(一)
Rust 开发命令行工具(中)(一)
|
9月前
|
存储 Rust 测试技术
Rust 开发命令行工具(中)(三)
Rust 开发命令行工具(中)(三)
112 0
|
9月前
|
Rust 测试技术 人机交互
Rust 开发命令行工具(中)(二)
Rust 开发命令行工具(中)(二)
|
9月前
|
存储 Rust Linux
Rust 开发命令行工具(上)(三)
Rust 开发命令行工具(上)(三)
|
9月前
|
存储 Rust Shell
Rust 开发命令行工具(上)(二)
Rust 开发命令行工具(上)(二)
108 0
|
Rust 程序员 Shell
快速配置 Rust 开发环境并编写一个小应用
快速配置 Rust 开发环境并编写一个小应用
154 0