本地跑eth節點
① 搭建geth私有鏈和聯盟鏈網路
操作系統:linux或Mac OS
安裝geth執行以下命令:
linux:sudo apt-get install ethereum
Mac OS:brew install ethereum
直接創建兩個geth的工作目錄,用於之後的組建聯盟鏈的使用:
mkdir eth-private1
mkdir eth-private2
首先 cd eth-private1 進入節點1的工作目錄該目錄下執行下面命令
geth --datadir data --nodiscover console (data是之後geth節點的數據目錄,可自行修改)
使用geth自帶的工具 puppeth 用於生成創世區塊,過程如下:
puppeth
+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
| |
| This tool lets you create a new Ethereum network down to |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail. |
| |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset. |
+-----------------------------------------------------------+
Please specify a network name to administer (no spaces, please)
輸入私鏈名稱後,會出現二級菜單,現在2:配置一個新的創世快
What would you like to do? (default = stats)
再次出現二級菜單,讓你選擇共識機制(這里採用poa共識)
Which consensus engine to use? (default = clique)
Ethash - proof-of-work(PoW) :工作量證明,通過算力達成共識 (以太坊就是使用這種方式)
Clique - proof-of-authority(PoA): 權威證明、通過預先設定的權威節點來負責達成共識 (不消耗算力,一般用於私有鏈測試開發)
如果選擇Pow的共識方法,直接輸入1,回車即可。
如果選擇PoA的共識方法,輸入2後會提示讓你選擇處快的間隔時間,一般測試開發使用可以設置相對的將處快時間設置較少5秒即可,然後會讓你選擇哪個賬戶來作為權威生成區塊(至少有一個,輸入剛才創建的賬戶,若只是單節點就輸入那個節點目錄生成的地址,若想組建聯盟鏈就填寫生成的兩個地址)
How many seconds should blocks take? (default = 15)
選擇好共識機制後會讓你指定給那些賬號初始化ether(至少有一個),輸入我們剛才創建的賬戶地址回車即可。
Which accounts should be pre-funded? (advisable at least one)
選擇輸入私有鏈的網路ID,任意數字即可(不能為1,1是公鏈),也可以不輸入會給定一個隨機數作為私有鏈的網路ID
Specify your chain/network ID if you want an explicit one (default = random)
選擇導出創世區塊配置文件
選擇導出創世區塊配置文件的保存路徑,可以保存到當前目錄,直接按回車即可
Which file to save the genesis into? (default = my-private-chain.json)
INFO [02-09|14:56:33] Exported existing genesis block
這樣就完成了創世區塊文件的配置了,直接退出puppeth即可。
輸入命令 geth --datadir data init private.json 其中data自己制定,private.json就是剛才生成的創世區塊
若出現如圖錯誤:
輸入命令:
geth --datadir data --syncmode full --port 2001 --networkid 1234 --rpc --rpcport "8545" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcapi "db,eth,net,web3,personal,admin,clique" --nodiscover console 進入控制台
--datadir data:節點的數據目錄
--syncmode full:塊同步的方式(若只是單節點可不填)
--port 2001: 網卡監聽埠
--networkid 1234:網路標識符
--rpc:開啟rpc服務
--rpcport "8545":rpc服務的埠
--rpccorsdomain "*":允許跨域請求的域名列表(逗號分隔)(瀏覽器強制)
--rpcaddr "0.0.0.0" :HTTP-RPC伺服器介面地址(默認值:「localhost」)
--rpcapi "db,eth,net,web3,personal,admin,clique":基於HTTP-RPC介面提供的API(私有鏈可以任意開發,公有鏈需要謹慎)
--nodiscover:不允許節點自動加入
若想搭建聯盟鏈,必須保證創世區塊一致,進入到剛才創建的eth-private2的目錄
將之前生成的創世區塊拷貝過來,初始化創世區塊,然後使用啟動命令啟動分別啟動兩個節點,進入控制台,使用 admin.nodeInfo 命令獲取節點的信息
總結:
兩個伺服器部署兩個節點是可以聯通的,但是只能使用兩個節點對應的地址進行挖礦,所以只能是兩個節點對應兩個地址進行挖礦,使用poa共識,當一個節點掛掉,挖礦停止,因為poa共識挖礦必須超過50%的節點進行錢增,現在只是兩個節點,掛掉一個節點挖礦就會停止等待另一個節點的確認,停掉的節點可以通過正常運作的節點信息重新連接到網路中。
問題:
同步塊有可能報錯情況:
1:Synchronisation failed "retrieved hash chain is invalid" 解決目前找到的方法是removedb 數據目錄 ,重新init創世區塊
2:內存溢出初步確認為開啟rpc服務造成的,有可能伺服器惡意被黑,暴力破解密碼,佔有內存,解決,將伺服器的ip設置一條防火牆
若存在問題可給本人留言或訪問本人的github: https://github.com/qi-shuo/geth-document 記錄了一些本人搭建使用的命令
② 我能自己來運行 Eth 2.0 的驗證者嗎
可以!
你在運行自己的驗證者節點時,首先要意識到的是,你這樣做是有助於網路安全性的,而且你無需過度擔心正常運行時間。
假設網路總體上是健康的(始終有超過 2/3 的節點在線,並且一直在終局化新的區塊),在線時間超過 50% 的驗證者將看到自己的權益會不斷增加。
引用以太坊基金會的 ETH Staking 指南系列文章中的一句話:
這就減輕了驗證者在客戶端備份和網路延遲上的負擔,因為離線的懲罰並不那麼嚴重。

