Solidity

✍ dations ◷ 2025-06-07 23:29:33 #特定领域语言,静态类型编程语言

Solidity是一种合约导向式语言,被应用于各种不同的区块链平台,其主要开发者为加文·伍德(英语:Gavin Wood),Christian Reitwiessner,Alex Beregszaszi,Liana Husikyan,Yoichi Hirai和其他几位早期以太坊核心贡献者。Solidity 可使程序开发人员能在区块链上(例如以太坊)编写智能合约。

Solidity的语法概念最早是由加文·伍德(英语:Gavin Wood)在2014年提出,后期则以Christian Reitwiessner所领导的以太坊团队Solidity接手开发。该语言是针对以太坊虚拟机(EVM)所设计的四种语言之一(其他的还有Serpent,LLL,Viper(实验中)和Mutan(已弃用))。有关这些语言的更多信息,请参阅以太坊编程语言。

Solidity是目前在以太坊及其他以太坊竞争平台中的主要编程语言,例如Monax及其Burrow Hyperledger的区块链就是使用Tendermint完成共识机制。 SWIFT亦已经使用Solidity在Burrow上完成了概念验证。

康奈尔大学的研究人员指出,Solidity即是导致DAO在2016年被黑客攻击的部分原因之一。他表示:“这实际上并不是DAO合同本身的缺陷或漏洞;技术上来说,DAO确实是在EVM上如预期般地被运行,反而是Solidity将安全上的漏洞引入了合约之中,而这些漏洞不仅没被开发社群察觉,Solidity语言的设计者们也忽略了。

Solidity是一种静态类型的编程语言,用于开发在EVM上运行的智能合约。 Solidity被编译为可在EVM上运行的字节码。 借由Solidity,开发人员能够编写出可自我运行其欲实现之商业逻辑的应用程序,该程序可被视为一份具权威性且永不可悔改的交易合约。对已具备程序编辑能力的人而言,编写Solidity的难易度就如同编写一般的编程语言。

Gavin Wood最初在规划Solidity语言时引用了ECMAScript的语法概念,使其对现有的Web开发者更容易入门;与ECMAScript不同的地方在于Solidity具有静态类型和可变返回类型。而与目前其他EVM目标语言(如Serpent和Mutan)相比,其重要的差异在于Solidity具有一组复杂的成员变量使得合约可支持任意层次结构的映射和结构。Solidity也支持继承,包含C3线性化多重继承。 另外还引入了一个应用程序二进制接口(ABI),该接口(ABI)可在单一合同中实现多种类型安全的功能。 

以下为使用Solidity编写的程序示例:

contract GavCoin{  mapping(address=>uint) balances;  uint constant totalCoins = 100000000000;  /// Endows creator of contract with 1m GAV.  function GavCoin(){      balances = totalCoins;  }  /// Send $((valueInmGAV / 1000).fixed(0,3)) GAV from the account of $(message.caller.address()), to an account accessible only by $(to.address()).  function send(address to, uint256 valueInmGAV) {    if (balances >= valueInmGAV) {      balances += valueInmGAV;      balances -= valueInmGAV;    }  }  /// getter function for the balance  function balance(address who) constant returns (uint256 balanceInmGAV) {    balanceInmGAV = balances;  }}

开发平台

  • Remix,Solidity官方IDE
  • Microsoft Visual Studio
  • ConsenSys Enterprise
  • Tendermint 
  • AWS的ErisDB

区块链平台

Solidity可在下列平台中运作:

相关

  • 语态语态(genus verbi,英语:voice)是在语法学中描述句子中动词和参与此动作之主语之间关系的一个术语。当主语是动作的发起者(或之一)时,称为主动语态;如果主语为动作之承受者,称为被动语
  • 西格陵兰洋流西格陵兰洋流(West Greenland Current)为一个弱小的冰冻洋流,沿着格陵兰西岸向北流动。西格陵兰洋流的起源为东格陵兰洋流在格陵兰南端的绕流。
  • SysML系统建模语言(Systems Modeling Language)简称SysML,是针对系统工程应用的通用建模语言(英语:general-purpose modeling)。系统建模语言可以分析许多系统及超系统(英语:System of sy
  • 一府六曹一府六曹(朝鲜语:1부 6조/1府6曺)是高丽和朝鲜王朝时期的官制。1894年,一府六曹制被朝鲜废除。
  • 斯瓦西里语斯瓦希里语(kiswahili),属于班图语族,是非洲语言使用人数最多的语言之一(5500万多人),和阿拉伯语及豪萨语并列非洲三大语言。斯瓦希里语是坦桑尼亚、肯尼亚、乌干达的官方语言,刚果
  • 卡斯特罗卡斯特罗(Castro)是罗曼语姓氏,来源于拉丁语“Castrum”,可能指:
  • 尤那尼医学尤那尼医学(乌尔都语:طب یونانی‎‎,拉丁转写:),亦作尤纳尼医学,是一种在莫卧儿帝国、南亚穆斯林地区以及中亚广泛使用的波斯-阿拉伯传统医学。尤那尼一词意为“希腊的”,因
  • 溴化氢溴化氢是化学式为HBr的二元化合物,标准情况下为气体。溴化氢溶于水得到氢溴酸,氢溴酸中加入失水剂也可得到溴化氢。标准情况下,溴化氢是不可燃气体,带有酸味,在潮湿空气中发烟。
  • 冀州 (九州)冀州,是汉族传统中的汉地九州之一,冀州地区即今日之山西、河北、辽宁三省及其附近地带。冀州与兖、青、徐、扬、荆、梁、雍、豫等州合称为九州。虞夏之际,大禹分天下为九州,冀州
  • 刘明 (院士)刘明(1964年4月-),生于江西丰城,籍贯安徽宿州,中国微电子科学与技术专家,中国科学院微电子研究所研究员。2017年当选为中国科学院院士。1964年生于江西丰城,籍贯安徽宿州,1985年毕业