導航:首頁 > 比特幣區 > 比特幣hash過程

比特幣hash過程

發布時間:2024-10-27 20:09:10

A. 比特幣———一個幣值8萬多元人民幣

接觸過數字貨幣的人對比特幣都不陌生,它是數字貨幣的祖宗,如果你在2010年的時候用三美元買1萬個比特幣留到現在,那麼現在你的身價是8億多人民幣,是不是不可思議

區塊鏈技術被稱為是繼,蒸汽機,電,互聯網,之後的一個劃時代的標志,

比特幣的底層技術是什麼呢?

是區塊鏈技術,那麼區塊鏈技術又是什麼呢,舉個通俗易懂的例子,你去招商銀行存錢,存了100萬,有一天招商銀行的銀行系統被黑客攻擊了,並且把你的賬戶的錢轉走了50萬,你的存款單也丟了,這時候銀行不想把你丟了的錢補給你,你是不是要抓狂。區塊鏈就是有無數的存儲系統,而且裡面都存有相同的內容,沒有人可以修改已經生產的賬單,就像以前只有一個賬本,但是用了區塊鏈之後就有無數的記賬賬本,而且分布在各個地方。更專業一點說,區塊鏈技術是由利用塊鏈式數據結構來驗證和存儲數據,利用分布式節點共識演算法來生成和更新數據,利用密碼學的方式來保證數據傳輸和訪問的安全,利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算方式。

但是現在是數字貨幣泛濫的年代,各種新的數字貨幣發行進行洗錢跑路,最後一地雞毛,對於目前國家提倡的區塊鏈技術和企業鏈改如果落到實地,這樣的數字貨幣還是可以持有的,我們知道只有大公司才能上市,但是所以公司都能上鏈

如果你對某個數字貨幣非常了解,並且知道它的運營情況,有沒有落地到實地幫助公司進行鏈改,技術支撐等,不然盡量不要去買。

回到BTC,BTC公鏈被稱為區塊鏈的1.0時代,採用的是POW共識機制,也就是工作量證明,你獲得多少貨幣,取決於你挖礦貢獻的有效工作,電腦性能越好,分給你的礦就越多,POW機制解決了拜占庭將軍問題,就是在互相不信任的情況下,只要多少人都信任,那麼就能保證系統的正確運作,但是也有一定的缺陷,就是處理交易的速度太慢,礦工們需要不斷的通過計算來碰撞哈希值,這是勞民傷財且效率低下的。TPS系統吞吐量(用戶並發量)7筆/秒。ETH這條公鏈被稱為區塊鏈的2.0時代,ETH提出了新的共識機制POW+POS(權益證明)簡單來說就是你持有的幣越多,你的權益就越高,因為你持有的幣越多,持有幣的時間越久,你的計算難度就會降低,挖礦會容易一些,TPS為21筆/秒。EOS被成為3.0的公鏈,DPOS共識機制(拜占庭容錯的委託權益證明)對於POS機制的加密貨幣,每個節點都可以創建區塊,並按照個人的持股比例獲得「利息」,出塊時間3秒,TPS為5000筆/秒。

一、從比特幣看區塊鏈技術

(一)比特幣(Bitcoin)是一種數字加密貨幣比特幣是一種數字加密貨幣,由中本聰(SatoshiNakamoto)2009 年1 月25 日設計上線。比特幣的產生、發行和交易機制與傳統貨幣不同。傳統貨幣的產生、發行和交易依託於中央銀行、商業銀行等中心化的二元模式;而比特幣的發行不需要中心化的金融中介,比特幣社區用戶可通過比特幣區塊鏈網路發行和管理數字加密貨幣。比特幣是以黃金模式發行,人們形象地將該過程稱為「挖礦(Mining)」,並將所有提供計算力的節點稱為「礦工(Miner)」。目前,比特幣挖礦的發行方式使每位礦工都可以從中獲取6.25 個比特幣的收益。實際上,比特幣的發行過程是求解多重哈希值解方程(Hash Function)的過程。節點挖礦獲得比特幣的過程,是通過計算機進行大量計算求出合理的哈希值來實現的。簡而言之,這個過程的主要目標是求解交易雙方的公鑰。每次求出的解都會作為下次計算的初始條件,節點在此基礎計算新結果。當一個節點解出一組之前未解出的哈希值時,系統向全網路發布,各節點查驗本地資料庫。如果各節點發現該解正確,並且資料庫中沒有此解記錄,將確認並記錄該解的合法性。當所有節點都確認並記錄完畢時,求出該解的節點便被獎勵一定數量的比特幣。作為比特幣最底層的核心技術,區塊鏈技術來源於2014 年10 月大英圖書館的一次研討會。比特幣是區塊鏈技術最成功的金融應用,它以公開賬本的形式在全網記錄所有交易信息。隨著比特幣的普及和應用,區塊鏈技術日益受到金融 科技 界的關注。

(二)區塊鏈是弱中心化的分布式賬本協議區塊鏈技術提供了一份公共的分布式安全賬本,是一種開放式的價值傳遞協議。實際上,區塊鏈是一個由使用密碼學方法相關聯產生的數據塊構成的弱中心化的資料庫,任何發生在此區塊鏈網路上的交易,均會以約定的演算法記錄到區塊鏈系統上。所有節點都保存一份完整的數據備份,包含自該區塊鏈系統形成以來的所有交易記錄。區塊鏈由一個個區塊組成。區塊是區塊鏈的基本存儲單元,記錄了10 分鍾內各節點的全部交易信息。每一個數據區塊中包含一次交易信息,用於驗證信息的有效性,並為下一個區塊的生成做准備。區塊由三部分組成:本區塊的地址、交易單和前一個區塊的地址。當區塊鏈上一個節點發起一筆交易時,該節點需要將信息向其他節點進行公告。該節點用私鑰加密信息,從而可有效防止信息偽造。由於了解 歷史 交易信息,收到信息的節點利用備份信息能夠判斷交易是否真實。各節點驗證成功後,將最後一個區塊的地址與交易信息結合,形成一個新區塊,並打上時間戳(Timestamp)連接到區塊鏈上,完成交易的全過程。由於每個區塊都擁有前一個區塊的地址,人們可以通過後一區塊地址找到前一區塊,直至初始區塊。因此,區塊鏈就是由根據時間順序相連接的區塊構成的完整交易信息鏈條。

(三)區塊鏈的特點

區塊鏈是一個全新的資料庫系統,具有弱中心化、不可篡改、包容性等特點。其中,弱中心化、不可篡改是區塊鏈技術區別於傳統技術的核心特徵。這兩個特徵使得由區塊鏈技術構建的系統能夠通過系統機制設置,實現「自信任」。

1. 弱中心化。區塊鏈系統的每個節點都保存著一份完整數據備份,能夠有效預防中央伺服器發生故障而導致的網路癱瘓和數據丟失,以及黑客對單個節點的惡意攻擊,從而保證數據的安全。除非有人能同時控制系統中超過51% 的節點,否則對於單個節點的攻擊不能影響其他節點數據的內容。

2. 不可篡改。區塊鏈系統是一個公共的總賬本,系統全部數據都公開、透明地記錄在該賬本上。所有數據通過網路共識演算法記錄,每筆基於區塊鏈交易的新信息都會向全網發布,經各個節點逐一確認、保存後,將收到的交易信息形成新區塊,確保區塊鏈系統信息不可篡改、無法作假、可以追溯。同時,區塊鏈技術使用隨機散列演算法和時間戳技術,節點在驗證時會蓋上時間戳,提供交易時間證明,保證同筆交易的唯一性。如果要修改某個區塊的交易信息,必須要完成該區塊及之後區塊的所有信息。由於修改後會造成哈希值與原來的哈希值不同,無法通過其他節點確認,將使得修改無效,大大提高了篡改信息的難度。因此,區塊鏈技術可以為交易提供可靠的信用保證。其不可篡改的特性為解決合同沖突提供了有效方案,可以應用於存儲並公證永久性記錄和需要確保信息真實性的領域。如,財產所有權的公證。

3. 包容性。區塊鏈技術以演算法為基礎,摒棄了不同國家文化和經濟差異,使各國機構可以建立統一的信用體系。此外,區塊鏈技術是對外開源和共享的:任何進入區塊鏈的機構和個人,不僅能提交記錄,還能得到完整的系統 歷史 交易記錄,並對信息所有者確權;同時,由於區塊鏈系統運行於互聯網,符合要求的任何機構和個人都能以節點的方式加入該系統。

4.溯源,公開透明。

因為區塊鏈或者說是數字貨幣涉及的知識與比應用比較多,感興趣的朋友可以點關注,我會整理和發布更多的區塊鏈和數字貨幣的知識

B. 比特幣如何算出來的

