當前位置:首頁 » 比特幣問答 » 比特幣節點發現

比特幣節點發現

發布時間: 2023-06-02 23:46:39

『壹』 比特幣的發展歷史

2008年11月1日,一個自稱中本聰(Satoshi Nakamoto)的人在一個隱秘的密碼學討論組上貼出了一篇研究報告,報告闡述了他對電子貨幣的新構想——比特幣就此問世!
2009年1月3日,中本聰在位於芬蘭赫爾辛基一個小型伺服器上挖出了第一批比特幣50個。
2010年5月21日,第一次比特幣交易:佛羅里達程序員Laszlo Hanyecz用1萬BTC購買了價值25美元的披薩優惠券。
2010年7月16日, BTC價格從0.008美元升值0.08美元,第一次價格的劇烈波動,顯示新生事物的崛起。
2010年7月17日,第一個比特幣平台成立。
2010年11月6日,MTGOX上的價格達到0.5美元,此時比特幣經濟達100萬美元。
2010年12月7日,第一次便攜設備到便攜設備的交易在NOKIA900上實現,交易量為0.42BTC。
2011年2月9日,價格首次達1美元,與美元等價。BTC與美元等價的消息被媒體大肆報道後引發起人們的高度關注,新用戶大增。此後2月內,比特幣與英鎊、巴西幣、波蘭幣的互兌交易平台先後開張。
2011年3月18日,BTC/USD匯率創7周來新低,降為0.7美元。
2011年8月20日,第一次比特幣會議和世博會在紐約召開,谷歌趨勢區縣中,比特幣的關注度創新高,當時價格為11美元。
2011年11月14日,比特幣價格創半年新低,價格為1.99美元。
2012年9月15日,倫敦比特幣會議召開,此時比特幣價格為11.8美元。
2012年9月27日,比特幣基金創立,此時比特幣價格為12.46美元。
2012年11月25日,歐洲第一次比特幣會議在捷克布拉格召開,此時比特幣價格12.6美元。
2013年2月19日,比特幣客戶端V8.0發布,此時比特幣價格為28.66美元。
2013年4月10日,BTC創下歷史最高價,110美元。
2013年5月9日,最大的比特幣報道網站-BTC中文網www.sosobtc.com獲得了投資基金Union Square的500萬美元A輪投資,此時比特幣價格為112.09美元。
2013年5月17日,2013年聖何塞比特幣大會召開,1300人參與,此時比特幣價格為119.1美元
2013年5月28日,美國國土安全部以涉嫌xiqian和無證經營資金匯劃業務取締了位於哥斯大黎加的匯兌公司Liberty Reserve的虛擬貨幣服務,美國檢察官稱這將成為歷史上最大的國際xiqian訴訟案,吸錢規模達到60億美元,包括中國在內的大量用戶血本無歸,此時比特幣價格為128美元。
2013年6月,網傳美國將退出QE3,通縮的比特幣,量化寬松的貨幣政策,兩者是針尖對麥芒的關系。
2013年6月27日,德國會議作出決定:持有比特幣一年以上將予以免稅,被業內認為此舉變相認可了比特幣的法律地位,此時比特幣價格為102.24美元。
2013年6月28日,MTGOX獲得美國財政部金融犯罪執法網路處頒發的貨幣服務事務許可,交易規范化可能意味著比特幣開始走向正軌,政府風險降低,其融入顯示經濟的步伐將會加快,同時會對其它虛擬貨幣起到示範作用,此時比特幣價格為97.99美元。
2013年11月28日,熱門比特幣交易所Mt. Gox的比特幣交易價格突破1000美元,創下1073美元的歷史新高。
2013年11月29日,比特幣在熱門交易所Mt.Gox的交易價格創下1242美元的歷史新高,而同時黃金價格為一盎司1241.98美元,比特幣價格首度超過黃金。

『貳』 比特幣機制研究

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

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

『叄』 bitcoin: dns seed

