當前位置:首頁 » 比特幣問答 » 比特幣sha256

比特幣sha256

發布時間: 2023-07-31 04:36:24

比特幣演算法原理

比特幣演算法主要有兩種,分別是橢圓曲線數字簽名演算法和SHA256哈希演算法。

橢圓曲線數字簽名演算法主要運用在比特幣公鑰和私鑰的生成過程中,該演算法是構成比特幣系統的基石。SHA-256哈希演算法主要是運用在比特幣的工作量證明機制中。

比特幣產生的原理是經過復雜的運演算法產生的特解,挖礦就是尋找特解的過程。不過比特幣的總數量只有2100萬個,而且隨著比特幣不斷被挖掘,越往後產生比特幣的難度會增加,可能獲得比特幣的成本要比比特幣本身的價格高。

比特幣的區塊由區塊頭及該區塊所包含的交易列表組成,區塊頭的大小為80位元組,由4位元組的版本號、32位元組的上一個區塊的散列值、32位元組的 Merkle Root Hash、4位元組的時間戳(當前時間)、4位元組的當前難度值、4位元組的隨機數組成。擁有80位元組固定長度的區塊頭,就是用於比特幣工作量證明的輸入字元串。不停的變更區塊頭中的隨機數即 nonce 的數值,並對每次變更後的的區塊頭做雙重 SHA256運算,將結果值與當前網路的目標值做對比,如果小於目標值,則解題成功,工作量證明完成。

比特幣的本質其實是一堆復雜演算法所生成的一組方程組的特解(該解具有唯一性)。比特幣是世界上第一種分布式的虛擬貨幣,其沒有特定的發行中心,比特幣的網路由所有用戶構成,因為沒有中心的存在能夠保證了數據的安全性。

㈡ 虛擬貨幣有哪些

除了比特幣之外,虛擬世界還存在很多別的虛擬貨幣。

Litecoin

Litecoin(LTC)發布於2011年10月7日,是目前市值最高的山寨幣,約為 BTC 市值的2%。目前單價為2.31美元,總幣值 3800 萬美元。

這同樣是一種分布式(去中心化)的數字貨幣。不同於比特幣使用的 SHA256 挖礦演算法,LTC 採用 scrypt 演算法。獨特的演算法也是從山寨幣中脫穎而出的關鍵,scrypt 演算法使用 SHA256 作為其子程序,而 scrypt 自身需要大量的內存,每個散列作為輸入的種子使用的,然後與需要大量的內存存儲另一種子偽隨機序列,共同生成序列的偽隨機點而輸出哈希值。在 BTC(Bitcoin)的開采依靠單純的顯卡挖礦已經力不從心(利用一般配置顯卡挖到一個 BTC 大概需要十幾到數十天),各種價格不菲挖礦機的出現提高了普通人通過挖礦獲得 BTC 的門檻,而 LTC 在使用 PC 顯卡挖礦上具有一定優勢。(本段來源於知乎。)

Litecoin 對比 BTC 在技術上做了一點的改進,如果現在 BTC 是金,那 LTC 暫時是銀。

Litecoin 的最大優點是能更快確認真偽,該虛擬貨幣由 Charles Lee 設計和維護。比特幣的交易需要驗證,驗證的時間平均在10分鍾以上,大多數交易網站驗證需要1個小時。Litecoin 交易確認平均為2.5分鍾,開發者聲稱縮短驗證增加了虛擬貨幣的實用性。定製機器和 AMD GPU 的比特幣采礦效率最高,令使用 CPU 采礦的礦工幾乎無利可圖。Litecoin 的采礦排除了 GPU 和定製處理器,因此不過於依賴少量專業礦工。

PPCoin

PPCoin(PPC) 發布於2012年8月19,在 BTC 原有技術上有所提升。使用 proof-of-stake,並加入 coin age 概念。

PPCoin 是 Bitcoin 的分叉項目,目標是實現能源效率,並盡可能保持原 Bitcoin 的最好性能。PPCoin 單價0.22美元,總幣值 400 萬美元。

PPCoin 沒有一個固定的貨幣供應量上限,但這並不意味著 PPCoin 比 Bitcoin 有明顯通脹。可以將 Bitcoin 比做黃金,黃金每年的通脹是1-3%左右,雖然黃金並沒有已知的貨幣供應量上限,但我們仍知道它是可靠的稀缺品。

PPCoin 的鑄造有兩種類型,工作證明及股權證明。工作證明的鑄幣率受摩爾定律影響,這取決於我們的工作證明能力的成倍增長。而大家都知道的是摩爾定律最終會結束,到那時通脹的 PPCoin 可能已經接近黃金的水平。而股權證明鑄造每年最多通脹 1%。與此同時,PPCoin 的交易費用被銷毀以抗衡通脹。所以整體來說, PPCoin 的鑄幣設計仍是未來一個非常低的通脹設計,可以達到和 Bitcoin 相媲美的程度。

PPCoin 的獎勵方式類似彩票,會根據礦工持有的 PPCoin 數量決定獲勝幾率,創始人之一的 Sunny King 說,他們的設計是基於長期能量效率的新概念。

Terracoin

Terracoin(TRC)發布於2012年10月26,總幣量 4200 萬。每塊速度為2分鍾,比 LTC 稍快一些。技術上沒有太多特別之處,類似 BTC 每4年產量減半。

不過運營團隊似乎有較強商業背景,可能會在流通上優於其他比特幣。虛擬貨幣現在的發展越來越得到重視,現在一些有商業背景的團隊進入,會加速虛擬貨幣的發展。