要想了解bitcoin的技術原理,首先需要了解兩個重要的密碼技術: HASH碼:將一個長字元串轉換成固定長度的字元串,並且其轉換不可逆,即不太可能從HASH碼猜出原字元串。bitcoin協議里使用的主要是SHA256。
公鑰體系:對應一個公鑰和私鑰,在應用中自己保留私鑰,並公開公鑰。當甲向乙傳遞信息時,可使用甲的私鑰加密信息,乙可用甲的公鑰進行解密,這樣可確保第三方無法冒充甲發送信息;同時,甲向乙傳遞信息時,用乙的公鑰加密後發給乙,乙再用自己的私鑰進行解密,這樣可確保第三者無法偷聽兩人之間的通信。最常見的公鑰體系為RSA,但bitcoin協議里使用的是lliptic Curve Digital Signature Algorithm。 和現金、銀行賬戶的區別? bitcoin為電子貨幣,單位為BTC。在這篇文章里也用來指代整個bitcoin系統。 和在銀行開立賬戶一樣,bitcoin里的對應概念為地址。每個人都可以有1個或若干個bitcoin地址,該地址用來付賬和收錢。每個地址都是一串以1開頭的字元串,比如我有兩個bitcoin賬戶,和。一個bitcoin賬戶由一對公鑰和私鑰唯一確定,要保存賬戶,只需要保存好私鑰文件即可。 和銀行賬戶不一樣的地方在於,銀行會保存所有的交易記錄和維護各個賬戶的賬面余額,而bitcoin的交易記錄則由整個P2P網路通過事先約定的協議共同維護。 我的賬戶地址里到底有多少錢? 雖然使用bitcoin的軟體可以看到當前賬戶的余額,但和銀行不一樣,並沒有一個地方維護每個地址的賬面余額。它只能通過所有歷史交易記錄去實時推算賬戶余額。 我如何付賬? 當我從地址A向對方的地址B付賬時,付賬額為e,此時雙方將向各個網路節點公告交易信息,告訴地址A向地址B付賬,付賬額為e。為了防止有第三方偽造該交易信息,該交易信息將使用地址A的私鑰進行加密,此時接受到該交易信息的網路節點可以使用地址A的公鑰進行驗證該交易信息的確由A發出。當然交易軟體會幫我們做這些事情,我們只需要在軟體中輸入相關參數即可。 網路節點後收到交易信息後會做什麼? 這個是整個bitcoin系統里最重要的部分,需要詳細闡述。為了簡單起見,這里只使用目前已經實現的bitcoin協議,在當前版本中,每個網路節點都會通過同步保存所有的交易信息。 歷史上發生過的所有交易信息分為兩類,一類為"驗證過"的交易信息,即已經被驗證過的交易信息,它保存在一連串的「blocks」裡面。每個"block"的信息為前一個"bock"的ID(每個block的ID為該block的HASH碼的HASH碼)和新增的交易信息(參見一個實際的block)。另外一類指那些還"未驗證"的交易信息,上面剛剛付賬的交易信息就屬於此類。 當一個網路節點接收到新的未驗證的交易信息之後(可能不止一條),由於該節點保存了歷史上所有的交易信息,它可以推算中在當時每個地址的賬面余額,從而可以推算出該交易信息是否有效,即付款的賬戶里是否有足夠余額。在剔除掉無效的交易信息後,它首先取出最後一個"block"的ID,然後將這些未驗證的交易信息和該ID組合在一起,再加上一個驗證碼,形成一個新的「block」。 上面構建一個新的block需要大量的計算工作,因為它需要計算驗證碼,使得上面的組合成為一個block,即該block的HASH碼的HASH碼的前若干位為1。目前需要前13位為1(大致如此,不確定具體方式),此意味著如果通過枚舉法生成block的話,平均枚舉次數為16^13次。使用CPU資源生成block被稱為「挖金礦」,因為生產該block將得到一定的獎勵,該獎勵信息已經被包含在這個block裡面。 當一個網路節點生成一個新的block時,它將廣播給其它的網路節點。但這個網路block並不一定會被網路接受,因為有可能有別的網路節點更早生產出了block,只有最早產生的那個block或者後續block最多的那個block有效,其餘block不再作為下一個block的初始block。 對方如何確認支付成功? 當該筆支付信息分發到網路節點後,網路節點開始計算該交易是否有效(即賬戶余額是否足夠支付),並試圖生成包含該筆交易信息的blocks。當累計有6個blocks(1個直接blocks和5個後續blocks)包含該筆交易信息時,該交易信息被認為「驗證過」,從而該交易被正式確認,對方可確認支付成功。 一個可能的問題為,我將地址A裡面的余額都支付給地址B,同時又支付給地址C,如果只驗證單比交易都是有效的。此時,我的作弊的方式為在真相大白之前產生6個僅包括B的block發給B,以及產生6個僅包含C的block發給C。由於我產生block所需要的CPU時間非常長,與全網路相比,我這樣作弊成功的概率微乎其微。 網路節點生產block的動機是什麼? 從上面描述可以看出,為了讓交易信息有效,需要網路節點生成1個和5個後續block包含該交易信息,並且這樣的block生成非常耗費CPU。那怎麼樣讓其它網路節點盡快幫忙生產block呢?答案很簡單,協議規定對生產出block的地址獎勵BTC,以及交易雙方承諾的手續費。目前生產出一個block的獎勵為50BTC,未來每隔四年減半,比如2013年到2016年之間獎勵為25BTC。 交易是匿名的嗎? 是,也不是。所有BITCOIN的交易都是可見的,我們可以查到每個賬戶的所有交易記錄,比如我的。但與銀行貨幣體系不一樣的地方在於,每個人的賬戶本身是匿名的,並且每個人可以開很多個賬戶。總的說來,所謂的匿名性沒有宣稱的那麼好。 但bitcoin用來做黑市交易的還有一個好處,它無法凍結。即便警方追蹤到了某個bitcoin地址,除非根據網路地址追蹤到交易所使用的電腦,否則還是毫無辦法。 如何保證bitcoin不貶值? 一般來說,在交易活動相當的情況下,貨幣的價值反比於貨幣的發行量。不像傳統貨幣市場,央行可以決定貨幣發行量,bitcoin里沒有一個中央的發行機構。只有通過生產block,才能獲得一定數量的BTC貨幣。所以bitcoin貨幣新增量決定於: 1、生產block的速度:bitcoin的協議里規定了生產block的難度固定在平均2016個每兩個星期,大約10分鍾生產一個。CPU速度每18個月速度加倍的摩爾定律,並不會加快生產block的速度。 2、生產block的獎勵數量:目前每生產一個block獎勵50BTC,每四年減半,2013年開始獎勵25BTC,2017年開始獎勵額為12.5BTC。 綜合上面兩個因素,bitcoin貨幣發行速度並不由網路節點中任何單個節點所控制,其協議使得貨幣的存量是事先已知的,並且最高存量只有2100萬BTC

