導航:首頁 > 以太坊區 > 以太坊詳解

以太坊詳解

發布時間:2023-05-29 09:37:40

⑴ 5、以太坊名詞解析

詳解參見: 私鑰、公鑰、地址
以太坊的密鑰與比特幣作用相同[相當於你在工商、招商、建設等銀行設置的密碼]

以太坊將明文 密鑰 通過 [混入用戶自己設置的密碼] 加密演算法生成的一種JSON格式的字元串,並以文件格式存儲,以達到保存密鑰的作用。

一系列的由12、15、18、21等不同數量的單詞構成。
作用跟Keystore相同,就是給腦子不好使的同學們用的
'JSON是啥...' '這一長串的括弧加數字是什麼鬼...' '我輸入了密碼為什麼出來了這些東西... 你們的錢包APP是不是有問題啊 ...'

舉個花生:

大白話時間:

所有交易都包含以下組件:

⑵ ethtool原理介紹和解決網卡丟包排查思路

之前記錄過處理因為LVS網卡流量負載過高導致軟中斷發生丟包的問題, RPS和RFS網卡多隊列性能調優實踐 ,對一般人來說壓力不大的情況下其實碰見的概率並不高。這次想分享的話題是比較常見伺服器網卡丟包現象排查思路,如果你是想了解點對點的丟包解決思路涉及面可能就比較廣,不妨先參考之前的文章 如何使用MTR診斷網路問題 ,對於Linux常用的網卡丟包分析工具自然是ethtool。

2020年06月22日 - 初稿

閱讀原文 - https://wsgzao.github.io/post/ethtool/

ethtool - utility for controlling network drivers and hardware

ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:

Most features are dependent on support in the specific driver. See the manual page for full information.

ethtool 用於查看和修改網路設備(尤其是有線乙太網設備)的驅動參數和硬體設置。你可以根據需要更改乙太網卡的參數,包括自動協商、速度、雙工和區域網喚醒等參數。通過對乙太網卡的配置,你的計算機可以通過網路有效地進行通信。該工具提供了許多關於接駁到你的 Linux 系統的乙太網設備的信息。

接收數據包是一個復雜的過程,涉及很多底層的技術細節,但大致需要以下幾個步驟:

NIC 在接收到數據包之後,首先需要將數據同步到內核中,這中間的橋梁是 rx ring buffer 。它是由 NIC 和驅動程序共享的一片區域,事實上, rx ring buffer 存儲的並不是實際的 packet 數據,而是一個描述符,這個描述符指向了它真正的存儲地址,具體流程如下:

當驅動處理速度跟不上網卡收包速度時,驅動來不及分配緩沖區,NIC 接收到的數據包無法及時寫到 sk_buffer ,就會產生堆積,當 NIC 內部緩沖區寫滿後,就會丟棄部分數據,引起丟包。這部分丟包為 rx_fifo_errors ,在 /proc/net/dev 中體現為 fifo 欄位增長,在 ifconfig 中體現為 overruns 指標增長。

這個時候,數據包已經被轉移到了 sk_buffer 中。前文提到,這是驅動程序在內存中分配的一片緩沖區,並且是通過 DMA 寫入的,這種方式不依賴 CPU 直接將數據寫到了內存中,意味著對內核來說,其實並不知道已經有新數據到了內存中。那麼如何讓內核知道有新數據進來了呢?答案就是中斷,通過中斷告訴內核有新數據進來了,並需要進行後續處理。

提到中斷,就涉及到硬中斷和軟中斷,首先需要簡單了解一下它們的區別:

當 NIC 把數據包通過 DMA 復制到內核緩沖區 sk_buffer 後,NIC 立即發起一個硬體中斷。CPU 接收後,首先進入上半部分,網卡中斷對應的中斷處理程序是網卡驅動程序的一部分,之後由它發起軟中斷,進入下半部分,開始消費 sk_buffer 中的數據,交給內核協議棧處理。

通過中斷,能夠快速及時地響應網卡數據請求,但如果數據量大,那麼會產生大量中斷請求,CPU 大部分時間都忙於處理中斷,效率很低。為了解決這個問題,現在的內核及驅動都採用一種叫 NAPI(new API)的方式進行數據處理,其原理可以簡單理解為 中斷 + 輪詢,在數據量大時,一次中斷後通過輪詢接收一定數量包再返回,避免產生多次中斷。

(1) RX errors

表示總的收包的錯誤數量,這包括 too-long-frames 錯誤,Ring Buffer 溢出錯誤,crc 校驗錯誤,幀同步錯誤,fifo overruns 以及 missed pkg 等等。

(2) RX dropped

表示數據包已經進入了 Ring Buffer,但是由於內存不夠等系統原因,導致在拷貝到內存的過程中被丟棄。

(3) RX overruns

