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

目录
相关文章
|
网络协议 Linux
Centos IP、DNS设置
1、CentOS 修改DNS 修改对应网卡的DNS的配置文件# vi /etc/resolv.conf 修改以下内容 nameserver 8.8.8.8 #google域名服务器nameserver 8.8.4.4 #google域名服务器2、CentOS 修改网关 修改对应网卡的网关的配置文件[root@centos]# vi /etc/sysconfig/network 修改以下内容NETWORKING=yes(表示系统是否使用网络,一般设置为yes。
3472 0
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
11月前
|
人工智能 算法 数据格式
DeepSeek 开源周第二弹!DeepEP:专为 MoE 训练和推理设计的并行通信库
DeepEP 是 DeepSeek 开源的首个专为混合专家模型(MoE)训练和推理设计的通信库,支持高吞吐量、低延迟通信,优化 NVLink 和 RDMA 网络性能。
1196 3
|
存储 人机交互 语音技术
基于RT-Thread的智能家居助手
一、项目简介 智能家居助手主要基于RT-Thread开发的,该系统主要分为语音子系统,环境监测子系统,智能控制子系统,智能网关子系统,音乐播放器,云端以及应用软件七大部分。语音子系统可通过语音进行人机交互来控制家电设备。环境监测子系统为智能家居提供环境信息输入,实时监测室内的环境信息。智能控制子系统为智能家居提供控制接口,用户可根据实际需求来控制家电设备。 智能网关是整个系统的核心和枢纽,为整个智能家居提供网络,同时与云平台进行交互,不断更新室内信息,实时将数据上传至云端,用户就能在远程进行查室内的各种环境信息,实时掌握家中的最新动态。音乐播放器为用户提供音乐服务。云端部分为智能家居系统云
351 6
|
网络协议 Linux 网络安全
【网安神器篇】——enum4linux枚举工具
今天给大家分享的网络安全神器是smb服务专用扫描器——enum4liux
1244 0
【网安神器篇】——enum4linux枚举工具
java导出word
java导出word
|
存储 数据安全/隐私保护 Docker
开源网盘程序,自建网盘指南
ShowTa是一款开源的个人和企业网盘程序,提供简洁界面和多种功能,如预览文件、在线播放视频、设置文件夹密码等。它支持Docker部署、WebDAV协议,可将网盘映射到本地磁盘,并能挂载阿里云盘。通过WebDAV,用户可在电视上观看阿里云盘内容。了解更多信息,请访问[GitHub](https://github.com/bosnzt/showta)和[演示地址](https://www.showta.cc)。
|
小程序 前端开发 API
马上2024年了,现在去开发一款App需要投入多少资金?
随着2024年的来临,你是否想知道开发一款App要多少成本呢。对于初次涉足App开发的人来说,资金投入是一个重要的考虑因素。
|
存储 算法 安全
在线SM4加密/解密工具
在线SM4加密/解密工具支持快速、便捷地对数据进行SM4算法加密与解密。
2511 0
|
存储 NoSQL 关系型数据库
Feed流系统设计-总纲
简介 差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动化联网时代的新产品在过去几年间借着智能手机的风高速成长。
30964 123

热门文章

最新文章