以太坊哈希數據上鏈
❶ 一條數據是如何完成上鏈的
區塊鏈處理的流程大致分為三個階段:
分別是上鏈前處理階段、鏈上處理階段和智能合約處理階段。
上鏈前處理階段
業務數據上鏈前需要將業務數據處理,並且對信息進行簽名。這些過程可以通過對應的工具,比如序列化工具和各種橢圓曲線的簽名工具來完成,不過更多的時候是通過將各種工具集成的SDK來完成,以太坊的web3就是比較典型的上鏈前處理的開發工具。
上鏈處理階段
處理完成的數據發送到區塊鏈節點後,就形成了一筆區塊鏈交易並進入上鏈處理的階段,鏈上處理大體可分為交易廣播和區塊共識流程。
智能合約處理階段
上鏈處理完成後,業務數據已經記錄在鏈上了,對於單純存證的業務來說,將業務信息寫入區塊已經完成了這筆業務處理,只需記錄存證業務的交易哈希並在取的時候通過交易哈希查詢即可。但是大部分業務場景都需要進行一定的邏輯處理,因此通過智能合約處理是必須的。智能合約處理包括合約邏輯處理以及修改狀態梅克爾樹等流程。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
❷ ENS發布前,聽團隊談項目DAO治理,空投和Layer 2 規劃
ENS DAO將決定交易費變更、金庫用途等和.eth相關的一切事宜,任何代幣持有人都可以參與DAO治理。
以太坊域名服務( Ethereum Name Service )是一個基於以太坊區塊鏈的分布式、開放和可擴展的命名系統。通俗地說,ENS就是區塊鏈中的域名系統。ENS域名讓人們沒有必要再復制或輸入冗長的區塊鏈地址。
ENSUser是社區自發維護的非官方ENS中文社區,維護了ensuser .com( ensuer.eth.link), 為中文世界的ENS用戶和應用開發者提供了ENS相關的資訊、使用教程和文檔教程。
2021年11月1日,ENS宣布發布治理代幣,web3域名協議即將開啟去中心化治理。
ENSUser邀請ENS運營主管Brantly.eth 做客社區,分享關於DAO治理、空投、Layer2拓展等一系列中文世界用戶關心的問題。 以下為AMA回顧。
TLDR
ENS空投50%的代幣將歸屬DAO本身。25%將提供給擁有.ETH名稱的賬戶,另外25%將分配給在過去5年中以重要方式為ENS做出貢獻的數百人。DNS映射域名和子域名未計入空投。ENS項目未進行過融資,核心團隊不會為代幣提供流動性以及主動聯系交易所上幣。DAO將決定交易費變更、金庫用途等和.eth相關的一切事宜,任何$ENS持有人都可以參與DAO治理,成為Delegator。
社區收集問題
Q1:可以從您的角度,先給我們社區的小夥伴簡單介紹一下ENS這個項目嗎?他在Web3.0生態中擔當什麼樣的角色?
Brantly.eth: ENS是web3的身份協議,最終適用於整個互聯網。您擁有自己的用戶名,控制個人資料數據,並將其帶到您使用的每個dapp和服務中。這與web2不同,在web2中,您為每個孤立的服務使用不同的帳戶和用戶名,在web3中,您擁有自己的用戶名並使用到各種應用中。
以上這是主要用例。另外兩個重要用途是您的ENS名稱可以簡化任何區塊鏈的加密支付,並且它可以是一個去中心化的網站。
Q2: .eth 域名可以說是比Punk更早的NFT了,可以給我們簡單介紹一下ENS的團隊背景和發展歷程嗎?
Brantly.eth: ENS於2017年5月4日推出。這比CryptoPunks早了幾周,比Curio Cards早了幾天。我很確定ENS是世界上持續運行時間最長的NFT社區。當時有NFT標准不過還沒有ERC-721標准,後者在那年晚些時候問世。
ENS於2016年作為Nick Johnson和以太坊基金會的其他一些人的閑暇項目開始。當ENS在2017年推出時,它非常簡單,只是以太坊地址和Swarm哈希的.ETH名稱。但目前它已經發展了很多:它現在支持任何區塊鏈地址; IPFS、Skynet 和Arweave也有哈希值;和個人資料數據,如頭像。它也不再只是.ETH名稱;您還可以將任何DNS名稱導入ENS。
Q3: ENS剛剛發布了治理代幣的計劃。對於ENS生態中的普通用戶、投機者、合作夥伴等不同角色,怎樣分配初始的治理權能有利於ENS的長期利益?
Brantly .eth: 50%的代幣將歸屬DAO本身。25%將提供給擁有.ETH名稱的賬戶,另外25%將分配給在過去5年中以重要方式為
ENS做出貢獻的數百人。對於空投,它與一個人擁有的 .ETH名稱的數量無關, 而是與他們擁有任何域名的時間成正比。這避免了給大規模域名搶注者過多的權力。對ENS生態系統做出重大貢獻的項目將獲得額外的代幣,例如ENSUser將獲得一r些貢獻者代幣。非常感謝你所做的一切!
Q4: ENS金庫中有大量的注冊費,隨著治理權的開放,將會怎樣分配這些資金?
Brantly.eth:好問題。這將由ENS DAO來決定!這實際上是做DAO背後的一大推動力:我們不知道如何花錢,我們希望社區對此有發言權。(注: ENS金庫目前有超過2400萬美金)我們建議他們首先將其用於ENS開發,然後用於ENS生態系統,然後用於web3公共產品。
Q5: Gas太高了,ENS有layer2的發展計劃嗎,目前有怎樣的進展呢?
Brantly.eth:是的,gas fee很糟糕。我們計劃使用CCIP-read來允許用戶將記錄和子域放在他們選擇的L2上。在降低注冊.ETH名稱的費用方面,需要更長的時間。我們最終可能會將其移至L2,但問題是我們必須將所有注冊移至該L2,並且我們希望等待L2生態系統先成熟。
Q6:目前有哪些基於ENS構建的應用令你眼前一亮,你希望未來ENS生態會發展出怎樣的用例?
Brantly.eth:使用ENS名稱作為您的用戶名非常強大,我喜歡任何以這種方式使用ENS名稱的dapp。最近還看到一個項目,用ENS來命名分布式文件網路上的文件存儲,很酷。
Q7:前一段時間ENS兼容了全部的DNS域名,這是否會影響.eth域名的價值? .eth對比傳統DNS接入的域名有什麼優勢?
Brantly.eth:我不這么認為。雖然導入到ENS的DNS名稱可以做很多相同的事情,但.ETH名稱仍然有一些優勢。例如,.ETH名稱是完全自託管的,而導入到ENS的DNS名稱與普通DNS名稱具有相同的安全級別。
此外,我認為.ETH具有很好的品牌效應。正如.COM代表了互聯網的興起,我認為.ETH作為一個符號代表了web3的興起
自由問答
Q8:ENS有計劃上任何交易所嗎?
Brantly . eth: ENS核心團隊不會為代幣提供任何流動性,或者主動接洽交易所商討上幣事宜。
Q9: ENS會上幣安嗎?
Brantly.eth:這要問幣安了。
Q10:我想知道為什麼不給將DNS接入ENS域名的用戶空投代幣?我認為這是從web2到web3的積極過渡,對整個加密貨幣生態有利。
Brantly.eth:這是因為DAO將負責治理
與.ETH域名有關的事宜,而且注冊機制和注冊費都只和.ETH域名相關。
Q11:我要做什麼才能參與ENSDAO ?
Branrly. eth:只需要$ENS代幣就可以了。11月8號之後就有了。
Q12: $ENS代幣有什麼功能?
Brantly. eth: $ENS代幣給了持有者在DAO中投票的權利。
Q13:目前從公告中看,在Gitcoin中給ENS捐款的用戶並不能得到空投。但是未來捐款用戶能否獲得空投呢,畢竟他們為項目做過貢獻?
Brantly . eth: ENS核心團隊從來沒有接受過Gitcoin的捐款。
Q14:未來會限制注冊域名的用戶數嗎?未來注冊費會增加嗎?
Brantly. eth:不會! ENS的域名沒有上限,我們希望地球上每一個人都能有ENS域名。關於年費,這將由DAO控制,並且DAO決定會不會增加。
Q15: ENS會空投給poap的持有者嗎?
Brantly.eth:持有POAP並不會增加空投代幣的數量。
Q16:未來我們能用ENS代幣而不是ETH來注冊域名和續費嗎?
Brantly.eth:這將由DAO決定。
Q17:我平時用* .dcl.eth當域名,而且我設置了reverse record,但是我沒有空投,我覺得這不公平。你怎麼看?
Brantly. eth:我們把空投限制到了.eth 域名,因為DAO將治理和.eth 域名有關的事宜,而不是子域名。
Q18:未解鎖的ENS代幣會有和流通代幣一樣的投票權嗎?
Brantly. eth:不會,鎖倉代幣將沒有投票權。
Q19: ENS有流動性挖礦計劃嗎?
Brantly.eth: ENS核心團隊將不會提供任何流動性。
Q20: ENS代幣將一次性發放還是分批解鎖?
Brantly . eth:對於核心團隊和顧問的代幣,將會分4年釋放。50%分配給DAO的代幣也是逐步釋放。而給其他用戶的代幣,則是一次性釋放。
Q21: Unstoppable domains@有很多頂級
域。ENS團隊以後會創建除了.eth之外的其他頂級域嗎?
Brantly . eth: Unstoppable沒有擁有任何頂級域,他們只是自創了一些域名,並且以後很有可能和ENS以及DNS現有的域名沖突。ENS支持了DNS的域名空間,現在Unstoppabe自創的這些域名未來很有可能碰撞DNS域名空間,造成UN體系內域名持有者和DNS域名持有不同的沖突。
Q22:嗨,brantly! 現在有多少人申請Delegator呀?你們最後會選多少個Delegator?
Brantly. eth:目前好幾百人申請。我們不會負責選擇delegator,代幣持有人決定把代幣委託給自己信任的delegator,完全由用戶決定。
Q23: ENS有路線圖嗎?
Brantly . eth:我們經常公開討論進展、工作情況以獲得反饋,不過以後我們或許應該發布一個更新的路線圖。
Q24: ENS好用好記,不過現在很多錢包和交易所都不支持,你怎麼看?以後怎麼拓展ENS的用例,團隊會做些什麼?
Brantly.eth:目前有310種接入了,不過ENS需要有數千種應用接入ENS。社區用戶能做的是禮貌地向各種服務要求接入ENS域名。各種應用都會聽用戶的意見。
Q25:嗨,Brantly! 為什麼你們現在決定發幣和DAO起來了,而不是幾年之前?
Brantly. eth:我們覺得ENS和DAO目前足夠成熟了。不知之前,DAO還是非常實驗性的,而且ENS也還很幼稚。
❸ 以太坊鏈上數據查詢工具: https://eth.tokenview.com/cn
etherscan.io目前在國內無法訪問,現在向大家推薦這個以太坊數據查詢工具, https://eth.tokenview.com/cn ,數據來自他們自己的以太坊節點,數據同步速度快。
四個優勢:
數據支持以太坊上的區塊信息,地址余額,轉賬交易,以太坊所有Token,基於以太坊發行的穩定幣。
鏈上存儲的數據(inputdata)可以解碼成普通語言,我們可以查看在以太坊上的留言。
幾十種鏈上數據圖表,同時有為高級數據分析師提供的Metrics模塊。
由中國團隊Tokenview開發,在國內可高速訪問。
❹ 以太坊技術系列-以太坊數據結構
本篇文章和大家介紹一下以太坊的數據結構,上篇文章我們提到,以太坊為了實現智能合約這一功能,使用了基於賬戶的模型。我們來看看以太坊中數據結構。
既然是基於賬戶的模型,我們需要通過賬戶地址找到賬戶的狀態。就像通過銀行卡號可以找到你在銀行中的各種信息一樣。最簡單的想法當然是一個簡單的哈希表 key是賬戶地址 value是賬戶狀態。但這里有個問題解決不了。
輕節點如何校驗賬戶合法性?
上篇我們說過,區塊鏈中有2類節點,全節點和輕節點,輕節點只會存儲block header,所以輕節點如何才能校驗賬號是否合法呢?
這個思路和我們平時用的md5校驗一致,我們會對區塊內的信息進行hash運算從而得出區塊內信息唯一確定的值,區塊鏈所有節點中這個值都是相同的。
在這個過程中我們用到了一種數據結構Merkle Tree(哈希樹),我們先看下Merkle Tree(哈希樹)的示意圖。
上篇文章說到區塊鏈中的鏈表(哈希鏈)和我們平時常見鏈表不同的是將指針從地址改為了hash指,這里也一樣,哈希樹和二叉樹的區別有2個
1.將地址改為了哈希值
2.只有葉子節點存儲數據
回到之前的問題輕節點是如何校驗1個賬戶或交易是否是在鏈上的呢?
整個流程如上圖所示
1.輕節點需要判斷1個賬號是否合法
2.輕節點由於只存儲block header,所以拿到1個賬號的時候會向全節點發出請求
3.全節點存儲了所有賬戶狀態,將賬戶路徑中的需要計算用到的hash值返回給輕節點
4.輕節點本地進行計算根hash值,如果計算結果和自己存儲一致則賬戶合法,不一致則不合法。
那以太坊中的賬戶信息的數據結構就是這樣嗎?
直接用這樣的數據結構來存儲賬戶信息會有2個問題
查找困難
生成hash值不確定
第1個問題應該比較容易發現,在這個樹中尋找1個賬號需要的復雜度是O(n),因為沒有任何順序。
第2個問題其實也是因為無序導致的,無序的組合每個節點針對同一批賬戶生成的hash值不一致,這就導致無法達成共識。
既然2個問題都和順序有關,那我們類似二叉排序樹一樣,使用哈希排序樹是不是就可以解決問題了呢?
使用排序樹後會帶來另外1個問題
插入困難
因為要維持樹是有序的,很可能帶來樹結構的很大變動。
以太坊中使用了另外一種數據結構字典樹。和哈希樹不同,字典樹應該是很多地方都有使用。我們簡單來看下字典樹的結構。
字典樹能夠較好地解決哈希樹的2個缺點1.查找困難 2.生成的hash值不確定以及排序二叉樹的1個缺點 插入困難。
但字典樹我們可以看到可能樹的深度可能由於部分元素導致整棵樹深度非常深。
這時我們可以進一步優化,將相同路徑進行壓縮。這就是壓縮字典樹。
將哈希樹和壓縮字典樹結合,就可以得到以太坊存儲賬戶的最終數據結構-MPT。
將壓縮字典樹裡面的指針從地址改為指針,並且將數據存儲在葉子節點中即可。
介紹完狀態樹的數據結構,我們接下來討論1個問題,區塊中存儲的賬戶狀態是什麼樣的范圍。有2種選擇。
只保存當時區塊中產生交易的賬戶狀態。
保存全局所有的賬戶。
我們可以看下這2種方式,無非就是空間和時間的平衡,只保存當前區塊產生的交易意味著是做懶載入(需要的時候才去尋找賬戶),在區塊鏈中這個代價是非常大的,因為尋找的賬戶之前從未交易過,這樣會遍歷整個區塊鏈。另外一種保存全局的賬戶方式雖然看起來空間消耗較大,但查找快捷,而且空間的問題我們可以通過其他方式優化。所以最終以太坊選擇了第2種每個區塊都報錯全局所有賬戶的方式。
我們來看下以太坊中是如何保存狀態樹的。
可以看到以太坊中雖然每個區塊都保存了全部賬戶,但是會將未發生變化的賬戶狀態指向前1個節點,本身只存儲發生變化的狀態,這樣可以較大程度優化空間佔用。
介紹完以太坊中比較復雜的狀態樹後,我們繼續來看看以太坊中的另外兩棵樹,交易樹和收據樹。
首先介紹一下,為什麼需要交易樹&收據樹。
1.交易樹
雖然以太坊是基於賬戶的模型,但是就像銀行不僅會存儲銀行卡的余額,還會存儲卡中的每筆錢怎麼來的以及怎麼花的。交易樹中就存儲著當前區塊中的包含的所有交易。
2.收據樹
由於智能合約的引入增加了不少復雜性,所以以太坊用收據樹存儲著一些交易操作的額外信息。比如交易過程中執行日誌就包含在收據樹中方便查詢。收據樹和交易樹是一一對應的。每發生一次交易就會有一次收據。
和狀態樹不同交易樹和收據樹只維護當前區塊內發生的交易,因為當時區塊發生交易時不需要再去查找另外1個交易,也就之前需要可能遍歷整個區塊鏈的查找操作了。
由於以太坊中的出塊速度較快,我們進行一些查詢一些符合條件交易的時候會面臨大量數據遍歷困難的問題。收據樹中引入了布隆過濾器可以幫助我們有效緩解這一困難。
布隆過濾器將大集合中每個元素進行hash運算映射到1個較小的集合,這時再來1個元素要判斷是否在大集合的時候,不需要遍歷整個大集合,而是去進行hash運算去小集合中尋找是否存在,如果不存在,肯定不在大集合中,如果存在則不能說明任何問題。
如上圖所示,布隆過濾器只能證明某1個元素不在集合中,不能證明1個元素在結合中。
以太坊中如果我們要在較多區塊中尋找某1個交易,則可以利用布隆過濾器,過濾掉肯定不存在目標交易的區塊,然後進入收據樹內繼續利用布隆過濾器篩選,剩下的才是可能的目標交易的交易,進行一一比對即可。
我們介紹了以太坊的核心數據結構,狀態樹&交易樹&收據樹,他們都是使用相同的數據結構-哈希壓縮字典樹。但狀態樹是維護1顆全局賬戶樹,交易樹和收據樹則是維護本區塊內的交易或收據。
介紹完數據結構後,後面我們會用幾篇文章來介紹以太坊中的一些核心演算法,比如共識機制,挖礦演算法等。
❺ 哈希連接
在兩個關繫上進行連接用多線程來加速主要有兩種方法哈希連接和排序合並連接。
多數OLTP DBMS都沒有實現哈希連接
但是少量目標元組的索引嵌套連接和哈希連接是差不多的
連接演算法的設計目標:
提高cache
影響DBMS cache未命中的因素:
對於OLAP DBMS哈希連接是最重要的操作
充分利用多核來加速哈希連接演算法是至關重要的——讓所有的核都跑起來,又不想要內存受限
哈希連接R⨝S氛圍三個階段:劃分(可以沒有)用哈希函數在連接關鍵字上將R和S的元組進行分區(為下一步索引的構建以及最後的探查做准備);構建,掃描關系R在連接關鍵字上創建一個哈希表;探查,對於S中的每個元組,查找它的連接關鍵字是不是在R的哈希表中,如果找到,那麼輸出合並好的元組。
兩種方法
只掃描輸入的關系一次,並動態產生輸出
所有線程更新在一個全局的分區集合;必須用latch來同步線程;最終的結果是可用的哈希表,傳輸一次數據
每個線程有自己的分區;在所有線程都完成後需要整合,傳輸兩次數據
也叫基數分區,和基數排序的原理很像,都是一位一位數字的來排。
多次掃描輸入的關系;只在最後物化結果;也叫基數哈希連接
多步
對第二列數字也是遞歸重復,直到分區的目標數字建立
線程會掃描R(或分區)中的元組
對於每個元組,哈希它的連接屬性並把它加入到哈希表中相應的bucket中(bucket只有幾個cache line大小)
有兩個需要考慮的問題:
一些的哈希函數介紹...
1.鏈式哈希
維持一個bucket的鏈表
通過把有一樣哈希值的元素放到同一個bucket中
在查找時,看一個元素有沒有,需要掃描其哈希值對應的bucket;插入和刪除也是
為了減少連接時的比價,減少哈希值的沖突是至關重要的。
鏈式哈希大概需要R中元素的一般的slots。
key一定在鄰居范圍內或不存在。
對於S中每個元組,都會哈希它的連接key檢查它在由R構建的哈希表中相應的bucket里有沒有對應的元組。
如果輸入分區了,那麼也要給每個線程進行一個獨立的分區。否則需要同步他們在訪問S時的游標。
在構建階段當關鍵字可能在哈希表中可能不存在時創建一個布隆過濾器
在探查哈希表前線程會先檢查過濾器;也叫sideways information passing
基於分區的連接在多數情況都要比不分區的演算法性能好。
❻ 走進以太坊網路
目錄
術語「以太坊節點」是指以某種方式與以太坊網路交互的程序。從簡單的手機錢包應用程序到存儲整個區塊鏈副本的計算機,任何設備均可扮演以太坊節點。
所有節點都以某種方式充當通信點,但以太坊網路中的節點分為多種類型。
與比特幣不同,以太坊找不到任何程序作為參考實施方案。在比特幣生態系統中, 比特幣核心 是主要節點軟體,以太坊黃皮書則提出了一系列獨立(但兼容)的程序。目前最流行的是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。
❼ 小白如何秒懂區塊鏈中的哈希計算
小白如何秒懂區塊鏈中的哈希計算
當我在區塊鏈的學習過程中,發現有一個詞像幽靈一樣反復出現,「哈希」,英文寫作「HASH」。
那位說「拉稀」同學你給我出去!!
這個「哈希」據說是來源於密碼學的一個函數,嘗試搜一搜,論文出來一堆一堆的,不是橫式就是豎式,不是表格就是圖片,還有一堆看不懂得xyzabc。大哥,我就是想了解一下區塊鏈的基礎知識,給我弄那麼難幹啥呀?!我最長的密碼就是123456,復雜一點的就是654321,最復雜的時候在最後加個a,你給我寫的那麼復雜明顯感覺腦力被榨乾,僅有的腦細胞成批成批的死亡!為了讓和我一樣的小白同學了解這點,我就勉為其難,努力用傻瓜式的語言講解一下哈希計算,不求最准確但求最簡單最易懂。下面我們開始:
# 一、什麼是哈希演算法
## 1、定義:哈希演算法是將任意長度的字元串變換為固定長度的字元串。
從這里可以看出,可以理解為給**「哈希運算」輸入一串數字,它會輸出一串數字**。
如果我們自己定義 「增一演算法」,那麼輸入1,就輸出2;輸入100就輸出101。
如果我我們自己定義「變大寫演算法」,那麼輸入「abc」輸出「ABC」。
呵呵,先別打我啊!這確實就只是一個函數的概念。
## 2、特點:
這個哈希演算法和我的「增一演算法」和「變大寫演算法」相比有什麼特點呢?
1)**確定性,算得快**:咋算結果都一樣,算起來效率高。
2)**不可逆**:就是知道輸出推不出輸入的值。
3)**結果不可測**:就是輸入變一點,結果天翻地覆毫無規律。
總之,這個哈希運算就是個黑箱,是加密的好幫手!你說「11111」,它給你加密成「」,你說「11112」它給你弄成「」。反正輸入和輸出一個天上一個地下,即使輸入相關但兩個輸出毫不相關。
# 二、哈希運算在區塊鏈中的使用
## 1、數據加密
**交易數據是通過哈希運算進行加密,並把相應的哈希值寫入區塊頭**。如下圖所示,一個區塊頭包含了上一個區塊的hash值,還包含下一個區塊的hash值。
1)、**識別區塊數據是否被篡改**:區塊鏈的哈希值能夠唯一而精準地標識一個區塊,區塊鏈中任意節點通過簡單的哈希計算都可以獲得這個區塊的哈希值,計算出的哈希值沒有變化也就意味著區塊鏈中的信息沒有被篡改。
2)、**把各個區塊串聯成區塊鏈**:每個區塊都包含上一個區塊的哈希值和下一個區塊的值,就相當於通過上一個區塊的哈希值掛鉤到上一個區塊尾,通過下一個區塊的哈希值掛鉤到下一個區塊鏈的頭,就自然而然形成一個鏈式結構的區塊鏈。
## 2、加密交易地址及哈希
在上圖的區塊頭中,有一個Merkle root(默克爾根)的哈希值,它是用來做什麼的呢?
首先了解啥叫Merkle root? 它就是個二叉樹結構的根。啥叫二叉樹?啥叫根?看看下面的圖就知道了。一分二,二分四,四分八可以一直分下去就叫二叉樹。根就是最上面的節點就叫 根。
這個根的數據是怎麼來的呢?是把一個區塊中的每筆交易的哈希值得出後,再兩兩哈希值再哈希,再哈希,再哈希,直到最頂層的數值。
這么哈希了半天,搞什麼事情?有啥作用呢?
1)、**快速定位每筆交易**:由於交易在存儲上是線性存儲,定位到某筆交易會需要遍歷,效率低時間慢,通過這樣的二叉樹可以快速定位到想要找的交易。
舉個不恰當的例子:怎麼找到0-100之間的一個任意整數?(假設答案是88)那比較好的一個方法就是問:1、比50大還是小?2、比75大還是小?3、比88大還是小? 僅僅通過幾個問題就可以快速定位到答案。
2)、**核實交易數據是否被篡改**:從交易到每個二叉樹的哈希值,有任何一個數字有變化都會導致Merkle root值的變化。同時,如果有錯誤發生的情況,也可以快速定位錯誤的地方。
## 3、挖礦
在我們的區塊頭中有個參數叫**隨機數Nonce,尋找這個隨機數的過程就叫做「挖礦」**!網路上任何一台機器只要找到一個合適的數字填到自己的這個區塊的Nonce位置,使得區塊頭這6個欄位(80個位元組)的數據的哈希值的哈希值以18個以上的0開頭,誰就找到了「挖到了那個金子」!既然我們沒有辦法事先寫好一個滿足18個0的數字然後反推Nounce,唯一的做法就是從0開始一個一個的嘗試,看結果是不是滿足要求,不滿足就再試下一個,直到找到。
找這個數字是弄啥呢?做這個有什麼作用呢?
1)、**公平的找到計算能力最強的計算機**:這個有點像我這里有個沙子,再告訴你它也那一個沙灘的中的一粒相同,你把相同的那粒找出來一樣。那可行的辦法就是把每一粒都拿起來都比較一下!那麼比較速度最快的那個人是最有可能先早到那個沙子。這就是所謂的「工作量證明pow」,你先找到這個沙子,我就認為你比較的次數最多,乾的工作最多。
2)、**動態調整難度**:比特幣為了保證10分鍾出一個區塊,就會每2016個塊(2周)的時間計算一下找到這個nonce數字的難度,如果這2016個塊平均時間低於10分鍾則調高難度,如高於十分鍾則調低難度。這樣,不管全網的挖礦算力是怎麼變化,都可以保證10分鍾的算出這個隨機數nonce。
# 三、哈希運算有哪些?
說了這么多哈希運算,好像哈希運算就是一種似的,其實不是!作為密碼學中的哈希運算在不斷的發展中衍生出很多流派。我看了」滿頭包」還是覺得內在機理也太復雜了,暫時羅列如下,小白們有印象知道是怎麼回事就好。
從下表中也可以看得出,哈希運算也在不斷的發展中,有著各種各樣的演算法,各種不同的應用也在靈活應用著單個或者多個演算法。比特幣系統中,哈希運算基本都是使用的SHA256演算法,而萊特幣是使用SCRYPT演算法,誇克幣(Quark)達世幣(DASH)是把很多演算法一層層串聯上使用,Heavycoin(HAV)卻又是把一下演算法並聯起來,各取部分混起來使用。以太坊的POW階段使用ETHASH演算法,ZCASH使用EQUIHASH。
需要說明的是,哈希運算的各種演算法都是在不斷升級完善中,而各種幣種使用的演算法也並非一成不變,也在不斷地優化中。
**總結**:哈希運算在區塊鏈的各個項目中都有著廣泛的應用,我們以比特幣為例就能看到在**數據加密、交易數據定位、挖礦等等各個方面都有著極其重要的作用**。而哈希運算作為加密學的一門方向不斷的發展和延伸,身為普通小白的我們,想理解區塊鏈的一些基礎概念,了解到這個層面也已經足夠。
❽ 如何將內容上鏈,把文字存儲到以太坊
之前寫過一篇文章:《如何用區塊鏈表白?將信息永久寫入區塊鏈。》
https://www.jianshu.com/p/c3ca7c93dae3
教程基本比較清楚了,還不懂怎麼操作的,先看上面這個鏈接再回來。
實際使用過程中,上面教程可能還遇到有一點問題。因為教程里的內容是英文,英文的內容上鏈一點問題都沒有。
而這次我錄入中文,在以太坊瀏覽器上,view input as UTF8 時,出現亂碼。
看這個示範鏈接,中文部分全部亂碼了:
https://etherscan.io/tx/
原因?
我一開始用的是網上找的 十六進制與文本間的轉換工具。
https://www.bejson.com/convert/ox2str/
用這個不行了!
中文要不出現亂碼,要用 UTF8 與 Hex 轉換工具。
網上搜下,比如這個:
https://www.browserling.com/tools/utf8-to-hex
輸入你要的文字內容,轉換成 Hex.
然後復制到word里,用替換功能,將所有的 x 字元去掉。
看,成功的結果是這樣的。
https://etherscan.io/tx/
❾ 哈希圖會取代區塊鏈
2018年2月份哈希圖團隊就在Reddit上po出了一種新的實現共識演算法平台,旨在為世界提供一種更有效、快速的價值互聯網底層支撐。
從比特幣出現到現在,區塊鏈這個名詞已經深入人心,似乎我們已經被深深植入一種想法,那就是 價值互聯網 必將通過區塊鏈來實現。而仔細一看,區塊鏈似乎就是一個簡單的鏈表,只不過是更宏觀一些的區塊相連。區塊之內打包的各種公開的交易事務。於是我們從中總結出了人人都能談的區塊鏈的特點:
而區塊鏈的用途承載了我們很多美好的想像,賦予更多節點以價值,包括內容,個人數據等形形色色的各類資產。
誠然,區塊鏈已經在部分領域實現了這個功能。但是,在具體使用過程中,我們漸漸遇到了很多性能問題,先是以太坊上養貓就堵塞了整個以太坊網路。而比特幣就更不用說了,即使全世界成千上萬個分布式節點,各大礦場投入了巨資構建的礦場來支撐這個網路,仍然受限於每10分鍾才出一個區塊的演算法限制。
因為性能瓶頸,其他演算法也迅速出現,企圖解決這個問題。比如通過PoS演算法,DPoS演算法,試圖繞過PoW這種簡單粗暴的解決方案,來提升網路每秒能夠處理的交易事務次數(TPS)。
而最近掀起的EOS節點競選,全世界范圍內各個財大氣粗的團隊,參與競選全球 21個超級節點 ,用於投票產生下一個區塊。本質上仍然屬於DPoS演算法的應用,只不過這個超級節點能夠獲得大量的EOS代幣|Token(主網上線後可稱之為Coin)獎勵,按照當前價格折算,就是上億的收入。資本逐利,無可厚非。但是仔細想一想,官方的說法,這是為了提升TPS而設計的一種折中的方法。意思就是,決定區塊產生的不再是公平的,而是一種代議制,在去中心化和中心化之間找到的一個微妙的平衡,當然這個系統內,除了超級節點,備胎節點也是必須的。本文不贅述EOS。
而這些,不禁讓人深深思索一個新的問題,當年中本聰的設想,一人一個CPU,一個投票權的願景似乎已經漸行漸遠了。
提到區塊鏈,我們常說共識演算法,其實全稱是一致性共識演算法。其中,拆出兩個關鍵詞來:
共識似乎離普通用戶很近,白話說即為,我們大多數人認同它的價值,它就有價值。而一致性卻離得很遠,下一個區塊怎麼產生,節點之間如何同步數據與我何干?
這里,我也只淺淺列出用在區塊鏈世界的幾種牛批的共識演算法,包含:
下面進入本文的主題。
無論是什麼共識演算法,核心目的相同,那就是:在無可信中心節點可以依仗時,社區用戶能夠關於事務的產生,區塊打包達成一致。
此處上一個對比圖,將會一目瞭然,然後我也會再文字贅述一遍,和大家分享我自己對此的一點點淺淺的思考,如有任何差錯,歡迎隨時指正。
可見,左邊是區塊鏈,右邊是哈希圖。
仔細看,區塊鏈實際上是一個公平但是殘酷的機制。每一個參與挖礦的節點,都是在玩一個概率游戲。比如老大哥比特幣,使用純正的PoW演算法,每個人通過密碼學問題,暴力求解那個答案,我們稱之為哈希碰撞。在10分鍾內,產生的交易事務其實不止那個最終被加入最長的鏈上的區塊的那些事務。而是同時有很多其他區塊。每一筆事務會通過廣播機制,向周圍的其他節點廣播以求得到足夠的確認,並最終加入區塊鏈。問題來了,節點保存著當前最新的備份,且只認最長的那個鏈,但是我們知道,廣播意味著一樣長的多個鏈會產生,於是節點就需要同時保存多個備用區塊,然後靜靜等待下一步傳來的區塊,再比較選誰鏈更長,就把誰真的加入大家都認同的那個鏈,而失敗的區塊,就黯然退場,加入下一輪的事務。
挖到那個沒加入到鏈上的節點,只能暗暗擦乾眼淚,繼續前行。
以太坊呢,就稍稍溫情一些,會有一點點獎勵給這類被稱之為叔塊的東西。
看到左邊的區塊鏈結構嗎?生長過程中,是個樹,長成了以後,就會被修剪的只剩下一個白白長長的樹干。這就是我們說的,只認最長的鏈的法則殘酷之處。
哈希圖
對比看右邊的哈希圖結構,是不是要復雜很多?簡單說,就是一個都不能少。
挖到的區塊全都加入到系統。每個分支都將被用到,最終縫合到整個系統。
稍稍想想,就能知道左邊的沒有右邊的事務處理速度快。因為左邊總是要自我閹割一部分打包在區塊內的事務。而右邊不用。
那麼,為什麼右邊可行?而區塊鏈卻選擇的是更慢的演算法呢?
答案很簡單,區塊鏈的廣播方法,在全網達成共識很慢。那麼哈希圖是怎麼做到的呢?
下面將談一談哈希圖的兩個核心機制中的其中一個,官方稱呼為Gossip about gossip協議。
粗淺翻譯為:關於八卦的八卦協議。
先來說一說Gossip協議(八卦協議)。
Gossip協議解決的問題就是在分布式環境下信息高效分發的問題。這個問題的解決決定著系統的一致性程度。
以辦公室八卦為例,八卦一般是從一次對話開始,只要一個人八卦一下,有限的時間內辦公室的人都會知道。與病毒傳播類似。因此Gossip別名就是「病毒感染演算法」,「謠言傳播演算法」。
Gossip的核心就是當前節點隨機選擇一些節點把那個告訴它們你知道的所有事情。好比說,你聽到了一個八卦消息,你會忍不住想和朋友分享,於是你從你認識的人中,隨機挑了一部分人,把這個消息告訴了他們。他們也一樣,每個人聽到這個消息,也會忍不住想和他們的朋友分享。像病毒傳播一樣,迅速傳遍了整個人際網路。
因此理解八卦協議,可以帶入一種日常生活我們總是會參與到的八卦場景。
而關於八卦的八卦協議,這里不再多說,只是可以對照一下,作為一個傳遞八卦消息的人,你再被其他人八卦,是不是有一種意想不到的被人驗證的感覺?後面會再寫文詳述。
總之,通過Gossip協議,哈希圖能夠做到在秒級別實現共識(牛批吧)。因此,就能夠採用這種絕不放棄任何區塊的圖狀方式,進而提升事務打包確認的速度。不是一般的快。
有人認為哈希圖要顛覆區塊鏈的,但是哈希圖的人認為,它們會共存。-- 且當八卦,不必在意
接著引出一個新的問題給大家,我們真的關心底層技術的實現方式嗎?
支付寶好用,微信好用,我們關心它們是怎麼實現的嗎?我想絕大部分朋友是不在意的。
那麼對應到區塊鏈或者哈希圖,我們其實並不會太在意到底哪個演算法更好,而是更關心,我這個轉賬多久能夠被確認,別人給我轉的錢多久能收到。
誠然,我們不必太在意底層,但是支撐起一個良好體驗的產品,必然是從底層汲取能量。
或許,哈希圖將帶來一種嶄新的體驗。
到現在,我相信一組新詞不斷出現在大家的信息捕捉器里:
我的粗淺理解是,不帶代幣的互聯網產品都是古典的,而帶有代幣的大多數號稱價值互聯網的產品也只是耍猴,博眼球,賣空氣,更不要提國外還時不時捧出的12歲CEO,發行以太坊代幣,我歸結為賣傻兒子系列。
不管是什麼互聯網,我們的核心訴求始終都是,要好用,簡單說就是快且安全高效。
而價值呢,更多的願景仍然是希望將個人產生的價值部分乃至全部還歸於個人。
但是,任重道遠。在古典互聯網安家的90後們尚且未能全部擁抱區塊鏈,更別說80後,70後等等大部隊了。
我們終將死去,價值互聯網會在新一代的原住民中生存。
而本篇,希望帶來了一點點價值,那就很好了。
2018.4.21 -- YQ
鄭重聲明
本文里還未提到哈希圖的缺點,導致給人一種推廣軟文的感覺。本文只是純粹科普一下不同的公開記賬本實現方式,並非誘導大家投資,我個人不參加一級市場的私募,風險承擔不起,也不鼓吹大家參與。個中風險,自己衡量,自己把握。
❿ 怎麼樣在以太坊上查詢區塊鏈幣
可以輸入錢包地址、交易ID、區塊哈希或者區塊高度等信息直接查詢,非常方便。
如果是查詢賬戶余額、賬戶的歷史交易數據等信息,建議直接輸入錢包地址查詢;如果是查詢某筆轉賬的相關信息,比如是否到賬、進展如何,輸入交易ID是最方便的。
當然了,區塊鏈瀏覽器不僅可以查詢自己的賬戶,也可以查詢別人的賬戶以及相關的交易信息,包括比特幣創始人中本聰的賬戶。