Namecoin

Namecoin 是一個基於比特幣技術的分布式域名系統,其原理和 Bitcoin 一樣, 這個開源軟體首次發布的日期是2011年4月18日。

Namecoin 產生於一個不同於 Bitcoin 主交易區塊的起源塊, 使用一個新的區塊鏈(blockchain),獨立於 Bitcoin 的區塊鏈之外,因為是基於 Bitcoin,域名的安全性, 分布性, 魯棒性, 加密性, 遷移都有數學保證。可以用挖 Bitcoin 的方式,同時挖 Namecoin。

這個項目由 bitdns 討論並提出,主要是對目前 DNS 的缺陷不滿。Namecoin 惟一的頂級域名是 .bit, 注冊 .bit 域名需要花費 Namecoin。

另外,什麼q幣,盛大幣,起點幣,各種網路游戲幣等也是虛擬貨幣。

㈢ 即使美國也「殺不死」比特幣

這篇文章的題目只是為了「報復」。

報復,3年前,美國的彭博社發的一篇《即使中國也殺不死比特幣》(Even China Can't Kill Bitcoin) 。那篇文章,把中國政府2017年規範金融市場、關閉加密貨幣交易的行為,看成是中國政府要「殺死」比特幣;把中國與土耳其、委內瑞拉、俄羅斯相提並論,一道列為對比特幣不友好的國家。但是,不友好與「殺死」是有天壤之別的,為什麼要用「殺」(kill)這種字眼呢?

2017年2月24日,彭博社《即使中國也殺不死比特幣》網路截圖

很顯然,這是在誇大其詞。所以,為了表達中國民間的不滿,我要用「即使美國也殺不死比特幣」做標題,來進行報復。

上一篇《比特幣「泡沫」11年不破的秘密!》,通過最新的學術研究,我們知道是因為比特幣累積了足夠的信任才走到今天的;我們還知道,這些 信任主要來自一種比特幣的屬性「不可更改」(immutability) 。一旦,比特幣變得可以更改了,那麼比特幣也就完蛋了。也就是說,如果美國想殺死比特幣,只需要殺死這個「屬性」就夠了。

問題一下子就變得簡單了。因為,美國政府是有辦法讓比特幣變得可以更改的,甚至完全不一樣的;又因為,比特幣有個重要前提:比特幣區塊鏈只認最長的那個區塊鏈,誰挖出的鏈最長、又合法,誰就會成為合法的比特幣。所以,如果, 美國政府,只要匯集足夠的算力,生成了最長的比特幣區塊鏈,那麼,美國政府也就完全控制了比特幣,從而將比特幣玩弄於股掌之間,讓比特幣生不如死。 而且,在控制了記賬權後,美國政府 不但可以獲得所有的區塊獎勵,而且還可以決定哪一筆交易記入區塊鏈,哪一筆不記入

現在你知道了,美國政府要想控制比特幣,唯一要做的就是——通過算力競賽獲得記賬權。你可能再想,算力競賽比的是什麼呢?比較復雜,一句話、兩句話說不清楚。你就當那個比賽,是地球上最公平的 游戲 ,大家機會均等,唯一比拼的,也就是算力,誰的算力大,誰就能贏,不會有例外。

當然,開展行動之前,美國政府會首先了解的是比特幣全網當前的算力,到底有多大?

為了便於理解下面的內容,需要先講一下什麼是算力。算力,是用計算機每秒可以運算SHA256哈希函數的次數來表達的,英文是hashrate。當前的最大單位是EH/s,表示1*10^18,1後面有18個0。

2016年2月2日,比特幣的全網算力,也就是所有礦池的運算能力加起來,達到了1EH/s,此後一直處於增長過程中。

這樣的算力到底有多強大呢?在2017年的時候,有人將比特幣的算力與全球前100的超級計算機進行了比較。答案是: 100台超級計算機的算力都達不到比特幣網路算力的十萬分之一 。 不過,你千萬不要以為,我們可以不要超級計算機了,有礦機就可以了。因為,礦機是專門用於SHA-256運算的,是專門設計的專用計算機,只可以用來挖礦,其他的什麼也幹不了。而超級計算機是通用計算機,可以干各種事情。請記住SHA-256,它在比特幣中的地位非同小可,後面我們專門講。

2017年6月比特幣網路與Top100台超級計算機算力比較

你也許會想,現在5年過去了,這樣的狀況是否會有所改變呢?很遺憾,沒有。

超級計算機的算力,與比特幣全網的算力之間的差距,不是縮小了,而是還在加大。2017年6月,最快的超級計算機的峰值浮點運算次數是125,435.9TFlop/s ;2019年11月,最快的是IBM的Summit,它的理論峰值是200,794.9TFlop/s ,增長2倍都不到。而比特幣網路,2017年6月的時候,算力只有5EH/s;2019年11月達到90EH/s,其算力一下子增加了18倍。

SUMMIT,排名第一的超級計算機,理論峰值200,795 TFlop/s

你可能也注意到了,這里的單位不一樣。一個是TFlop/s ,一個是 EH/s。他們之間存在一種換算關系。一次hash運算,需要12700次浮點運算。換算過程是這樣的,一次哈希計算需要6350次的整點運算,一次整點運算相當於2次浮點運算,6350 乘以 2 等於 12700。 關於Hash運算,是算力競賽找到正確答案的手段。你可以理解為,這是一種比較復雜的計算過程,詳細的後面會專門講。

2020年10月12日,比特幣全網的算力已經達到了140EH/s。從2016年2月達到1EH/s,4年多的時間,比特幣全網的算力居然增加了140倍。

2020年10月12日比特幣全網算力140EH/s

看了上面這些,你還在想用家用電腦挖礦嗎?我勸你徹底打消這樣的念頭。因為,理論上公平的事情,由於算力的懸殊,已經變成實際的不可能了。但是,美國政府不一樣,有的是錢,實在不行就發債。140Eh/s的算力,對於美國政府來說,可能真不是什麼大事。

我們來幫美國政府計算一下,要想實現140EH/s的算力,需要多少錢?下面這張圖片 ,是比特大陸宣傳所說的,當前全網最強的礦機,已經賣光了。其算力達到了110TH/s,價格是2萬多一點。

螞蟻礦機S19 Pro110T

我們先把比特幣的全網算力——140EH/s——換算一下單位,也就是在後面加6個0變成TH/s——140,000,000TH/s。美國要想實現這樣的算力,需要1272728台這種S19 Pro螞蟻礦機,人民幣25,874,560,240元,約259億人民幣,40億美元不到。電費、廠房及其他散熱設施所需要的費用暫時先不算。因為,比特幣挖出來後,還可以換成錢,經濟上問題不大。

不過讓人奇怪的是,比特幣社區對此好像並不緊張。而且,還有一個網站 ,專門把重新生成整個比特幣區塊鏈所需要的時間實時公布了。據他們估算,2020年12月8日早上7:20,誰擁有比特幣全網的算力, 只需要552.65天就可以把比特幣區塊鏈重新生成一次 。另外一個加密貨幣,BCH,用的時間更短,只需要32.67天。看來,美國政府殺死比特幣的可能性正在加大,而且不用500多天,增加礦機的數量就可以了。這樣,讓殺死比特幣的時間,會變得盡可能的短。

實時重寫比特幣、BCH區塊鏈所需天數

那麼,現在,美國政府在有了足夠的算力之後,是否就可以殺死區塊鏈了呢?

答案是:不可能。

因為有 「假定有效塊」( AssumeValid ), 這是比特幣核心(Bitcoin Core)軟體裡面的一個默認參數。

AssumeValid參數有兩個作用,第一個就是可以減少驗證開銷;另一個好處是,這個參數就像定海神針一樣告訴所有人,所有這個塊前面的區塊,包括這個區塊是可靠的,你們的賬戶上的比特幣是安全的。

這個參數是從0.14版本的時候開始有的,以後每次主要版本更新的時候,這個參數會被默認設置成幾個月前的、已經確認的有效塊。

現在的比特幣核心是0.21.0版本,2020年6月3日發布的 。在這個版本的源代碼中,已經更新了AssumeValid參數:

Bitcoin core 0.21 版本更新AssumeValid默認參數的截圖

上面一行,有「-」號的,是被替換掉的以前的程序代碼。,這個字元串代表的是寫在比特幣軟體里的一個區塊的hash,這個區塊2019年10月1日18點46分生成的,區塊的高度是597379。

下面那個有「+」號的,代表的是在代碼里增加的程序代碼,主要改變的是新的AssumeValid參數。,所代表的623950這個區塊,是2020年4月2日2點13分。

被Bitcoin core 0.20替換掉的默認AssumeValid參數所代表的區塊截圖。

Bitcoin core 0.20軟體裡面最新的默認AssumeValid參數所代表的區塊截圖。

也就是說,因為AssumeValid參數的存在。美國政府把比特幣區塊鏈重新算一遍也沒有用,它最多可以對AssumeValid參數後面的區塊產生影響。

我們來算算算看,如果美國從參數後面開始做最長的區塊鏈,是否有足夠的利益?

先算一下到目前為止的數據,從2020年4月2日零點到2020年12月12日零點,一共有365810分鍾。 比特幣區塊鏈,平均10分鍾產生一個區塊,每個區塊的比特幣獎勵從50開始,已經經歷了3次減半,現在是6.25個比特幣,比特幣的價格我們按照2萬美元一個計算。

365810 10 6.25 20000 = 45.72625億美元

正好,到目前為止所產生的比特幣差不多價值45億美元。應該說,還是很劃算的,不管怎麼說,沒有虧。而且,未來還有很多比特幣可以賺啊。且慢,即使只是從AssumeValid後面的區塊開始,即使有利可圖,美國最終還是不能殺死比特幣。

關鍵還是AssumeValid參數。剛才說了,這個參數的 默認值是新的主要版本發布的時候設定的 。它也完全可以不是默認值,當比特幣社區發現美國想殺死比特幣的企圖時,會通知大家出現的問題,讓大家設置成新的參數。只要,大家把參數一改,就會讓美國的那個最長的鏈,因為沒有人認可而失效。那條最長的鏈,就會只剩下美國一個礦工在記賬,自娛自樂。

就是這樣簡單,一個參數,就阻止了美國企圖通過算力殺死比特幣的陰謀。結論很簡單,即使是美國也殺不死比特幣。

AssumeValid參數,只是比特幣11年成長的縮影。比特幣核心軟體的版本,已經進行了21次重大更新,小修小補更是不計其數。11年來,不只是比特幣的價格在漲,比特幣社區的能力也在不斷提高。

最後,請允許我解釋一下,這篇文章與《即使中國也殺不死比特幣》不同,只是假設。實際上美國政府對比特幣的態度,是相當的友好,其友好程度不是第一、也有第二。當然,也有更合適的國家可以拿來舉例,但是我不敢。你懂的。

拿美國來舉例,還有另一種考慮。因為,美國——現在是地球上最強大的國家,如果它都殺不死比特幣了,那麼其他的國家、組織、機構也就更沒有這個可能了。那樣的話,比特幣也就可以高枕無憂了。但是,我還是要反復、再次,不厭其煩地提醒你,這一切並不能構成你——現在——就買比特幣的理由,請切記。詳細的原因,請看以前的文章:《小心!別上當!比特幣從來沒有牛市!》,很重要。

簡單說,這篇文章寫到這里的時候,是2020年12月12日凌晨,比特幣的價格是18486美元。3年前,2017年12月17日,比特幣價格開始從 歷史 高點19000多美元回落,直到現在又重新站回了 歷史 高點附近。我是想通過 歷史 數據告訴你,比特幣,還是很有可能再次跌倒1萬美元以下的。波動性是比特幣的天然屬性,所以,你應該等等看。

實際上,你和我都相信,美國政府是不可能幹這種事情的。這樣的預算,首先就不會在國會通過。但是,我們的假定還是有價值的,這至少可以讓更多的人丟掉幻想,讓更多的人安心入眠。

還記得開頭提到的《即使中國殺不死比特幣》,那篇彭博社的文章嗎?我真心希望你能親自看到那篇文章 ,可惜的是,你看不到。裡面有句話,非常好,借用一下,作為結尾。

如果你想廢除一種人們喜歡的東西,它就會在其他地方冒出來!( If you try to abolish something people like, it just pops up somewhere else.


(待續,這是專題「比特幣還能走多遠」的第八篇)

㈣ 比特幣哈希字元要求前幾位為零

是的。運算是將任意長度的0,變成固定長度的0。所以比特幣哈希字元要求前幾位為零的,任何信息,不管多長演算法「SHA1」,算出的結果是160位,也就是由160個0或1組成;比特幣挖礦用到的是「SHA256」,算出的結果是256位。至於具體怎麼算的,我們繼續秉承最小知識集原則,不去管它。

㈤ 4. 比特幣的密鑰、地址和錢包 - 精通比特幣筆記

比特幣的所有權是通過密鑰、比特幣地址和數字簽名共同確定的。密鑰不存在於比特幣網路中,而是用戶自己保存,或者利用管理私鑰的軟體-錢包來生成及管理。

比特幣的交易必須有有效簽名才會被存儲在區塊中,因此擁有密鑰就擁有對應賬戶中的比特幣。密鑰都是成對出現的,由一個公鑰和一個私鑰組成。公鑰相當於銀行賬號,私鑰就相當於銀行卡密碼。通常情況下密鑰由錢包軟體管理,用戶不直接使用密鑰。

比特幣地址通常是由公鑰計算得來,也可以由比特幣腳本得來。

比特幣私鑰通常是數字,由比特幣系統隨機( 因為演算法的可靠性與隨機性正相關,所以隨機性必須是真隨機,不是偽隨機,因此比特幣系統可以作為隨機源來使用 )生成,然後將私鑰作為輸入,使用橢圓曲線演算法這個單向加密函數生成對應的公鑰,再將公鑰作為輸入,使用單向加密哈希函數生成地址。例如,通過公鑰K得到地址A的計算方式為:

其中SHA256和PIPEMD160被稱為雙哈希或者HASH160,Base58Check是帶有驗證功能的Base58編碼,驗證方式為先計算原始數據(編碼前)的驗證碼,再比較編碼後數據的驗證碼,相同則地址有效,否則無效。而在使用Base58Check編碼前,需要對數據做處理。
處理方式為: 版本前綴 + 雙哈希後的數據 + 校驗碼
其中版本前綴是自定義的,如比特幣私鑰的前綴是0x80,校驗碼是把版本前綴和雙哈希後的數據拼接起來,進行兩次SHA256計算,取前4位元組。得到處理的數據後,再進行Base58編碼,得到最終的結果。

下圖是Base58Check版本前綴和Base58編碼後的結果

密鑰可以採用不同的編碼格式,得到的編碼後結果雖然不同,但密鑰本身沒有任何變化,採用哪種編碼格式,就看情況而論了,最終目的都是方便人們准確無誤的使用和識別密鑰。
下圖是相同私鑰採用不同編碼方式的結果:

公鑰也有很多種格式,不過最重要的是公鑰被分為壓縮格式和非壓縮格式,帶04前綴的公鑰為非壓縮格式的公鑰,而03,02開頭的標識壓縮格式的公鑰。

前面說過,公鑰是橢圓曲線上的一個點,由一對坐標(x, y)表示,再加上前綴,公鑰可以表示為:前綴 x y。
比如一個公鑰的坐標為:

以非壓縮格式為例,公鑰為(略長):

壓縮格式的公鑰可以節省一定的存儲,對於每天成千上萬的比特幣交易記錄來說,這一點點的節省能起到很大效果。

因為橢圓曲線實際上是一個方程(y2 mod p = (x3 + 7)mod P, y2是y的平方,x3是x的立方),而公鑰是橢圓曲線上的一個點,那麼公鑰即為方程的一個解,如果公鑰中只保留x,那麼可以通過解方程得到y,而壓縮公鑰格式有兩個前綴是因為對y2開方,會得到正負兩個解,在素數p階的有限域上使用二進制算術計算橢圓曲線的時候,y坐標或奇或偶,所以用02表示y為奇數,03表示y為偶數。

所以壓縮格式的公鑰可以表示為:前綴x
以上述公鑰的坐標為准,y為奇數為例,公鑰K為:

不知道大家發現沒有,這種壓縮方式存在一個問題,即一個私鑰可以得出兩個公鑰,壓縮和非壓縮公鑰,而這兩個公鑰都對應同一個私鑰,都合法,但生成的比特幣地址卻不相同,這就涉及到錢包軟體的實現方式,是使用壓縮公鑰還是非壓縮公鑰,或者二者皆用,這個問題後面來介紹。

比特幣錢包最主要的功能就是替用戶保管比特幣私鑰,比特幣錢包有很多種,比如非確定性(隨機)錢包,確定性(種子)錢包。所謂的非確定性是指錢包運行時會生成足夠的私鑰(比如100個私鑰),每個私鑰僅會使用一次,這樣私鑰管理就很麻煩。確定性錢包擁有一個公共種子,單向離散方程使用種子生成私鑰,種子足夠回收所有私鑰,所以在錢包創建時,簡單備份下,就可以在錢包之間轉移輸入。

這里要特別介紹下助記碼詞彙。助記碼詞彙是英文單詞序列,在BIP0039中提出。這些序列對應著錢包中的種子,種子可以生成隨機數,隨機數生成私鑰,私鑰生成公鑰,便有了你需要的一切。所以單詞的順序就是錢包的備份,通過助記碼詞彙能重建錢包,這比記下一串隨機數要強的多。

BIP0039定義助記碼和種子的創建過程如下:

另外一種重要的錢包叫做HD錢包。HD錢包提供了隨機(不確定性) 鑰匙有兩個主要的優勢。
第一,樹狀結構可以被用來表達額外的組織含義。比如當一個特定分支的子密鑰被用來接收交易收入並且有另一個分支的子密鑰用來負責支付花費。不同分支的密鑰都可以被用在企業環境中,這就可以支配不同的分支部門,子公司,具體功能以及會計類別。
第二,它可以允許讓使用者去建立一個公共密鑰的序列而不需要訪問相對應的私鑰。這可允許HD錢包在不安全的伺服器中使用或者在每筆交易中發行不同的公共鑰匙。公共鑰匙不需要被預先載入或者提前衍生,但是在伺服器中不具有可用來支付的私鑰。

BIP0038提出了一個通用標准,使用一個口令加密私鑰並使用Base58Check對加密的私鑰進行編碼,這樣加密的私鑰就可以安全地保存在備份介質里,安全地在錢包間傳輸,保持密鑰在任何可能被暴露情況下的安全性。這個加密標准使用了AES,這個標准由NIST建立,並廣泛應用於商業和軍事應用的數據加密。

BIP0038加密方案是: 輸入一個比特幣私鑰,通常使用WIF編碼過,base58chek字元串的前綴「5」。此外BIP0038加密方案需要一個長密碼作為口令,通常由多個單詞或一段復雜的數字字母字元串組成。BIP0038加密方案的結果是一個由base58check編碼過的加密私鑰,前綴為6P。如果你看到一個6P開頭的的密鑰,這就意味著該密鑰是被加密過,並需個口令來轉換(解碼) 該密鑰回到可被用在任何錢包WIF格式的私鑰(前綴為5)。許多錢包APP現在能夠識別BIP0038加密過的私鑰,會要求用戶提供口令解碼並導入密鑰。

最通常使用BIP0038加密的密鑰用例是紙錢包一一張紙張上備份私鑰。只要用戶選擇了強口令,使用BIP0038加密的私鑰的紙錢包就無比的安全,這也是一種很棒的比特幣離線存儲方式(也被稱作「冷存儲」)。

P2SH函數最常見的實現時用於多重簽名地址腳本。顧名思義,底層腳本需要多個簽名來證明所有權,然後才能消費資金。這類似在銀行開設一個聯合賬戶。

你可以通過計算,生成特殊的比特幣地址,例如我需要一個Hello開頭的地址,你可以通過腳本來生成這樣一個地址。但是每增加一個字元,計算量會增加58倍,超過7個字元,需要專門的硬體或者礦機來生成,如果是8~10個字元,那麼計算量將無法想像。

㈥ 比特幣基礎知識 你絕對想不到


橢圓曲線數字簽名演算法
橢圓曲線數字簽名演算法(ECDSA)是使用橢圓曲線對數字簽名演算法(DSA)的模擬,該演算法是構成比特幣系統的基石。
私鑰
非公開,擁有者需安全保管。通常是由隨機演算法生成的,說白了,就是一個巨大的隨機整數,32位元組,256位。
大小介於1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之間的數,都可以認為是一個合法的私鑰。
於是,除了隨機方法外,採用特定演算法由固定的輸入,得到32位元組輸出的演算法就可以成為得到私鑰的方法。於是,便有了迷你私鑰(Mini Privkey),原理很簡單,例如,採用SHA256的一種實現:
private key = SHA256()1
迷你私鑰存在安全問題,因為輸入集合太小,易被構造常見組合的彩虹表暴力破解,所以通常仿輪納還是使用系統隨機生成的比較好,無安全隱患。
公鑰
公鑰與私鑰是相對應的,一把私鑰可以推出唯一的公鑰,但公鑰卻無法推導出私鑰。公鑰有兩種形式:壓縮與非壓縮。
早期比特幣均使用非壓縮公鑰,現大部分客戶端已默認使用壓縮公鑰。
這個貌似是比特幣系統一個長得像feature的bug,早期人少活多代碼寫得不夠精細,openssl庫的文檔又不足夠好,導致Satoshi以為必須使用非壓縮的完整公鑰,後來大家發現其實公鑰的左右兩個32位元組是有關聯的,左側(X)可以推出右側(Y)的平方值,有左側(X)就可以了。
現在系統里兩種方式共存,應該會一直共存下去。兩種公鑰的首個位元組為標識位,壓縮為33位元組,非壓縮為65位元組。以0x04開頭為非壓縮,0x02/0x03開頭為壓縮公鑰,0x02/0x03的選取由右側Y開方後的奇偶決定。
壓縮形式可以減小Tx/Block的體積,每個Tx Input減少32位元組。
簽名
使用私鑰對數據進行簽署(Sign)會得到簽名(Signature)。通常會將數據先生成Hash值,然後對此Hash值進行簽名。簽名(signature)有兩部分組成: R + S。由簽名(signature)與Hash值,便可以推出一個公鑰,驗證此公鑰,便可知道此簽名是否由公鑰對應的私鑰簽名。
通常,每個簽名會有三個長度:73、72、71,符合校驗的概率為25%、50%、25%。所以每次簽署後,需要找出符合校驗的簽名長度,再提供給驗證方。
地址
地址是為了人們交換方便而弄出來的一個方案,因為公鑰太長了(130字元串或66字元串)。地址長度為25位元組,轉為base58編碼後,為34或35個字元。base58是類似base64的編碼,但去掉了易引起視覺混淆的字元,又在地址末尾添加了4個位元組校驗位,保障在人們交換個別字元錯誤時,也能夠因地址校驗失敗而制止了誤操作。
由於存在公鑰有兩種形式,那麼一個公鑰便對應兩個地址。這兩個地址都可由同一私鑰簽署交易。
公鑰生成地址的演算法:
Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))
Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))
Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)1234
下圖是非壓縮公鑰生成地址的過程:
對於壓縮公鑰生成地址時,則只取公鑰的X部分即可。
推導關系
三者推導關系:私鑰
公鑰
兩個地址。過程均不可逆。擁有私鑰便擁有一切,但通常為了方便,會把對應的公鑰、地址也存儲起來。
交易
比特幣的交易(Transation,縮寫Tx),並不是通常意義的桐散交易,例如一手交錢一手交貨,而是轉賬。交易由N個輸入和M個輸出兩部分組成。交易的每個輸入便是前向交易的某個輸出,那麼追蹤到源頭,必然出現一個沒有輸入的交易,此類交易稱為CoinBase Tx。CoinBase類備沒交易是獎勵挖礦者而產生的交易,該交易總是位於Block塊的第一筆。
擁有一個輸入與輸出的Tx數據:
Input:
Previous tx:
Index: 0
scriptSig:
241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG12345678910
一旦某個Tx的第N個輸出成為另一個Tx的輸入,那麼該筆比特幣即為已花費。每個交易有唯一Hash字元串來標識,通過對交易數據做兩次SHA256哈希運算而來:
Tx Hash ID = SHA256(SHA256(Tx Data))1
礦工費
礦工費(Transaction Fee)是鼓勵礦工將Tx打包進Block的激勵報酬。計算一筆交易的礦工費:
Transaction Fee = SUM(Inputs amount) - SUM(Outputs amount)1
每筆Tx的礦工費必然大於等於零,否則該筆Tx即為非法,不會被網路接收。
數據塊
數據塊(Block)是存儲Block Meta與Tx的地方。Block的第一筆Tx總是CoinBase Tx,因此Block中的交易數量總是大於等於1,隨後是這段時間內網路廣播出來的Tx。
找到合適的Block是一件非常困難的事情,需要通過大量的數學計算才能發現,該計算過程稱為「挖礦」。首個發現者,會得到一些比特幣作為獎勵。
數據鏈
多個Block連接起來成為數據鏈(Block Chain)。
為了引入容錯與競爭機制,比特幣系統允許Block Chain出現分叉,但每個節點總是傾向於選擇最高的、難度最大的鏈,並稱之為Best Chain,節點只認可Best Chain上的數據。
首個Block稱為Genesis Block,並設定高度為零,後續每新增一個Block,高度則遞增一。目前是不允許花費Genesis Block中的比特幣的。
每個Block中的Tx在此Block中均唯一
一個Tx通常只會在一個Block里,也可能會出現在多個Block中,但只會在Best Chain中的某一個Block出現一次
貨幣存儲
比特幣是密碼貨幣、純數字化貨幣,沒有看得見摸得著的硬幣或紙幣。一個人持有比特幣意味著:
其擁有一些地址的私鑰
這些地址是數筆交易的輸出,且未花費
所有貨幣記錄均以交易形式存儲在整個blockchain數據塊中,無交易無貨幣。貨幣不會憑空產生,也不會憑空消失。遺失了某個地址的私鑰,意味著該地址上的Tx無法簽署,無法成為下一個Tx的輸入,便認為該筆比特幣永久消失了。
貨幣發行
既然所有交易的輸入源頭都是來自CoinBase,產生CoinBase時即意味著貨幣發行。比特幣採用衰減發行,每四年產量減半,第一個四年每個block的coinbase獎勵50BTC,隨後是25btc, 12.5btc, 並最終於2140年為零,此時總量達到極限為2100萬個btc。
減半周期,嚴格來說,並不是准確的四年,而是每生成210000個block。之所以俗稱四年減半,是因為比特幣系統會根據全網算力的大小自動調整難度系統,使得大約每兩周產生2016個block,那麼四年約21萬塊block。
該函數GetBlockValue()用於計算挖得Block的獎勵值:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy = (nHeight / 210000);
return nSubsidy + nFees;
}123456789
當達到2100萬btc以後,不再有來自CoinBase的獎勵了,礦工的收入來源僅剩下交易的礦工費。此時,每個block的收入絕對值btc很低,但此時比特幣應當會非常繁榮,幣值也會相當的高,使得礦工們依然有利可圖。
杜絕多重支付
傳統貨幣存在多重支付(Double Spending)問題,典型的比如非數字時代的支票詐騙、數字時代的信用卡詐騙等。在比特幣系統里,每筆交易的確認均需要得到全網廣播,並收錄進Block後才能得到真正確認。每筆錢的花銷,均需要檢測上次輸入交易的狀態。數據是帶時間戳的、公開的,BlockChain由巨大的算力保障其安全性。所以比特幣系統將貨幣的多重支付的風險極大降低,幾近於零。通過等待多個Block確認,更是從概率上降低至零。一般得到6個確認後,可認為非常安全。但對於能影響你人生的重大支付,建議等待20~30個確認。
匿名性
任何人均可以輕易生成大量的私鑰、公鑰、地址。地址本身是匿名的,通過多個地址交易可進一步提高匿名性。但該匿名性並不像媒體宣傳的那樣,是某種程度上的匿名。因為比特幣的交易數據是公開的,所以任何一筆資金的流向均是可以追蹤的。
不了解比特幣的人為它的匿名性產生一些擔憂,比如擔心更利於從事非法業務;了解比特幣的人卻因為它的偽匿名性而苦惱。傳統貨幣在消費中也是匿名的,且是法律保障的,大部分國家都不允許個人塗畫紙幣。
地址本身是匿名的,但你可以通過地址對應的私鑰簽名消息來向公眾證明你擁有某個比特幣地址。
其他名詞
哈希
哈希(Hash)是一種函數,將一個數映射到另一個集合當中。不同的哈希函數映射的空間不同,反映到計算機上就是生成的值長度不一樣。同一個哈希函數,相同的輸入必然是相同的輸出,但同一個輸出卻可能有不同的輸入,這種情況稱為哈希碰撞。
常見的哈希函數有CRC32, MD5, SHA1, SHA-256, SHA-512, RIPEMD-160等,哈希函數在計算中有著非常廣泛的用途。比特幣里主要採用的是SHA-256和RIPEMD-160。
腦錢包紙錢包
前面提到過的腦錢包與紙錢包,這其實不算是錢包的分類,只是生成、存儲密鑰的方式而已。腦錢包屬於迷你私鑰的產物。腦錢包就是記在腦袋裡的密鑰,紙錢包就是列印到紙上的密鑰,僅此而已。
有同學提到過,以一個計算機文件作為輸入,例如一個數MB大小的照片,通過某種Hash運算後得到私鑰的方法。這個方案的安全性還是不錯的,同時可以防止盜私鑰木馬根據特徵掃描私鑰。文本形式存儲私鑰是有特徵的,而一個照片文件卻難以察覺,即使放在雲盤等第三方存儲空間中都是安全的。