表示了 fifo 的 overruns,這是由於 Ring Buffer(aka Driver Queue) 傳輸的 IO 大於 kernel 能夠處理的 IO 導致的,而 Ring Buffer 則是指在發起 IRQ 請求之前的那塊 buffer。很明顯,overruns 的增大意味著數據包沒到 Ring Buffer 就被網卡物理層給丟棄了,而 CPU 無法即使的處理中斷是造成 Ring Buffer 滿的原因之一,上面那台有問題的機器就是因為 interruprs 分布的不均勻(都壓在 core0),沒有做 affinity 而造成的丟包。

(4) RX frame

表示 misaligned 的 frames。

網線上的packet首先被網卡獲取,網卡會檢查packet的CRC校驗,保證完整性,然後將packet頭去掉,得到frame。網卡會檢查MAC包內的目的MAC地址,如果和本網卡的MAC地址不一樣則丟棄(混雜模式除外)。

網卡將frame拷貝到網卡內部的FIFO緩沖區,觸發硬體中斷。(如有ring buffer的網卡,好像frame可以先存在ring buffer里再觸發軟體中斷(下篇文章將詳細解釋Linux中frame的走向),ring buffer是網卡和驅動程序共享,是設備里的內存,但是對操作系統是可見的,因為看到linux內核源碼里網卡驅動程序是使用kcalloc來分配的空間,所以ring buffer一般都有上限,另外這個ring buffer size,表示的應該是能存儲的frame的個數,而不是位元組大小。另外有些系統的 ethtool 命令 並不能改變ring parameters來設置ring buffer的大小,暫時不知道為什麼,可能是驅動不支持。)

網卡驅動程序通過硬中斷處理函數,構建sk_buff,把frame從網卡FIFO拷貝到內存skb中,接下來交給內核處理。(支持napi的網卡應該是直接放在ring buffer,不觸發硬中斷,直接使用軟中斷,拷貝ring buffer里的數據,直接輸送給上層處理,每個網卡在一次軟中斷處理過程能處理weight個frame)

過程中,網卡晶元對frame進行了MAC過濾,以減小系統負荷。(除了混雜模式)

網卡驅動程序將IP包添加14位元組的MAC頭,構成frame(暫無CRC)。Frame(暫無CRC)中含有發送端和接收端的MAC地址,由於是驅動程序創建MAC頭,所以可以隨便輸入地址,也可以進行主機偽裝。

驅動程序將frame(暫無CRC)拷貝到網卡晶元內部的緩沖區,由網卡處理。

網卡晶元將未完全完成的frame(缺CRC)再次封裝為可以發送的packet,也就是添加頭部同步信息和CRC校驗,然後丟到網線上,就完成一個IP報的發送了,所有接到網線上的網卡都可以看到該packet。

產生中斷的每個設備都有一個相應的中斷處理程序,是設備驅動程序的一部分。每個網卡都有一個中斷處理程序,用於通知網卡該中斷已經被接收了,以及把網卡緩沖區的數據包拷貝到內存中。

當網卡接收來自網路的數據包時,需要通知內核數據包到了。網卡立即發出中斷。內核通過執行網卡已注冊的中斷處理函數來做出應答。中斷處理程序開始執行,通知硬體,拷貝最新的網路數據包到內存,然後讀取網卡更多的數據包。

這些都是重要、緊迫而又與硬體相關的工作。內核通常需要快速的拷貝網路數據包到系統內存,因為網卡上接收網路數據包的緩存大小固定,而且相比系統內存也要小得多。所以上述拷貝動作一旦被延遲,必然造成網卡FIFO緩存溢出 - 進入的數據包占滿了網卡的緩存,後續的包只能被丟棄,這也應該就是ifconfig里的overrun的來源。

當網路數據包被拷貝到系統內存後,中斷的任務算是完成了,這時它把控制權交還給被系統中斷前運行的程序。

網卡的內核緩沖區,是在PC內存中,由內核控制,而網卡會有FIFO緩沖區,或者ring buffer,這應該將兩者區分開。FIFO比較小,裡面有數據便會盡量將數據存在內核緩沖中。

網卡中的緩沖區既不屬於內核空間,也不屬於用戶空間。它屬於硬體緩沖,允許網卡與操作系統之間有個緩沖;

內核緩沖區在內核空間,在內存中,用於內核程序,做為讀自或寫往硬體的數據緩沖區;

用戶緩沖區在用戶空間,在內存中,用於用戶程序,做為讀自或寫往硬體的數據緩沖區;

另外,為了加快數據的交互,可以將內核緩沖區映射到用戶空間,這樣,內核程序和用戶程序就可以同時訪問這一區間了。

對於有ring buffer的網卡,ring buffer是由驅動與網卡共享的,所以內核可以直接訪問ring buffer,一般拷貝frames的副本到自己的內核空間進行處理(deliver到上層協議,之後的一個個skb就是按skb的指針傳遞方式傳遞,直到用戶獲得數據,所以,對於ring buffer網卡,大量拷貝發生在frame從ring buffer傳遞到內核控制的計算機內存里)。

網卡工作在數據鏈路層,數據量鏈路層,會做一些校驗,封裝成幀。我們可以查看校驗是否出錯,確定傳輸是否存在問題。然後從軟體層面,是否因為緩沖區太小丟包。

一台機器經常收到丟包的報警,先看看最底層的有沒有問題:

(1) 查看工作模式是否正常

(2) 查看檢驗是否正常

Speed,Duplex,CRC 之類的都沒問題,基本可以排除物理層面的干擾。

Why rx_crc_errors incrementing in the receive counter of ethtool -S output?

Check ethtool -S output and find where are the drops and errors.

Check the numbers corresponding to rx_crc_errors .

顯示了p1p1 的介面類型,連接模式,速率等等信息,以及當前是否連接了網線(如果是網線Supported ports 就是TP,如果是光纖則顯示Fiber),這里例舉下3個重要關鍵詞

Supported ports: [ FIBRE ]
Speed: 10000Mb/s
Link detected: yes

ethtool

Counters Troubleshooting for Linux Driver

Why do I see rx_crc_errors in ethtool output?

ping請求錯誤分析

ifconfig 命令詳解

ethtool 命令詳解

ethtool 解決網卡丟包嚴重和網卡原理

⑶ 《以太坊技術詳解與實戰》pdf下載在線閱讀全文,求百度網盤雲資源

《以太坊技術詳解與實戰》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1HmyD7a7cRfM4ICqhAk3PeA

?pwd=vpub 提取碼:vpub
簡介:本書得到以太坊創始人、首席科學家Vitalik Buterin認可與推薦,是為數不多系統性介紹以太坊的書籍,涵蓋架構、核心概念、部署、智能合約實踐等,並涵蓋多個讀者關心的熱點主題。

⑷ 【ETH錢包開發03】web3j轉賬ETH

在之前的文章中,講解了創建、導出、導入錢包。
【ETH錢包開發01】創建、導出錢包
【ETH錢包開發02】導入錢包

本文主要講解以太坊轉賬相關的一些知識。交易分為ETH轉賬和ERC-20 Token轉賬,本篇先講一下ETH轉賬。

1、解鎖賬戶發起交易。錢包keyStore文件保存在geth節點上,用戶發起交易需要解鎖賬戶,適用於中心化的交易所。

2、錢包文件離線簽名發起交易。錢包keyStore文件保存在本地,用戶使用密碼+keystore的方式做離線交易簽名來發起交易,適用於dapp,比如錢包。

本文主要講一下第二種方式,也就是錢包離線簽名轉賬的方式。

交易流程
1、通過keystore載入轉賬所需的憑證Credentials
2、創建一筆交易RawTransaction
3、使用Credentials對象對交易簽名
4、發起交易

注意以下幾點:

1、Credentials
這里,我是通過獲取私鑰的方式來載入 Credentials

還有另外一種方式,通過密碼+錢包文件keystore方式來載入 Credentials

2、nonce

nonce是指發起交易的賬戶下的交易筆數,每一個賬戶nonce都是從0開始,當nonce為0的交易處理完之後,才會處理nonce為1的交易,並依次加1的交易才會被處理。

可以通過 eth_gettransactioncount 獲取nonce

3、gasPrice和gasLimit
交易手續費由gasPrice 和gasLimit來決定,實際花費的交易手續費是 gasUsed * gasPrice 。所有這兩個值你可以自定義,也可以使用系統參數獲取當前兩個值

關於 gas ,你可以參考我之前的一篇文章。
以太坊(ETH)GAS詳解

gasPrice和gasLimit影響的是轉賬的速度,如果gas過低,礦工會最後才打包你的交易。在app中,通常給定一個默認值,並且允許用戶自己選擇手續費。

如果不需要自定義的話,還有一種方式來獲取。獲取以太坊網路最新一筆交易的 gasPrice ,轉賬的話, gasLimit 一般設置為21000就可以了。

Web3j還提供另外一種簡單的方式來轉賬以太幣,這種方式的好處是不需要管理nonce,不需要設置gasPrice和gasLimit,會自動獲取最新一筆交易的gasPrice,gasLimit 為21000(轉賬一般設置成這個值就夠用了)。

這個問題,我想是很多朋友所關心的吧。但是到目前為止,我還沒有看到有講解這方面的博客。

之前問過一些朋友,他們說可以通過區塊號、區塊哈希來判斷,也可以通過Receipt日誌來判斷。但是經過我的一番嘗試,只有 BlockHash 是可行的,在web3j中根據 blocknumber 和 transactionReceipt 都會報空指針異常。

原因大致是這樣的:在發起一筆交易之後,會返回 txHash ,然後我們可以根據這個 txHash 去查詢這筆交易相關的信息。但是剛發起交易的時候,由於手續費問題或者乙太網絡擁堵問題,會導致你的這筆交易還沒有被礦工打包進區塊,因此一開始是查不到的,通常需要幾十秒甚至更長的時間才能獲取到結果。我目前的解決方案是輪詢的去刷 BlockHash ,一開始的時候 BlockHash 的值為0x00000000000,等到打包成功的時候就不再是0了。

這里我使用的是rxjava的方式去輪詢刷的,5s刷新一次。

正常情況下,幾十秒內就可以獲取到區塊信息了。

區塊確認數=當前區塊高度-交易被打包時的區塊高度。

⑸ 《以太坊技術詳解與實戰》pdf下載在線閱讀,求百度網盤雲資源

《以太坊技術詳解與實戰》(閆鶯)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1g6YtL-Ws5Ukd6KksLQ_S0g 密碼:os8v

書名:以太坊技術詳解與實戰

作者:閆鶯

豆瓣評分:7.7

出版社:機械工業出版社

出版年份:2018-4-3

頁數:226

內容簡介:

以太坊創始人、首席科學家Vitalik Buterin傾力推薦,工業界與學術界區塊鏈專家聯合撰寫,權威性和實用性毋庸置疑。本書深入剖析以太坊架構、核心部件、智能合約編寫與開發案例等關鍵技術,並涵蓋以太坊數據分析、性能優化、隱私與數據安全等前沿實踐與進展。

第1章 介紹區塊鏈背景、基本原理與應用,以對區塊鏈有整體性了解。

第2章 詳解以太坊架構與組成,涵蓋以太坊架構、核心概念與技術、客戶端與域名服務等,是後續學習的基礎。

第3章 帶領讀者部署不同網路類型以太坊區塊鏈,含有多種技巧與腳本樣例。

第4章 剖析智能合約與以太坊虛擬機的原理,這兩者是以太坊的魅力所在,了解後可以更好地開發智能合約。

第5~6章 手把手教學,給出具體編寫、編譯、部署智能合約的方法和案例,密集鍛煉讀者智能合約編程與實踐能力。

第7章 剖析以太坊上數字資產定義的原理和方法,包括CryptoKitties養貓游戲基於的ERC 721合約標准,到此讀者可以編寫以太坊應用了。

第8章 會進一步對如何查看、分析以太坊公有鏈數據的工具和方法進行介紹。

第9~10章 是前沿技術的探討,涵蓋以太坊性能優化和隱私保護技術。這些技術都在比較初級的階段,讀者可以一邊閱讀一邊思考,提出自己的想法和建議。

作者簡介:

閆鶯 (博士),微軟亞洲研究院主管研究員,區塊鏈領域負責人,微軟Coco區塊鏈平台中國負責人。中國軟體協會區塊鏈創業學院及區塊鏈專委會專家、中國電子學會區塊鏈專家委員。專注與區塊鏈技術、大數據分析、資料庫以及雲計算的研究。在區塊鏈領域獲得多項國際專利,並在資料庫和雲計算 領域國際頂級會議和期刊發表論文30餘篇。參與翻譯《區塊鏈項目開發指南》。

鄭凱 (博士),電子科技大學教授,博士生導師,澳大利亞昆士蘭大學計算機科學博士。主要研究領域為區塊鏈數據管理,以及時空數據挖掘、不確定資料庫、內存資料庫、圖資料庫等。在資料庫、數據挖掘等領域的重要會議和期刊發表論文100餘篇,被累積引用1500餘次。2013年獲澳大利亞優秀青年基金,2015年獲資料庫頂級會議ICDE最佳論文獎。擔任資料庫領域知名國際會議的程序主席和聯合執行主席,國際SCI期刊客座編委,以及數十個國際等級會議的程序委員。

郭眾鑫 微軟亞洲研究院研發工程師,微軟Coco區塊鏈平台核心開發者。專注於區塊鏈技術、大數據分析、分布式系統等方面的研究和開發。

