基於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,具體原因筆者未解決,歡迎私信或留言。

后續博客更新如何部署智能合約等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM