基於Ubuntu18.04搭建以太坊私鏈並連接Metamask

潜仁 2022-01-07 22:21:22 阅读数:657

ubuntu18.04 ubuntu 搭建 以太 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連接

  2. 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. 安裝chrom瀏覽器

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://gsmany.com/2022/01/202201072221219600.html