㈦ 比特幣私鑰是52位還是64

比特幣私鑰是64位,WIFI格式是52位
比特幣私鑰是一個256位的隨機數,通過SHA-256演算法產生。比特幣私鑰的定義非常簡單,一個是256位(256個二進制數字)另一個是隨機數,意思是這個數的產生沒有規律。
比特幣私鑰是一個數字,這個數字可以取從0到2___-1之間的任意值。

㈧ 什麼是SHA256

SHA 家族
SHA (Secure Hash Algorithm,譯作安全散列演算法) 是美國國家安全局 (NSA) 設計,美國國家標准與技術研究院 (NIST) 發布的一系列密碼散列函數。正式名稱為 SHA 的家族第一個成員發布於 1993年。然而現在的人們給它取了一個非正式的名稱 SHA-0 以避免與它的後繼者混淆。兩年之後, SHA-1,第一個 SHA 的後繼者發布了。 另外還有四種變體,曾經發布以提升輸出的范圍和變更一些細微設計: SHA-224, SHA-256, SHA-384 和 SHA-512 (這些有時候也被稱做 SHA-2)。
SHA-0 和 SHA-1
最初載明的演算法於 1993年發布,稱做安全散列標准 (Secure Hash Standard),FIPS PUB 180。這個版本現在常被稱為 "SHA-0"。它在發布之後很快就被 NSA 撤回,並且以 1995年發布的修訂版本 FIPS PUB 180-1 (通常稱為 "SHA-1") 取代。根據 NSA 的說法,它修正了一個在原始演算法中會降低密碼安全性的錯誤。然而 NSA 並沒有提供任何進一步的解釋或證明該錯誤已被修正。1998年,在一次對 SHA-0 的攻擊中發現這次攻擊並不能適用於 SHA-1 — 我們不知道這是否就是 NSA 所發現的錯誤,但這或許暗示我們這次修正已經提升了安全性。SHA-1 已經被公眾密碼社群做了非常嚴密的檢驗而還沒發現到有不安全的地方,它現在被認為是安全的。
SHA-0 和 SHA-1 會從一個最大 2^64 位元的訊息中產生一串 160 位元的摘要然後以設計 MD4 及 MD5 訊息摘要演算法的 MIT 教授 Ronald L. Rivest 類似的原理為基礎來加密。
SHA-0 的密碼分析
在 CRYPTO 98 上,兩位法國研究者展示了一次對 SHA-0 的攻擊 (Chabaud and Joux, 1998): 散列碰撞可以復雜到 2^61 時被發現;小於 2^80 是理想的相同大小散列函數。
2004年時,Biham 和 Chen 發現了 SHA-0 的近似碰撞 — 兩個訊息可以散列出相同的數值;在這種情況之下,142 和 160 位元是一樣的。他們也發現了 SHA-0 在 80 次之後減少到 62 位元的完整碰撞。
2004年8月12日,Joux, Carribault, Lemuet 和 Jalby 宣布了完整 SHA-0 演算法的散列碰撞。這是歸納 Chabaud 和 Joux 的攻擊所完成的結果。發現這個碰撞要復雜到 2^51, 並且用一台有 256 顆 Itanium2 處理器的超級電腦耗時大約 80,000 CPU 工作時 。
2004年8月17日,在 CRYPTO 2004 的 Rump 會議上,Wang, Feng, Lai, 和 Yu 宣布了攻擊 MD5、SHA-0 和其他散列函數的初步結果。他們對 SHA-0 攻擊復雜到 2^40,這意味著他們攻擊的成果比 Joux 還有其他人所做的更好。該次 Rump 會議的簡短摘要可以在 這里找到,而他們在 sci.crypt 的討論,例如: 這些結果建議計劃使用 SHA-1 作為新的密碼系統的人需要重新考慮。
更長的變種
NIST 發布了三個額外的 SHA 變體,每個都有更長的訊息摘要。以它們的摘要長度 (以位元計算) 加在原名後面來命名:"SHA-256", "SHA-384" 和 "SHA-512"。它們發布於 2001年的 FIPS PUB 180-2 草稿中,隨即通過審查和評論。包含 SHA-1 的 FIPS PUB 180-2,於 2002年以官方標准發布。這些新的散列函數並沒有接受像 SHA-1 一樣的公眾密碼社群做詳細的檢驗,所以它們的密碼安全性還不被大家廣泛的信任。2004年2月,發布了一次 FIPS PUB 180-2 的變更通知,加入了一個額外的變種 "SHA-224",定義了符合雙金鑰 3DES 所需的金鑰長度。
Gilbert 和 Handschuh (2003) 研究了新的變種並且沒有發現弱點。
SHAd
SHAd 函數是一個簡單的相同 SHA 函數的重述:
SHAd-256(m)=SHA-256(SHA-256(m))。它會克服有關延伸長度攻擊的問題。
應用
SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全散列演算法的美國聯邦政府所應用,他們也使用其他的密碼演算法和協定來保護敏感的未保密資料。FIPS PUB 180-1 也鼓勵私人或商業組織使用 SHA-1 加密。Fritz-chip 將很可能使用 SHA-1 散列函數來實現個人電腦上的數位版權管理。
首先推動安全散列演算法出版的是已合並的數位簽章標准。
SHA 散列函數已被做為 SHACAL 分組密碼演算法的基礎。
SHA-1 的描述
以下是 SHA-1 演算法的偽代碼:
(Initialize variables:)
a = h0 = 0x67452301
b = h1 = 0xEFCDAB89
c = h2 = 0x98BADCFE
d = h3 = 0x10325476
e = h4 = 0xC3D2E1F0
(Pre-processing:)
paddedmessage = (message) append 1
while length(paddedmessage) mod 512 > 448:
paddedmessage = paddedmessage append 0
paddedmessage = paddedmessage append (length(message) in 64-bit format)
(Process the message in successive 512-bit chunks:)
while 512-bit chunk(s) remain(s):
break the current chunk into sixteen 32-bit words w(i), 0 <= i <= 15
(Extend the sixteen 32-bit words into eighty 32-bit words:)
for i from 16 to 79:
w(i) = (w(i-3) xor w(i-8) xor w(i-14) xor w(i-16)) leftrotate 1
(Main loop:)
for i from 0 to 79:
temp = (a leftrotate 5) + f(b,c,d) + e + k + w(i) (note: all addition is mod 2^32)
where:
(0 <= i <= 19): f(b,c,d) = (b and c) or ((not b) and d), k = 0x5A827999
(20 <= i <= 39): f(b,c,d) = (b xor c xor d), k = 0x6ED9EBA1
(40 <= i <= 59): f(b,c,d) = (b and c) or (b and d) or (c and d), k = 0x8F1BBCDC
(60 <= i <= 79): f(b,c,d) = (b xor c xor d), k = 0xCA62C1D6
e = d
d = c
c = b leftrotate 30
b = a
a = temp
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
digest = hash = h0 append h1 append h2 append h3 append h4
注意:FIPS PUB 180-1 展示的構想,用以下的公式替代可以增進效能:
(0 <= i <= 19): f(b,c,d) = (d xor (b and (c xor d)))
(40 <= i <= 59): f(b,c,d) = (b and c) or (d and (b or c)))

㈨ 比特幣機制研究

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

假設網路中有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 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:

熱點內容
元宇宙vr概念股 發布:2025-07-08 02:52:23 瀏覽:701
元宇宙潛力游戲幣種 發布:2025-07-08 02:47:30 瀏覽:89
三大運營商區塊鏈本科 發布:2025-07-08 02:28:50 瀏覽:739
區塊鏈數字資產我國發行合法性 發布:2025-07-08 02:26:33 瀏覽:627
日本區塊鏈初創公司 發布:2025-07-08 02:26:23 瀏覽:440
中國區塊鏈方面發明專利公布 發布:2025-07-08 02:09:31 瀏覽:91
eth天價轉賬費無人申訴背後 發布:2025-07-08 02:02:42 瀏覽:713
五月八號doge 發布:2025-07-08 01:47:46 瀏覽:149
區塊鏈p2p聊天技術 發布:2025-07-08 01:44:37 瀏覽:710
以太坊15秒一個區塊 發布:2025-07-08 01:44:34 瀏覽:811