⑹ 如何快速辨別網卡ID與物理網卡的對應關系(即eth

如何快速辨別網卡ID與物理網卡的對應關系
一般購買的伺服器都有4個網卡,這個時候在安裝好伺服器後,配置IP的時候就郁悶了
如是一個浪潮8560M2伺服器安裝Redhat後的網卡顯示:
[root@DBSERVER51 ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:58
inet addr:192.168.4.10 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40428 errors:0 dropped:0 overruns:0 frame:0
TX packets:392 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3413500 (3.2 MiB) TX bytes:44521 (43.4 KiB)
Memory:faee0000-faf00000

eth1 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:59
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fae60000-fae80000

eth2 Link encap:Ethernet HWaddr 00:25:90:5A:15:B6
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fafe0000-fb000000

eth3 Link encap:Ethernet HWaddr 00:25:90:5A:15:B7
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:faf60000-faf80000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:660 (660.0 b) TX bytes:660 (660.0 b)
從一個機房搬下來時,忘記標記了。這個時候還是想修改eth0作為通信口。但是一個一個插拔比較麻煩,於是就想能不能有個好辦法,畢竟Linux不像Windows那樣直觀,打開網路連接就可以看到。這個時候就要用到ethtool這樣一個命令,命令詳解如下:
命令描述:
ethtool 是用於查詢及設置網卡參數的命令。
ethX是乙太網卡的名稱,Linux系統將檢測到的第一塊乙太網卡命名為eth0, 第二塊為eth1,…….。
使用概要:
ethtool ethx //查詢ethx網口基本設置,其中 x 是對應網卡的編號,如eth0、eth1等等
ethtool –h //顯示ethtool的命令幫助(help)
ethtool –i ethX //查詢ethX網口的相關信息
ethtool –d ethX //查詢ethX網口注冊性信息
ethtool –r ethX //重置ethX網口到自適應模式
ethtool –S ethX //查詢ethX網口收發包統計
ethtool –s ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] //設置網口速率10/100/1000M、設置網口半/全雙工、設置網口是否自協商
ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX
ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N][pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-lowN] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
ethtool [-G] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]
ethtool [-e] ethX [raw on|off] [offset N] [length N]
ethtool [-E] ethX [magic N] [offset N] [value N]
ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]
ethtool [-p] ethX [N]
ethtool [-t] ethX [offline|online]
ethtool [-s] ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
[wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
標志
-a 查看網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啟動on 或 停用off
-A 修改網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啟動on 或 停用off
-c display the Coalesce information of the specified ethernet card
-C Change the Coalesce setting of the specified ethernet card
-g Display the rx/tx ring parameter information of the specified ethernet card
-G change the rx/tx ring setting of the specified ethernet card
-i 顯示網卡驅動的信息,如驅動的名稱、版本等
-d 顯示register mp信息, 部分網卡驅動不支持該選項
-e 顯示EEPROM mp信息,部分網卡驅動不支持該選項
-E 修改網卡EEPROM byte
-k 顯示網卡Offload參數的狀態:on 或 off,包括rx-checksumming、tx-checksumming等。
-K 修改網卡Offload參數的狀態
-p 用於區別不同ethX對應網卡的物理位置,常用的方法是使網卡port上的led不斷的閃;N指示了網卡閃的持續時間,以秒為單位。
-r 如果auto-negotiation模塊的狀態為on,則restarts auto-negotiation
-S 顯示NIC- and driver-specific 的統計參數,如網卡接收/發送的位元組數、接收/發送的廣播包個數等。
-t 讓網卡執行自我檢測,有兩種模式:offline or online
-s 修改網卡的部分配置,包括網卡速度、單工/全雙工模式、mac地址等

⑺ 以太幣的發行

以太幣

天天在說的以太幣,到底是怎麼產生和發行的,這里做個簡單介紹。

首先以太坊幣是以太坊發行的一種數字貨幣,這個我想大多數人都清楚。

以太幣來源

那麼以太幣的來源包括以下幾部分:

礦前獎勵:預付款給與貢獻者6000萬個以太幣

區塊的獎勵:目前挖出一個區塊獎勵5個以太幣給礦工。

叔塊獎勵:這個和比特幣不同,礦工在挖出一個區塊後,但是並不是在主鏈上,那麼這個區塊叫做叔區。如果這個叔區塊在後續挖礦中作為叔區塊被引用了,那麼挖出這個區塊的礦工獲得7/8的區塊獎勵,也就是4.375個以太幣,且另外引用這個區塊的礦工獲得0.15個以太幣,注意,這里的引用最多兩個。

比特幣的總量是2100萬個,那麼以太幣也不是無限生成的,每年以太幣發行1800萬。之前筆者文章中有提到過,這個數字貨幣因為密鑰的丟失,所以每年的發行和意外的丟失會達到一個動態的平衡。並不是你看官方數據有多少就真正有多少在流通,這個應該能理解。

以太坊在不久將來會採用casper的機制,這個和目前的GHOST機制不一樣。具體的機制還待看。

礦工角度來看

從礦工的角度來看待以太幣,那麼就分為三塊:

挖礦的獎勵,這個還是5個以太幣。(固定收益)

交易的手續費,之前就有人一直在問萬一哪天比特幣2100萬挖完之後,挖礦如何獲得收益,那麼交易費就是其中的一項收益,以太坊上交易都會帶上交易費用,那麼這個也就是礦工的一部分所得。(動態收益)

叔區塊收益,上文就提到過的,這個區塊如果有叔區塊,那麼從叔區塊中獲得1/32個以太幣也就是0.15個以太幣的收益。且每個區塊至多引用兩個叔區塊,被引用過的區塊不能再被引用。(動態收益)

以太幣的單位:

基本單位為wei,下表具體是各個比例:

單位維度個數 (wei)

wei1 wei1000

Kwei1e3 wei1000000

Mwei1e6 wei1000000000

Gwei1e9 wei1000000000000

microether1e12 wei10000000000000000

milliether1e15 wei10000000000000000000

ether1e18 wei10000000000000000000000

叔區塊獎勵

回過頭感覺有必要再說下叔區塊的獎勵: 

叔區塊顧名思義是區塊的父區塊的兄弟區塊。那麼區塊鏈只有一條主鏈,故叔區塊不在主鏈上,導致叔區塊的原因,由於是網路的延遲沒有同步,那麼一個叔區塊如果引用在有效的主鏈上,挖出叔區塊的礦工獲得4.375個以太幣(區塊獎勵的7/8)。上文說到叔區塊的引用獲得獎勵,那麼這個獎勵對挖到叔區塊的礦工也是有一個間隔層數的關系。具體如下:

間隔的層數獲取的比例以太幣

17/84.375

26/83.75

35/83.125

44/82.5

53/81.875

62/81.25

參考:《以太坊技術詳解與實戰》

⑻ 【以太坊易錯概念】nonce, 公私鑰和地址,BASE64/BASE58,

以太坊里的nonce有兩種意思,一個是proof of work nonce,一個是account nonce。

在智能合約里,nonce的值代表的是該合約創建的合約數量。只有當一個合約創建另一個合約的時候才會增加nonce的值。但是當一個合約調用另一個合約中的method時 nonce的值是不變的。
在以太坊中nonce的值可以這樣來獲取(其實也就是屬於一個賬戶的交易數量):

但是這個方法只能獲取交易once的值。目前是沒有內置方法來訪問contract中的nonce值的

通過橢圓曲線演算法生成鑰匙對(公鑰和私鑰),以太坊採用的是secp256k1曲線,
公鑰採用uncompressed模式,生成的私鑰為長度32位元組的16進制字串,公鑰為長度64的公鑰字串。公鑰04開頭。
把公鑰去掉04,剩下的進行keccak-256的哈希,得到長度64位元組的16進制字串,丟掉前面24個,拿後40個,再加上"0x",即為以太坊地址。

整個過程可以歸納為:

2)有些網關或系統只能使用ASCII字元。Base64就是用來將非ASCII字元的數據轉換成ASCII字元的一種方法,而且base64特別適合在http,mime協議下快速傳輸數據。Base64使用【字母azAZ數字09和+/】這64個字元編碼。原理是將3個位元組轉換成4個位元組(3 X 8) = 24 = (4 X 6)
當剩下的字元數量不足3個位元組時,則應使用0進行填充,相應的,輸出字元則使用'='佔位,因此編碼後輸出的文本末尾可能會出現1至2個'='。

