導航:首頁 > 以太坊區 > 以太坊gethpeer一般多少個

以太坊gethpeer一般多少個

發布時間:2023-07-09 17:58:02

① Geth 控制台使用及 Web3.js 使用

以太坊的DAPP開發中,需要 頁面開發 智能合約 開發,頁面開發需要 H5 智能合約 開發用 Solidity 實現。頁面和以太坊智能合約交互,就需要使用 Web3.js

Geth 控制台(REPL)實現了所有的 web3 API 及 Admin API ,如果你對Geth命令行不太熟悉,請參考之前的文章。
以太坊客戶端Geth常用命令詳解

重定向日誌到文件

使用geth console啟動時,會在當前的交互界面下時不時出現日誌。
可以使用以下方式把日誌輸出到文件。

可以新開一個命令行終端輸入以下命令查看日誌:

重定向另一個終端

也可以把日誌重定向到另一個終端,先在想要看日誌的終端輸入:

就可以獲取到終端編號,如:/dev/test
然後另一個終端使用:

啟動geth, 這是日誌就輸出到另一個終端。
如果不想看到日誌還可以重定向到空終端:

日誌級別控制

使用–verbosity可以控制日誌級別,如不想看到日誌還可以使用:

另外一個啟動geth的方法是連接到一個geth節點:

② 走進以太坊網路

目錄


術語「以太坊節點」是指以某種方式與以太坊網路交互的程序。從簡單的手機錢包應用程序到存儲整個區塊鏈副本的計算機,任何設備均可扮演以太坊節點。

所有節點都以某種方式充當通信點,但以太坊網路中的節點分為多種類型。


比特幣不同,以太坊找不到任何程序作為參考實施方案。在比特幣生態系統中, 比特幣核心 是主要節點軟體,以太坊黃皮書則提出了一系列獨立(但兼容)的程序。目前最流行的是Geth和Parity。


若要以允許獨立驗證區塊鏈數據的方式連接以太坊網路,則應使用之前提到的軟體運行全節點。

該軟體將從其他節點下載區塊,並驗證其所含交易的正確性。軟體還將運行調用的所有智能合約,確保接收的信息與其他節點相同。如果一切按計劃運行,我們可以認為所有節點設備均存儲相同的區塊鏈副本。

全節點對於以太坊的運行至關重要。如果沒有遍布全球的眾多節點,網路將喪失其抗審查性與去中心化特性。


通過運行全節點,您可以直接為網路的 健康 和安全發展貢獻一份力量。然而,全節點通常需要使用獨立的機器完成運行和維護。對於無法(或單純不願)運行全節點的用戶,輕節點是更好的選擇。

顧名思義,輕節點均為輕量級設備,可顯著降低資源和空間佔用率。手機或筆記本電腦等攜帶型設備均可作為輕節點。然而,降低開銷也要付出代價:輕節點無法完全實現自給自足。它們無法與整條區塊鏈同步,需要全節點提供相關信息。

輕節點備受商戶、服務供應商和用戶的青睞。在不必使用全節點並且運行成本過高的情況下,它們廣泛應用於支收付款。

挖礦節點既可以是全節點客戶端,也可以是輕節點客戶端。「挖礦節點」這個術語的使用方式與比特幣生態系統不同,但依然應用於識別參與者。

如需參與以太坊挖礦,必須使用一些附加硬體。最常見的做法是構建 礦機 。用戶通過礦機將多個GPU(圖形處理器)連接起來,高速計算哈希數據。

礦工可以選擇兩種挖礦方案:單獨挖礦或加入礦池。 單獨挖礦 表示礦工獨自創建區塊。如果成功,則獨享挖礦獎勵。如果加入 礦池 ,眾多礦工的哈希算力會結合起來。出塊速度得以提升,但挖礦獎勵將由眾多礦工共享。


區塊鏈最重要的特性之一就是「開放訪問」。這表明任何人均可運行以太坊節點,並通過驗證交易和區塊強化網路。