當bitcoin客戶端第一次啟動的時候, 程序不知道任何活躍的bitcoin全節點。
為了發現一些IP地址, 需要把一些DNS地址(也叫dns種子)硬編碼到比特幣源碼中。如果沒有dns seed, 客戶端不能自動聯上節點。

Dns Seed 由比特幣的社區成員維護, 其中一些提供動態的dns seed服務,通過掃描網路自動獲取活躍的節點IP地址,其中一些提供靜態dns seed, 這些種子是手動添加的。

我們看下sipa維護的 dns seed

83.162.254.34 176.115.25.48 ... 158.69.251.126 都是節點地址,當客戶端啟動的時候, 會自動鏈接這些地址。

dns seed 硬編碼在什麼地方了?

1 需要爬蟲一類的服務,通過bitcoin protocol 嗅探到一些節點

2 可以模仿dns請求, dns通過UDP協議的53埠進行通訊, 把嗅探到節點發送出去

這些工作,敬愛的sipa在 bitcoin-seeder 都幫我們做了。

從 seed.bitcoin.sipa.be. 14852 IN NS xps.sipa.be. 了解到seed域名的ns服務(即 nameserver)
是由 xps提供的. 我們在 dnspod 做如下配置.

需要在xps伺服器啟動bitocin-seeder

1 先編譯 make , 得到 dnsseed 執行文件

2 啟動爬蟲

等一段時間, dig seed.liushooter.cc 就會看到結果.

參考:

https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery#DNS_Addresses
https://bitcoin.org/en/developer-guide#p2p-network

『肆』 如何廣播比特幣

方法如下。
1、交易如何廣播到第一個節點比特幣廣播實際上就是p2p廣播,程序自帶了種子節點,活躍節點也自帶其他節點的地址,連接上一個節點就能發現其他節點了,如果自帶的都被屏蔽再去自己找可用節點就好。不存在只廣播到一個節點,被單節點攔截交易的行為,除非你只連接了一個節點,正好那個節點是惡意節點,攔截了你的交易信息。
2、他人代勞廣播交易的話,是否喪失安全性?你所要廣播的交易信息就是要層層傳遞到全網節點,傳播的節點也更改不了你廣播的交易信息,並不存在什麼「所以才需要第二個人代勞,那就失去其部分安全性了吧。」交易信息被你的私鑰簽名了,交易信息中自帶公鑰,要公鑰驗證一下就知道簽名是否合法。你可以多了解一下比特幣節點還有交易知識。

『伍』 網路上的挖幣是什麼

是指透過執行工作量證明或其他類似的電腦演算法來獲取加密貨幣,例如比特幣、以太幣、萊特幣等。

挖幣是增加交易記錄過去交易的比特幣的公開總賬。過去交易的這台賬必要的計算被稱為塊鏈,因為它是一個區塊鏈。區塊鏈用於確認與網路其餘部分的交易已經發生。比特幣節點使用區塊鏈來區分合法的比特幣交易與重新花費已經在其他地方花費的硬幣的嘗試。

采礦被有意設計為資源密集型和困難的,以便礦工每天發現的區塊數量保持穩定。單個塊必須包含工作證明才能被視為有效。其他比特幣節點每次收到一個區塊時都會驗證這種工作量證明。比特幣使用hashcash工作量證明功能。

挖掘的主要目的是以一種任何實體都無法在計算上修改的方式來設置交易歷史。通過下載和驗證區塊鏈,比特幣節點能夠就比特幣事件的排序達成共識。

采礦也是用於將比特幣引入系統的機制:礦工獲得任何交易費用以及新創建的硬幣的「補貼」。這既有助於以去中心化的方式傳播新幣,也有助於激勵人們為系統提供安全保障。

挖礦難度

為了使得資料塊產生的速度維持在大約每十分鍾一個,產生新資料塊的難度會定期調整。

如果資料塊產生的速度加快了,那麼就提高挖礦難度;如果資料塊產生速度變慢了,那麼就降低難度。比特幣系統在每隔2016個資料塊被產出後(約兩周的時間),會以最近這段時間的資料塊產生速度,自動重新計算接下來的2016個資料塊之挖礦難度。

