例子

接下来,让我们看一下一个示例,何时实现合约以及如何使用它。

我举的例子是一个名为 Greeter 的合约,它是 Hardhat 为我们生成的。在与Greeter交互时,我们可以选择使用它的函数,greet 函数,它将返回一个已设置的问候语,并具有 setGreeting 方法,当我们调用它时,它必须传递问候语值来设置问候语。现在当我们设置问候语时后,然后我们再次调用 greet命令,合约返回一个新的问候语。

我们将回到 VS code,打开文件 Greeter.sol,它将是我前面提到的示例合约。

接下来,让我们回顾一下部署这个合约的基础知识,以及如何将它部署到本地链。这里我们将向您展示位于 script 文件夹中的 sample-script.js 文件。这个文件可以用 hardhat 为我们生成。这是一个脚本,当我们运行它时,脚本将引导 Greeter 部署,请注意,第17行是我们设置对 Greeter 合约的引用的地方,第18行是我们部署这个契约的地方。进入网络,它会告诉我们,我们已经完成部署,并将部署到某个地址。在部署时,我们可以使用这个脚本:

下面是一个运行脚本的例子,我们将使用 npx hardhat run 命令在控制台中运行它,并选择我们想要在这里运行脚本的文件夹 sample-script.js 文件。在脚本文件夹中会有 npx hardhat run script/sample-script.js 命令。我们需要选择要将合约部署到的网络,然后输入命令 --network localhost,这是我们正在运行的 Hardhat 的网络。最后,我们将得到要部署的命令 npx run script/sample-script.js --network localhost 并按 enter 键。

现在我们已经完成了,我们将返回部署到的 Greeter 的合约地址。一旦我们获得了 Greeter 的合约地址,复制它,看看我们是否想在不编写代码的情况下跟合约交互。

复制合约地址后,回到莱卡的网页,点击添加一个新的 collection。

接下来,单击刚刚创建的集合后面的三个点,并添加一个方法,然后单击刚刚创建的新方法。

让我们使用我们刚刚复制的 Greeter 的合约地址。

这里我们要调用的第一个函数是函数 greet,然后我们输入一个 greet 的方法名。

函数 greet 不需要任何参数,但它会返回一个字符串,所以我们不放参数,只添加 return 并选择 string。这里,我们写在这里的问候函数不需要 input,我们只是让它空着,然后点击 Send。

点击发送后,我们得到一个响应结果,我们可以看到名称是一个空字符串,类型为字符串,我们得到一个值 hello, Hardhat。这将表明我们已经成功地完成了对合约的调用。

接下来,我们将尝试另一个函数,函数 setGreeting。让我们做与函数 greet 相同的事情,但将方法重命名为 setGreeting,但 setGreeting 函数是一个我们需要触发到合约的函数,所以我们需要设置的方法类型。这个价值是 NONPAYBLE 的,这样我们就可以对合约做写入操作了。

通过函数 setGreeting 是一个创建交易的方法,但它是一个我们不需要支付原生代币所以这里我们选择了nonpayable。在这个函数中,我们需要参数,只需按加号添加参数,选择类型为字符串,将参数名称作为问候语,并输入值 Hola! 然后点击 Send。

在按下发送后,会弹出一个 Metamask 让我们创建交易,然后单击确认。

等待一段时间后,我们将得到结果的响应。

在这里,如果有人想观察更多细节,可以看看我们运行本地链的地方的输出信息。

现在,我们已经将 “Hello hardhat”改为“Hola hardhat”,我们还可以再运行一次 greet 函数,看看结果是否真的发生了变化。

最后更新于