Solidity

✍ dations ◷ 2025-05-10 12:19:30 #特定领域语言,静态类型编程语言

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

相关

  • QICD-10 第十七章:先天畸形、变形和染色体异常,为ICD规定的各类先天畸形、变形和染色体异常。Q00-Q07 神经系统先天性畸形Q10-Q18 眼、耳、面和颈部先天性畸形Q20-Q28 循环系统
  • β-羟-β-甲戊二酸单酰辅酶A(6-amino-9H-purin-9-yl)-4-hydroxy- 3-(phosphonooxy)tetrahydrofuran-2-yl]- 3,5,9,21-tetrahydroxy-8,8,21-trimethyl- 10,14,19-trioxo-2,4,6-trioxa-18-thia- 11,15-di
  • Co(PhCOO)sub2/sub苯甲酸钴是Co2+的苯甲酸盐,化学式为(C6H5COO)2Co,存在无水物、一水合物和四水合物。苯甲酸钴可由苯甲酸钠和硫酸钴反应制备:也能利用苯甲酸和碳酸钴的反应得到:
  • 玛米·艾森豪威尔玛米·热纳瓦·杜德·艾森豪威尔(英语:Mamie Geneva Doud Eisenhower,1896年11月14日-1979年11月1日)是美国第34任总统德怀特·艾森豪威尔的妻子,在1953年至1961年丈夫任职总统期
  • 元素丰度化学元素丰度(英语:Abundance of the chemical elements)是在测量上与所有元素相比较所得到含量多寡的比值。丰度可以是质量的比值或是莫耳数(气体的原子数量比值或是分子数量
  • 罗泽南罗泽南(1807年-1856年),字仲岳,号罗山,湖南湘乡石牛湾洲人,晚清著名程朱派经学家、理学家,官至浙江甯绍台道布政使,加布政使衔。湘军缔造人之一,门下李续宾、李续宜、曾国荃、曾国华、
  • 辛 毅辛毅(1959年-)江西省九江市人,中国人民解放军中将,历任中国人民解放军总装备部科学技术委员会副主任,中央军委科学技术委员会副主任。辛毅1978年10月进入华东石油学院自动化系炼油
  • 富兰克林·斯塔尔富兰克林·斯塔尔(Franklin William Stahl,1929年10月8日-)是一位美国分子生物学家。与马修·梅塞尔森(Matthew Meselson)合作进行梅瑟生-史达实验,确认了DNA复制的半保留性质。
  • 有教无类法案有教无类法案(No Child Left Behind Act of 2001,Public Law 107-110),又译为不让任何孩子落后法案,简称为NCLB,是2002年1月8日由美国总统乔治·沃克·布希签署的一项美国联邦法律
  • 安全屏障安全屏障(屏障),指对环境、秩序、安全等有害要素构成阻碍、缓冲或防护作用的事务总称。