Solidity

✍ dations ◷ 2025-09-09 10:16:43 #特定领域语言,静态类型编程语言

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可在下列平台中运作:

相关

  • 麦角固醇麦角固醇(英语:Ergosterol,又称为麦角甾醇)是从真菌类酵母与麦角菌中发现的一种植物固醇。在紫外线照射下可被转化为维生素D2。它是酵母和真菌细胞膜的组成部分,功能与动物细胞膜
  • 2018年-2019年刚果基伍埃博拉出血热爆发2018年-2020年基伍埃博拉出血热爆发始于2018年8月1日,至今尚未结束。为发生在刚果民主共和国东部的埃博拉病毒疫情,于2019年6月扩散至邻国乌干达,截至2020年1月20日,已有超过3300
  • 东北大学东北大学可以指:
  • 石灰石石灰岩(灰石)(CaCO3)简称灰岩,又叫石灰石,是以方解石(矿物)为主要成分的碳酸钙岩。石灰岩主要是在浅海的环境下形成的。石灰岩按成因可划分为粒屑石灰岩(流水搬运、堆积形成);生物骨
  • 灌木灌木是没有明显主干的木本植物,植株一般比较矮小,不会超过6米。从近地面的地方就开始丛生出横生的枝干。都是多年生。一般为阔叶植物,也有一些针叶植物是灌木,如刺柏。如果越冬
  • 千总千总明代嘉靖京军三大营职官,其上有总兵、大将、副将、参将、游击、佐击、坐营、号头官、中军官等官职。于清朝武官名而言,可以是从五品的守御所千总、正六品的门千总或营千总
  • 班长班长是组织团体的基层单位班或学校进行教育的基本单位班级的负责人。在中国大陆,班长往往是班级委员会(班委会)的负责人,与团支部书记并列为班级中最高的学生干部,主要负责班级的
  • 阿卜杜勒·拉扎克敦阿卜杜勒·拉扎克·侯赛因或敦拉扎克(马来语:Tun Abdul Razak bin Haji Dato' Hussein Al-Haj;1922年3月11日-1976年1月14日)是马来西亚第二任总理,巫统政治人物,有“发展之父”
  • 比伦特·埃杰维特穆斯塔法·比伦特·埃杰维特(Bülent Ecevit,全名Mustafa Bülent Ecevit,土耳其语:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe
  • 木部木部,为汉字索引中的部首之一,康熙字典214个部首中的第七十五个(四划的则为第十五个)。就繁体和简体中文中,木部归于四划部首。木部通常是从上、下、左、中方均可为部字。当下为