热门问题
时间线
聊天
视角

Solidity

来自维基百科,自由的百科全书

Remove ads

Solidity是一种合约导向式语言,被应用于各种不同的区块链平台[2],其主要开发者为加文·伍德英语Gavin Wood,Christian Reitwiessner,Alex Beregszaszi,Liana Husikyan,Yoichi Hirai和其他几位早期以太坊核心贡献者。[3][4]Solidity 可使程式开发人员能在区块链上(例如以太坊)编写智能合约[5][6][7]

事实速览 当前版本, 网站 ...

历史

Solidity的语法概念最早是由加文·伍德英语Gavin Wood在2014年提出,[8]后期则以Christian Reitwiessner所领导的以太坊团队Solidity接手开发。该语言是针对以太坊虚拟机(EVM)所设计的四种语言之一(其他的还有Serpent,LLL,Viper(实验中)和Mutan(已弃用))。有关这些语言的更多信息,请参阅以太坊编程语言

Solidity是目前在以太坊及其他以太坊竞争平台中的主要编程语言,例如Monax及其Burrow Hyperledger的区块链就是使用Tendermint完成共识机制。 SWIFT亦已经使用Solidity在Burrow上完成了概念验证。[9]

康奈尔大学的研究人员指出,Solidity即是导致DAO在2016年被骇客攻击的部分原因之一。他表示:“这实际上并不是DAO合同本身的缺陷或漏洞;技术上来说,DAO确实是在EVM上如预期般地被执行,反而是Solidity将安全上的漏洞引入了合约之中,而这些漏洞不仅没被开发社群察觉,Solidity语言的设计者们也忽略了。[10][11]

Remove ads

描述

Solidity是一种静态型别的程式语言,用于开发在EVM上执行的智能合约。 Solidity被编译为可在EVM上执行的位元组码[12][13] 借由Solidity,开发人员能够编写出可自我执行其欲实现之商业逻辑的应用程式,该程式可被视为一份具权威性且永不可悔改的交易合约。[14][15]对已具备程式编辑能力的人而言,编写Solidity的难易度就如同编写一般的程式语言。[16]

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[msg.sender] = 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[msg.sender] >= valueInmGAV) {
      balances[to] += valueInmGAV;
      balances[msg.sender] -= valueInmGAV;
    }
  }

  /// getter function for the balance
  function balance(address who) constant returns (uint256 balanceInmGAV) {
    balanceInmGAV = balances[who];
  }

}
Remove ads

开发平台

区块链平台

Solidity可在下列平台中运作:

参考文献

批评

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads