文章閱讀頁通欄

河南22选5好运3复试:為什么比特幣需要工作量證明

來源: 區塊網 作者:
2008年10月31日,中本聰(Satoshi)發表了《比特幣——一種點對點電子現金系統》白皮書,這是革命性貨幣體系的組成部分,也是比特幣的規范協議。 ......
2008年10月31日,中本聰(Satoshi)發表了《比特幣——一種點對點電子現金系統》白皮書,這是革命性貨幣體系的組成部分,也是比特幣的規范協議。
2009年1月3日,隨著Satoshi發表了第一個實現該論文的Block# 0 Genesis Block,該白皮書開始生效。這些代碼大部分是用c++編寫的,并且是開源的,可以在github上找到。

比特幣是什么?

比特幣建立在區塊鏈系統之上,純粹的點對點電子現金系統將允許直接從一方發送到另一方的在線支付,而無需經過金融機構。

為什么是點對點?

節點是運行比特幣軟件(比特幣客戶機)的計算機。節點連接到其他計算機以創建網絡。每個節點都相互連接,所以形成了一個網絡,每個節點都是對等的。節點之間相互通信,傳遞關于n/w其他部分的信息。

所以現在我們有了一組運行比特幣軟件的節點,這些節點連接在一起形成一個比特幣n/w。讓我們舉個例子。Alice想通過Bob的比特幣錢包發送5比特幣,這個錢包創建了一個交易,并將其插入比特幣的n/w節點。網絡上的每個節點執行3個功能:

1. 遵循一套用比特幣客戶端軟件編寫的規則。如:檢查這個人是否有足夠的余額來消費,如果是,則接受該交易,如果沒有拒絕,則將其傳遞給其他節點。因此,只有有效的交易才會被代理。
2. 擅自進行交易。有兩種類型的交易是主動的—最近進入網絡的新交易,已確認的交易,這些交易以塊的形式共享,而不是單獨的
3. 將已確認的交易追加到其區塊鏈。

什么是區塊鏈?

區塊鏈可以看作是可以存儲為一個平面文件或一個簡單的數據庫塊鏈。例如,比特幣的核心客戶將區塊鏈存儲在谷歌的一級數據庫。區塊鏈的特性:

1. 區塊鏈是一個鏈表數據結構。每個節點都有數據(塊,稍后我們將看到每個塊是什么)和指向前一個塊哈希的鏈接。因此,每個節點都與之前的節點進行了隱式鏈接,使得每個節點不可變,篡改會破壞鏈。

河南22选5第202期开奖 www.lyedr.com 2. 去中心化。區塊鏈的副本存在于網絡中的所有節點上,就像公共分類賬一樣。區塊鏈就像比特幣對點網絡上的BitTorrent文件一樣可以共享。 


挖礦目的

n/w上的每個節點都有一個內存池,一個臨時存儲緩沖區。每個節點還有一個本地存儲到節點的區塊鏈。當節點從其他節點接收到交易時,它將驗證該交易并將其添加到內存池中。最終目標是創建一個包含這些交易的塊,驗證它們并將其添加到區塊鏈上。一旦交易被添加到區塊鏈中,它們就會被“確認”,這就允許比特幣的新主人使用他們在這些交易中收到的比特幣。

誰創建了塊,誰將交易添加到塊中——“礦工”。比特幣n/w中的任何節點都可以成為礦工。

1. 挖礦用于確保不使用欺詐性交易。例如雙重支出問題。
2. 挖礦會產生新的比特幣,如果有新的區塊,就會產生新的比特幣,就像央行印新錢一樣。比特幣的數量是固定的,并隨著時間的推移而遞減。(這是用比特幣協議寫的)??蠊ぬ峁┍忍乇襫/w的處理能力,作為回報。

添加到內存池中的交易將等待挖掘程序拾取??蠊ご唇ㄒ桓魴驢?,將內存池中的部分或全部交易(基于優先級)添加到這個新的候選塊中,并與其他礦工競爭,以解決一個基于加密哈希算法的數學難題。這個“工作量證明”問題的解決方案包含在塊中,它可以作為采礦者花費了大量計算工作的證明。第一個解決該問題的礦工將獲得獎勵,驗證塊將被添加到區塊鏈中。采礦者可以從采礦中獲得兩種獎勵——創造新代幣并給予采礦者交易費。