與比特幣相似,許多企業都提供即插即用的以太坊節點。如果只想啟動並運行單一節點,這種設備無疑是最佳選擇,缺點是必須為便捷性額外付費。

如前文所述,以太坊中存在眾多不同類型的節點軟體實施方案,例如Geth和Parity。若要運行個人節點,必須掌握所選實施方案的安裝流程。

除非運行名為 歸檔節點 的特殊節點,否則消費級筆記本電腦足以支持以太坊全節點正常運行。不過,最好不要使用日常工作設備,因為節點會嚴重拖慢運行速度。

運行個人節點時,建議設備始終在線。倘若節點離線,再次聯網時可能耗費大量的時間進行同步。因此,最好選擇造價低廉並且易於維護的設備。您甚至可以通過Raspberry Pi運行輕節點。


隨著網路即將過渡到權益證明機制,以太坊挖礦不再是最安全的長期投資方式。過渡成功後,以太坊礦工只能將挖礦設備轉入其他網路或直接變賣。

鑒於過渡尚未完成,參與以太坊挖礦仍需使用特殊硬體(例如GPU或ASIC)。若要獲得可觀收益,則必須定製礦機並尋找電價低廉的礦場。此外,還需創建以太坊錢包並配置相應的挖礦軟體。這一切都會耗費大量的時間和資金。在參與挖礦前,請認真考量自己能否應對各種挑戰。(國內嚴禁挖礦,切勿以身試法)


ProgPow代表 程序化工作量證明 。這是以太坊挖礦演算法Ethash的擴展方案,旨在提升GPU的競爭力,使其超過ASIC。

在比特幣和以太坊社區,抗ASIC多年來一直是飽受爭議的話題。在比特幣網路中,ASIC已經成為主要的挖礦力量。

在以太坊中,ASIC並不是主流,相當一部分礦工仍然使用GPU。然而,隨著越來越多的公司將以太坊ASIC礦機引入市場,這種情況很快就會改變。然而,ASIC到底存在什麼問題呢?

一方面,ASIC明顯削弱網路的去中心化。如果GPU礦工無法盈利,不得不停止挖礦,哈希率最終就會集中在少數礦工手中。此外,ASIC晶元的開發成本相當昂貴,坐擁開發能力與資源的公司屈指可數。這種現狀有可能導致以太坊挖礦產業集中在少數公司手中,形成一定程度的行業壟斷。

自2018年以來,ProgPow的集成一直飽受爭議。有些人認為,它有益於以太坊生態系統的 健康 發展。另一些人則持反對態度,認為它可能導致硬分叉。隨著權益證明機制的到來,ProgPoW能否應用於網路仍然有待觀察。


以太坊與比特幣是一樣,均為開源平台。所有人都可以參與協議開發,或基於協議構建應用程序。事實上,以太坊也是區塊鏈領域目前最大的開發者社區。

Andreas Antonopoulos和Gavin Wood出品的 Mastering Ethereum ,以及Ethereum.org推出的 開發者資源 等都是新晉開發者理想的入門之選。


智能合約的概念於20世紀90年代首次提出。其在區塊鏈中的應用帶來了一系列全新挑戰。2014年由Gavin Wood提出的Solidity已經成為開發以太坊智能合約的主要編程語言,其語法與Java、JavaScript以及C++類似。

從本質上講,使用Solidity語言,開發者可以編寫在分解後可由以太坊虛擬機(EVM)解析的指令。您可以通過Solidity GitHub詳細了解其工作原理。

其實,Solidity語言並非以太坊開發者的唯一選擇。Vyper也是一種熱門的開發語言,其語法更接近Python。

③ 以太坊(ETH)的Berlin硬叉什麼時間開始

以太坊(Ethereum)挖礦

Berlin硬叉將標志著大都市時代的終結。 這是以太坊歷史上的關鍵階段,分兩個階段執行(拜占庭和君士坦丁堡),包括幾個分支,包括亞特蘭蒂斯,伊斯坦布爾,最後在Berlin達到頂峰。

④ 以太坊基金會:ETH將在未來幾個月轉向PoS 能源消耗至少減少99.95%

