智能合约开发
本教程将介绍如何使用以太坊的solidity编程语言开发你的第一个智能合约,我们将使用remix在线IDE来开发、编译并部署智能合约到以太坊区块链。点击这里了解什么是智能合约。
开发语言和开发环境选择
目前智能合约最受欢迎的编程语言为Solidity,但是并不只有Solidity。作为初学者,编写Solidity代码,我们可以使用Remix,它是一个基于浏览器的Soldity IDE,网址为:http://remix.ethereum.org/ 。Remix支持编写、测试和部署智能合约。
编写代码
学一门语言的第一个程序毋庸置疑都是HelloWorld,那么我们就来写一个HelloWorld的智能合约吧。合约代码如下。
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事件。接下来让我们来部署和执行它。
部署和运行合约
首先我们需要编译这段代码,在Remix的右边有一个Compile的tab,点击Start to compile,编译成功,如果失败会有错误提示,改正即可。
然后我们需要将其部署到区块链上,切换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既能够创建这个合约。如下图我们看到HelloWorld合约已被创建。
我们可以点击sayHello调用。可以看到已经调用成功,在logs中打印出了我们发出的event。
结语
在本文中,我们编写了一个最简单的智能合约,并部署和运行了该合约。我们并没有将合约部署到实际的区块链上,只是在JS 沙箱虚拟机中执行了它。后面的文章中我们将会继续讲解如何将合约部署到真正的以太坊区块链上。
如果你希望马上开始学习以太坊智能合约及应用开发,可以访问汇智网提供的出色的在线互动教程:
- 区块链智能合约底层编译环境搭建开发虚拟货币技术
- 如何编写皇冠体育足球竞猜网站开发一个可升级的智能合约
- 程序员黄金时代再现:智能合约开发红利来袭
- ETH 开发环境搭建及智能合约 helloworld
- 基于mcat开发智能合约应用(二)调用合约
- Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之环境部署
- Mac下基于testrpc和truffle的以太坊智能合约开发环境搭建
- EOS智能合约开发系列(14): 关于require_auth函数
- php程序员如何开发区块链、以太坊、智能合约的教程
- EOS智能合约开发系列(18): 狼人杀游戏的`eosio.code`
- 智能合约开发环境搭建及Hello World合约
- 以太坊DApp开发入门(一)remix开发智能合约
- solidity开发以太坊代币智能合约
- 以太坊代币如何开发智能合约的奥秘
- 基于mcat开发智能合约应用(三)编码自动化与合约交互
- 星云链智能合约开发(六):智能合约开发与部署
- 星云链智能合约开发(七):Dapp开发
- Linux 基金会将托管 Accord 项目,为智能法律合约开发开源框架
- 自主研发具有知识产权的智能合约平台:相对以太坊来说我们更适合行业应用的开发
- 区块链开发(二)部署和运行第一个以太坊智能合约