下载安装Ganache
Ganache是Truffle Suite的一部分,是一个用于以太坊区块链开发的个人区块链模拟器。它可以在本地计算机上快速启动一个以太坊网络,帮助开发者进行智能合约的开发、测试和部署。
下载图形化界面
进入Ganache官网--Ganache - Truffle Suite,点击download即可下载适配电脑的版本,下载后的文件为appx版本,将其改为.exe即可成功运行
如果官网下载缓慢,出现长时间下载不下来的情况,可以访问GitHub相关连接,找到exe版本进行下载--Releases · trufflesuite/ganache-ui
下载后直接按步骤安装即可。
若依然下载缓慢,此处附上网盘链接
Ganache-2.7.1-win-x64-setup.exe
链接: https://pan.baidu.com/s/1rfDnjF01tCi4eWsSR_Pv1w?pwd=tm8k 提取码: tm8k
使用Ganache
双击打开,会出现如下界面
点击QUICKSTART,即可启动一个本地以太坊区块链,并显示10个预设账户及其相关信息,如下图所示
从左往右每一列:
-
Address
-
以太坊地址(0x 开头的公钥地址)。
-
示例:
0x3f8811Fb5FCab296BBA443d8baAB27588314d64c
-
-
Balance
-
该地址当前持有的 ETH 数量。
-
示例:
99.91 ETH
、100.00 ETH
-
-
TX Count
-
交易计数(也可以理解为该地址的交易次数或 nonce)。
-
在以太坊中,nonce(或 TX Count)通常表示“这个地址已经发起过多少笔交易”。
-
示例:
1
、2
、5
-
-
Index
-
该地址在此列表(或账户集合)中的索引编号。
-
例如,在本地开发工具(如 Ganache)里,会按照顺序给每个测试账户一个索引。
-
示例:
0
、1
、2
-
智能合约部署
remix设置
进入remix
点击新建文件,起名为1.sol
在其中添加如下代码块
// SPDX-License-Identifier: MIT
// 许可证声明,表明本合约采用 MIT 许可证,通常用于开源项目
pragma solidity ^0.8.0;
// 声明 Solidity 编译器版本要求,这里表示使用 0.8.0 或更高的版本(直到不兼容的版本)
contract TestSimple {
// 定义一个公共无符号整数 x,并初始化为 1
// public 修饰符会让 Solidity 自动生成一个 getter 函数
// 这样就可以从合约外部调用 TestSimple.x() 来读取 x 的值
uint public x = 1;
}
点击类似S的按钮,选择编译器版本为0.8.x,再运行。
若运行成功,需要进行相关设置。
注意:将EVM改成London,否则合约可能部署失败。
EVM(Ethereum Virtual Machine)版本指定了合约要兼容的以太坊虚拟机升级。以太坊网络在不同阶段会进行硬分叉或升级,每次升级会引入新的特性或对某些操作码进行修改。
账户设置
接下来,在插件中找到Matamask钱包。注意:一定要在remix界面打开插件,不能打开matamask网页。点击左上角添加自定义网络。
具体设置内容参考Ganache中设置里server内容
注意:链ID若写5777不成功,可以换成1337
账户添加
在Ganache中点击小钥匙,将私钥PRIVATE KEY复制,进入matamask添加账户,点击导入账户,将刚才复制的私钥粘贴
此时可以看到账户导入成功,
可以看到账户余额
部署智能合约
在remix中点击以太坊标识,将环境改为matamask,account改为刚才添加的账户后点击deploy
这时候会出现一个请求:
点击确认即可,如果无法部署,可以改一下GAS LIMIT,将其改高一点。
此时合约已经正确部署,在Ganache中看到tx count数量会增加1,点击block会看见相关信息。
-
Block 7
-
区块编号(Block Number),表明这是区块链上的第 7 个区块。区块编号是按时间顺序递增的。
-
-
Gas Used(114125)
-
当前区块中所有交易实际消耗的总 gas 量。
-
Gas 是在以太坊网络上执行交易或智能合约所需的计算成本单位。
-
-
Gas Limit(10000000)
-
当前区块的 gas 上限。这个值限制了本区块中所有交易的最大 gas 总和。
-
如果交易所需的 gas 超过此上限,就无法打包进该区块。
-
-
Mined On(2023-03-22 09:12:43)
-
区块被“挖出”或“打包”的时间戳,也就是该区块在区块链上被确认的时间(在本地开发环境中,这个时间可能由模拟器或本地节点决定)。
-
-
Block Hash(0x3535c18ec...)
-
区块哈希值,是区块的唯一标识符。
-
通过区块内所有数据(包括交易列表、前一个区块哈希等)计算得来。
-
一旦区块数据改变,哈希也会随之改变。
-
在remix界面也会看到如下信息
-
[Block: 7 txIndex: 1]
-
Block: 7:该笔交易被打包进了区块编号 7。
-
txIndex: 1:表示这是该区块中第 1 笔交易(交易在区块中的顺序索引)。
-
-
from: 0x28...
-
发起交易的以太坊地址,简称“发送方地址”。
-
-
to: TestSimple.(constructor)
-
交易目标是
TestSimple
合约的构造函数(constructor)。 -
当
to
显示为合约名加“(constructor)”时,代表这是一次“创建合约”的交易,而不是对现有合约的调用。
-
-
value: 0 wei
-
这笔交易中发送的 ETH 数量是 0 wei(wei 是以太坊中最小的计量单位)。
-
即没有额外转账,只是部署合约。
-
-
data: 0x6080...
-
交易的输入数据(input data),一般包括构造函数的字节码或合约部署的字节码等。
-
在部署合约时,这里会包含合约编译后的 EVM 字节码。
-
-
logs: 0
-
表示这笔交易在执行过程中没有触发任何事件(Event),因此产生的日志数量为 0。
-
-
hash: 0xbcd5...
-
交易哈希(Transaction Hash),是交易的唯一标识符。
-
可以在区块浏览器中通过此哈希查找具体交易信息。
-
-
status: 0x1 Transaction mined and execution succeed
-
status: 0x1:表示交易执行成功。
-
如果是 0x0,通常代表交易失败或被回滚。
-
“Transaction mined and execution succeed” 说明交易已被打包进区块且成功执行。
-
-
block hash: 0x8df6...
-
区块哈希(Block Hash),区块的唯一标识。
-
由区块内的所有信息(包括交易、前一区块哈希等)通过加密算法生成。
-
-
block number: 7
-
与上方“Block: 7”对应,表示该交易所在的区块编号。
-
-
contract address
-
这里显示了一个新生成的地址(如果是合约部署交易)。
-
说明部署成功后,合约最终被分配到这个地址。
-
-
from
-
再次列出发送方地址。
-
-
to
-
再次显示此次交易的目标(部署合约时通常为空或显示“constructor”)。
-
-
gas: 114625
-
这笔交易实际消耗的 gas 数量。
-
-
transaction hash
-
与上面“hash: 0xbcd5...”相同,是该交易的哈希值。
-
-
input / decoded input
-
详细的交易输入数据,以及解码后的人类可读信息(如果有函数参数,会在 decoded input 中显示具体参数值)。
-
-
decoded output
-
如果调用合约函数有返回值,这里会显示解码后的返回值(合约部署一般没有返回值)。
-
-
logs / raw logs
-
交易中触发的事件(Event)会在此列出,
-
logs 是经过初步解析后的事件日志,
-
raw logs 是原始日志数据(十六进制等)。
-