Solidity

✍ dations ◷ 2025-04-05 00:59:37 #特定领域语言,静态类型编程语言

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

相关

  • 止咳药止咳药是指治疗咳嗽的药品,通常为片状(亦有含化的)、溶液和混悬液。部分止咳水含有可待因或麻黄碱,过量服用会使人产生欣快感,故被滥用者称为摇头水),泛指用于止咳的所有药水,包括医
  • 天文学史天文学的历史非常久远,天文学可谓人类历史上古老的一门科学。从最初人类对于星象变化的认识开始,天文学就已经开始萌芽了。人们为了研究和制定各种时间或时令(例如:季节或者历法
  • 墨尔本第二代墨尔本子爵威廉·兰姆,PC,FRS(William Lamb, 2nd Viscount Melbourne,1779年3月15日 - 1848年11月24日),英国辉格党政治家,曾任内政大臣、首相。他曾热情辅导初登皇位的维多
  • 半鸟半鸟属(属名:Unenlagia,意为“一半的鸟”)又名若鸟龙,是兽脚亚目恐龙的一属,生存于晚白垩纪的南美洲,化石发现于阿根廷内乌肯省中部山区。半鸟属于驰龙科的半鸟亚科,是群奇特、极度
  • 充分就业充分就业(英语:Full employment),也称作完全就业,意即想要工作的人都可以工作足够长的时间以获得一份合理的薪水。由于人们换工作等原因,充分就业与一定的失业率并存。在就业不足(
  • 路得记路得记(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey A
  • 结构工程结构工程(英语:Structural Engineering)是分析和设计荷载作用下的建筑结构的工程学科目。结构工程通常被归类为土木工程的分支,但也可以作为一门独立学科来研究。结构工程师通常
  • 子宫镜检查子宫镜检查(hysteroscopy)也称为宫腔镜检查,是由内视镜通过子宫颈进入子宫,对子宫腔进行的检查。可以检查子宫内的组织情形,并且有需要时也可以进行手术治疗(内视镜手术)。子宫镜是
  • 清双唇擦音清双唇擦音是辅音的一种,用于一些口语中。此音的国际音标符号是⟨ɸ⟩;X-SAMPA音标符号则是⟨p\⟩。汉语普通话没有此音,个别人将声母⟨f⟩发成清双唇擦音。虽然该音的符号是由
  • 阿赖耶识阿赖耶识(梵语:आलयविज्ञान,ālaya-vijñāna),又译为阿梨耶识,也称为一切种子识(sarva-bījaka-vijñāna)、异熟识(vipāka-vijñāna)、阿陀那识(ādāna-vijñāna)(即“持