Geth
Version: 1.10.21-stable
Architecture: amd64
Go Version: go1.18.4
Operating System: darwin
GOPATH=
GOROOT=go
node
v16.16.0
npm
8.11.0
https://remix.ethereum.org/
MetaMask 谷歌插件
提前安装go,node,npm,geth,web3.js(通过npm安装)
创建工作并进入目录,后续所有的命令都在工作目录中完成
$ mkdir ~/my_chain
$ cd ~/my_chain
在开启本地私链时可以指定账户和初始余额,所以在开启前首先创建一个账号。需要注意的是,创建账号会生成一个keystore文件,为了能让账号可以被将要启动的私链识别,需要将生成的文件放到私链工作目录中。运行如下创建账户命令后会要求输入两次密码,完成后会在~/my_chain/keystore目录下生成【UTC–】开头的文件,该文件为keystore(私钥=keystore+密码)。当然我们可以创建多个账户
$ geth account new --keystore ./keystore
文件名称示例:UTC–2022-08-19T12-05-39.441584000Z–6aeb37cf3eabe984b36cbb5e7196e19ef36a70b3
(需要说明的是最后一个中划线后边的一串前面加上0x就是地址,我们姑且称它为尾地址)
{
"config": {
"chainId": 911,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "1000",
"gasLimit": "2100000",
"alloc": {
"6aeb37cf3eabe984b36cbb5e7196e19ef36a70b3": { "balance": "20000000000000000000000" }
}
}
$ geth --datadir ./ init Genesis.json
$ geth --networkid 911 -http --http.corsdomain="*" --datadir . console --allow-insecure-unlock
$ personal.unlockAccount("0x6Aeb37cF3eABe984b36CBB5e7196e19EF36A70b3", "***", 60)
运行如下命令可以查到账户余额
$ eth.getBalance(eth.accounts[0])
不开启处理请求命令没发执行,所以我们需要开启,获得所得的费用会转到私链第一个账户,也就是刚才创建的账户中
以下命令分别是开始和停止,都需要再geth命令窗口中执行
$ miner.start(1)
$ miner.stop()
为了使用MetaMask,我们需要导出私钥,keystore导入会导致卡死,目前使用私钥导入,但是我们需要通过keystore获取私钥,方法是创建web3.js文件,内容如下。然运行 node web3.js
const Web3 = require('web3');
const web3 = new Web3('http://localhost:8545');
console.log(web3.eth.accounts.decrypt("第一个参数",'密码'));//第二个参数是密码
点击箭头指向的地方,然后点击添加网络会出现如下表单
打开 http://remix.ethereum.org
选择External Http Provider,然后点击OK,完事。注意如果使用过程中出现账号锁定的情况,在geth窗口执行解锁命令(personal.unlockAccount(“0x6Aeb37cF3eABe984b36CBB5e7196e19EF36A70b3”, “***”, 60))
有问题大家随时留言,必要的话建群交流