Solidity入门(1)-Hello World

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


Hello World

就像学习任何其他编程语言的入门一样,我们将通过编写一个简单的"Hello World"程序来介绍 Solidity 的基本语法。这不仅帮助我们熟悉语言结构,还是检验编译器、开发和运行环境是否正确安装的常用方法。

Hello World 合约 接下来的例子展示了一个基础的"Hello World"智能合约,该合约包含两个函数。一个是 set 函数,用于接收输入并将字符串存储在名为 storeMsg 的变量中;另一个是 get 函数,用于从 storeMsg 变量中检索并返回存储的字符串。这种结构简明扼要,非常适合初学者理解智能合约的基本操作。

bash 复制代码
// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.17;

contract HelloWorld {
    string storeMsg;

    function set(string memory message) public {
        storeMsg = message;
    }

    function get() public view returns (string memory) {
        return storeMsg;
    }
}

你可能会好奇,为什么我们不像在 C 或 Python 中那样,直接打印一个"Hello World"字符串。原因在于,Solidity 并不能像其他编程语言那样自动运行代码。Solidity 代码的执行需要由某个账户或其他合约触发,并且必须支付足够的 Gas 费用才能执行其函数。因此,要测试这个"Hello World"程序,我们必须主动与之互动才能观察到执行结果。这种设计体现了智能合约在区块链上运行的独特性质。

部署合约

根据之前的教程,使用 Remix IDE 进行编译后,我们将进入"Deploy & Run Transactions"面板,点击"Deploy"按钮进行部署。部署完成后,我们可以在"Terminal"面板和"Deployed Contract"窗口中看到新的记录出现。

首先查看"Terminal"面板,展开信息后,可以看到关于我们部署合约的一些详细信息,包括合约部署的状态信息(status)、发起部署的账户(from)、新部署的合约地址(to)、使用的 Gas 等信息。此处我们可以确认合约部署状态显示为成功。

因此,我们可以在"Deployed Contract"窗口中找到我们刚刚部署的合约。在下一小节中,我们将介绍如何与这个"Hello World"合约进行交互。

合约交互

如下图所示,我们通过两个步骤与合约进行交互,并执行了两笔交易,每笔交易都需支付相应的 Gas 费用:

第一步: 调用 set("hello world!") 函数,将字符串 "hello world!" 写入到 storeMsg 状态变量中。

第二步: 调用 get() 函数,从状态变量 storeMsg 中检索并返回字符串 "hello world!"。

至此,我们已成功与合约交互,并通过 get 函数获得了返回的 "hello world!" 字符串。大型合约的开发同样遵循这一基本模式和流程。随着我们对区块链技术理解的加深,将能够开发出越来越复杂的合约。

相关推荐
反向跟单策略13 小时前
期货反向跟单:跨合约跟单的意义及操作方法
大数据·人工智能·学习·数据分析·区块链
暴躁小师兄数据学院13 小时前
【WEB3.0零基础转行笔记】Solidity编程篇-《Foundry基础》:第1讲:Foundry简易存储
web3·区块链·智能合约
白沙染赤13 小时前
《区块链技术与应用》--笔记【4-6】
笔记·区块链
好家伙VCC15 小时前
# 发散创新:基于状态通道的以太坊智能合约高效交互实践在区块链应用开发中,**交易
java·python·区块链·智能合约
kida_yuan1 天前
【以太来袭】6. Besu 的 API 与调试体系
运维·区块链
2501_921649491 天前
期货 Tick 级数据与基金净值历史数据 API 接口详解
开发语言·后端·python·websocket·金融·区块链
三秋树2 天前
Foundry Fuzz 测试完全指南:从入门到生产级智能合约安全测试
区块链
不知名的老吴2 天前
我们为什么要使用区块链?
区块链
暴躁小师兄数据学院2 天前
【WEB3.0零基础转行笔记】go编程篇-第12讲:go-zero入门实战
开发语言·笔记·golang·web3·区块链