新代幣的產生是固定的,并在不斷減少,2009年開始是50比特幣,2012年減半至25比特幣,2016年減半至12.5比特幣,大約每四年減少一次。預計每10分鐘開采一個新區塊。比特幣軟件對比特幣總量有一個最高限額,即2100萬比特幣。所以到2140年左右,所有的比特幣都將發行,之后不會再發行新的比特幣??蠊ぶ荒艽詠灰追閻謝窶?。

比特幣區塊鏈中的塊是什么?

礦工創建的每個新塊都有一個頭塊和一個主塊。所有選定的交易都添加到主塊中。

1. 上一個塊哈希。
2. 時間戳,創建此塊的日期/時間。
3. 難度目標,為使塊生成時間保持在10分鐘以內,難度目標是一個可以自行調整的動態值。
4. Nonce,一個初始化為0的計數器(稍后我們將看到它是什么)
5. Merkle root hash, Merkle tree是一種數據結構,用于有效地總結塊中的所有交易。(我們將在接下來的博客中看到merkle樹是什么以及它是如何構建的)。

挖礦過程

它使用SHA-256哈希函數。

挖掘的是塊頭的哈希,反復更改一個參數(nonce),直到得到的哈希小于或等于一個特定的目標。

什么是難度目標?

為了使塊生成時間保持在10分鐘,難度會相應地進行調整。如果n/w查找塊的速度超過10分鐘,則難度增加,如果塊的查找速度較慢,則難度降低。您可以在power .cpp中的github上的reference erence實現中找到設置當前難度的代碼。

工作量證明算法如何工作?

挖掘器負責構造一個充滿交易的候選塊,哈??橥芬圓榭此欠裥∮諢虻扔詰鼻澳勘?,如果不是,則修改nonce(通常遞增1),然后重試,直到找到解決方案。挖掘需要大量的計算能力,因此現在節點使用ASIC硬件,其中100 -1000秒的集成電路并行運行SHA-256 algo。一旦找到一個解決方案,用于解決這個問題的nonce就被插入到塊中的nonce字段中,節點立即將這個塊傳輸給它的所有對等節點。它們接收、驗證(驗證規則可以在CheckBlock和checkblockheader文件中找到)并生成新塊。當節點在網絡周圍波動時,每個節點將其添加到自己的區塊鏈中,并將其擴展到一個新的高度。

因此挖掘就是在這個塊上創建新的塊,聚集和添加的新交易,在這個塊之上運行算法的證明可以找到這個問題的答案,通過投資計算能力和預期回報(新生成的比特幣和交易費用)宣傳這一塊。

為什么使用工作量證明算法?

工作量證明基本上確保了礦工不作弊,他們負責比特幣的生成和創建新的區塊添加到區塊鏈。

我們無法相信網絡中的每個人都是誠實的,因此,我們如何確??蠊げ換嵬ü誶櫓刑砑詠灰?、給自己帶來比特幣,來創建對自己有利的區塊。它的工作原理是,你讓一群人都試著猜這道數學題的答案,沒有人知道誰會先得到正確的答案。首先得到正確答案的人將獲得獎勵,但前提是所有其他礦工同意接受該交易記錄(如果某個礦工明顯在創建欺詐性交易,那么其他礦工可以集體拒絕接受他們的貢獻)。這就是為什么創建一個新塊的過程被設計成能源密集型的原因,因此,創建每個新塊都有相關的成本。這就阻止了礦工們簡單地創造出一大堆新的欺詐性區塊,并寄希望于這些區塊可能會被接受,因為這樣做的成本抵消了潛在的回報。如果要求每臺計算機在發送每封郵件之前花一分鐘處理PoW問題,那么只有真正有消息的人才會同意花時間?;ǚ巖環種擁牡縋允奔潿砸桓鋈死此凳欠淺5偷某殺?,但是一個正在發送1000萬封垃圾郵件的人卻等不起1000萬分鐘。所以回到比特幣上來看,每一個礦工解決每一個區塊的機會是非常小的,因為解決這些區塊需要花費大量的努力,他們不能只是用解決方案向網絡發送垃圾郵件。這意味著只有當他們的貢獻被網絡接受時,他們才會被激勵去付出努力。
關鍵詞: 比特幣  工作量證明  
0/300
?