C. 什麼是算力

算力(也稱哈希率)是比特幣網路處理能力的度量單位。即為計算機(CPU)計算哈希函數輸出的速度。比特幣網路必須為了安全目的而進行密集的數學和加密相關操作。 例如,當網路達到10Th/s的哈希率時,意味著它可以每秒進行10萬億次計算。

在通過「挖礦」得到比特幣的過程中,我們需要找到其相應的解m,而對於任何一個六十四位的哈希值,要找到其解m,都沒有固定演算法,只能靠計算機隨機的hash碰撞,而一個挖礦機每秒鍾能做多少次hash碰撞,就是其「算力」的代表,單位寫成hash/s,這就是所謂工作量證明機制POW(Proof Of Work)。

日前,比特幣全網算力已經全面進入P算力時代(1P=1024T,1T=1024G,1G=1024M,1M=1024k),在不斷飆升的算力環境中,P時代的到來意味著比特幣進入了一個新的軍備競賽階段。

算力是衡量在一定的網路消耗下生成新塊的單位的總計算能力。每個硬幣的單個區塊鏈隨生成新的交易塊所需的時間而變化。

D. 比特幣挖礦的難度和算力

難度是對挖礦困難程度的度量,即指:計算符合給定目標的一個HASH值的困難程度。

difficulty = difficulty_1_target / current_target

difficulty_1_target 的長度為256bit, 前32位為0, 後面全部為1 ,一般顯示為HASH值:, difficulty_1_target 表示btc網路最初的目標HASH。 current_target 是當前塊的目標HASH,先經過壓縮然後存儲在區塊中,區塊的HASH值必須小於給定的目標HASH, 區塊才成立。

例如:如果區塊中存儲的壓縮目標HASH為 0x1b0404cb , 那麼未經壓縮的十六進制HASH為

所以,目標HASH為0x1b0404cb時, 難度為:

比特幣的挖礦的過程其實是通過隨機的hash碰撞,找到一個解 nonce ,使得 塊hash 小於 目標HASH 值。 而一個礦機每秒鍾能做多少次hash碰撞, 就是其「算力」的代表, 單位寫成 hash/s 或者 H/s

