Solidity 是一种大括号、高级和面向对象的编程语言,专为设计和实现智能合约而创建。[3][7]
Solidity 是一种大括号语言,受到了几种著名编程语言的影响和启发。Solidity 受 C++ 的影响最为深刻,但也借鉴了 Python、JavaScript 等语言的概念。[7]
Solidity 是一种面向合约的编程语言,由 以太坊 网络团队设计,用于实现 智能合约。它从 C++、Python 和 JavaScript 等编程语言中汲取灵感,并与 以太坊虚拟机 交互。[1][2]
Solidity 的基本概念围绕着使开发人员能够在区块链网络上创建 去中心化应用程序 (DApps) 和自执行合约。
2014 年 8 月,以太坊 的联合创始人 Gavin Wood 提出了 Solidity 的想法。后来,以太坊项目的 Solidity 团队在 Christian Reitwiessner 的领导下创建并开发了该语言。[8][9]
Solidity 于 2015 年 8 月 7 日首次发布,版本为 0.1.0。最初,该语言具有基本且有限的功能,但随着时间的推移,Solidity 经历了许多改进和发展。
Solidity 迅速在 以太坊 开发人员中流行起来,成为开发 智能合约 的主要语言。借助 Solidity,开发人员可以编写将在以太坊区块链上执行的代码,以执行各种功能和服务。
Solidity 已被用于各种区块链项目和 去中心化应用程序 (dApps)。用 Solidity 编写的 智能合约 可以用于多种目的,包括 ERC-20 代币、投票系统、时间锁定的资金等等。[10]
从 C++ 中可以看出变量声明、for 循环、函数重载的概念、隐式和显式类型转换以及许多其他细节的语法。[7]
Solidity 过去部分受到 JavaScript 的影响。这是由于变量的函数级作用域以及关键字“var”的使用。从 0.4.0 版本开始,JavaScript 的影响有所降低。现在,与 JavaScript 的主要剩余相似之处在于,函数是使用关键字“function”定义的。[7]
Solidity 还支持类似于 JavaScript 中可用的导入语法和语义。除此之外,Solidity 看起来像大多数其他大括号语言,并且不再受到 JavaScript 的主要影响。[7]
Solidity 的另一个影响是 Python。添加 Solidity 的修饰符是为了尝试使用功能更受限制的功能来模拟 Python 的装饰器。[7]
Solidity 编译器 v0.8.27 于 2024 年 9 月 4 日发布。[5]
Solidity 可用于智能合约,包括:[6]
以太坊 和 Solidity 的结合使开发人员可以创建各种复杂的应用程序。以太坊提供了一个去中心化平台,而 Solidity 提供了一种强大的编程语言,开发人员拥有创建安全、高效和透明的 智能合约 所需的工具。
开发人员用 Solidity 编写智能合约,然后将其部署在以太坊区块链上。一旦部署了智能合约,它就独立于任何其他合约或应用程序存在。它有自己的以太坊地址和余额,并且可以像以太坊网络上的任何其他参与者一样进行和接收交易。
当智能合约被交易触发时,以太坊网络会执行合约的代码。此代码可以执行各种操作,从转移资金到与其他合约交互。[11]
另一个挑战是应对以太坊的可扩展性和效率问题,这限制了 智能合约 的吞吐量和速度,并增加了 gas 成本,gas 是在网络上执行交易所需的费用。[9]
此外,跟上区块链领域的创新和竞争也是一个挑战,因为新的平台和语言不断涌现,为智能合约开发提供不同的功能和权衡。
为了应对这些挑战并满足社区的需求和期望,Solidity 多年来通过定期更新和增强不断发展和改进。
一些最重要的变化包括引入了新的类型,例如结构体、枚举和映射,支持继承、接口和库,添加了修饰符、事件和错误处理,实施了安全检查和最佳实践,例如 require 和 revert 函数,优化了 gas 使用和字节码生成,以及与外部来源和系统(如预言机和跨区块链通信)的集成。[9]