自己運行驗證者節點並不像你想像中那麼可怕或昂貴。一旦ETH 2.0上線,你就可以在一個舊手機或樹莓派(100 美元)上運行驗證者節點。
我們專門為開發者撰寫了關於如何使用 Nimbus 在安卓系統上運行驗證者節點的指南(分別是這篇和這篇)。在主網上線前,我們一直在盡可能簡化這一流程。尤其值得一提的是,主網指南將面向那些沒有編程經歷的用戶,而且會盡可能實現 「安裝 + 質押 ETH = 正常運行」。
你可以幫助以太坊增強抗攻擊性與其讓同一個實體控制 100 個節點,不如讓一個實體控制一個節點。——Barnabe Monnot
從長遠角度來看,以太坊的價值越高,抗攻擊性越強,其共識層的去中心化程度就越高。
中本聰最初的願景是 「一 CPU 一票制」,但是如今的 PoW 系統已經偏離了這一願景。就目前而言,絕大部分挖礦資源都集中在少數礦池手中。個體礦工都為了縮小自己收入的波動性而加入礦池。
我們之所以選擇從 PoW 模式轉向 PoS 模式,也是為了解決這一問題。
如果有越來越多人選擇自己運行驗證者節點,我們就可以將這一願景變為現實,增強以太坊的抗攻擊性,使之在無需審查的情況下不斷發展。
③ 如何看待以太坊的ETH2.0
我個人非常看好以太坊2.0之後的發展,但我並不是特別看好以太坊之後的價格。
當以太坊升級到2.0以後,以太坊的證明模式將會發生變化。在此之前,以太坊一直通過POW的方式來提供證明。但在此之後,以太坊將會把證明模式調整為POS。當以太坊正式進入到2.0時代之後,以太坊的交易速度將會進一步提高,交易手續費也會大幅壓縮,都會顯著解決當前以太坊的交易困境。從某種程度上來說,以太坊到時候將會成為真正意義上的第一公鏈。至於以太坊以後的價格問題,當以太坊失去礦工的支持之後,我覺得價格很難突破新高。
綜上所述,在以太坊沒有正式升級到2.0之前,一切討論都只不過是猜測而已,你可以參考一下。
④ 011:Ethash演算法|《ETH原理與智能合約開發》筆記
待字閨中開發了一門區塊鏈方面的課程:《深入淺出ETH原理與智能合約開發》,馬良老師講授。此文集記錄我的學習筆記。
課程共8節課。其中,前四課講ETH原理,後四課講智能合約。
第四課分為三部分:
這篇文章是第四課第一部分的學習筆記:Ethash演算法。
這節課介紹的是以太坊非常核心的挖礦演算法。
在介紹Ethash演算法之前,先講一些背景知識。其實區塊鏈技術主要是解決一個共識的問題,而共識是一個層次很豐富的概念,這里把范疇縮小,只討論區塊鏈中的共識。
什麼是共識?
在區塊鏈中,共識是指哪個節點有記賬權。網路中有多個節點,理論上都有記賬權,首先面臨的問題就是,到底誰來記帳。另一個問題,交易一定是有順序的,即誰在前,前在後。這樣可以解決雙花問題。區塊鏈中的共識機制就是解決這兩個問題,誰記帳和交易的順序。
什麼是工作量證明演算法
為了決定眾多節點中誰來記帳,可以有多種方案。其中,工作量證明就讓節點去算一個哈希值,滿足難度目標值的勝出。這個過程只能通過枚舉計算,誰算的快,誰獲勝的概率大。收益跟節點的工作量有關,這就是工作量證明演算法。
為什麼要引入工作量證明演算法?
Hash Cash 由Adam Back 在1997年發表,中本聰首次在比特幣中應用來解決共識問題。
它最初用來解決垃圾郵件問題。
其主要設計思想是通過暴力搜索,找到一種Block頭部組合(通過調整nonce)使得嵌套的SHA256單向散列值輸出小於一個特定的值(Target)。
這個演算法是計算密集型演算法,一開始從CPU挖礦,轉而為GPU,轉而為FPGA,轉而為ASIC,從而使得算力變得非常集中。
算力集中就會帶來一個問題,若有一個礦池的算力達到51%,則它就會有作惡的風險。這是比特幣等使用工作量證明演算法的系統的弊端。而以太坊則吸取了這個教訓,進行了一些改進,誕生了Ethash演算法。
Ethash演算法吸取了比特幣的教訓,專門設計了非常不利用計算的模型,它採用了I/O密集的模型,I/O慢,計算再快也沒用。這樣,對專用集成電路則不是那麼有效。
該演算法對GPU友好。一是考慮如果只支持CPU,擔心易被木馬攻擊;二是現在的顯存都很大。
輕型客戶端的演算法不適於挖礦,易於驗證;快速啟動
演算法中,主要依賴於Keccake256 。
數據源除了傳統的Block頭部,還引入了隨機數陣列DAG(有向非循環圖)(Vitalik提出)
種子值很小。根據種子值生成緩存值,緩存層的初始值為16M,每個世代增加128K。
在緩存層之下是礦工使用的數據值,數據層的初始值是1G,每個世代增加8M。整個數據層的大小是128Bytes的素數倍。
框架主要分為兩個部分,一是DAG的生成,二是用Hashimoto來計算最終的結果。
DAG分為三個層次,種子層,緩存層,數據層。三個層次是逐漸增大的。
種子層很小,依賴上個世代的種子層。
緩存層的第一個數據是根據種子層生成的,後面的根據前面的一個來生成,它是一個串列化的過程。其初始大小是16M,每個世代增加128K。每個元素64位元組。
數據層就是要用到的數據,其初始大小1G,現在約2個G,每個元素128位元組。數據層的元素依賴緩存層的256個元素。
整個流程是內存密集型。
首先是頭部信息和隨機數結合在一起,做一個Keccak運算,獲得初始的單向散列值Mix[0],128位元組。然後,通過另外一個函數,映射到DAG上,獲取一個值,再與Mix[0]混合得到Mix[1],如此循環64次,得到Mix[64],128位元組。
接下來經過後處理過程,得到 mix final 值,32位元組。(這個值在前面兩個小節《 009:GHOST協議 》、《 010:搭建測試網路 》都出現過)
再經過計算,得出結果。把它和目標值相比較,小於則挖礦成功。
難度值大,目標值小,就越難(前面需要的 0 越多)。
這個過程也是挖礦難,驗證容易。
為防止礦機,mix function函數也有更新過。
難度公式見課件截圖。
根據上一個區塊的難度,來推算下一個。
從公式看出,難度由三部分組成,首先是上一區塊的難度,然後是線性部分,最後是非線性部分。
非線性部分也叫難度炸彈,在過了一個特定的時間節點後,難度是指數上升。如此設計,其背後的目的是,在以太坊的項目周期中,在大都會版本後的下一個版本中,要轉換共識,由POW變為POW、POS混合型的協議。基金會的意思可能是使得挖礦變得沒意思。
難度曲線圖顯示,2017年10月,難度有一個大的下降,獎勵也由5個變為3個。
本節主要介紹了Ethash演算法,不足之處,請批評指正。
⑤ 1. 樹莓派:eth橋接到wlan口,共享上網
背景: 樹莓派外接5G無線網卡,推流器連接raspberry 3B lan口,共享上網。
驗證: raspberry 3B連接手機的熱點,PC通過網線與raspberry的lan口相連,實現上網。
思路:
1. 首先給raspberry的eth設置一個靜態ip地址。
2. 修改IP轉發規則,允許ip數據的轉發。(ip_forward的設置)
3. 路由設置,配置iptables,進行兩個網卡的橋接。
4. 開啟raspberry的DHCP服務,在eth口上開啟。
5. 開啟DNS服務。
詳細過程:
1. 給樹莓派的eth分配靜態地址。
暫時分配:
sudo ifconfig eth0 192.168.173.1 255.255.255.0 up
永久分配:
寫在配置文件里。
配置文件 /etc/network/interfaces,請注意此處wlan0的地址參數要和etc/udhcpd.conf相關參數相對應。
sudo vi /etc/network/interfaces
#iface default inet dhcp
增加
auto eth0
iface eth0 inet static
address 192.168.173.1
netmask 255.255.255.0
注意:
2. 啟動IP轉發
有多種方法,建議使用sysctl的設置方式
方法1:sudo echo 1 > /proc/sys/net/ipv4/ip_forward
方法2:sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
方法3:sudo sysctl -w net.ipv4.ip_forward=1
有的時候需要在/etc/sysctl.conf下添加一行:net.ipv4.ip_forward=1
3. iptables設置
iptables -t nat -I POSTROUTING -o wlan0 -j MASQUERADE
4. dhcp服務
4.1 安裝udhcpd服務
sudo apt-get update
sudo apt-get install udhcpd
4.2 配置DHCP服務
sudo vi /etc/udhcpd.conf
1. 修改網路介面,設置成對應的網卡號
2. 設置remaining,去除前面的#符號
#remaining yes 改為 remain yes
3. 設置樹莓派的IP地址
修改opt router為192.168.173.1,那麼配置完成之後這個地址將作為網關,連接到raspberry eth口的設備網關需要設置為此IP.
此處opt dns被修改為公共的DNS地址 114.114.114.114和 114.114.114.115
4.3 使能DHCP
配置 /etc/default/udhcpd
sudo nano /etc/default/udhcpd
使用#符號注釋DHCPD_ENABLED="no"
DHCPD_ENABLED="no" 改為 #DHCPD_ENABLED="no"
4.4 啟動服務
1. 啟動udhcp的服務:sudo service udhcpd start
2. 設置開機啟動: sudo update-rc.d udhcpd enable
5. dns服務
在進行調試的時候發現無法查詢到raspberry使用的dns地址,按照常規方法查到的dns地址為127.0.1.1。在網上查了一下https://segmentfault.com/q/1010000002443769 感興趣的可以參考一下這篇文章。
這就導致我在測試的時候遇到一個問題,pc可以通過ip地址訪問,但是通過域名無法訪問。然後我就在網上查了一些共用的dns伺服器,設置後一切正常。關於這些共用的dns信息參考如下:
/********************************************************************************************************************************************************/
A、DNSPod DNS+:DNSPod的 Public DNS+是目前國內第一家支持ECS的公共DNS,是DNSPod推出的公共域名解析服務,可以為全網用戶提供域名的公共遞歸解析服務!
DNS 伺服器 IP 地址:
首選:119.29.29.29 備選:182.254.116.116
B、114DNS:國內用戶量巨大的DNS,訪問速度快,各省都有節點,同時滿足電信、聯通、移動各運營商用戶,可以有效預防劫持。
DNS 伺服器 IP 地址:
首選:114.114.114.114 備選:114.114.114.115
C、阿里 AliDNS:阿里公共DNS是阿里巴巴集團推出的DNS遞歸解析系統,目標是成為國內互聯網基礎設施的組成部分,面向互聯網用戶提供「快速」、「穩定」、「智能」的免費DNS遞歸解析服務。
DNS 伺服器 IP 地址:
首選:223.5.5.5 備選:223.6.6.6
/********************************************************************************************************************************************************/
⑥ 以太坊倫敦升級!歐科雲鏈鏈上大師上線EIP-1559專題數據把脈「生態波動」
8月5日,以太坊主網倫敦硬分叉升級,在區塊鏈高度12,965,000正式激活,以太坊EIP-1559提案隨之生效。
從2019年3月被提出,EIP-1559提案便引發以太坊社區內的巨大爭議——反對者認為這項提案「治標不治本」、「傷害不大,侮辱性極強」,支持者則表示提案將「優化用戶體驗」、「降低以太坊通脹率」。隨著倫敦硬分叉生效,EIP-1559提案正式寫進了以太坊網路的DNA。
對於生態用戶、礦工、DeFi、生態價值反哺,這項提案將會帶來哪些影響和波動?8月5日,歐科雲鏈鏈上大師正式上線EIP-1559專題數據。在這里,倫敦硬分叉前後帶來的風向變動,你都能最早知道!
什麼是EIP-1559提案?
2019年3月,以太坊創始人Vitalik Buterin和Ethhub創始人Eric Conner聯合提出了EIP-1559提案,希望改變以太坊的交易手續費機制,使費用市場更加穩定,緩解以太坊網路的擁堵問題。
EIP-1559提案提出,在今後的費用市場,每筆交易用戶需要支付固定基礎費,如需加快交易確認可向礦工支付小費,小費歸礦工所有,基礎費全部銷毀。 在鏈上大師EIP-1559專題頁面,我們對提案細節、影響等做了詳細分析。 在新的交易手續費機制下,以太坊生態迎來了一場「交易改革」。
EIP-1559專題有哪些數據?
基於以太坊全節點鏈上數據,歐科雲鏈鏈上大師推出了EIP-1559專題數據,涵蓋硬分叉倒計時、數據概覽、礦工收入、交易手續費、小費分布統計等數據,展示了EIP-1559提案生效前後的數據波動,為用戶判斷以太坊生態的發展態勢提供數據參考。
在EIP-1559專題頁面,首先看到的是以太坊生態的數據概覽。價格走勢、最新塊高、以太坊當前供應量、以太坊燃燒量等基礎數據都匯總在這里。
數據概覽下方,便是歐科雲鏈鏈上大師針對此次升級所做的一系列數據指標。
EIP1559提案對礦工有哪些影響?
新的交易手續費機制給礦工帶來了最直接的沖擊,因此在EIP-1559提案的反對聲音中,一股重要的群體就是礦工。
在礦工收入和交易手續費一欄,鏈上大師提供了1張折線圖和2張柱狀圖,直觀展示EIP-1599提案給礦工帶來的影響。
折線圖以EIP-1559提案生效時間為軸,展示了在這一大事件發生前後,礦工收入、交易手續費、ETH價格的變化趨勢,並且提供ETH和USDT兩種計價單位,直觀展示EIP-1559協議對這3項數據的影響。
柱狀圖則分別展示了礦工收入和交易手續費的柱狀圖,前者展現了原模式下礦工收入和EIP-1559生效後的區塊收入、手續費,後者則提供了原模式下總手續費和EIP-1559生效後的基礎費、小費數據。
依據這部分數據,礦工和生態用戶可以提前做出理性的判斷和市場行為。
ETH會出現通縮嗎?生態會不會變得更好?
關於EIP-1559提案,一部分人認為它能降低Gas費,並通過銷毀一定數量的ETH,一定程度上抵消新發行的ETH、進而帶來通縮效應。一部分人則認為從長遠來看並不能降低 Gas費,通縮也難以實現。
為了驗證這些判斷,鏈上大師提供了3張圖表,來展示ETH供應量和銷毀量數據。
「ETH供應量」以折線圖的形式,分別展示了預估供應量和實際流通量的區別與變化,可以驗證EIP-1559提案對於以太坊通脹帶來的影響。
「ETH銷毀量」則以折線圖+柱狀圖的形式,展示了ETH價格、gas利用率、basefee、交易數和ETH銷毀量的變化和相關關系。利用這項數據,可以分析ETH銷毀量與ETH價格、交易數等數據的相關性,客觀分析EIP-1559提案的意義。
除了基礎費之外,以後要給礦工打賞多少小費?
在EIP-1559提案生效後,小費成為ETH生態用戶最經常用到的一個數據。
在「小費統計」欄,鏈上大師提供了3張數據圖表,分別展示小費分布統計、小費交易數和具體數據表格呈現。
小費分布統計表以「折線圖+箱線圖」的形式,展示了最近1000個區塊的小費平均數和小費數據;小費交易數,則以「堆疊柱狀圖(交易數量)+折線圖(ETH價格)」的形式,展示最近1000個區塊內,小費交易數量和ETH價格的動態關系;而數據表格呈現表,則給出了EIP-1559生效後近N日的平均數據。
倫敦硬分叉後,會引發礦工抵制嗎?
EIP-1559提案生效後,支付給礦工的交易費用預計將會減少,這會不會導致礦工投降或反抗,進而影響以太坊生態的穩定性呢?
針對這點,鏈上大師推出了「鏈上數據」折線圖,將ETH價格、全網算力、區塊大小、單位算力收益等數據,並標注出倫敦硬分叉的時間軸,展示各個數據的關聯性和在硬分叉前後的變動。
通過觀察這張圖表,可以直觀得到此次硬分叉對以太坊生態的影響。
小結
隨著以太坊倫敦硬分叉正式上線,以太坊網路迎來了一場夏風。生長在以太坊上的礦工、用戶、DeFi協議等生態參與者,都將被吹動。
這場夏風是急是緩,是利是弊,是熱是涼?在我們切身感受到它的沖擊之前,歐科雲鏈鏈上大師推出「EIP-1559專題」,提前洞悉鏈上數據,充當這場夏風的「測風儀」,不僅為生態參與者帶來諸多便利,也進一步完善了以太坊生態的大數據基礎設施,開拓了區塊鏈大數據的發展空間和想像力。
本文源自金融界網
