Solidity

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

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

相关

  • 会计会计可指:
  • 甲壳素甲壳素(英语:Chitin,IPA:/ˈkaɪtᵻn/ KY-tin),分子结构“(C8H13O5N)n”,又名“几丁质”、“几丁聚糖”、“几丁寡糖”、“甲壳质”或“壳多糖”,是一种含氮的多糖类物质,为虾、蟹、
  • 李维李维可以指:
  • 杀精剂杀精剂(英语:Spermicide)是可以破坏精子的生育控制物质,在性交前置入阴道内以避免怀孕。精剂本身是避孕器材,可以单独使用。不过只使用杀精剂避孕的失效率较其他避孕方法要高。一
  • 台湾铁路车站列表以下是台湾铁路管理局(简称台铁)及其前身台湾总督府铁道部所管理的台湾铁路车站列表。以下为交通部台湾铁路管理局客运人次前10名的车站(2018年)。因应花东铁路电气化工程,台铁邀
  • 欣快感欣快或欣快感(英语:Euphoria ,发音: /juːˈfɔəriə/,来源于古希腊语 εὐφορία)(词义与烦躁相反),在医学上把它当做一种精神和情感的状态。心情愉快、无忧无虑、兴高采烈、异
  • 靛蓝靛蓝(Indigo)是一种还原染料,也是人类最早应用的天然染料之一,以其特征性的靛蓝色而得名。靛蓝在古代主要是从靛蓝植物中提取加工制得。1870年德国化学家阿道夫·冯·拜尔用靛红
  • 金日成将军之歌《金日成将军之歌》(韩语:김일성 장군의 노래)由李灿作词、金元均作曲于1946年的歌曲,是歌颂金日成的朝鲜歌曲中最著名的之一,在朝鲜,与金日成有关的歌曲提及“长白山”,都是用中国
  • 氢羟肾上腺皮质素氢羟肾上腺皮质素(英语:Hydrocortisone),又称氢化皮质酮或氢化可体松,即激素皮质醇作为药物时的名称,在市面上有多家药商出售此药可用来治疗如肾上腺皮质功能不全(英语:Adrenal_insu
  • A21高速公路 (意大利)A21高速公路(意大利语:Autostrada A21),又称葡萄酒高速公路(Autostrada dei Vini,因经过意大利葡萄酒产区得名),是意大利一条高速公路,自第四大城市都灵,沿波河南岸,经皮亚琴察,至布雷西