長話短說:以太坊在合並完成後的能源消耗至少能減少99.95%。

以太坊將在接下里的幾個月完成向權益證明(PoS)共識機制的過渡,這帶來了無數種已被理論化的改進。但既然信標鏈( Beacon chain)已經運行了幾個月的時間,我們實際上就可以深入研究具體的數字了。我們很高興 探索 的一個領域涉及新的能源使用估算,因為我們將結束在共識上花費一個國家所耗能源價值的過程。

截至目前,還沒有任何關於能源消耗(甚至使用什麼硬體)的具體統計數據,因此下面是對以太坊未來能源消耗的粗略估算。

由於很多人都在運行多個驗證器,因此我決定使用可存款的獨立地址的數量,來作為今天有多少台伺服器的代理數。很多質押者可以使用多個 ETH 1.0地址,但這在很大程度上抵消了那些冗餘設置。

在撰寫本文時,有來自16405個獨立地址的140592個驗證器。顯然,這是由於交易所和staking質押服務造成的偏差,因此移除它們會導致有87,897個驗證器被假定是在家裡質押的。作為一個健全的檢查,這意味著平均每個家庭質押者運行了5.4個驗證器,這對我來說似乎是一個合理的估計值。

能源要求

運行一個信標節點(BN)、5.4個驗證器客戶端(VC)以及一個以太坊1.0全節點需要多少能量?以我的個人設置為基礎,大約是15瓦。Joe Clapis(Rocket Pool開發者)最近運行了10個驗證器客戶端(VC),1個Nimbus信標節點(BN)以及1個10Ah USB電池組的Geth全節點,然後運行了10個小時,這意味著這個設置平均為5瓦。而一般的投資人不太可能運行這樣的優化設置,所以我們取100 瓦作為參考數。

將其與之前的87000個驗證器相乘,就意味著家庭質押者的消耗電量約為1.64兆瓦。估計託管質押者所消耗的能源會更多一些,他們運行了成千上萬個具有冗餘和備份的驗證器客戶端。

為了簡化計算,我們還假設他們每5.5個驗證器使用100瓦。基於我所接觸過的基礎設施團隊,這是一個粗略的高估值。真正的答案要少50倍左右(如果你是一個質押託管團隊,並且每個驗證器消耗電量超過5瓦,我相信我可以為你提供幫助)。

因此,總的來說,採用權益證明(PoS)的以太坊網路會消耗大約2.62兆瓦的電量。這不是一個國家的用電規模,也不是省甚至城市的用電規模,而大約是一個小鎮(約2100個美國家庭)的用電規模。

作為參考,當前工作量證明(PoW)以太坊網路所消耗的能量相當於一個中等國家的能源,但這實際上是保持PoW鏈安全所必需的。顧名思義,PoW達成共識的基礎是哪個分叉在這方面做的「工作」最多。有兩種方法可以提高「工作」完成率,一是提高挖掘硬體的效率,二是同時使用更多的硬體。為了防止區塊鏈被成功攻擊,礦工必須比攻擊者更快的速度「工作」。由於攻擊者很可能擁有類似的硬體,礦工必須保持大量高效的硬體運行,以防攻擊者挖出它們,所有這些硬體都會消耗大量的能量。

在PoW共識機制下, ETH 價格與算力正相關。因此,隨著價格的上漲,在均衡狀態下,網路消耗的電力也會隨之增加。而在PoS共識機制下,當 ETH 價格上漲時,網路的安全性也會提高( ETH 的價值更高),但對能源的需求保持不變。

一些比較

據數字經濟學者估計 ,以太坊礦工目前每年要消耗44.49太瓦時的電量,這意味著,根據上述保守估計,PoS的能效提高了約2000倍,這反映了總能源使用量至少減少了99.95%。

如果每筆交易的能耗高於你的速度,則約為35Wh/tx(平均約60K gas/tx)或TV約20分鍾的耗電量。相比之下,以太坊PoW每筆交易使用相當於一棟房子2.8天的能量,比特幣的每筆交易則消耗相當於一棟房子38天的能量。