1)Base58是用於Bitcoin中使用的一種獨特的編碼方式,主要用於產生Bitcoin的錢包地址。相比Base64,Base58不使用數字"0",字母大寫"O",字母大寫"I",和字母小寫"l",以及"+"和"/"符號。

Base58Check是一種常用在比特幣中的Base58編碼格式,增加了錯誤校驗碼來檢查數據在轉錄中出現的錯誤。 校驗碼長4個位元組,添加到需要編碼的數據之後。校驗碼是從需要編碼的數據的哈希值中得到的,所以可以用來檢測並避免轉錄和輸入中產生的錯誤。使用 Base58check編碼格式時,編碼軟體會計算原始數據的校驗碼並和結果數據中自帶的校驗碼進行對比。二者不匹配則表明有錯誤產生,那麼這個 Base58Check格式的數據就是無效的。例如,一個錯誤比特幣地址就不會被錢包認為是有效的地址,否則這種錯誤會造成資金的丟失。

為了使用Base58Check編碼格式對數據(數字)進行編碼,首先我們要對數據添加一個稱作「版本位元組」的前綴,這個前綴用來明確需要編碼的數 據的類型。例如,比特幣地址的前綴是0(十六進制是0x00),而對私鑰編碼時前綴是128(十六進制是0x80)。 表4-1會列出一些常見版本的前綴。

接下來,我們計算「雙哈希」校驗碼,意味著要對之前的結果(前綴和數據)運行兩次SHA256哈希演算法:

checksum = SHA256(SHA256(prefix+data))
在產生的長32個位元組的哈希值(兩次哈希運算)中,我們只取前4個位元組。這4個位元組就作為校驗碼。校驗碼會添加到數據之後。

結果由三部分組成:前綴、數據和校驗碼。這個結果採用之前描述的Base58字母表編碼。下圖描述了Base58Check編碼的過程。

相同:

1) 哈希演算法、Merkle樹、公鑰密碼演算法
https://blog.csdn.net/s_lisheng/article/details/77937202?from=singlemessage

2)全新的 SHA-3 加密標准 —— Keccak
https://blog.csdn.net/renq_654321/article/details/79797428

3)在線加密演算法
http://tools.jb51.net/password/hash_md5_sha

4)比特幣地址生成演算法詳解
https://www.cnblogs.com/zhaoweiwei/p/address.html

5)Base58Check編碼實現示例
https://blog.csdn.net/QQ604666459/article/details/82419527

6) 比特幣交易中的簽名與驗證
https://www.jianshu.com/p/a21b7d72532f

⑼ Tendermint詳解

摘要

您熟知並喜愛的區塊鏈有一個相當嚴格的結構。作為一名開發人員,在這種情況下您有兩種選擇:在受限的環境中構建應用程序,或者進行代碼分叉並創建自己的鏈。然而,創建自己的鏈並非易事——您還需要啟動網路並決定所使用的共識機制。

