1.Ganache使用说明
1.1.Ganache介绍
由于执行交易需要消费以太币,因此在正式以太坊网络环境中需要花*购买以太币,在测试以太坊网络环境中需要通过某些渠道获取测试以太币,这比较麻烦且执行交易速度较慢。Ganache是一个本地以太坊网络环境的应用程序,为用户提供了以太坊账户,且为每个账户提供了以太币,这很好的解决了正式和测试以太坊网络环境遇到的问题,非常适用于学习solidity语言。
接下来对Ganache的介绍,仅仅对用到的模块进行介绍。若想要了解更多,请查看官方教程。
1.2.Ganache安装(windows系统)
- 下载Ganache,下载地址:Ganache - Truffle Suite
- 双击下载的安装程序
- 选择“仅为我安装(Administrator)”,然后点击“下一步”按钮
- 选择安装位置,并点击“安装”按钮,然后等待安装完成
1.3.创建和进入Ganache工作空间
- 初次打开Ganache会看到如下图页面,启动“Analytics enabled.Thanks!”,然后点击“CONTINUE”按钮
- 确定下图画圈处显示的为“ETHEREUM”,否则点击右侧图标选中“ETHEREUM”,然后点击“NEW WORKSPACE”按钮
- 为你的工作空间取一个名字,然后点击“START”按钮,然后等待工作空间创建完成
- 工作空间创建成功后,进入的工作空间如下图,后续会详细介绍工作空间
注:退出Ganache后,再次打开Ganache,在下图画圈区点选列表项可直接进入已创建好的工作空间
1.4.Ganache工作空间介绍
- 账户页面:显示助记词、账户地址、以太币余额。点击“钥匙”图标可查看私钥
- 区块页面:显示区块链上开采的每个区块,以及使用的 gas 和交易
- 交易页面:显示所有交易
2.MetaMask使用说明
2.1.MetaMask介绍
MetaMask (又称为小狐狸) 是一种以太坊钱包,帮助用户管理以太坊账户和资金,并提供查询余额和转账等功能。
MetaMask是一个浏览器插件,支持谷歌浏览器、火狐浏览器,以及国内主流浏览器,如360安全浏览器等。
2.2.MetaMask安装(以火狐浏览器为例)
- 打开火狐浏览器扩展页面,并搜索MetaMask。在搜索结果中选择MetaMask点击打开
- 点击“添加到 Firefox”按钮
- 之后火狐浏览器弹出如下弹窗,点击“添加”按钮。此时MetaMask插件安装完成
MetaMask插件完成后,会打开如下图,并在浏览器右上角显示小狐狸头像图标
2.3.MetaMask关联Ganache
- 点击“开始使用”按钮
- 点击“我同意”按钮
- 点击“导入钱包”按钮
- 打开Ganache并进入工作空间,复制助记词。
- 黏贴助记词,输入密码,同意条款,然后点击“导入”按钮。(注:若长时间处于加载中页面,则刷新下页面)
- 点击“下一步”按钮
- 点击“点击此处以显示助记词”后,点击“下一步”按钮。
- 按照助记词的顺序点击单词。然后点击“确认”按钮
- 点击“全部完成”按钮
- 完成后,进入MetaMask主页面。点击下图画圈处
- 点击“添加网络”按钮
- 点击“手动添加网络”按钮
- 网络名称:随便填写,我这里填写为Ganache;
新的PRC URL:填写Ganache的PRC SERVER,如下图。(注:“HTTP”改为小写);
链ID:填写为1337;
货币符号:填写为ETH;
区块浏览器URL:不用填写;
然后,点击“保存”按钮。
按照上述步骤配置完成后,你可以看到MetaMask以连接上Ganache,并且账户余额显示为100ETH。
2.4.MetaMask添加账户
在Ganache账户页面可以看到有很多账户,但在MetaMask只可以看到一个账户,这需要手动将其他账户添加进MetaMask中。
- 打开Ganache的账户页面,点击相应账户后面的“钥匙”图标
- 复制私钥
- 点击MetaMask右上角头像,然后点击“导入账户”
- 黏贴私钥,然后点击“导入”按钮。
添加完成后,点击头像,可以查看到新添加的账户。点击“创建账户”也可以添加新的账户。
3.Redix使用说明
3.1.Redix介绍
目前编写Solidity语言最好的编译器是Remix编译器。Remix是一个基于Web浏览器的编译器(也就是说用户不需要安装编译器软件和配置运行环境,打开Remix网站即可使用),它可以让用户编写Solidity智能合约,然后将智能合约代码编译为智能合约字节码,最后将状态变量和智能合约字节码存储在合约账户里,并且支持用户调用智能合约函数。
点击进入Redix编译器网站地址
Redix官方教程
3.2.Redix编写、编译、部署智能合约
- 初次进入Redix网站会有一个“Help us to improve Remix IDE”弹窗,点击“Accept”按钮即可。
- 编写智能合约
操作步骤:点击“File explorer”图标,选中“contracts”文件夹,右键点击“New File”,给新建文件命名(注:智能合约的扩展名是“.sol”,在填写名称时要手动填写上扩展名),然后编写智能合约(以编写统计工资StatisticsSalary智能合约为例)。
- 编译智能合约
介绍:在此步骤生成ABI和Bytecode (ABI和Bytecode在“Solidity编程语言进阶知识”教程中详细介绍)。
操作步骤:点击“Solidity compiler”图标,然后点击“Compile xxx.sol”按钮。每次修改智能合约后都需要重新操作此步骤,为避免重复的操作可以勾选“Auto compile”,勾选后编译器可以自动执行编译。
- 部署智能合约
介绍:将编译后的智能合约部署到以太坊网络中。
操作步骤:点击“Deploy & run transactions”图标,然后打开“ENVIRONMENT”的下拉列表并选中“Injected Provider - MetaMask”用于链接MetaMask,再然后打开“Contract(Compiled by remix)”的下拉列表并选中要部署的合约(注意:当源文件中有多个合约时才需要使用此步骤),最后点击“Deploy”按钮。由于部署智能合约是一个“部署合约交易”,因此需要消耗燃料费,在点击“Deploy”按钮后,会弹出MetaMask弹窗用于支付燃料费,在弹窗中点击“确认”按钮,等待部署完成。
智能合约部署成功后,会在Ganache的区块页面生一个区块数据和在交易页面生成一个交易数据。
3.3.Redix调用智能合约
介绍:调用智能合约本质是对函数的调用。智能合约部署成功后,会在下图花圈处显示已部署的智能合约。
操作步骤:点击图标后,会查看到累加工资accumulateSalary和获取总工资getTotalSalary两个函数;输入参数并点击相应按钮,然后根据情况支付燃料费后会调用相应函数。例如:在“accumulateSalary”按钮后面的输入框输入3200,并点击“accumulateSalary”按钮,这个过程会改变状态变量totalSalary,因此需要支付燃料费,在MetaMask弹窗支付燃料费后,等待调用成功后,会在Ganache的区块页面生一个区块数据和在交易页面生成一个交易数据。点击“getTotalSalary”按钮,由于获取总工资getTotalSalary函数只是从以太坊网络中获取数据,并没有改变账户状态,因此不是交易,不用支付燃料费,也不会产生区块数据和交易数据,会在“getTotalSalary”按钮下面显示总工资3200。
注意:每次点击“Deploy”按钮或点击函数按钮(如:accumulateSalary按钮和getTotalSalary按钮),都会在右侧画圈出显示出更多或更复杂的信息。
3.4.向智能合约发送以太币
智能合约部署后,会生成一个合约账户,可以使用外部账户向和合约账户发送以太币(即外部账户向合约账户转账以太币)。
操作步骤:在value输入框中填写要转账的金额,然后在后面的下列表选择以太币单位,最后按照上述【Redix调用智能合约】步骤操作。
在下图绿色画圈处,显示的是合约账户含有的以太币余额。
3.5.向智能合约的构造函数传递参数
在合约中可以声明一个特殊的函数,这个函数是构造函数(在“Solidity编程语言基础知识”教程中详细介绍),构造函数的输入参数必须在部署时输入。
操作步骤:在“Deploy”按钮后的输入框输入数据,然后按照上述【Redix调用智能合约】步骤操作。