以太坊智能合约开发基础篇-Solidity语言15分钟初体验
Solidity是一个用来编写以太坊智能合约的语言。所以,如果你想成为区块链编程者,学习这个语言是必经之路。但是,由于我真的在中文网站上找不到自己喜欢的基础教程,我决定创一个系列的教程来带领大家快速且高效的学习这门语言。
构建基础环境
我使用的集成开发环境(IDE)是Remix,界面如下所示:
在界面的最左边,我可以选择集成开发环境中的默认组件:
- 第一个组件是文件浏览器组件,你可以在这里看到所有的
Solidity
文件。 - 第二个组件是智能合约运行发布组件。
- 第三个组件是插件浏览器组件,你可以在这里浏览并添加新的插件。
为了更好的学习Solidity
语言,除了已经默认激活的组件外,我们还需要激活Solidity Compiler
组件,也就是Solidity
语言编译器。
- 首先,点击插件浏览器图标,寻找该插件。
- 然后,点击后面的激活按钮。
此时,界面左边的栏目中将会多出一个图标,这就是Solidity compiler
。
安装好
Solidity Compiler
组件后,第一步就是要确认自动编译选项是否正常打开。
编写HelloWorld智能合约
恭喜你!你现在已经拥有工具来开始编写第一个智能合约了。
注意在
Deploy and run transactions
组件页面中,选择Javascript VM
作为执行器。这是Remix给我们提供的一个以太坊网络模拟器,我们可以直接将合约发布到模拟器中,然后在这里头直接与智能合约进行交互来验证合约。
创建一个新的文件,给其命名为HelloWorldContract.sol
,你可以看到第一个智能合约如下所示:
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
contract HelloWorldContract {
function helloWorld() external pure returns(string memory) {
return "Hello World!";
}
}
- SPDX-License-Identifiers
软件开源的时候,软件开发者通常会在README.md文件中,写明开源项目所遵从的开源协议。
但是,由于历史积淀,出现了各种各样的开源协议,纷繁复杂,给软件开发者选择带来了困难。于是,SPDX
将软件开源协议进行了规范化,标准化,方便开源软件开发者进行选择。具体参考:SPDX license identifiers
- pragma
在智能合约中,通过pragma
标识来防止未来版本的编译器因为引入一些不兼容的特性而造成先前写的源代码无法编译。
在solidity
语言,具有重大变化的版本差异,一般都以0.x.0
或者x.0.0
进行区别。在上面的例子中,编译器版本只能选在等于0.7.0或者高于0.7.0,但不能高于0.8.0(不包含),该规则可以参考npm
中的版本规则。
contract
以上两个字段必须出现在每个智能合约文件中前两行。
contract HelloWorldContract {
function helloWorld() external pure returns(string memory) {
return "Hello World!";
}
}
编译合约
点击最左边的Solidity compiler
按钮,选中auto compile
选项,然后点击编译按钮进行编译。
发布合约
点击最左边的Deploy & run transactions
按钮,根据下图选择相应的内容,最后点击发布Deploy
按钮。
合约发布成功后,即可发现其下方有一个已发布合约,点击按钮helloWorld
即可调用已经发布的合约中的函数。
调用后即可在日志中打印出下面这个输出,说明我们的合约已经顺利的执行。
到现在位置,我们已经成功发布了一个合约,浅尝辄止。是不是感觉没有落地,比较虚?没问题,下面的章节将会围绕两点展开。