而難度基本上就決定了一個有效的資料塊標頭(英語:Block Header)的SHA-256散列值應小於一定值,也就是說該散列值必須要恰好落在目標區間之內才算有效,當目標區間越小就意味著命中幾率越低。換句話說就是挖礦的難度越高。

由於ASIC計算設備的爆炸式加入,目前挖礦難度呈現幾何級數的上升,目前年均難度增長約為3%,讓普通個人挖礦者的挖礦工作變得異常困難。

『陸』 比特幣初始節點發現有幾個

比特幣初始節點發現只有28個。但這個數字增長的很快,到2020年2月,全球比特幣節點的數量就達到了10.000點左右。中國的節點總數約佔全球的5%到8%。2020年截至3月份,中國在全球市場份額已飆升至17%,已超過德國,排名居全球第二。

『柒』 詳解比特幣挖礦原理

可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。

比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。

至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。

通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。

在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。

在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。

每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:

交易的語法和數據結構必須正確。

輸入與輸出列表都不能為空。

交易的位元組大小是小於MAX_BLOCK_SIZE的。

每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。

沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。

nLockTime是小於或等於INT_MAX的。

交易的位元組大小是大於或等於100的。

交易中的簽名數量應小於簽名操作數量上限。

解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。

池中或位於主分支區塊中的一個匹配交易必須是存在的。

對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。

對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。

對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。

對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。

使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。

如果輸入值的總和小於輸出值的總和,交易將被中止。

如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。

每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。

以下挖礦節點取名為 A挖礦節點

挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。

驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。

A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。

一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。

然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。

如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。

在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。

UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。

塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。

區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。

A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。

用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。

需要以下參數

• block的版本 version

• 上一個block的hash值: prev_hash

• 需要寫入的交易記錄的hash樹的值: merkle_root

• 更新時間: ntime

• 當前難度: nbits

挖礦的過程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。

簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。

如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?

比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。

那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。

為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。

舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。

比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。

每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。

比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。

節點維護三種區塊:

· 第一種是連接到主鏈上的,

· 第二種是從主鏈上產生分支的(備用鏈),

· 第三種是在已知鏈中沒有找到已知父區塊的。

有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。

如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。

選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。

當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。

分叉之前

分叉開始

我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。

假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。

比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。

分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。

所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。

比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

『捌』 玩懂比特幣的那群人,財富翻了多少倍

我身邊有位同事,她當年十幾塊買了10,去年年底四十多萬賣了一個,今年年初42萬又賣了一個。翻了多少倍,算算吧

談到比特幣這個充滿神秘色彩的貨幣,我們得先來看一看第一筆比特幣購買實體物品的交易細節。而這個在當時人們眼中的小小買賣放到如今來看,卻充滿無比的戲劇性,甚至還促成了一個非法定節假日問世。

歷史 上第一個比特幣實物交易發生在2010年5月22日,弗羅里達電腦工程師拉斯洛一時興起,用1萬枚比特幣向網友買了美國連鎖餐廳棒約翰兩塊熱氣騰騰的披薩,並在接下來的幾十分鍾內填飽了肚子。

在這場被認為是比特幣的首次交易中,一枚比特幣的價格大約為0.0041美元,按當前的匯率1萬枚比特幣價值4億美元。也就是說拉斯洛吃下肚子的披薩,一塊如今的要價為2億美元。不用懷疑,這肯定是有史以來最貴的披薩了。

而收下這筆巨款的網友若將這1萬枚比特幣保留至今,也可以輕易的晉升億萬富豪行列。

但事實上,兩個人當時都沒有把這筆重金放在眼中,只是開心的慶祝這個在他們心目中的 歷史 時刻。

此後,每年的5月22日就此被定為比特幣披薩日,全球各地的人紛紛歡聚紀念。隨著比特幣價值飛漲,聚會者更加熱衷於這個與億萬財富擦身而過的小故事,同時也記住了這個賦予比特幣在現實世界一切意義的一刻。

