A. 浠涔堟槸浠ュお銆佷互澶緗戙佷互澶鍧
鎻寮浠ュお銆佷互澶緗戝拰浠ュお鍧婄殑紲炵橀潰綰
浠ュお錛屼竴涓婧愯嚜鍙ゅ笇鑵婂摬瀛︾殑璇嶆眹錛屽師鎸囦竴縐嶆棤褰㈡棤璐ㄣ佸厖婊″畤瀹欑殑紲炵樹粙璐ㄣ傛棭鍦ㄥ叕鍏冨墠3涓栫邯錛屼簹閲屽+澶氬痙浠ヤ簲鍏冪礌鐞嗚鴻祴浜堝畠鐙鐗圭殑鍦頒綅錛岀劧鑰岋紝闅忕潃縐戝︾殑榪涙ワ紝浠ュお鐨勭炵樿壊褰╅愭笎琚縐戝︾悊鎬у彇浠c傜瑳鍗″皵寮曞叆浠ュお姒傚康鏃訛紝灝嗗叾瑙嗕負浼犻掑姏鐨勫獟浠嬶紝灝界″紩鍔涘鉤鏂瑰弽姣旀柟紼嬬殑鑳滃埄鍓婂急浜嗗叾瀛樺湪蹇呰佹э紝浣嗗湪19涓栫邯錛屽厜娉㈢悊璁虹殑鍏磋搗鍙堝皢鍏舵帹涓婅垶鍙般傜劧鑰岋紝楹﹀厠鏂闊︾殑鐢電佺悊璁鴻瘉鏄庡厜鏃犻渶浠ュお濯掍粙錛屼互澶鐞嗚烘渶緇堝湪縐戝﹁瘉瀹炵殑璇佹嵁闈㈠墠榛鐒墮鍦恆
浠ュお緗戜笌IEEE 802.3鐨勯潻鏂扮瘒絝
灝界$戝︾晫鐨勪互澶鐞嗚哄凡緇忔貳鍑鴻嗙嚎錛屼絾鍦ㄧ幇瀹炵敓媧諱腑錛屸滀互澶鈥濊繖涓璇嶅嵈鍦ㄧ壒瀹氶嗗煙鐒曞彂鏂扮敓錛岄偅灝辨槸浠ュお緗戙備綔涓鴻$畻鏈虹綉緇滅殑鍩虹錛屼互澶緗戦伒寰狪EEE 802.3鏍囧噯錛屽彇浠d簡鍏朵粬鎶鏈錛屾垚涓哄綋浠婃渶鏅閬嶇殑灞鍩熺綉鎶鏈銆傚矓鍩熺綉鍜屽箍鍩熺綉鐨勫尯鍒嗭紝濡傚悓灝忓尯鍩熶笌澶ц寖鍥寸殑瀵規瘮錛屽矓鍩熺綉鍒欎富瑕佷緷璧栦簬浼犺緭浠嬭川錛屽傚悓杞寸數緙嗐佸弻緇炵嚎鍜屽厜綰ゃ傚悓杞寸數緙嗘浘鐢ㄤ簬妯℃嫙鍜屾暟瀛椾俊鍙蜂紶杈擄紝鍙岀粸綰誇互浠鋒牸浼樺娍鍦ㄧ幇浠g綉緇滀腑鍗犳嵁涓甯涔嬪湴錛岃屽厜綰ゅ垯浠ラ珮閫熷拰浣庢崯鑰楁垚涓烘柊寤哄皬鍖虹殑棣栭夈
浠ュお緗戠殑浼犺緭鍗忚瓹SMA/CD錛屽傚悓鈥滃厛鍚鍚庤達紝杈硅磋竟鍚鈥濈殑絳栫暐錛岀『淇濅簡鏁版嵁鐨勬湁搴忎紶杈撱傝屼互澶緗戠殑鍩烘湰鎷撴墤緇撴瀯錛岃櫧鐒剁畝鍗曚笖鏄撲簬鎵╁睍錛屼絾涔熷瓨鍦ㄤ紶杈撹窛紱繪湁闄愬拰鍐茬獊闂棰樸傞氳繃闆嗙嚎鍣ㄦ垨浜ゆ崲鏈猴紝緗戠粶鍙浠ユ墿灞曞埌鏇村嶆潅鐨勬槦鍨嬫垨鎵╁睍鏄熷瀷緇撴瀯銆
浜掕仈緗戜笌涓囩淮緗戠殑榪炴帴涓庡樊寮
浜掕仈緗戱紝涓涓鍏ㄧ悆浜掕仈鐨勭綉緇滐紝涓庝互澶緗戜笉鍚岋紝瀹冩槸涓鏇村箍娉涚殑姒傚康銆傝屼竾緇寸綉錛屼竴涓鐢辮秴鏂囨湰閾炬帴鏋勬垚鐨勫氬獟浣撶綉緇滐紝瀹冨熀浜庝簰鑱旂綉錛屼絾鍙堢嫭絝嬩簬鎶鏈灞傞潰錛屾槸淇℃伅鍜屾湇鍔$殑瀹濆簱銆備互澶緗戞槸搴曞眰鐨勯氫俊鎶鏈錛屼簰鑱旂綉鍒欐槸鍏跺簲鐢ㄥ眰闈錛岃屼竾緇寸綉鍒欐槸鍦ㄤ簰鑱旂綉涓婃瀯寤虹殑涓板瘜鍐呭圭殑涓栫晫銆
浠ュお鍧婄殑鍒涙柊涓庡尯鍧楅摼闈╁懡
浠ュお鍧婏紝榪欎釜鍚嶅瓧涓庝互澶緗戝拰浠ュお瀹屽叏涓嶅悓錛屽畠鏄鐜頒唬鍖哄潡閾炬妧鏈鐨勪唬琛錛屾彁渚涗簡涓涓鍙緙栫▼鐨勫鉤鍙幫紝鍏佽稿紑鍙戞櫤鑳藉悎綰﹀拰浠e竵鍙戣屻備互澶鍧婇氳繃鍥劇伒瀹屽囩殑鑴氭湰璇璦錛岄檷浣庝簡鍖哄潡閾懼簲鐢ㄧ殑寮鍙戦棬妲涳紝璁╃敤鎴瘋兘澶熸瀯寤哄嚭鍚勭嶅壋鏂板簲鐢錛岃繖鏄鍦═CP/IP浜斿眰妯″瀷鐨勫簲鐢ㄥ眰涓瀹炵幇鐨勫垎甯冨紡鏁版嵁搴撶郴緇燂紝涓庝互澶緗戠殑鐗╃悊灞傚拰鏁版嵁閾捐礬灞傚伐浣滃師鐞嗘埅鐒朵笉鍚屻
浠ュお鍧婄殑鍑虹幇錛屼笉浠呴潻鏂頒簡閲戣瀺浜ゆ槗鐨勬ā寮忥紝榪樻帹鍔ㄤ簡鏁板瓧緇忔祹鐨勫彂灞曪紝灞曠幇浜嗘妧鏈濡備綍紿佺牬浼犵粺鐨勭晫闄愶紝鍒涢犲嚭鍏ㄦ柊鐨勫彲鑳芥с
B. ViaBTC微比特科普丨礦工小白必須要了解的以太坊知識
以太坊作為僅次於比特幣的第二大加密貨幣,其受歡迎程度在幣圈名列前茅,網路關鍵詞搜索量甚至一度超過比特幣。隨著礦工紛紛轉戰以太坊,了解其知識成為礦工必修課。那麼,以太坊是什麼?挖礦原理又是如何呢?接下來,讓我們一探究竟。
以太坊的創始人Vitalik Buterin,以其天才般的才能在編程領域嶄露頭角,從四歲開始編程,到七歲繪制數學圖表,再到十二歲開發游戲,展現了非凡的天賦。19歲時,他提出在比特幣區塊鏈上開發應用的構想,從而催生了以太坊的誕生。V神的創新引領了以太坊在加密貨幣界的穩固地位。
以太坊定義為一個開放的區塊鏈平台,允許用戶創建並使用基於區塊鏈技術的去中心化應用程序。與比特幣的定位不同,以太坊更像是一個平台,供開發者構建應用,而比特幣則更像是價值存儲的黃金。
在以太坊網路中,挖礦是獲取以太幣的主要途徑。當前採用的共識機制為PoW(Proof of Work),通過計算難題來獲得獎勵。以太坊挖礦速度更快,大約每12-15秒產出一個區塊,且演算法自動調整難度以保持產出速度穩定。爆塊獎勵為2個ETH,發行量不受限制。此外,手續費收益和叔塊獎勵也是礦工的收入來源。叔塊獎勵是其獨特之處,若同一區塊高度下有多個區塊產生,其中最長鏈上的區塊將成為主鏈,其他被後續引用的區塊即為叔塊,可獲得獎勵。
以太坊通過特定的工作量證明演算法ethash弱化了比特幣系統中的中心化趨勢,避免ASIC硬體帶來的問題,增強了網路的去中心化。隨著PoS(Proof of Stake)共識機制的推進,以太坊2.0預計不久將上線。這將減少資源消耗,提高共識效率,為礦工帶來機遇與挑戰。
對於以太坊的更多行業科普內容,歡迎搜索「ViaBTC微比特」,獲取最新資訊。
C. 一文了解以太坊礦機及挖礦原理
在以前的文章中,我們分別了解了比特幣挖礦和以太坊挖礦的區別。本文重點介紹以太坊挖礦及礦機部分。
以太坊是一個開源的有智能合約功能的公共區塊鏈平台,通過其專用加密貨幣ETH提供去中心化的以太虛擬機來處理點對點合約。目前ETH的挖礦主要是通過顯卡礦機,所謂顯卡礦機,其實就是類似家用台式機,只不過每台機器裡面有6-10張顯卡,並且沒有顯示器(如圖)。
圖:顯卡礦機
之所以以太坊沒有發展出類似於BTC一樣的ASIC礦機,主要是由於ETH的特殊挖礦機制決定的。
在ETH挖礦過程中,會產生一個DAG文件,該文件需要一直被調用,因此必須有專門的存儲空間放置。這個對於存儲空間的硬性需求會導致即使生產出來了ASIC晶元,也並不能大幅度降低單位算力的成本。簡單來說,就是性價比很差。
以太坊的DAG大小自2016年6月份引入Dagger-Hashimoto 演算法時的1GB開始,以每年約520MB的速度增大到了現在的 3.7G,預計2020年底以太坊的DAG大小將增加至4G。屆時,顯存小於4G的顯卡都將被陸續淘汰。
還需要介紹一點的是,由於顯卡礦機的體積通常是比特幣礦機的2-4倍,而消耗的電力卻只有比特幣礦機的1/2甚至更低,這就導致一般人不願意修建專門的顯卡礦機礦場(因為礦場主要賺取的是電費差價,同樣面積的場地,可以放置的顯卡數量少,消耗的電量更少)。即使有少量的顯卡礦場,收取的電費成本通常也比比特幣礦機礦場的高。
D. 如何簡單理解以太坊的pos(casper)機制
Casper是用保證金的下注機制來驗證以太坊網路中的交易。驗證人需對共識結果進行下注,猜測下一個區塊會由誰生成,並以此作為保證金的一部分。如果驗證人正確預測了區塊生成者,則將獲得交易費用和新發行的貨幣作為獎勵。反之,若預測錯誤,則只能回收部分保證金。這樣,隨著驗證人下注的持續,共識結果會逐漸趨向穩定。
為了避免驗證人的投機行為,Casper設定了一條規則,即如果驗證人在短時間內多次改變下注對象,將面臨嚴厲懲罰。這一機制確保了只有在確信其他驗證人也會對同一區塊下注時,驗證人才會下注,從而避免了下注結果的反復波動。
與Casper類似,工作量證明(POW)共識機制也基於下注原理。礦工通過計算能力選擇一個區塊進行挖礦,即對區塊勝出進行下注。如果成功,礦工會獲得區塊獎勵,反之則損失電費。在POW中,下注的經濟價值隨著確認次數線性增長。而在Casper中,驗證人通過協調下注比例實現指數增長,加快了共識達到最大安全性的速度。
在Casper中,驗證人對每個區塊高度上的候選塊獨立下注,並為每個塊分配一個勝出概率,公布給網路。通過反復的下注過程,驗證人會最終選出唯一的勝出塊,從而確定交易的執行順序。若驗證人公布的概率總和超過100%,或出現負概率,或對無效塊賦予正概率,都將受到保證金罰沒的懲罰。
E. 【深度知識】以太坊數據序列化RLP編碼/解碼原理
RLP(Recursive Length Prefix),中文翻譯過來叫遞歸長度前綴編碼,它是以太坊序列化所採用的編碼方式。RLP主要用於以太坊中數據的網路傳輸和持久化存儲。
對象序列化方法有很多種,常見的像JSON編碼,但是JSON有個明顯的缺點:編碼結果比較大。例如有如下的結構:
變數s序列化的結果是{"name":"icattlecoder","sex":"male"},字元串長度35,實際有效數據是icattlecoder 和male,共計16個位元組,我們可以看到JSON的序列化時引入了太多的冗餘信息。假設以太坊採用JSON來序列化,那麼本來50GB的區塊鏈可能現在就要100GB,當然實際沒這么簡單。
所以,以太坊需要設計一種結果更小的編碼方法。
RLP編碼的定義只處理兩類數據:一類是字元串(例如位元組數組),一類是列表。字元串指的是一串二進制數據,列表是一個嵌套遞歸的結構,裡面可以包含字元串和列表,例如["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"]就是一個復雜的列表。其他類型的數據需要轉成以上的兩類,轉換的規則不是RLP編碼定義的,可以根據自己的規則轉換,例如struct可以轉成列表,int可以轉成二進制(屬於字元串一類),以太坊中整數都以大端形式存儲。
從RLP編碼的名字可以看出它的特點:一個是遞歸,被編碼的數據是遞歸的結構,編碼演算法也是遞歸進行處理的;二是長度前綴,也就是RLP編碼都帶有一個前綴,這個前綴是跟被編碼數據的長度相關的,從下面的編碼規則中可以看出這一點。
對於值在[0, 127]之間的單個位元組,其編碼是其本身。
例1:a的編碼是97。
如果byte數組長度l <= 55,編碼的結果是數組本身,再加上128+l作為前綴。
例2:空字元串編碼是128,即128 = 128 + 0。
例3:abc編碼結果是131 97 98 99,其中131=128+len("abc"),97 98 99依次是a b c。
如果數組長度大於55, 編碼結果第一個是183加數組長度的編碼的長度,然後是數組長度的本身的編碼,最後是byte數組的編碼。
請把上面的規則多讀幾篇,特別是數組長度的編碼的長度。
例4:編碼下面這段字元串:
The length of this sentence is more than 55 bytes, I know it because I pre-designed it
這段字元串共86個位元組,而86的編碼只需要一個位元組,那就是它自己,因此,編碼的結果如下:
184 86 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
其中前三個位元組的計算方式如下:
184 = 183 + 1,因為數組長度86編碼後僅佔用一個位元組。
86即數組長度86
84是T的編碼
例5:編碼一個重復1024次"a"的字元串,其結果為:185 4 0 97 97 97 97 97 97 ...。
1024按 big endian編碼為004 0,省略掉前面的零,長度為2,因此185 = 183 + 2。
規則1~3定義了byte數組的編碼方案,下面介紹列表的編碼規則。在此之前,我們先定義列表長度是指子列表編碼後的長度之和。
如果列表長度小於55,編碼結果第一位是192加列表長度的編碼的長度,然後依次連接各子列表的編碼。
注意規則4本身是遞歸定義的。
例6:["abc", "def"]的編碼結果是200 131 97 98 99 131 100 101 102。
其中abc的編碼為131 97 98 99,def的編碼為131 100 101 102。兩個子字元串的編碼後總長度是8,因此編碼結果第一位計算得出:192 + 8 = 200。
如果列表長度超過55,編碼結果第一位是247加列表長度的編碼長度,然後是列表長度本身的編碼,最後依次連接各子列表的編碼。
規則5本身也是遞歸定義的,和規則3相似。
例7:
["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]
的編碼結果是:
248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
其中前兩個位元組的計算方式如下:
248 = 247 +1
88 = 86 + 2,在規則3的示例中,長度為86,而在此例中,由於有兩個子字元串,每個子字元串本身的長度的編碼各佔1位元組,因此總共佔2位元組。
第3個位元組179依據規則2得出179 = 128 + 51
第55個位元組163同樣依據規則2得出163 = 128 + 35
例8:最後我們再來看個稍復雜點的例子以加深理解遞歸長度前綴,
["abc",["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]]
編碼結果是:
248 94 131 97 98 99 248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
列表第一項字元串abc根據規則2,編碼結果為131 97 98 99,長度為4。
列表第二項也是一個列表項:
["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]
根據規則5,結果為
248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
長度為90,因此,整個列表的編碼結果第二位是90 + 4 = 94, 佔用1個位元組,第一位247 + 1 = 248
以上5條就是RPL的全部編碼規則。
各語言在具體實現RLP編碼時,首先需要將對像映射成byte數組或列表兩種形式。以go語言編碼struct為例,會將其映射為列表,例如Student這個對象處理成列表["icattlecoder","male"]
如果編碼map類型,可以採用以下列表形式:
[["",""],["",""],["",""]]
解碼時,首先根據編碼結果第一個位元組f的大小,執行以下的規則判斷:
1.如果f∈ [0,128),那麼它是一個位元組本身。
2.如果f∈[128,184),那麼它是一個長度不超過55的byte數組,數組的長度為 l=f-128
3.如果f∈[184,192),那麼它是一個長度超過55的數組,長度本身的編碼長度ll=f-183,然後從第二個位元組開始讀取長度為ll的bytes,按照BigEndian編碼成整數l,l即為數組的長度。
4.如果f∈(192,247],那麼它是一個編碼後總長度不超過55的列表,列表長度為l=f-192。遞歸使用規則1~4進行解碼。
5.如果f∈(247,256],那麼它是編碼後長度大於55的列表,其長度本身的編碼長度ll=f-247,然後從第二個位元組讀取長度為ll的bytes,按BigEndian編碼成整數l,l即為子列表長度。然後遞歸根據解碼規則進行解碼。
以上解釋了什麼叫遞歸長度前綴編碼,這個名字本身很好的解釋了編碼規則。
(1) 以太坊源碼學習—RLP編碼( https://segmentfault.com/a/1190000011763339 )
(2)簡單分析RLP編碼原理
( https://blog.csdn.net/itchosen/article/details/78183991 )
F. Lebron科普:比特幣、以太坊挖礦原理以及區別
在區塊鏈世界中,比特幣和以太坊的挖礦過程雖然共享了基礎原理,但各自有其獨特之處。首先,比特幣挖礦是通過特定的挖礦節點和電腦消耗算力,每大約10分鍾通過演算法調整難度,成功驗證新區塊的節點會得到比特幣獎勵。挖礦過程涉及准備工作、加入礦池、設置賬號等步驟。而以太坊的挖礦則是基於工作量證明機制,礦工通過提供數學證明驗證新區塊,以太幣作為獎賞。以太坊的獨特之處在於其交易可能包含可執行代碼,且以秒為單位確認交易,使用ethash演算法,其目標在於支持智能合約和去中心化應用。
盡管兩者都是區塊鏈技術的應用,但比特幣更像是去中心化的全球銀行,專注於價值存儲和交換,賬本公開且交易可追溯。相比之下,以太坊更側重於平台功能,其區塊鏈被設計為支持比特幣以外的智能合約和DApp發展。盡管市值上,比特幣通常排名更前,但以太坊憑借其生態系統的潛力,與比特幣以及其他加密貨幣在市場競爭中占據一席之地。
G. 20.了解以太坊經典基本原理
以太坊經典基本原理如下:
起源與定位:以太坊經典,又稱為「原始」以太坊幣,源於以太坊區塊鏈在DAO攻擊之前的古老代碼。它在加密貨幣領域擁有獨特的地位,並以其忠實的用戶群穩居全球眾多加密貨幣前列。
核心目標:以太坊經典致力於保留區塊鏈的歷史,為用戶提供安全、透明的交易環境。其主要目標包括維護區塊鏈的原始代碼,確保去中心化原則的實現,並為開發者和用戶提供穩定且功能豐富的智能合約平台。
技術支持:以太坊經典支持智能合約,這使得開發者可以在其平台上構建各種去中心化應用。然而,與以太坊相比,以太坊經典的市場地位與認可度相對較低。
挑戰與前景:以太坊經典面臨著安全挑戰與技術升級的壓力。為防止未來的黑客攻擊,修改代碼與軟體以增強安全性是其重要任務。盡管以太坊經典社區仍在不斷探索與創新,以期提升其在加密貨幣市場中的競爭力,但鑒於以太坊作為更被認可與信賴的平台,以太坊經典的前景似乎面臨一定挑戰。
綜上所述,以太坊經典是一個致力於保留區塊鏈歷史、提供安全透明交易環境,並支持智能合約的加密貨幣平台。然而,它也面臨著市場認可度低、安全挑戰和技術升級等多重壓力。