Tendermint是用來啟動區塊鏈的開源軟體,讓您可以用任何語言編寫應用程序。更厲害的是,它可以與其他區塊鏈進行通信。


創建加密貨幣或區塊鏈網路需要投入大量工作,遠遠不止於初始化資料庫。它需要在安全性、去中心化和可擴展性之間為激勵和權衡取得微妙的平衡。

有些團隊已經 探索 了一系列不同的方法,來構建最強大的區塊鏈生態系統,這也在情理之中了。在這篇文章中,我們將詳細了解其中一種方法:Tendermint。


如果您對區塊鏈有所了解,就會感覺Tendermint的大部分內容都似曾相識。在深入研究之前,我們首先回顧一些關鍵概念。


Tendermint是一種 區塊鏈堆棧 。比特幣和以太坊等同樣也是區塊鏈堆棧。請記住,這並非只關乎區塊鏈資料庫本身,還關乎節點的對等網路、它們如何相互作用,以及您通過交易和智能合約可以做到的事情。其目標是在即便不信任其他任何人的情況下,讓所有人都統一一種 狀態 (比如資料庫的快照)。

在很大程度上,如今的主要區塊鏈已經想出了達成這一點的「秘籍」。然而,它們通常依賴於 一體化架構 :這是一個軟體工程概念,意味著組件相互連接且相互依賴。您不能從中取走一部分,然後插入到別的架構中。

如果您想保證靈活性,一體化架構並非理想的選擇。在相反類型的模型(具有 模塊化架構 )中,您可以在不必擔心破壞任何架構的情況下調整單個組件。對於一體化架構,您在升級單個組件時必須確保每個組件保持兼容。

現在,我們理解了其中的差別,可以繼續來了解Tendermint協議。


您可能已經知道,比特幣最大的創新之處在於它解決了所謂的 拜占庭將軍問題 。在這里我們不會詳細討論這個問題(如果您感興趣,請參閱我們關於拜占庭容錯的文章)。您只需要知道,它詳細說明了參與者必須在分布式環境中進行通信的場景。

這些參與者不知道其他人是否在撒謊,也不知道他們之間發送的消息是否被篡改。即便存在這些問題,如果參與者可以針對一組事實達成一致,則系統會被認為存在 拜占庭容錯 。

顯然,在去中心化的環境中,正確把握這一點至關重要。不具有拜占庭容錯的加密貨幣並不能真正發揮作用——您需要某種中心化組織進行協調,這就與目的背道而馳。如果很多數字貨幣一樣,比特幣通過使用工作量證明(PoW)共識演算法來解決這個問題。


我們已經了解一體化/模塊化架構之間的區別,也知道去中心化加密貨幣網路需要具有拜占庭容錯能力。接下來我們談談我們通常在區塊鏈中看到的三層架構: 應用 層、 共識 層和 網路 層。

共識層和網路層是讓網路節點相互通信並盡量就一組事實達成一致的地方。應用層則可讓您自行進行操作——好比以太坊的去中心化應用程序和智能合約或者比特幣中的自定義交易。

然而,Tendermint是公司的名稱(由最初撰寫白皮書的開發人員Jae Kwon創立),而Tendermint Core是這家公司正在開發的實際軟體。更具體地說,這款軟體有兩個主要組件:核心共識引擎(Tendermint core)和應用程序介面(ABCI)。

Tendermint Core是一個能夠實現容錯的系統。本質上,它是一台大型分布式計算機,可在同一時間向每個人顯示相同的狀態。只要至少三分之二的參與者是誠實的,一切就會順利進行。但幾乎每個區塊鏈都是這樣的,難道不是嗎?它究竟有什麼特別之處?

首先,Tendermint Core使用的共識機制是權益證明(PoS)。每個周期從一組驗證者中選擇一個隨機節點。隨後,該節點必須提出下一個區塊(在所謂的 循環 系統上進行)。如果其他驗證者對它滿意,就會添加新的區塊,並更新鏈。結果可以即時確定——與比特幣或以太坊不同,它不需要等待確認來確保您的交易有效。

別著急,它還有其他特色!Tendermint Core採用模塊化架構,應用層與共識層和網路層分離。簡而言之,這意味著您可以將自己的應用程序層插入到堆棧中,而無需擔心繁雜的激勵機制或共識演算法。

這對終端用戶來說並不值得大驚小怪。但對於開發人員來說,能夠利用現有框架就意味著他們可以直接構建應用程序,而無需建立整個網路。來自區塊鏈的數據可以通過管道傳輸到集成層,讓開發人員可以用任何語言編寫軟體。

神奇的事情發生在所謂的應用程序區塊鏈界面(或簡稱ABCI)上。您可以把它想像成樹莓派電腦上的GPIO引腳。您可將各種第三方組件連接到這些引腳,從LED到精心設計的植物灑水系統。ABCI以類似的方式定義了區塊鏈以及在區塊鏈上運行的應用程序之間的邊界。