在崇尚自由與資本主義的美國西岸舊金山,距離矽谷不遠的地方有這么一棟外形簡單的房子,後來以「加密城堡」的綽號為人所熟知。多年來,這棟稱不上大的建築,來來去去住過數十名20多歲的 科技 新人。

在不到30歲從事區塊鏈相關技術工作的房東加德納口中,這些年輕的投資者在搬進去的不到兩個小時內都會變成比特幣或者其他加密貨幣的忠實信仰者。

不少人在比特幣僅值數百美元的時候,就開始大量的買入。受到堅定的信仰驅使,這些人常奉行只買不賣的戒條,這也讓他們大賺特賺。

加德納估計,超過60個房客因曾住進加密城堡而成為巨富。

類似的神秘建築在舊金山並不只有加密城堡一座,許多投資加密貨幣的年輕人主動聚集成群,並以自己信仰的貨幣為房子內部的走廊命名,如比特幣大道或以太坊巷。房子內部一眼望去像極了大學宿舍或美式兄弟會的聚會場所。

但事實上,在過著看似平凡生活的同時,很多住戶都持有數百甚至上千枚的比特幣。他們閑暇時常常駕駛著藍寶堅尼超跑外出兜風,為自己的信仰加值一番。

在4年前的2017年,荷蘭男子泰胡圖一家變賣了所有財產,包括房產和 汽車 。夫妻倆甚至解除並領取了退休賬戶中所能動用的每一分現金,把錢全部投入在比特幣上。當時比特幣的價格是900美元,而泰胡圖一家隨後也被稱為比特幣家族,泰胡圖本人始終對比特幣抱持著堅定的信仰。在他進場同年,比特幣曾一度暴漲至逼近2萬美元大關,但隔年卻跌至3000美元。

在暴跌之際,泰胡圖堅信比特幣會大幅反彈,於是便大手筆買進。事實證明,他又一次押對寶了。接連買在起漲點的好眼光,讓泰胡圖一家的財產持續暴增,此時若離開市場幾乎已經能稱得上是財富自由。

不過,泰胡圖表示,現在還遠遠不到出場的時機。他堅信比特幣在短短的一兩年內還會繼續書寫 歷史 新高記錄,就算在2022年達到20萬美元,他也不會感到驚訝。

而在過去4年內泰胡圖一家一直在環游世界,截至目前已經游歷超過40個國家。

泰胡圖透漏他一家人到現在還是沒有任何銀行賬戶及房產,所有家當仍全部投入到高度波動的比特幣中。但基於強大的信仰,他對此並不感到擔憂。

我們最後來看一個不知道該歸列於幸運還是悲劇的事件。

這是過去幾天熱騰騰的新聞,美國加州一名城市設計師托馬斯在10年前比特幣剛問世時,受邀製作一段有關比特幣運作的教學動畫,並收到7002枚比特幣作為酬勞。

在當時1枚比特幣僅值數美元,托馬斯未作多想,便將這筆比特幣存進一個數字錢包中,並把這個錢包放入自己的IronKey加密型U盤中。托馬斯隨手將U盤的密碼抄在紙上,之後就把這件事忘得一干二凈。

多年間,比特幣多次迎來暴漲,直到上周,7002枚比特幣價值已高達2.81美元。托馬斯這才想起自己擁有這筆巨款,但抄寫U盤密碼的紙條卻早已遺失,而托馬斯自己怎麼都想不起密碼,只能看著自己手上這個存有巨額財富的U盤干著急。

由於托馬斯的U盤有著最高等級的安全保護,只要連續輸錯10次密碼就會永久加密。這不僅代表U盤將被永久上鎖,更意味著托馬斯將跟世人夢寐以求的富豪生活說再見。

托馬斯說自己在過去這段時間內時時刻刻都在設法找回密碼,他花了數個小時,躺在床上盡全力回想自己過去常用的密碼,一旦想到一個就立刻跑去電腦前嘗試,卻沒有一個通過。