算力單位:

比特幣系統的難度是動態調整的, 每挖 2016 個塊便會做出一次調整, 調整的依據是前面2016個塊的出塊時間, 如果前一個周期平均出塊時間小於10分鍾,便會加大難度, 大於10分鍾,則減小難度,目的是為了保證系統穩定的每過 10分鍾 產出一個塊,所以難度調整的時間大概是2周(2016 * 10 分鍾)

全網算力是btc網路中參與競爭挖礦的所有礦機的算力總和。當前難度周期全網算力會影響下一個周期的難度調整, 如果全網算力增加,挖礦難度增大,單台礦機固定時間的產出就會減少。目前全網算力大概是24.42EH/s, 一台螞蟻S9礦機的算力大概是14TH/s

那麼, 已知當前全網算力,下一個周期難度將如何調整呢?

根據公式:

因為出塊時間要穩定在10分鍾, 也就是600s:

那麼,在3.46e+12的難度下, 一台算力為14TH/s的礦機平均要花多長時間才能出一個塊呢?

根據公式:

有:

結果大概是12270天

E. 比特幣機制研究

現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。

假設網路中有A, B ,C三個人。
A付給B 1比特幣 ,B付給C 2比特幣 ,C付給A 3比特幣
如下圖所示:

為了刺激比特幣系統中的用戶進行記賬,記賬是有獎勵的。獎勵來源主要有兩方面:

比特幣中每一筆交易都會有手續費,手續費會給記賬者

記賬會有打包區塊的獎勵,中本聰在08年設計的方案是: 每10分鍾打一個包,每打一個包獎勵50個比特幣,每4年單次打包的獎勵數減半,即4年後每打一個包獎勵25個比特幣,再過四年後就獎勵12.5個比特幣... 這樣我們其實可以算出比特幣的總量:

要說明打包的記錄以誰為準的問題,我們需要引入一個知名的 拜占庭將軍問題 (Byzantine failures)。拜占庭將軍問題是由萊斯利·蘭伯特提出的點對點通信中的基本問題。含義是在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。

假設有9個互相遠離的將軍包圍了拜占庭帝國,除非有5個及以上的將軍一起攻打,拜占庭帝國才能被打下來。而這9個將軍之間是互不信任的,他們並不知道這其中是否有叛徒,那麼如何通過遠距離協商來讓他們贏取戰斗呢?

口頭協議有3個默認規則:
1.每個信息都能夠被准確接收
2.接收者知道是誰發送給他的
3.誰沒有發送消息大家都知道
4.接受者不知道轉發信息的轉發者是誰
將軍們遵循口頭規則的話,那就是下面的場景:將軍1對其他8個將軍發送了信息,然後將軍2~9將消息進行轉達(廣播),每個將軍都是消息的接受者和轉發者,這樣一輪下來,總共就會有9×8=72次發送。這樣將軍就可以根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要大部分將軍同意攻打拜占庭,自己就去行動。
這個方案有很多缺點:
1.首先是發送量大,9個將軍之間要發送72次,隨著節點數的增加,工作量呈現幾何增長。
2.再者是無法找出誰是叛徒,因為是口頭協議,接受者不知道轉發信息的轉發者是誰,每個將軍手裡的數據僅僅只是一個數量的對比:

這里我們假設有3個叛徒,在一種最極端的情況下即叛徒轉發信息時總是篡改為「不進攻」,那麼我們最壞的結果就如上圖所示。將軍1根據手裡的信息可以推出要進攻的結論,卻無法獲知將軍裡面誰是叛徒。
這樣我們就有了方案二:書面協議。

書面協議即將軍在接受到信息後可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。
有了書面協議,那麼將軍1手裡的信息就是這樣的:

可以很明顯得看出,在最壞的一種情況——叛徒總是轉發「不進攻」的消息之下,將軍7、8、9是團隊里的叛徒。
這個方案解決了口頭協議里歷史信息不可追溯的問題,但是在發送量方面並沒有做到任何改進。

在我們的示例中,比特幣系統里的每個用戶發起了一筆交易,都會通過自己的私鑰進行簽名,用數學公式表示就是:

所以之前的區塊就變成了這樣:

這樣每一筆交易都由交易發起者通過私鑰進行數字簽名,由於私鑰是不公開的,所以交易信息也就無法被偽造了。

