基于Ubuntu18.04搭建以太坊私链并连接Metamask
VM下安装ubuntu18.04#
-
ubuntu下载链接:
https://mirrors.aliyun.com/ubuntu-releases/bionic/ubuntu-18.04.6-desktop-amd64.iso
搭建过程参考其他搭建博客即可以下步骤默认已成功安装ubuntu系统
-
在VMware中的安装过程省略、注意网络使用,私链搭建须在桥接网络下进行
passwd root //设置root密码
su root //切换到root用户权限下
apt-get install ssh //安装ssh-servber服务
/etc/init.d/ssh start //启动ssh服务
ps -e | grep ssh //查看是否打开
- 提示如下即可通过终端进行ssh连接
4. ubuntu缺省情况下是不允许通过root账户进行远程登录的。若需要可修改ssh文件,不修改文件则通过设置用户名进行登录。
Unbuntu界面配置#
- 在root权限下的GUI下操作,否则后面在metamask引入私链json文件会出现没有权限查看文件。切换命令如下:
/etc/init.d/gdm3 stop //gdm3建议由tab补全,如果是kde桌面,就把gdm换成kdm
su root //切换到root用户下
startx //启动root权限的GUI
- 安装chrome浏览器
ubuntu自带的火狐如无法正常打开chrome官网,作者采用的方式是物理机下载后通过rz上传到虚拟机中
终端不具备rz功能,建议下载iTerm进行操作
- 在桌面添加chrome快捷图标并正常使用
/usr/share/applications //打开拖到桌面
属性->权限->勾选"允许作为程序执行文件" //右击图标
在命令中改为/usr/bin/google-chrome-stable %U -no-sandbox //基本
- 在chrome中添加metamask需要科学工具---略
Ubuntu命令行配置#
root权限下进行下列操作(实际生产环境中不建议root,但是自己实验合约建议root权限下进行)
安装geth
add-apt-repository -y ppa:ethereum/ethereum
apt-get update
apt-get install ethereum
创建创世文件
mkdir private_Eth //创建文件夹放相关文件
cd private_Eth //到该路径下创建json文件
vim genesie.json //系统自带vi,vim需自行下载
文件内容如下:
{
"config": {
"chainId": 1337, //其他教程该处除了1、2均可,作者建议这里使用1337
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0
},
"alloc": {
"0xF54cd4fEdA808A50f1237fEb276AC1E3D632dfeD":{
"balance": "10000000000000000000"
}
},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x2000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
初始化该链
mkdir Mychain //创建Mychain文件夹,用来制定数据存储的位置,建议在private_Eth目录下
geth --datadir Mychain/ init genesisi.json //初始化
geth --datadir mychain/1337 //启动私有节点,注意networkid和chainId须一致
成功如图所示:
建立geth.log日志文件
geth --datadir Mychain/1337 console 2>geth.log //command+C结束图中操作,接下来使用geth控制台,但是会有info提示,将其重定向到geth.log中,并重启链
打开端口连接metamask
geth --datadir data --networkid 1337 --http --http.corsdomain="*" --http.port 8545 --http.addr "0.0.0.0" --http.api db,web3,eth,debug,personal,net,miner,admin --allow-insecure-unlock --rpc.allow-unprotected-txs --port 30303 --dev --dev.period 1 console 2>>geth.log
//注意此处应使用http,目前网上的教程大部分依然是rpc。
连接metamask#
ip a //查询虚拟机中的ip地址,建议自己手动配置静态ip地址,DNS可以使用8.8.8.8
metamask配置如图:
RPC URL为虚拟机ip地址,链ID则为json文件中的1337
geth控制台使用命令#
综上所述,已经完成私链搭建,并连接metamask,其余操作参考下列命令。
personal.newAccount():创建账户;
personal.listAccounts:查看账户,同eth.accounts
personal.unlockAccount(eth.accounts[0]):解锁账户;
eth.accounts:查看系统中的账户;
eth.getBalance(eth.accounts[0]):查看账户余额,返回值的单位是 Wei
miner.setEtherbase(eth.accounts[1]):将账户1设置成coinbase
eth.blockNumber:列出区块总数;
eth.getBlock():获取区块;
miner.start():开始挖矿;
miner.stop():停止挖矿;
eth.coinbase:挖矿奖励的账户
web3.fromWei(eth.getBalance(eth.accounts[0]),‘ether’):Wei 换算成以太币;
amount = web3.toWei(5,‘ether’):以太币换算成 Wei;
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount}):发起交易
txpool.status:交易池中的状态;
eth.getTransaction():获取交易;
admin.addPeer():连接到其他节点;
admin.nodeInfo:查看节点摘要信息后续博客将更新
搭建过程中问题总结#
1、镜像可以选择中科大、清华的镜像站,但是阿里云的镜像下载速度最佳
2、unbuntu的ssh服务需要手动配置,安装后通过远程连接工具使用
3、基于ubuntu的安全策略,涉及多项繁琐配置,具体操作在上文《Ubuntu界面配置》中已阐述
4、geth在老版本中使用--rpc连接本地网络,新版本已经更改为--http
5、在连接metamask时遇到的问题
- 无法获取链 IC,您的 RPC URL 地址是正确的么?
该问题与启动私链命令相关,正确命令上文已经提到。此问题也可能因为geth版本等问题冲突,本博客只提供一种解决思路。
- RPC端点使用链不同的链xxxx
该问题与json文件中的ChainID相关,两者须统一,将链ID更改为xxxx即可。但是在本教程中,限制于1337,具体原因笔者未解决,欢迎私信或留言。
后续博客更新如何部署智能合约等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】