Solidity

✍ dations ◷ 2024-09-20 08:36: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可在下列平台中运作:

相关

  • 横纹肌溶解症横纹肌溶解症(英语:Rhabdomyolysis)是人体肌肉细胞坏死所造成的疾病。一些肌肉细胞崩坏后释放的产物(如肌红蛋白)会进入血液并对肾脏造成伤害,导致肾衰竭。横纹肌溶解症的症状包括
  • 千年发展目标千年发展目标(英语:Millennium Development Goals)是在2000年联合国千年首脑会议上提出的8项国际发展目标,并在联合国千年宣言(英语:United Nations Millennium Declaration)中正式
  • 苏黎世苏黎世(德语:Zürich .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium
  • 吉奥克威廉·弗朗西斯·吉奥克(William Francis Giauque,1895年5月12日-1982年3月28日),美国化学家,1949年因对物质在接近绝对零度时表现出的性质的研究而获得诺贝尔化学奖。他在加州大
  • Kahle, Brewster布鲁斯特·卡利(Brewster Kahle /ˈkeɪl/ KAYL-'; 1960年-) 是一位美国数字图书馆员、电脑工程师和资讯科技企业家,是Alexa Internet和互联网档案馆的创始人。 2012年入选互联网
  • 大龙峒大龙峒,或称大浪泵、大隆同(巴赛语:Pourompon;闽南语:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",
  • 杨日然杨日然(1933年12月4日-1994年7月14日),台湾云林县人,台湾法律学者,中华民国前司法院大法官。杨日然幼年家境清寒,然勤奋好学,曾拜汉文老师读四书五经。后就读台南师范学校,1952年毕业
  • 杨善德杨善德(1873年-1919年8月13日),字树棠,安徽省怀宁县人,中华民国军事将领。杨善德毕业于北洋武备学堂第11期,随后入新建陆军。1904年(光绪30年),任北洋常备军第二镇第5标标统、1906年(光
  • 张培刚张培刚(1913年7月10日-2011年11月23日),生于湖北红安,中国著名经济学家,被认为是中国发展经济学的奠基人。华中科技大学经济学院名誉院长兼经济发展研究中心主任、 中华外国经济学
  • 日本美术展览会日本美术展览会,简称“日展”,前身为“文部省美术展览会”(简称“文展”)、“帝国美术展览会”(简称“帝展”)。1907年由文部省主办之“文部省美术展览会”开启了“官展”的历史,19