当前位置: 首页 > 文档资料 > Solidity 中文文档 >

Solidity

优质
小牛编辑
116浏览
2023-12-01

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

Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。

下面您将会看到,使用 Solidity 语言,可以为投票、众筹、秘密竞价(盲拍)、多重签名的钱包以及其他应用创建合约。

注解

目前尝试 Solidity 编程的最好的方式是使用 Remix (需要时间加载,请耐心等待)。Remix 是一个基于 Web 浏览器的 IDE,它可以让你编写 Solidity 智能合约,然后部署并运行该智能合约。

警告

因为软件是人编写的,就会有 bug,所以,创建智能合约也应该遵循软件开发领域熟知的最佳实践。这些实践包括代码审查、测试、审计和正确性证明。也请注意,有时候用户在代码方面比软件的作者更谙熟。最后,区块链本身有些东西需要留意,请参考 安全考量。

翻译

本文档由社区志愿者翻译成多种语言,但是 英语版本 作为主要参考。

  • 简体中文版 (由 HiBlock Community 贡献者翻译)
  • 西班牙语版
  • 俄语版 (已过时)
  • 韩语版 (in progress)

有用的链接

  • 以太坊官网
  • 变更日志
  • 故事需求列表
  • 源代码
  • Ethereum Stackexchange
  • Gitter 聊天

可用的 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 解析器和语法

  • solidity-parser
    JavaScript 的 Solidity 解析器
  • Solidity Grammar for ANTLR 4
    ANTLR 4 解析器生成器的 Solidity 语法

语言文档

下面的页面中,我们首先会看到一个使用 Solidity 写的 简单智能合约,随后讲解 区块链 基础,然后是 以太坊虚拟机 。

下一节会通过给出有用的 合约样例 ,解释 Solidity 的几个*特性* ,记住你都可以 在你的浏览器中 尝试这些合约!

最后也是最长的一节会深入讲解 Solidity 的所有方面。

如果还有问题,你可以尝试搜索或在 Ethereum Stackexchange 上提问,或者到我们的`gitter 频道 <https://gitter.im/ethereum/solidity/>`_ 来。随时欢迎改善 Solidity 或本文档的想法!

Keyword Index, Search Page

  • 智能合约概述
    • 简单的智能合约
    • 区块链基础
    • 以太坊虚拟机
  • 安装Solidity编译器
    • 版本
    • Remix
    • npm / Node.js
    • Docker
    • 二进制包
    • 从源代码编译
    • CMake参数
    • 版本号字符串详解
    • 版本信息详情
  • 根据例子学习Solidity
    • 投票
    • 秘密竞价(盲拍)
    • 安全的远程购买
    • 微支付通道
  • 深入理解Solidity
    • Solidity 源文件结构
    • 合约结构
    • 类型
    • 单元和全局变量
    • 表达式和控制结构
    • 合约
    • Solidity汇编
    • 杂项
  • 安全考量
    • 陷阱
    • 推荐做法
    • 形式化验证
  • 使用编译器
    • 使用命令行编译器
    • 编译器输入输出JSON描述
  • 合约的元数据
    • 元数据哈希字节码的编码
    • 自动化接口生成和 以太坊标准说明格式(Ethereum Nature Specification Format(natspec)) 的使用方法
    • 源代码验证的使用方法
  • 应用二进制接口(Application Binary Interface(ABI)) 说明
    • 基本设计
    • 函数选择器(Function Selector)
    • 参数编码
    • 类型
    • 编码的形式化说明
    • 函数选择器(Function Selector) 和参数编码
    • 例子
    • 动态类型的使用
    • 事件
    • JSON
    • 非标准打包模式
  • Yul
    • Yul 语言说明
    • Yul 对象说明
  • 风格指南
    • 概述
    • 代码结构
    • 命名规范
  • 通用模式
    • 从合约中提款
    • 限制访问
    • 状态机
  • 已知bug列表
  • 贡献方式
    • 怎样报告问题
    • Pull Request 的工作流
    • 运行编译器测试
    • 通过 AFL 运行 Fuzzer
    • Whiskers 模板系统
  • 常见问题
    • 基本问题
    • 高级问题