Remix IDE 地址
https://remix.ethereum.org/
流程步骤:
创建一个新文件
输入文件名保存
在文件资源管理器中,点击新建文件图标创建一个新文件,并给它命名。在 Remix 中,默认的文件扩展名是 .sol ,如果文件名没有扩展名,将会自动添加 .sol扩展名。
在编辑器中,将以下合约粘贴到空白文件中:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract HelloWorld {string public message;constructor() {message = "Hello, World!";}function setMessage(string memory newMessage) public {message = newMessage;}
}
在粘贴代码时,请确保您理解代码内容,并在部署或与其交互之前进行检查。不要上当受骗!
编译合约
将上面的合约作为编辑器中的活动选项卡,编译该合约。快速编译的方法是按下Ctrl + S。您还可以通过在Solidity编译器中点击编译按钮、右击文件资源管理器中的文件或点击编辑器顶部的播放按钮来进行编译。
这两个都可以,我已经编译过了,出现上面的绿色的√说明已经编译好了
部署合约
进入Deploy & Run Transactions插件。
在此插件的顶部是环境选择框。在这里,您可以选择要部署合约的位置。有许多选择。
Environment
Environment选项用于选择你要使用的以太坊虚拟机环境:
- Remix VM (Shanghai): 使用Remix提供的内置虚拟机环境,这是一种本地测试环境,适用于快速测试和部署智能合约。
- Injected Web3: 连接到浏览器中的Web3提供商(如MetaMask)。你需要确保浏览器钱包连接到合适的以太坊网络(例如主网或测试网)。
- Web3 Provider: 连接到一个自定义的Web3提供商,例如一个本地或远程的以太坊节点。
Account
Account选项用于选择用于部署智能合约的以太坊账户。这里显示了当前选定账户的地址和余额(以ETH为单位)。
Gas Limit
Gas Limit选项用于设置交易的Gas Limit,Gas是以太坊网络中执行合约的计算资源单位:
- Estimated Gas: 由Remix估算所需的Gas量。
- Custom: 手动设置Gas Limit。在截图中,设置为3000000。
Value
Value选项用于设置发送到合约的以太坊数量(以Wei为单位)。Wei是以太坊的最小单位,1 ETH = 10^18 Wei。通常在部署合约时不需要发送ETH,因此默认值为0。
Contract
Contract选项用于选择要部署的智能合约。在编译成功后,这里会列出所有可部署的合约。你可以从下拉菜单中选择一个合约进行部署。在截图中,选择的是HelloWorld - helloworld.sol。
Deploy Button
Deploy按钮用于部署选定的智能合约。当你点击这个按钮时,Remix将尝试在选定的环境中部署合约。如果部署成功,合约实例将显示在“Deployed Contracts”部分。
At Address
At Address选项用于加载已部署的智能合约实例。你可以输入一个已知合约地址,并点击“Load”按钮加载合约实例。
Transactions Recorded
Transactions Recorded显示已经记录的交易数量,并提供选项查看交易详情。
Pinned Contracts
Pinned Contracts显示已固定的合约实例,便于快速访问和交互。
Deployed/Unpinned Contracts
合约实例信息
HELLOWORLD AT 0X…33FA8 (MEMORY)
0X…33FA8: 这是合约的部署地址。
(MEMORY): 表示合约当前存储在内存中(因为使用的是本地虚拟机环境)。
账户余额
Balance: 0 ETH
显示与该合约地址相关联的ETH余额。当前余额为0 ETH。
合约方法
setMessage:
输入框用于输入新消息的字符串。
setMessage按钮用于调用合约的setMessage方法,将新消息发送到区块链。
message:
message按钮用于调用合约的message方法。
显示当前存储的消息字符串。例如,显示“Hello, World!”。
低级别交互
Low level interactions
CALLDATA: 低级别交互的输入框,用于手动输入原始调用数据。
Transact: 手动发送交易按钮,用于发送自定义调用数据。
Both ‘receive’ and ‘fallback’ functions are not defined: 提示当前合约中未定义receive和fallback函数。
示例操作
调用setMessage方法:
在setMessage输入框中输入新消息,例如“Hello, Remix!”。
点击setMessage按钮。
交易成功后,再次点击message按钮,你应该会看到消息更新为“Hello, Remix!”。
调用message方法:
直接点击message按钮,查看当前存储的消息。