Solidity

✍ dations ◷ 2025-07-11 17:29: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可在下列平台中运作:

相关

  • 万神殿坐标:41°53′54″N 12°28′36″E / 41.89833°N 12.47667°E / 41.89833; 12.47667万神庙(意大利语:Pantheon),又译万神殿、潘提翁神殿,位于今意大利罗马,古罗马时期的宗教建筑,后
  • 碳1212C是质量数为12的碳原子,其质子数和中子数都为6,它是碳元素的一种同位素,在世界现存碳元素中占比98.89%,是最常见的碳同位素。在2019年5月20日国际单位制基本单位的重新定义之
  • allergen过敏原(英语:allergen,又称为变应原、过敏物、致敏原、致敏物)是指能引起过敏的物质。严格地说,过敏原是一种能促进在特应性个体发生I型超敏反应的非寄生抗原。尘螨的排泄物、花
  • 反应物反应物(在生物中称作底物或受质)指的是化学反应中消耗的物质。虽然化学反应中一般也涉及溶剂和催化剂,然而它们通常不被算作反应物。试剂更强调该种化学物质的某种特定用途。
  • 哈维·詹姆斯·阿尔特哈维·詹姆斯·阿尔特(英语:Harvey James Alter,1935年9月12日-),美国病毒学家、美国国立卫生研究院输血医学家。出生在纽约市,1956年在罗彻斯特大学获得文学士学位,1960年在该校得
  • 萨非王朝Tuman, Abbasi, Shahi.萨非王朝(波斯语:دودمان صفوی‎ Dudmān e Safavi),因为翻译的不同又称萨法维帝国、沙法维帝国、萨菲帝国、波斯第四帝国,中国明朝称之为巴喇西,
  • 蛆(Maggot)亦称蛆虫,是普遍对双翅目下蝇类幼虫的统称,是卵变成蛹之前的必经阶段,此阶段中蛆只进食而不排泄,是大自然中极佳的清道夫。蛆疗法源自于英国,是一种以无菌的蛆来帮助人类
  • 韩国标准时韩国标准时(朝鲜语:한국 표준시/韓國標準時 Hanguk Pyojunsi,英语:Korea Standard Time,缩写:KST),是大韩民国及朝鲜民主主义人民共和国使用的标准时间,时区属于东九区(UTC+9),与日本标
  • 公民结合民事结合(英文:civil union)是指由法律,即民事法,所确立并保护的等同或类似婚姻的结合关系,因此称为“民事结合”。Civil union亦有译作公民结合,但“civil”跟“公民”(citizen)意义
  • 享元模式享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法