如書面協議末尾所說的那樣,書面協議未能解決信息交流過多的問題。當比特幣系統中存在上千萬節點的時候,如果要互相廣播驗證,請求響應的次數那將是一個非常龐大的數字,顯然勢必會造成網路擁堵、節點處理變慢。為了解決這個問題,中本聰乾脆讓整個10分鍾出一個區塊,這個區塊由誰來打包發出呢?這里就採用了工作量證明機制(PoW)。工作量證明,說白了就是解一個數學題,誰先解出來數學題,誰就能有打包區塊的權力。換在拜占庭將軍的例子中就是,誰先做出數學題,誰就成為將軍們裡面的總司令,其他將軍聽從他發號的命令。

首先,礦工會將區塊頭所佔用的128位元組的字元串進行兩次sha256求值,即:

這樣求得一個值Hash,將其與目標值相比對,如果符合條件,則視為工作量證明成功。
工作量證明成功的條件寫在了區塊鏈頭部的 難度數 欄位,它要求了最後進行兩次sha256運算的Hash值必須小於定下的目標值;如果不是的話,那就改變區塊頭的 隨機數 (nonce),通過一次次地重復計算檢驗,直到符合條件為止。

此外, 比特幣有自己的一套難度控制系統,使得比特幣系統要在全網不同的算力條件下,都保持10分鍾生成一個區塊的速率。這也就意味著:難度值必須根據全網算力的變化進行調整。難度調整的策略是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鍾即兩周,是按每10分鍾一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。

PoW其實在比特幣中是做了以下的三件事情。

這樣可以防止一台高性能機器同時跑上萬個節點,因為每完成一個工作都要有足夠的算力。

有經濟獎勵就會加速整個系統的去中心化,也鼓勵大家不要去作惡,要積極地按照協議本來的執行方式去執行。(所以說,無幣區塊鏈其實是不可行的,無幣區塊鏈一定導致中心化。)

也就是說,每個節點都不能以自身硬體條件去控制出快速度。現在的比特幣上平均10分鍾出一個塊,性能再好的機器也無法打破這個規則,這就能夠保證 區塊鏈是可以收斂到共同的主鏈上的 ,也就是我們所說的共識。

綜上,共識只是PoW三個作用中的一點,事實上PoW設計的作用有點至少有這么三種。

默克爾樹的概念其實很簡單,如圖所示

這樣,我們區塊的結構就大致完整了,這里分成了區塊頭和區塊體兩部分。

區塊鏈的每個節點,都保存著區塊鏈從創世到現在的每一區塊,即每一筆交易都被保存在節點上,現在已經有幾百個GB了。
每當比特幣系統中有一筆新的交易生成,就會將新交易廣播到所有的節點。每個節點都把新交易收集起來,並生成對應的默克爾根,拼接完區塊頭後,就開始調整區塊頭里的隨機數值,然後就開始算數學題

將算出的result和網路中的目標值進行比對,如果是結果是小於的話,就全網廣播答案。其他礦工收到了這個信息後,就會立馬放下手裡的運算,開始下一個區塊的計算。
舉個例子,當前A節點在挖38936個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第38936個區塊(前一個區塊為38935)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
整個流程就像下一張圖所展示的這樣:

簡單來說,雙花問題是一筆錢重復花了兩次。具體來講,雙花問題可分為兩種情況:
1.同一筆錢被多次使用;
2.一筆錢只被使用過一次,但是通過黑客攻擊或造假等方式,將這筆錢復制了一份,再次使用。
在我們生活的數字系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,為了解決雙花問題,日常生活中是依賴於第三方的信任機構的。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統,比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。

UTXO的英文全稱是 unspent transaction outputs ,意為 未使用的交易輸出 。UTXO是一種有別於傳統記賬方式的新的記賬模型。
銀行里傳統的記賬方式是基於賬戶的,主要是記錄某個用戶的賬戶余額。而UTXO的交易方式,是基於交易本身的,甚至沒有賬戶的概念。在UTXO的記賬機制里,除了貨幣發行外,所有的資金來源都必須來自於前面某一個或幾個交易。任何一筆的交易總量必須等於交易輸出總量。UTXO的記賬機制使得比特幣網路中的每一筆轉賬,都能夠追溯到它前面一筆交易。
比特幣的挖礦節點獲得新區塊的挖礦獎勵,比如 12.5 個比特幣,這時,它的錢包地址得到的就是一個 UTXO,即這個新區塊的幣基交易(也稱創幣交易)的輸出。幣基交易是一個特殊的交易,它沒有輸入,只有輸出。
當甲要把一筆比特幣轉給乙時,這個過程是把甲的錢包地址中之前的一個 UTXO,用私鑰進行簽名,發送到乙的地址。這個過程是一個新的交易,而乙得到的是一個新的 UTXO。
這就是為什麼有人說在這個世界上根本沒有比特幣,只有 UTXO,你的地址中的比特幣是指沒花掉的交易輸出。
以Alice向Bob進行轉賬的過程舉例的話:

UTXO 與我們熟悉的賬戶概念的差別很大。我們日常接觸最多的是賬戶,比如,我在銀行開設一個賬戶,賬戶里的余額就是我的錢。
但在比特幣網路中沒有賬戶的概念,你可以有多個錢包地址,每個錢包地址中都有著多個 UTXO,你的錢是所有這些地址中的 UTXO 加起來的總和。
中本聰發明比特幣的目標是創建一個點對點的電子現金,UTXO 的設計正可以看成是借鑒了現金的思路:我們可能在這個口袋裡裝點現金,在那個櫃子角落裡放點現金,在這種情況下不存在一個賬戶,你放在各處的現金加起來就是你所有的錢。
採用 UTXO 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:

F. 天天說挖礦,比特幣挖礦流程概述。

通俗易懂的大概流程

如果你之前對挖礦根本沒有了解,這段介紹就適合你閱讀,進入狀態後再進行更深層次的學習。

其實通俗來講原理很簡單,比特幣作為一種點對點的電子貨幣體系,挖礦的過程就是一個紀錄數據的過程,因為整個系統是開放的,人人可參與的,所以人人都可以進行挖礦,雖然理論上人人都可以參與,但無利不起早沒有人會平白無故的參與到網路的建設中,中本聰就利用Hash函數設計了一種激勵和競爭方式。

大家都進行數據的處理工作,誰處理的又快又准確,誰就獲得記賬權,同時獲得該區塊的獎勵。既有獎勵又有競爭才使得比特幣網路得以正常運轉。

想要競爭成功就要經歷幾個基本的流程。

一、首先你要將沒有被記錄的交易信息檢查並歸集到一個數據塊中。

二、數據塊打包好後,進行哈希運算,算出哈希值,哈希值這個概念在昨天文章中已經詳細的介紹過。

三、算出哈希值後進行全網廣播,其他礦工接收到後進行驗證,驗證沒有問題就會將這一個數據塊連接到整個區塊鏈上,就可以獲得這個區塊的獎勵了。

大致過程了解後就可以開始詳細的了解整個過程了。

開始挖礦前的准備工作

這里所說的准備,可不是讓你准備買礦機或者給礦機通電,說的是在進行POW工作量證明之前記賬節點所作的准備工作。也就是前面流程的第一步的具體解釋。

想要收集齊全交易信息,第一步就是收集廣播中還沒有被記錄賬本的原始交易信息。收集完成後就要自己先進行驗證,主要驗證兩個方面,1.每個交易信息中的付款地址有沒有足夠付款的余額。2.驗證交易是否有正確的簽名。這兩項必不可少,通俗一點就是你給別人打錢銀行需要確認的就是兩點,你賬號里到底有沒有那麼多錢,是不是你本人或本人同意的行為。

這兩項驗證完後就可以將驗證好的數據進行打包,打包完成後當然沒有完,因為還有對於礦工來說最最重要的 一 步,添加一個獎勵交易,寫一個給自己地址增加6.25枚比特幣的交易。

如果你競爭成功,那麼你的賬戶地址內就會增加6.25枚比特幣,在這里也順便提一下減半,最開始一個區塊的記賬獎勵是50個比特幣,比特幣大概每4年獎勵就進行減半,前一段時間的減半過後比特幣一個區塊的獎勵已經變成了6.25枚。

值得一提的是前兩次減半後都伴隨著牛市的來臨,現在第三次減半已過,在之後會有什麼樣的變化呢?

准備工作完成後就要正式的爭奪了

因為10分鍾左右就一個記賬的名額,在這個階段全世界的礦工,都進行著一場沒有硝煙的戰爭。

那這場仗怎麼打呢?其實就是計算Hash函數,礦工算力的比拼,所以說在比特幣網路哪裡都離不開Hash函數。為了保證在10分鍾只有一個人能夠成功,這個哈希函數的難度必須適當。直接哈希難度過低,所以規定Hash出的結果必須以若干個0構成。

可能直接這么說開頭若干個0還沒有什麼難度概念,那就簡單分析一下,進行這樣的計算有多難 , 也就順便可以解釋為什麼單打獨斗的礦工已經不吃香了。