展望未來

盡管以太坊目前仍在使用PoW共識機制,但這種情況不會持續太久。在過去的幾周里,我們看到了第一批用於合並的測試網的出現(註:The Merge合並是以太坊從PoW切換到PoS時的名稱)。幾個工程師團隊正在加班加點地工作,以確保合並盡快到來,同時又不影響安全性。

擴容解決方案(例如rollup和分片)將通過利用規模化經濟來幫助進一步減少每次交易消耗的能量。

以太坊網路超級耗電的日子屈指可數了,我希望這個行業的其他部分也是如此。

⑤ 以太坊多節點私有鏈部署

假設兩台電腦A和B
要求:
1、兩台電腦要在一個網路中,能ping通
2、兩個節點使用相同的創世區塊文件
3、禁用ipc;同時使用參數--nodiscover
4、networkid要相同,埠號可以不同

1.4 搭建私有鏈
1.4.1 創建目錄和genesis.json文件
創建私有鏈根目錄./testnet
創建數據存儲目錄./testnet/data0
創建創世區塊配置文件./testnet/genesis.json

1.4.2 初始化操作
cd ./eth_test
geth --datadir data0 init genesis.json

1.4.3 啟動私有節點

1.4.4 創建賬號
personal.newAccount()
1.4.5 查看賬號
eth.accounts
1.4.6 查看賬號余額
eth.getBalance(eth.accounts[0])
1.4.7 啟動&停止挖礦
啟動挖礦:
miner.start(1)
其中 start 的參數表示挖礦使用的線程數。第一次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢,等進度達到 100% 後,就會開始挖礦,此時屏幕會被挖礦信息刷屏。
停止挖礦,在 console 中輸入:
miner.stop()
挖到一個區塊會獎勵5個以太幣,挖礦所得的獎勵會進入礦工的賬戶,這個賬戶叫做 coinbase,默認情況下 coinbase 是本地賬戶中的第一個賬戶,可以通過 miner.setEtherbase() 將其他賬戶設置成 coinbase。

1.4.8 轉賬
目前,賬戶 0 已經挖到了 3 個塊的獎勵,賬戶 1 的余額還是0:

我們要從賬戶 0 向賬戶 1 轉賬,所以要先解鎖賬戶 0,才能發起交易:

發送交易,賬戶 0 -> 賬戶 1:

需要輸入密碼 123456

此時如果沒有挖礦,用 txpool.status 命令可以看到本地交易池中有一個待確認的交易,可以使用 eth.getBlock("pending", true).transactions 查看當前待確認交易。

使用 miner.start() 命令開始挖礦:
miner.start(1);admin.sleepBlocks(1);miner.stop();

新區塊挖出後,挖礦結束,查看賬戶 1 的余額,已經收到了賬戶 0 的以太幣:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')

用同樣的genesis.json初始化操作
cd ./eth_test
geth --datadir data1 init genesis.json

啟動私有節點一,修改 rpcport 和port

可以通過 admin.addPeer() 方法連接到其他節點,兩個節點要要指定相同的 chainID。

假設有兩個節點:節點一和節點二,chainID 都是 1024,通過下面的步驟就可以從節點二連接到節點一。

首先要知道節點一的 enode 信息,在節點一的 JavaScript console 中執行下面的命令查看 enode 信息:

admin.nodeInfo.enode
" enode://@[::]:30303 "

然後在節點二的 JavaScript console 中執行 admin.addPeer(),就可以連接到節點一:

addPeer() 的參數就是節點一的 enode 信息,注意要把 enode 中的 [::] 替換成節點一的 IP 地址。連接成功後,節點一就會開始同步節點二的區塊,同步完成後,任意一個節點開始挖礦,另一個節點會自動同步區塊,向任意一個節點發送交易,另一個節點也會收到該筆交易。

通過 admin.peers 可以查看連接到的其他節點信息,通過 net.peerCount 可以查看已連接到的節點數量。

