目前的智能合约基本都是运行在以太坊上。本文将经过一个简单而具体的智能合约实例来帮助你们理解智能合约的编写、部署与调用。这个例子很简单,但经过它你能够了解开发一个以太坊的智能合约的完整过程。 在以后的教程中,咱们将结合不一样的场景案例,分别举出不一样的例子例如投票、众筹、拍卖、ERC20/ERC721代币发行等,并实现相应的solidity示例代码。咱们但愿你能在实践中逐步理解学习智能合约的开发语言solidity,理解智能合约的运行原理,并掌握必要的以太坊智能合约编程技能。编程
若是你但愿立刻开始学习以太坊DApp开发,能够访问汇智网提供的出色的在线互动教程:浏览器
目前智能合约最受欢迎的编程语言为Solidity,可是并不仅有Solidity。做为初学者,编写Solidity代码,咱们可使用Remix,它是一个基于浏览器的Soldity IDE,网址为:http://remix.ethereum.org/ 。Remix支持编写、测试和部署智能合约。编程语言
学一门语言的第一个程序毋庸置疑都是HelloWorld,那么咱们就来写一个HelloWorld的智能合约吧。合约代码以下。ide
pragma solidity ^0.4.21; contract HelloWorld { string hello = "Hello World!!!"; event say(string _value); function sayHello() public { emit say(hello); } }
合约代码第一行指定该合约使用的Solidity版本为0.4.21,不支持高于0.4.21版本的Solidity特性。学习
在Solidity中,contract关键字包含的代码段即表示一个智能合约,它拥有一些成员变量,表示该合约的数据,如咱们的HelloWorld中的hello,咱们能够修改操做这些成员。同时它拥有一些function,能够被他人调用。区块链
event是Solidity提供的一种事件和订阅机制,智能合约可以发出一些event,合约调用者可以监听这些事件并做出相应的反应。测试
这个合约没有作不少事情,它只会在有人调用它的sayHello方法时,发出一个say事件。接下来让咱们来部署和执行它。3d
首先咱们须要编译这段代码,在Remix的右边有一个Compile的tab,点击Start to compile,编译成功,若是失败会有错误提示,改正便可。code
而后咱们须要将其部署到区块链上,切换tab到Run。教程
Remix支持三种环境运行合约。其中若是为JavaScript VM,则合约会在浏览器JavaScript沙箱区块链中被执行,能够理解为Remix使用了浏览器的JS环境虚拟了一个区块链虚拟机。若是为Injected Provider,则Remix将会连接Matamask或者Mist这些区块链钱包,经过它们来间接部署和调用合约。最后为Web3 Provider,Remix会连接Geth等远程区款连节点,来部署和调用合约。
简单起见,咱们将使用JavaScript VM,它将为咱们初始化出五个区块链帐号,使用默认帐号便可。将Environment设置为JavaScript VM。
上图除了Environment和Account依次往下,咱们将可以看到Gas Limit,这是执行一个Transaction咱们可以接受的最大代价。Value表示下一次调用咱们将向合约帐户转帐多少ether。
接下来的HelloWorld表示咱们将建立的合约。点击Create既可以建立这个合约。
咱们能够点击sayHello调用。能够看到已经调用成功,在logs中打印出了咱们发出的event。
在本文中,咱们编写了一个最简单的智能合约,并部署和运行了该合约。咱们并无将合约部署到实际的链上,只是在JS 沙箱虚拟机中执行了它。后面的文章中咱们将会继续讲解如何将合约部署到链上。