Solidity 是一门面向对象、为实现智能合约而创建的高级编程语言,这门语言受到了 C 、Py- thon 和 Javascript 等语言的影响。在以太坊黄皮书披露的技术细节中,提到了以太坊虚拟机是一款 图灵完备(Turing Completeness)的虚拟机器,Solidity 自然也就是一款图灵完备的高级开发语言。

按照惯例,学习一门语言的第一个程序是介绍“hello-world”,这就当是和 Solidity 的初识吧。

智能合约部署流程(手把手教你部署第一个智能合约)(1)

这是最简单的智能合约代码,分别介绍一下具体的含义。第一行的作用是为了控制智能合约编 译器的版本,“pragma”是 Solidity 的编译控制指令,“^0.6.0”代表的含义是可以使用 0.6.x 的版 本对该代码进行编译,也就是说 0.5.x 和 0.7.x 的编译器版本不允许编译该智能合约的。此外,也可 以使用类似“pragma solidity > 0.4.99 < 0.6.0;”这样的写法来表达对编译器版本的限制,这样看上 去更加简单明了。

代码中“contract”是一个关键字,用来定义合约名字,它很像是某些语言里的类(class)定 义方法。“hello”是本合约的名字,这个合约的主要功能是向区块链系统中存储一个 Msg 字符串。“constructor”是该合约的构造函数,当合约部署时,执行的也就是构造函数的代码,该构造函数 的功能是将 Msg 初始化为“hello”。

当然,介绍还没有结束,这只是合约代码,需要将它部署后再看看效果。想要运行以太坊的智 能合约,一般都会使用官方推荐的在线 IDE 环境 remix,这是一个智能合约开发、测试、部署的集 成环境。读者可以在浏览器输入:http://remix.ethereum.org/,打开后可以按照下面的步骤操作。

步骤 01:在打开的页面中,单击【Solidity】按钮。

智能合约部署流程(手把手教你部署第一个智能合约)(2)

步骤 02:在跳转后的窗口中单击【EVM Vesion】选项卡并选择【byzantium】选项,单击【文件浏览器】按钮。

智能合约部署流程(手把手教你部署第一个智能合约)(3)

步骤 03:在跳转后的窗口中,单击左上角的【 】按钮创建文件,并在弹出的对话框中输入文件名,然后单击【OK】按钮。

智能合约部署流程(手把手教你部署第一个智能合约)(4)

步骤 04:将前文复制的代码粘贴至窗口右侧的文本框中,使用快捷键进行保存(Windows 用 户使用【Ctrl S】组合键保存,macOS 用户使用【Command S】组合键保存),并单击下图中左侧选项栏三号箭头所示的按钮切换到部署和运行页面。警告不用处理,可以忽略它。

智能合约部署流程(手把手教你部署第一个智能合约)(5)

步骤 05:在切换到部署和运行页面后,单击【Environment】选项卡中选择运行环境,此处采 用默认【JavaScript VM】选项即可,然后单击【Deploy】按钮,部署合约。

智能合约部署流程(手把手教你部署第一个智能合约)(6)

对于 Environment 的三种选择,分别介绍一下。 (1)JavaScript VM:Remix 内置的虚拟机,运行速度快,无须挖矿,测试方便。

(2)Injected Web3:单击时会连接浏览器安装的 Metamask 插件,该插件为以太坊浏览器钱包, 很多时候,我们都是通过 Metamask 钱包将合约部署到主网或测试网。

(3)Web3 Provider:单击时,将代表要连接某个以太坊节点,需要指定 Geth 的连接地。

步骤 06:部署完成后,在浏览器下部可以看到合约部署的信息及合约视图。

智能合约部署流程(手把手教你部署第一个智能合约)(7)

步骤 07:在展开的合约视图中可以看到右侧的【Msg】按钮,它代表着 Msg 方法,单击该按钮进行调用。

智能合约部署流程(手把手教你部署第一个智能合约)(8)

步骤 08:单击【Msg】按钮后可查看运行后的结果,得到“hello”。

智能合约部署流程(手把手教你部署第一个智能合约)(9)

此步骤执行完,合约部署到执行已经操作完成,该合约也就是简单地把“hello”存储到以太坊 节点中,并通过查询函数 Msg 可以获得存储的值。

,