基于Ubuntu18.04搭建以太坊私链并连接Metamask

VM下安装ubuntu18.04#

  1. ubuntu下载链接:

    https://mirrors.aliyun.com/ubuntu-releases/bionic/ubuntu-18.04.6-desktop-amd64.iso
    搭建过程参考其他搭建博客即可

    以下步骤默认已成功安装ubuntu系统

  2. 在VMware中的安装过程省略、注意网络使用,私链搭建须在桥接网络下进行

 passwd root		//设置root密码
  
 su root		//切换到root用户权限下
  
 apt-get install ssh		//安装ssh-servber服务
  
 /etc/init.d/ssh start		//启动ssh服务
  
 ps -e | grep ssh		//查看是否打开
  1. 提示如下即可通过终端进行ssh连接

4. ubuntu缺省情况下是不允许通过root账户进行远程登录的。若需要可修改ssh文件,不修改文件则通过设置用户名进行登录。

Unbuntu界面配置#

  1. 在root权限下的GUI下操作,否则后面在metamask引入私链json文件会出现没有权限查看文件。切换命令如下:
/etc/init.d/gdm3 stop		//gdm3建议由tab补全,如果是kde桌面,就把gdm换成kdm

su root		//切换到root用户下

startx		//启动root权限的GUI
  1. 安装chrome浏览器

ubuntu自带的火狐如无法正常打开chrome官网,作者采用的方式是物理机下载后通过rz上传到虚拟机中

终端不具备rz功能,建议下载iTerm进行操作

  1. 在桌面添加chrome快捷图标并正常使用
/usr/share/applications 		//打开拖到桌面
属性->权限->勾选"允许作为程序执行文件"  	//右击图标
在命令中改为/usr/bin/google-chrome-stable %U -no-sandbox		//基本
  1. 在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,具体原因笔者未解决,欢迎私信或留言。

后续博客更新如何部署智能合约等

作者:潜仁

出处:https://www.cnblogs.com/addc/p/15776994.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   潜仁  阅读(1783)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示