應用程序介面和共識機制的分離為分布式應用程序提供了更大的靈活性,可以將任何編程語言合並到它們的業務邏輯當中。

您只需要看看Ethermint這個具體示例就可以知道它的用處:Ethermint採用了以太坊代碼庫,刪除了工作量證明機制,並將以太坊虛擬機建立在Tendermint之上。

這使得一些有趣的操作成為可能。首先,以太坊開發人員可輕松將他們的智能合約移植到新引擎上,或者使用Solidity語言編寫新的合約。除了提供以太坊功能之外,Ethermint還可作為以太坊權益證明,讓我們一睹Casper在以太坊2.0中實現的樣子。


「區塊鏈互聯網」的承諾吸引了許多人使用Tendermint協議。互操作性是加密貨幣領域期待已久的一個補充,因為它意味著數百個單獨的區塊鏈將變得交叉兼容。

目前,Cosmos SDK已投入大量工作,Cosmos SDK是一個開源框架,讓任何人都能創建特定於應用程序的公共或私有區塊鏈。隨後,這些區塊鏈可以通過所謂的Cosmos Hub接入更廣泛的Cosmos網路,並在那裡與其他區塊鏈進行交流。

很多熱門的項目已經使用Cosmos SDK來構建,比如BSC、KAVA、Band Protocol、Terra和IRISnet。

作為一個區塊鏈引擎,Tendermint已經引起了加密貨幣領域眾多利益相關者的注意,包括開發人員和終端用戶。

⑽ 12個NFT重點熱詞詳解

12個NFT重點熱詞解析

NFT定義:即非同質化代幣,NFT是映射笑褲特定資產的非同質化通證,本質上是基於以太坊的智能合約。

特點:

標記特定資產的所有權

真實性與唯一性

錨定非同質化資產價值

FT定義:即同質化代幣。

特點:

能夠替換

統一性

可接近無窮拆分

區塊鏈定義:是一種由多方共同維護,使用密碼學保證傳輸和訪問安全,能夠實現數據一致存儲、防篡改、防抵賴的技術體系。

特點:

去中心化

開放性、安全性

獨立性、匿名性

智能合約定義:指以信息化方式傳播、驗證或執行合同的計算機協議。

特點:

沒有第三方可以進行可信交易

交易可追蹤且不可逆轉

目的:

提供優於傳統合約的安全方法

減少合約相關交易成本

哈希演算法:哈希演算法可以將一個數據轉換為一個標志,這個標志和判升祥源數據的每一個位元組都有十分緊密的關系。

ETH:即以太幣,被視為比特幣2.0版,採用與比特幣不同的區塊鏈技術以太坊。

元宇宙:元宇宙是一套吸納了信息革命、互聯網革命、人工智慧革命,以及 VR、AR、MR,特別是游戲引警在內的虛擬現實技術革命的成果,向人掘搏類展現出構建與傳統物理世界平行的全息數字世界的全新理念與體系。

DeFi:即去中心化金融,是指在可編程的公有區塊鏈網路上搭建的,以加密貨幣價值錯定、借貸、互換等類金融活動為功能目標,由一系列智能合約和應用程序,共同構成的區塊鏈應用項目。

DApp:即分布式應用或去中心化,應用指底層區塊鏈平台衍生的各種分布式應用程序,一般是開源和去中心化。

Flow鏈

定義:是一個快速,去中心化且對開,發人員友好的區塊鏈。

目的:為下一代應用程序、游戲以及數字資產提供動力。

Gas費:Gas是用於測量在以太坊區塊鏈上執行特定操作所需工作量的單位,Gas費是以太坊首創的一個概念。說白了就是過路費,發起一筆交易,執行一段程序,就需要掏錢。

IPFS

定義:IPFS是一個分布式的web,點到點超媒體協議。

目的:打造一個更加開放、快速、安全的互聯網。

閱讀全文

與以太坊詳解相關的資料

熱點內容
國內可以交易的虛擬貨幣 瀏覽:868
銀河系虛擬貨幣 瀏覽:856
cpu算力測算 瀏覽:844
貓咪不停的舔比特幣行情 瀏覽:463
btc怎麼儲存 瀏覽:871
勒索病毒就是要你給比特幣 瀏覽:757
比特幣量化最准APP 瀏覽:193
映泰tb250btc8卡設置 瀏覽:238
什麼叫算力平方姓名啊 瀏覽:519
算力蜂送的算力能挖多少 瀏覽:102
經歷比特幣牛熊 瀏覽:513
哪款伺服器適合挖比特幣 瀏覽:668
比特幣需要內存嗎 瀏覽:925
贏家比特幣交易網 瀏覽:901
比特幣病毒提示信息 瀏覽:172
比特幣漲萬倍 瀏覽:979
比特幣交易網手機充值卡 瀏覽:590
類似BTC的片 瀏覽:927
比特幣與以太坊哪個好 瀏覽:114
東方財富如何搜索比特幣 瀏覽:958