除了上面的方法,也可以在啟動節點的時候指定 --bootnodes 選項連接到其他節點。 bootnode 是一個輕量級的引導節點,方便聯盟鏈的搭建 下一節講 通過 bootnode 自動找到節點

參考: https://cloud.tencent.com/developer/article/1332424

⑥ CentOS 6.5上搭建以太坊私有鏈,編譯時報錯: make: *** [geth] Error 1,請各位大神指教

build/env.sh go run build/ci.go install ./cmd/geth
make: *** [geth] Error 1
沒有這個目錄,或者這個目錄許可權不夠

⑦ 搭建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 記錄了一些本人搭建使用的命令

⑧ 以太坊架構是怎麼樣的

以太坊最上層的是DApp。它通過Web3.js和智能合約層進行交換。所有的智能合約都運行在EVM(以太坊虛擬機)上,並會用到RPC的調用。在EVM和RPC下面是以太坊的四大核心內容,包括:blockChain, 共識演算法,挖礦以及網路層。除了DApp外,其他的所有部分都在以太坊的客戶端里,目前最流行的以太坊客戶端就是Geth(Go-Ethereum)

⑨ 以太坊中的計量單位及相互轉換

首先我們來看一下以太幣單位之間的轉換,以太幣的最小單位為wei,1個eth相當於10的18次方wei。通常,大家也使用Gwei作為展示單位。比較常用的就是eth,Gwei和wei。

為了使用和驗證web3的操作命令,我們先進入geth的console控制台,在這里對具體的單位或進制轉換進行詳細的實例演示。

此轉換方法為web3.toDecimal(hexString)。直接在控制台輸入一下命令進行使用此函數進行轉換。

通過此函數將十六進制的0x16轉換為十進制的22。

轉換函數:web3.fromDecimal(number)。

控制台命令及結果如下:

把給定數字或十六進制字元串轉為 BigNumber 類型的實例。

此處轉換需要注意的是BigNumber只會保留小數點後20位,超過20位的部分將會被截取掉。

上面表格中列出了以太幣之間的單位進制,同樣可以使用web3進行相應的轉換,基本函數為web3.fromWei和web3.toWei(number, unit)。

具體實例如下:

其他的相關轉換大家可自行嘗試,下面列出相應的轉換種類:

通過上面的函數,在交易的過程中我們就可以隨意的單位進行發送交易,而不必使用最小單位wei。

通過查詢余額的方法,我們也可以看出區塊鏈中存儲這些數據的單位為wei。

代幣中的單位
在編寫ERC-20的代幣合約時我們可以指定代幣的單位,比如:

這里就指定了代幣單位精確到小數點後幾位。比如精確到小數點後3位,那麼1個代幣存儲時就是1000個最小單位的值。

⑩ 以太坊區塊鏈之Bug --2020/05/19

為了防止交易重播,ETH(ETC)節點要求每筆交易必須有一個nonce數值。每一個賬戶從同一個節點發起交易時,這個nonce值從0開始計數,發送一筆nonce對應加1。當前面的nonce處理完成之後才會處理後面的nonce。注意這里的前提條件是相同的地址在相同的節點發送交易。

以下是nonce使用的幾條規則:

● 當nonce太小(小於之前已經有交易使用的nonce值),交易會被直接拒絕。

● 當nonce太大,交易會一直處於隊列之中,這也就是導致我們上面描述的問題的原因;

● 當發送一個比較大的nonce值,然後補齊開始nonce到那個值之間的nonce,那麼交易依舊可以被執行。

● 當交易處於queue中時停止geth客戶端,那麼交易queue中的交易會被清除掉。

         第一個欄位 AccountNonce ,直譯就是賬戶隨機數。它是以太坊中很小但也很重要的一個細節。以太坊為每個賬戶和交易都創建了一個Nonce,當從賬戶發起交易的時候,當前賬戶的Nonce值就被作為交易的Nonce。這里,如果是普通賬戶那麼Nonce就是它發出的交易數,如果是合約賬戶就是從它的創建合約數。