Hash值跟平常我們設置的密碼要求相似,是由數字、字母組成,其中字母區分大小寫。也就是說每一位都有62種可能,哈希運算本質就是試錯,相當於給你一個不限出錯次數的手機讓你開鎖一樣 。 而比特幣的哈希值是以18個0開頭的,理論上需要進行62的18次方,這個數字在普通計算器上都是以科學計數法顯示的,結果為1.832527122*10的32次方。

指數爆炸式的運算次數增長保證了其挖礦的難度。同時也因為難度大帶來了一些爭議,有人就會說耗費那麼大卻不產生價值,之前挖礦還在一份意見徵集稿中放到了落後產能里。可以說對於挖礦行業的爭議是一直存在的。

最後一步驗證

找到哈希值後,進行廣播打包區塊,網路節點就會進行驗證。

情況無非就是兩種,一種是驗證通過,那麼表明這個區塊成功挖出,其他礦工就不再競爭,選擇接受這個區塊,將這個區塊進行記錄,挖出這個區塊的礦工就獲得了該區塊的獎勵,並且進入下一個區塊的競爭。

另外一種就是不通過,那麼前面的那些工作都白費了,投入的成本就沒有辦法收回,所以礦工們都自覺的遵守著打包和驗證的規則,因為作惡成本較高,也就維護了比特幣網路的安全。

相信你讀完文章已經大致了解了比特幣挖礦的整個流程,不過挖礦實際操作起來又是另一個概念了,其中什麼時候適合進場挖礦、入手什麼樣的礦機進行挖礦、通過什麼樣的方式參與挖礦都是有一定學問的。

挖礦有風險投資需謹慎呀,搞懂再行動,沒搞懂之前就要多學習。

G. 誰知道比特幣是什麼它是怎麼運作的

比特幣是一種P2P形式的虛擬的加密數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。與所有的貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生。

比特幣及其眾多衍生品被稱為加密貨幣。 該系統使用了加密技術來生成新幣,以及進行轉帳驗證。 加密序列有以下幾個目的:使交易幾乎不可能被偽造;使貨幣銀行或貨幣錢包可作為數據輕松轉移;驗證比特幣從一個用戶轉移到另一個用戶。

在比特幣被使用之前,必須先由系統生成或挖礦得到新幣。 這些區塊的編碼和解碼過程需要大量的算力,那些成功生成新區塊的用戶將獲得一些比特幣或一部分交易費用作為獎勵。

這樣一來,將比特幣從一位用戶轉移到另一位用戶的同樣過程中,在同等基礎上也為貢獻給比特幣網路的更多算力創造了需求,從而生成出可供使用的新幣。

(7)比特幣hash過程擴展閱讀:

比特幣的作用

比特幣就像現實中的金幣一樣:它們具有價值,也可以像金幣一樣用於交易。 可以透過比特幣進行投資——買入加密貨幣並從其價格波動中獲利。 每天都有新的地方將比特幣列入支付方式。

比特幣沒有一個正式價格。 比特幣的價格是根據人們願意支付的價格來確定的。比特幣的價格通常以一枚比特幣的花費來表示。 但是,交易所一般會允許以任何金額購買,即可以購買少於一枚比特幣。 Libertex 的價格指數就是即時查看比特幣價格的優質資源。

參考資料來源:網路-比特幣

閱讀全文

與比特幣hash過程相關的資料

熱點內容
比比特幣還安全的幣 瀏覽:731
比特幣挖礦可以縮小范圍嗎 瀏覽:607
虛擬貨幣的發行量是什麼 瀏覽:732
以太坊交易手續費變化 瀏覽:563
ETE數字貨幣無法提現 瀏覽:833
比特幣中國怎麼添加礦工 瀏覽:80
比特幣停止顯卡價格 瀏覽:892
灰度以太坊持倉查詢 瀏覽:192
算力1hs等於多少 瀏覽:476
比特幣的官方交易網站 瀏覽:500
現在btc怎麼提現 瀏覽:697
德國為什麼承認比特幣 瀏覽:218
很久以前挖的比特幣會消失嗎 瀏覽:18
btcbcc幣 瀏覽:840
比特幣加盟到幣網 瀏覽:854
在哪可以買以太坊礦機 瀏覽:953
lme數字貨幣百度百科 瀏覽:780
支持數字貨幣的外匯平台 瀏覽:576
比特幣地址瀏覽 瀏覽:157
3070到60算力怎麼超顯存 瀏覽:224