使用Solidity开发智能合约(一)

区块链研究实验室 view 1927 2021-3-18 22:01
share to
Scan QR code with WeChat

使用Solidity开发智能合约(一)

Solidity是用于开发以太坊智能合约的最受欢迎的语言之一,因此作为一个想要成为区块链开发人员的我决定开始学习如何使用Solidity开发智能合约。

但是由于找不到我想要的质量的教程(使初学者能够以简洁的方式轻松学习基础知识),所以我决定创建本系列,希望很快将您介绍给Solidity编程。

设置开发环境

我们将使用的IDE是Remix。您需要做的就是点击这个URL。点击进去后,您应该会看到一个类似以下的屏幕:

使用Solidity开发智能合约(一)

在左侧,我选择了两个主要组件。第一个图标是文件浏览器,您可以在其中查看所有Solidity文件,第二个图标是插件管理器,从中可以添加新插件。

我们将需要添加两个插件,因此单击插件管理器图标,然后键入“ Solidity编译器”。然后通过单击“激活”将其激活,并执行相同的操作以添加“部署并运行事务”插件。

“Solidity编译器”选项卡将允许您配置编译器参数并编译智能合约,而“部署并运行交易”选项卡将允许您在区块链中部署智能合约并与之交互。图标列表现在应如下所示:

使用Solidity开发智能合约(一)

您现在应该做的第一件事是检查“编译器”选项卡中的“自动编译”选项。接下来,我们将配置Remix以使用本地存储中的文件。您将需要使用以下命令安装remixed:

npm install -g remixd

安装完成后,您可以创建一个文件夹,您将在其中放置Solidity文件,然后运行以下命令告诉Remix使用文件夹中的文件:

remixd -s— remix-ide https://remix.ethereum.org

现在转到Remix的主页,单击“连接到本地主机”,然后在弹出窗口中选择“连接”,您应该在“文件资源管理器”选项卡下看到一个名为localhost的区域。如果展开它,您将看到从本地存储共享的文件夹中包含的所有文件:

使用Solidity开发智能合约(一)

恭喜你,现在,您拥有了开始编写第一个智能合约的工具!

接着Remix将为您提供在您的浏览器中运行的沙盒区块链,以使用它来部署您的合同并与之交互。只需确保在“部署并运行”选项卡中选择Javascript VM作为环境即可。

撰写"hello world"合同

让我们看看我们的第一个智能合约:

使用Solidity开发智能合约(一)

SPDX许可证标识符

如果源代码可用,则可以更好地建立对智能合约的信任。由于提供源代码始终会涉及版权方面的法律问题,因此Solidity编译器鼓励使用机器可读的SPDX许可证标识符。每个源文件都应以说明其许可证的注释开头。TK(https://solidity.readthedocs.io/en/v0.7.3/layout-of-source-files.html)

版本注释

可以为源文件添加版本注释,以拒绝使用将来的编译器版本进行编译,因为这可能会带来不兼容的更改。

TK(https://solidity.readthedocs.io/en/v0.7.3/layout-of-source-files.html)

具有重大更改的发行版本始终以0.x.0或形式x.0.0。在我们的示例中,可以使用的编译器版本应大于或等于0.7.0且小于0.8.0(使用来添加第二个条件^)。可以为编译器版本指定更复杂的规则。它们遵循npm所使用的相同语法。

前两行应出现在所有智能合约文件中。为了开始编写智能合约,您需要使用关键字contract 以及合约名称,然后才能将代码放在大括号之间。

接着,让我们创建这个世界问候合同。

在您的共享文件夹中创建一个名为的新文件,HelloWorldContract.sol并复制粘贴先前的代码。如果您选中了自动编译选项,它将自动编译代码。如果没有,请确保检查并编译代码。

现在是时候部署我们的第一个合同并与其进行交互了。单击“部署并运行事务”选项卡,然后确保在环境中选择了JavaScript VM,并在合同区域中选择了合同名称。完成后,单击“部署”。

使用Solidity开发智能合约(一)

现在,您应该在“已部署合同”区域下看到您的合同。如果展开它,您将看到该helloWorld功能。单击它以发送调用此功能的交易,您将看到hello world打印的字符串。

使用Solidity开发智能合约(一)

智能合约的结构

现在让我们看看可以在智能合约中添加哪些内容(下面直接引自https://solidity.readthedocs.io/en/v0.6.7/structure-of-a-contract.html):

状态变量:是其值永久存储在合同存储中的变量。

函数:函数是代码的可执行单元。函数通常在合同内部定义,但也可以在合同外部定义。

功能修饰符:功能修饰符可用于以声明方式修改功能的语义。

事件:事件是与EVM日志记录工具的便捷接口。

结构类型:结构是可以将多个变量组合在一起的自定义类型。

枚举类型:枚举可用于创建具有有限“常量值”集合的自定义类型。

btcfans公众号

Scan QR code with WeChat

Link
Disclaimer:

Previous: UBitMEX深耕盈利加成体系,打造交易所共识生态 Next: Gavin Wood:波卡是创新引擎,而不是平台

Related