為什麼要使用這個Nonce呢?其主要目的就是為了防止重復攻擊(Replay Attack)。因為交易都是需要簽名的,假定沒有Nonce,那麼只要交易數據和發起人是確定的,簽名就一定是相同的,這樣攻擊者就能在收到一個交易數據後,重新生成一個完全相同的交易並再次提交,比如A給B發了個交易,因為交易是有簽名的,B雖然不能改動這個交易數據,但只要反復提交一模一樣的交易數據,就能把A賬戶的所有資金都轉到B手裡。

當使用賬戶Nonce之後,每次發起一個交易,A賬戶的Nonce值就會增加,當B重新提交時,因為Nonce對不上了,交易就會被拒絕。這樣就可以防止重復攻擊。當然,事情還沒有完,因為還能跨鏈實施攻擊,直到EIP-155引入了chainID,才實現了不同鏈之間的交易數據不兼容。事實上,Nonce並不能真正防止重復攻擊,比如A向B買東西,發起交易T1給B,緊接著又提交另一個交易T2,T2的Gas價格更高、優先順序更高將被優先處理,如果恰好T2處理完成後剩餘資金已經不足以支付T1,那麼T1就會被拒絕。這時如果B已經把東西給了A,那A也就攻擊成功了。所以說,就算交易被處理了也還要再等待一定時間,確保生成足夠深度的區塊,才能保證交易的不可逆。

Price 指的是單位Gas的價格,所謂Gas就是交易的消耗,Price就是單位Gas要消耗多少以太幣(Ether),Gas * Price就是處理交易需要消耗多少以太幣,它就相當於比特幣中的交易手續費。

GasLimit 限定了本次交易允許消耗資源的最高上限,換句話說,以太坊中的交易不可能無限制地消耗資源,這也是以太坊的安全策略之一,防止攻擊者惡意佔用資源。

Recipient 是交易接收者,它是common.Address指針類型,代表一個地址。這個值也可以是空的,這時在交易執行時,會通過智能合約創建一個地址來完成交易。

Amount 是交易額。這個簡單,不用解釋。

Payload 比較重要,它是一個位元組數組,可以用來作為創建合約的指令數組,這時每個位元組都是一個單獨的指令;也可以作為數據數組,由合約指令來進行操作。合約由以太坊虛擬機(Ethereum Virtual Machine,EVM)創建並執行。

V、R、S 是交易的簽名數據。以太坊當中,交易經過數字簽名之後,生成的signature是一個長度65的位元組數組,它被截成三段,前32位元組被放進R,再32位元組放進S,最後1個位元組放進V。那麼為什麼要被截成3段呢?以太坊用的是ECDSA演算法,R和S就是ECSDA簽名輸出,V則是Recovery ID。

R,S,V是交易簽名後的值,它們可以被用來生成簽名者的公鑰;R,S是ECDSA橢圓加密演算法的輸出值,V是用於恢復結果的ID

閱讀全文

與以太坊gethpeer一般多少個相關的資料

熱點內容
比特魔方怎麼購幣 瀏覽:390
數字貨幣會侵犯個人隱私嗎 瀏覽:672
2016中國區塊鏈十強 瀏覽:990
組織發行虛擬貨幣 瀏覽:178
礦池首頁 瀏覽:993
鼓勵區塊鏈創新 瀏覽:605
虛擬貨幣掛單怎麼老是成交不了 瀏覽:116
區塊鏈應用的音樂平台 瀏覽:952
柱軸力設計值n怎麼算 瀏覽:296
男朋友力氣大算男友力嗎 瀏覽:326
諾華世界區塊鏈 瀏覽:697
中國最專業比特幣交易 瀏覽:512
數字貨幣適合長期投資嗎 瀏覽:821
勒索病毒背後的比特幣暗網疑雲 瀏覽:984
比特幣套取電費 瀏覽:720
北郵區塊鏈實驗室馬 瀏覽:923
銀行虛擬貨幣交易排查報告 瀏覽:705
數字貨幣與經濟法 瀏覽:789
網路上炒虛擬貨幣 瀏覽:106
數字貨幣而何賺錢 瀏覽:836