如今托馬斯已經輸入8次錯誤密碼,只要再輸錯2次,將永久與這筆巨款告別。

事件曝光後,任教美國斯坦福大學的網路安全專家亞歷克斯公開對托馬斯喊話,強烈建議他不要再瞎猜密碼,而是轉交專業人士破解。

亞歷克斯提議,只要托馬斯願意將U盤中的一成比特幣作為酬勞,自己可以在半年內破解這個U盤。

不過目前還沒有進一步的消息傳出,我們無從得知托馬斯究竟是會繼續設法想密碼,還是向亞歷克斯或其他收費更為低廉的專家求助。

一、 中本聰發現比特幣,如今淡出比特幣圈。美籍日本人中本聰在十二年前的金融危機之後,在互聯網演算法中發現了一種全新的數字貨幣,那就是比特幣,即一種由一大串數字構成的虛擬貨幣。比特幣的價值體現在區塊鏈中,那時一種去中心化的點對點信息傳輸手段。中本聰在世界經濟低迷之際,做出了對比特幣的白皮書,一時間引起了很多人的注意。作為世界首個發現比特幣的中本聰,他接下來便組建團隊,著手進行比特幣的挖掘工作,即利用演算法去找到節點之間的數字密碼,被稱比特幣。

被人稱為無政府主義者的中本聰,理所當然在比特幣的交易中獲取了大量中間價,畢竟如今的比特幣已經溢價到了一萬美元每個的程度。但或是已經看淡比特幣市場,不久之前,中本聰全身而退,將比特幣交易運作交給繼任者接管,自己已經隱退「江湖」了。

二、 第一個吃螃蟹的人楊林科,創建我國比特幣交易平台。

楊林科是浙江溫州人,自小就有經商天賦,而且眼光極准。他在第一次接觸比特幣時,就預感它將為自己帶來巨大的財富,於是和他的夥伴黃嘯宇合作創辦了我國首個數字貨幣交易平台。我國接觸比特幣的人不少,但是苦於沒有比較正規的國內交易渠道,大部分人會在國外平台進行交易,或者私下買賣。楊科林創辦平台之後,正好填補了需求,一時間湧入了非常多比特幣玩家,而且在他之後,比特幣交易平台就像雨後竹筍一樣,紛紛創建。那時,比特幣迎來了「升值」,當初一美元一個的比特幣,現在已經需要三十美元了,楊林科當然掙了大錢。

比特幣從以前的幾十枚只要幾塊人民幣到現在的一枚達到幾十萬,翻了數不清的跟頭了,按照最早購買的儲藏的價格話,現在要100倍了

『玖』 比特幣是什麼請通俗的解釋一下講一下它的歷史

說說我的理解:有個人發明了一個方程(演算法?),這個方程有2100萬個解,於是根據這個方程發展出一個游戲,就是誰找到了這個方程的一個解,就給這個人一個叫「比特幣」的獎勵品。於是很多人開始玩這個游戲(無聊?)。最開始,使用一般的CPU進行運算很快就能找出這個方程的一些解,比如說玩家A說我找到了解a1,於是A向所有參與游戲的人詢問「你們找到a1這個解了嗎?」於是所有人都帶著a1這個解去驗證,並查詢自己是否已經計算過了a1,如果都沒有人對「a1是這個方程的一個解」提出異議,並且沒有人在A之前找到了a1,那麼很幸運,A將獲得一個比特幣。當這個游戲參與的玩家越來越多,被找到的解也就越來越多,想要快速發現新的解就需要更強大的運算力,而解方程的過程涉及大量的浮點運算,傳統CPU已經無法滿足這種高精度的浮點運算,於是主要的運算任務交給了更擅長浮點運算的GPU進行(發展到後來就是專業挖礦機)。本來這是一堆極客玩的游戲,但是某些銀行家發現了比特幣的貨幣特性,於是開始用真實流通的貨幣去購買比特幣,使比特幣與金融貨幣掛鉤,於是比特幣逐漸得開始擁有貨幣的屬性並擁有一定的價值(因為有人願意用美元買比特幣)。總結一個比特幣是一個方程的2100萬個解的其中一個,有人願意用美元或是其他貨幣去兌換比特幣,那麼比特幣是有價值的,如果沒有人願意拿貨幣兌換比特幣了,比特幣就毫無價值。

『拾』 區塊鏈的核心技術是什麼

簡單來說,區塊鏈是一個提供了拜占庭容錯、並保證了最終一致性的分布式資料庫;從數據結構上看,它是基於時間序列的鏈式數據塊結構;從節點拓撲上看,它所有的節點互為冗餘備份;從操作上看,它提供了基於密碼學的公私鑰管理體系來管理賬戶。
或許以上概念過於抽象,我來舉個例子,你就好理解了。
你可以想像有 100 台計算機分布在世界各地,這 100 台機器之間的網路是廣域網,並且,這 100 台機器的擁有者互相不信任。
那麼,我們採用什麼樣的演算法(共識機制)才能夠為它提供一個可信任的環境,並且使得:
節點之間的數據交換過程不可篡改,並且已生成的歷史記錄不可被篡改;
每個節點的數據會同步到最新數據,並且會驗證最新數據的有效性;
基於少數服從多數的原則,整體節點維護的數據可以客觀反映交換歷史。
區塊鏈就是為了解決上述問題而產生的技術方案。
二、區塊鏈的核心技術組成
無論是公鏈還是聯盟鏈,至少需要四個模塊組成:P2P 網路協議、分布式一致性演算法(共識機制)、加密簽名演算法、賬戶與存儲模型。
1、P2P 網路協議
P2P 網路協議是所有區塊鏈的最底層模塊,負責交易數據的網路傳輸和廣播、節點發現和維護。
通常我們所用的都是比特幣 P2P 網路協議模塊,它遵循一定的交互原則。比如:初次連接到其他節點會被要求按照握手協議來確認狀態,在握手之後開始請求 Peer 節點的地址數據以及區塊數據。
這套 P2P 交互協議也具有自己的指令集合,指令體現在在消息頭(Message Header) 的 命令(command)域中,這些命令為上層提供了節點發現、節點獲取、區塊頭獲取、區塊獲取等功能,這些功能都是非常底層、非常基礎的功能。如果你想要深入了解,可以參考比特幣開發者指南中的 Peer Discovery 的章節。
2、分布式一致性演算法
在經典分布式計算領域,我們有 Raft 和 Paxos 演算法家族代表的非拜占庭容錯演算法,以及具有拜占庭容錯特性的 PBFT 共識演算法。
如果從技術演化的角度來看,我們可以得出一個圖,其中,區塊鏈技術把原來的分布式演算法進行了經濟學上的拓展。
在圖中我們可以看到,計算機應用在最開始多為單點應用,高可用方便採用的是冷災備,後來發展到異地多活,這些異地多活可能採用的是負載均衡和路由技術,隨著分布式系統技術的發展,我們過渡到了 Paxos 和 Raft 為主的分布式系統。
而在區塊鏈領域,多採用 PoW 工作量證明演算法、PoS 權益證明演算法,以及 DPoS 代理權益證明演算法,以上三種是業界主流的共識演算法,這些演算法與經典分布式一致性演算法不同的是,它們融入了經濟學博弈的概念,下面我分別簡單介紹這三種共識演算法。
PoW: 通常是指在給定的約束下,求解一個特定難度的數學問題,誰解的速度快,誰就能獲得記賬權(出塊)權利。這個求解過程往往會轉換成計算問題,所以在比拼速度的情況下,也就變成了誰的計算方法更優,以及誰的設備性能更好。
PoS: 這是一種股權證明機制,它的基本概念是你產生區塊的難度應該與你在網路里所佔的股權(所有權佔比)成比例,它實現的核心思路是:使用你所鎖定代幣的幣齡(CoinAge)以及一個小的工作量證明,去計算一個目標值,當滿足目標值時,你將可能獲取記賬權。
DPoS: 簡單來理解就是將 PoS 共識演算法中的記賬者轉換為指定節點數組成的小圈子,而不是所有人都可以參與記賬。這個圈子可能是 21 個節點,也有可能是 101 個節點,這一點取決於設計,只有這個圈子中的節點才能獲得記賬權。這將會極大地提高系統的吞吐量,因為更少的節點也就意味著網路和節點的可控。
3、加密簽名演算法
在區塊鏈領域,應用得最多的是哈希演算法。哈希演算法具有抗碰撞性、原像不可逆、難題友好性等特徵。
其中,難題友好性正是眾多 PoW 幣種賴以存在的基礎,在比特幣中,SHA256 演算法被用作工作量證明的計算方法,也就是我們所說的挖礦演算法。
而在萊特幣身上,我們也會看到 Scrypt 演算法,該演算法與 SHA256 不同的是,需要大內存支持。而在其他一些幣種身上,我們也能看到基於 SHA3 演算法的挖礦演算法。以太坊使用了 Dagger-Hashimoto 演算法的改良版本,並命名為 Ethash,這是一個 IO 難解性的演算法。
當然,除了挖礦演算法,我們還會使用到 RIPEMD160 演算法,主要用於生成地址,眾多的比特幣衍生代碼中,絕大部分都採用了比特幣的地址設計。
除了地址,我們還會使用到最核心的,也是區塊鏈 Token 系統的基石:公私鑰密碼演算法。
在比特幣大類的代碼中,基本上使用的都是 ECDSA。ECDSA 是 ECC 與 DSA 的結合,整個簽名過程與 DSA 類似,所不一樣的是簽名中採取的演算法為 ECC(橢圓曲線函數)。
從技術上看,我們先從生成私鑰開始,其次從私鑰生成公鑰,最後從公鑰生成地址,以上每一步都是不可逆過程,也就是說無法從地址推導出公鑰,從公鑰推導到私鑰。
4、賬戶與交易模型
從一開始的定義我們知道,僅從技術角度可以認為區塊鏈是一種分布式資料庫,那麼,多數區塊鏈到底使用了什麼類型的資料庫呢?
我在設計元界區塊鏈時,參考了多種資料庫,有 NoSQL 的 BerkelyDB、LevelDB,也有一些幣種採用基於 SQL 的 SQLite。這些作為底層的存儲設施,多以輕量級嵌入式資料庫為主,由於並不涉及區塊鏈的賬本特性,這些存儲技術與其他場合下的使用並沒有什麼不同。
區塊鏈的賬本特性,通常分為 UTXO 結構以及基於 Accout-Balance 結構的賬本結構,我們也稱為賬本模型。UTXO 是「unspent transaction input/output」的縮寫,翻譯過來就是指「未花費的交易輸入輸出」。
這個區塊鏈中 Token 轉移的一種記賬模式,每次轉移均以輸入輸出的形式出現;而在 Balance 結構中,是沒有這個模式的。

熱點內容
trx現在人民幣多少錢一個月 發布:2025-07-20 19:04:00 瀏覽:725
元宇宙是誰搞出來的 發布:2025-07-20 19:02:54 瀏覽:388
簽到領比特幣軟體 發布:2025-07-20 18:58:31 瀏覽:297
區塊鏈場景應用案例 發布:2025-07-20 18:51:24 瀏覽:262
上海貝嶺區塊鏈業務 發布:2025-07-20 18:32:52 瀏覽:569
全中國有數字礦機有哪些公司 發布:2025-07-20 18:27:18 瀏覽:785
數字貨幣的浙江法院案例 發布:2025-07-20 18:27:12 瀏覽:548
以太坊智能合約地址怎麼轉出錢 發布:2025-07-20 18:02:39 瀏覽:30
什麼是區塊鏈分類有哪些 發布:2025-07-20 17:50:35 瀏覽:8
區塊鏈會帶來什麼影響 發布:2025-07-20 17:46:43 瀏覽:750