比特幣(BitCoin,BTC)是基于區(qū)塊鏈技術的一種數(shù)字貨幣實現(xiàn),比特幣網絡是歷史上首個經過大規(guī)模長時間檢驗的數(shù)字貨幣系統(tǒng)。
自2009 年正式上線以來,比特幣價格經歷了數(shù)次的震蕩,目前每枚比特幣市場價格超過6000 美金,并曾經一度接近20000美金。
比特幣網絡在功能上具有如下特點:
A、去中心化
沒有任何獨立個體可以對網絡中交易進行破壞,任何交易請求都需要大多數(shù)參與者的共識。
B、匿名性
比特幣網絡中賬戶地址是匿名的,無法從交易信息關聯(lián)到具體的個體,但也很難進行審計
C、通脹預防
比特幣的發(fā)行需要通過挖礦計算來進行,發(fā)行量每四年減半,總量上限為2100萬枚,無法被超發(fā)。
比特幣網絡是一個分布式的點對點網絡,網絡中的礦工通過挖礦來競爭對交易記錄的記賬權,擁有記賬權的礦工負責產生區(qū)塊,記錄交易記錄的過程,維護網絡的正常運行。
區(qū)塊鏈網絡提供一個公共可見的記賬本,記賬本并非記錄每個賬戶的余額,而是用來記錄發(fā)生過的交易的歷史信息,可以避免重放***,即某個合法交易被多次重新發(fā)送造成***。
比特幣網絡中每次發(fā)生交易,用戶需要將交易記錄寫到比特幣網絡賬本中,等網絡確認后即可認為交易完成。
除了挖礦獲得獎勵的coinbase交易只有輸出,正常情況下每個交易需要包括若干輸入和輸出,未經使用(引用)的交易輸出(Unspent Transaction Outputs,UTXO)可以被新的交易引用作為其合法的輸入。被使用過的交易的輸出(Spent Transaction Outputs,STXO),則無法被引用作為合法輸入。
因此,比特幣網絡中一筆合法的交易,必須是引用某些已存在交易的UTXO(必須是屬于付款方才能合法引用)作為新交易的輸入,并生成新的UTXO(將屬于收款方)。
在交易過程中,付款方如何證明自己所引用的UTXO合法?比特幣中通過“簽名腳本”來實現(xiàn),并且指定“輸出腳本”來限制將來能使用新UTXO者只能為指定收款方。對每筆交易,付款方需要進行簽名確認。并且,對每一筆交易來說,總輸入不能小于總輸出??傒斎胂啾瓤傒敵龆嘤嗟牟糠址Q為交易費用(Transaction Fee),為生成包含該交易區(qū)塊的礦工所獲得。目前規(guī)定每筆交易的交易費用不能小于0.0001BTC,交易費用越高,越多礦工愿意包含該交易,也就越早被放到網絡中。交易費用在獎勵礦工的同時,也避免了網絡受到大量***。
交易中金額的最小單位是“聰”,即一億分之一(10^-8)比特幣。
剛放進網絡中的交易(深度為0)并非是實時得到確認的。進入網絡中的交易存在被推翻的可能性,一般要再生成幾個新的區(qū)塊后(深度大于0)才認為該交易被確認。
比特幣采用了非對稱的加密算法,用戶自己保留私鑰,對自己發(fā)出的交易進行簽名確認,并公開公鑰。
比特幣的賬戶地址其實就是用戶公鑰經過一系列Hash(HASH160或先進行SHA256,然后進行 RIPEMD160)及編碼運算后生成的160位(20字節(jié))的字符串。
一般地,常常對賬戶地址串進行Base58Check編碼,并添加前導字節(jié)(表明支持哪種腳本)和4字節(jié)校驗字節(jié),以提高可讀性和準確性。
賬戶并非直接是公鑰內容,而是Hash后的值,避免公鑰過早公開后導致被破解出私鑰。
交易是完成比特幣功能的核心概念,一條交易可能包括如下信息:
A、付款人地址:合法的地址,公鑰經過SHA256和RIPEMD160兩次Hash得到160位Hash串。
B、付款人對交易的簽字確認:確保交易內容不被篡改。
C、付款人資金的來源交易ID:從哪個交易的輸出作為本次交易的輸入。
D、交易的金額:多少錢,跟輸入的差額為交易的服務費。
E、收款人地址:合法的地址。
F、時間戳:交易何時能生效。
網絡中節(jié)點收到交易信息后,將進行如下檢查:
A、交易是否已經處理過。
B、交易是否合法。包括地址是否合法、發(fā)起交易者是否是輸入地址的合法擁有者、是否是UTXO。
C、交易的輸入之和是否大于輸出之和。
檢查都通過,則將交易標記為合法的未確認交易,并在網絡內進行廣播。
用戶可以從blockchain.info網站查看實時的交易信息,一個示例交易的內容如下:
腳本(Script)是保障交易完成(主要用于檢驗交易是否合法)的核心機制,當所依附的交易發(fā)生時被觸發(fā)。通過腳本機制而非寫死交易過程,使比特幣網絡實現(xiàn)了一定的可擴展性。比特幣腳本語言是一種非圖靈完備的語言。
一般每個交易都會包括兩個腳本:負責輸入的解鎖腳本(scriptSig)和負責輸出的鎖定腳本(scriptPubKey)。
輸出腳本一般由付款方對交易設置鎖定,用來對能動用交易的輸出(例如,要花費該交易的輸出)的對象(收款方)進行權限控制,例如限制必須是某個公鑰的擁有者才能花費這筆交易。
認領腳本則用來證明自己可以滿足交易輸出腳本的鎖定條件,即對某個交易的輸出(比特幣)的擁有權。
輸出腳本目前支持兩種類型:
P2PKH:Pay-To-Public-Key-Hash,允許用戶將比特幣發(fā)送到一個或多個典型的比特幣地址上(證明擁有該公鑰),前導字節(jié)一般為0x00。
P2SH:Pay-To-Script-Hash,支付者創(chuàng)建一個輸出腳本,里邊包含另一個腳本(認領腳本)的哈希,一般用于需要多人簽名的場景,前導字節(jié)一般為0x05。
以P2PKH為例,輸出腳本的格式為:scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
OP_DUP是復制棧頂元素;
OP_HASH160是計算hash值;
OP_EQUALVERIFY 判斷棧頂兩元素是否相等;
OP_CHECKSIG判斷簽名是否合法。
上述指令實際上保證了只有pubKey的擁有者才能合法引用這個輸出。
另外一個交易如果要花費這個輸出,在引用這個輸出的時候,需要提供認領腳本格式為scriptSig: <sig> <pubKey>
其中,是拿pubKey 對應的私鑰對交易(全部交易的輸出、輸入和腳本)Hash值進行簽名,pubKey的Hash值需要等于pubKeyHash。進行交易驗證時,會按照先scriptSig后scriptPubKey的順序進行依次入棧處理,即完整指令為:
<sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash>
OP_EQUALVERIFY OP_CHECKSIG
引入腳本機制帶來了靈活性,但也引入了更多的安全風險。比特幣腳本支持的指令集十分簡單,基于棧的處理方式,并且非圖靈完備,此外還添加了額外的一些限制(大小限制等)。
6、區(qū)塊比特幣區(qū)塊鏈的一個區(qū)塊不能超過1MB,將主要包括如下內容:
A、區(qū)塊大?。?字節(jié)
B、區(qū)塊頭:80字節(jié)
C、交易個數(shù)計數(shù)器:1~9字節(jié)
D、所有交易的具體內容,可變長,匹配Merkle樹葉子節(jié)點順序。
其中,區(qū)塊頭信息包括:
A、版本號:4字節(jié)
B、上一個區(qū)塊頭的Hash值:鏈接到上一個合法的塊上,對其區(qū)塊頭進行兩次SHA256操作,32字節(jié)
C、本區(qū)塊所包含的所有交易的Merkle樹根的哈希值:兩次SHA256操作,32字節(jié)
D、時間戳:4字節(jié)
E、難度指標:4字節(jié)
F、Nonce:4字節(jié),POW 問題的答案。
可見,要對區(qū)塊鏈的完整性進行檢查,只需要檢驗各個區(qū)塊頭部信息即可,無需獲取到具體的交易內容,是簡單交易驗證(Simple Payment Verification,SPV)的基本原理。另外,通過頭部的鏈接,提供時序關系的同時加大了對區(qū)塊中數(shù)據(jù)進行篡改的難度。
一個示例區(qū)塊如下:
基于經濟博弈原理。在一個開放的網絡中,法通過技術手段保證每個人都是合作的。但可以通過經濟博弈來讓合作者得到利益,讓非合作者遭受損失和風險。
比特幣網絡中所有試圖參與者(礦工)都首先要付出挖礦的代價,進行算力消耗,越想拿到新區(qū)塊的決定權,抵押的算力越多。一旦失敗,算力都會被沒收掉,成為沉沒成本。當網絡中存在眾多參與者時,個體試圖拿到新區(qū)塊決定權要付出的算力成本是巨大的,進行一次作惡付出的代價已經超過可能帶來的好處。
比特幣網絡在設計上,很好的體現(xiàn)了負反饋的控制論基本原理。
比特幣網絡中礦工越多,系統(tǒng)就越穩(wěn)定,比特幣價值就越高,但挖到礦的概率會降低。反之,網絡中礦工減少,會讓系統(tǒng)更容易導致被***,比特幣價值越低,但挖到礦的概率會提高。因此,比特幣的價格理論上應該穩(wěn)定在一個合適的值(網絡穩(wěn)定性也會穩(wěn)定在相應的值),價格乘以挖到礦的概率,恰好達到礦工的收益預期。
從長遠角度看,硬件成本是下降的,但每個區(qū)塊的比特幣獎勵每隔4年減半,最終將在2140年達到2100萬枚,之后將完全依靠交易的服務費來鼓勵礦工對網絡的維護。
比特幣最小單位是“聰”,即10^(-8) 比特幣,總“聰”數(shù)為2.1E15。對于64位處理器來說,高精度浮點計數(shù)的限制導致單個數(shù)值不能超過2^53約 等于9E15。
傳統(tǒng)共識問題往往是考慮在一個相對封閉的分布式系統(tǒng)中,允許同時存在正常節(jié)點、故障節(jié)點,如何快速達成一致。
對于比特幣網絡來說,它是完全開放的,可能面向各種***情況,同時基于Internet的網絡質量只能保證“盡力而為”,導致問題更加復雜,傳統(tǒng)的一致性算法在這種場景下難以實用。
因此,比特幣網絡不得不對共識的目標和過程都進行了一系列限制,提出了基于POW的共識機制。
首先是不實現(xiàn)面向最終確認的共識,而是基于概率、隨時間逐步增強確認的共識。現(xiàn)有達成的結果在理論上都可能被推翻,只是***者要付出的代價隨時間而指數(shù)級上升,被推翻的可能性隨之指數(shù)級的下降。
此外,考慮到Internet的尺度,達成共識的時間相對比較長。按照區(qū)塊(一組交易)來進行階段性的確認(快照),提高網絡整體的可用性。
最后,限制網絡中共識的噪音。通過進行大量的Hash計算和少數(shù)的合法結果來限制合法提案的個數(shù),進一步提高網絡中共識的穩(wěn)定性。
挖礦是參與維護比特幣網絡的節(jié)點,通過協(xié)助生成新區(qū)塊來獲取一定量新增的比特幣的過程。當用戶向比特幣網絡中發(fā)布交易后,需要有人將交易進行確認,形成新的區(qū)塊,串聯(lián)到區(qū)塊鏈中。在一個互相不信任的分布式系統(tǒng)中,比特幣網絡采用挖礦的方式來解決交易的確認。
目前,每10分鐘左右生成一個不超過1MB大小的區(qū)塊(記錄10分鐘內發(fā)生的驗證過的交易內容),串聯(lián)到最長的鏈尾部,每個區(qū)塊的成功提交者可以得到系統(tǒng)12.5個比特幣的獎勵(獎勵作為區(qū)塊內的第一個交易,一定區(qū)塊數(shù)后才能使用),以及用戶附加到交易上的支付服務費用。即便沒有任何用戶交易,礦工也可以自行產生合法的區(qū)塊并獲得獎勵。
每個區(qū)塊的獎勵最初是50個比特幣,每隔 21萬個區(qū)塊自動減半,即4年時間,最終比特幣總量穩(wěn)定在2100萬個。因此,比特幣是一種通縮的貨幣。
挖礦的具體過程為:參與者綜合上一個區(qū)塊的Hash值,上一個區(qū)塊生成之后的新的驗證過的交易內容,再加上自己猜測的一個隨機數(shù)X,一起打包到一個候選新區(qū)塊,讓新區(qū)塊的Hash值小于比特幣網絡中給定的一個數(shù)(難度值)。
系統(tǒng)每隔兩周(即經過2016個區(qū)塊)會根據(jù)上一周期的挖礦時間來調整挖礦難度(通過調整限制數(shù)的大小),來調節(jié)生成區(qū)塊的時間穩(wěn)定在 10 分鐘左右。為了避免震蕩,每次調整的大幅度為4倍。歷史上最快的出塊時間小于10s,最慢的出塊時間超過1個小時。
為了挖到礦,參與處理區(qū)塊的用戶端往往需要付出大量的時間和計算力。算力一般以每秒進行多少次Hash計算為單位,記為h/s。目前,比特幣網絡算力峰值已經達到了每秒數(shù)百億億次。
匯豐銀行分析師Anton Tonev和Davy Jose曾表示,比特幣區(qū)塊鏈(通過挖礦)提供了一個局部的、迄今為止最優(yōu)的解決方案:如何在分散的系統(tǒng)中驗證信任。區(qū)塊鏈本質上解決了傳統(tǒng)依賴于第三方的問題,因為協(xié)議不只滿足了中心化機構追蹤交易的需求,還使得陌生人之間產生信任。區(qū)塊鏈的技術和安全的過程使得陌生人之間在沒有被信任的第三方時產生信任。
2010年以前,挖礦還是一個非常熱門的盈利行業(yè)。但是隨著相關技術和設備的發(fā)展,現(xiàn)在個人進行挖礦的收益已經降得很低。從概率上說,由于當前參與挖礦的計算力實在過于龐大(已經超出大部分的超算中心),一般的算力已經不可能挖到比特幣。
從普通的CPU(2009年)、到后來的GPU(2010年)和 FPGA(2011年末)、到后來的ASIC礦機(2013 年年初,目前單片算力已達每秒數(shù)百億次Hash 計算)、再到現(xiàn)在眾多礦機聯(lián)合組成礦池(知名礦池包括F2Pool、BitFury、BTCC等)。數(shù)年間,比特幣礦機的技術走完了過去幾十年的集成電路技術進化歷程,并且還頗有創(chuàng)新之處。全網的算力已超過每秒10^18 次Hash計算。
基本上個體達到1/3的計算力,比特幣網絡就存在被破壞的風險;達到1/2的算力,從概率上就掌控整個網絡。但是要實現(xiàn)這么大的算力,將需要付出巨大的經濟成本。
工作量證明通過計算來猜測一個數(shù)值(nonce),使得拼湊上交易數(shù)據(jù)后內容的Hash值滿足規(guī)定的上限(來源于hashcash)。由于Hash難題在目前計算模型下需要大量的計算,可以保證在一段時間內,系統(tǒng)中只能出現(xiàn)少數(shù)合法提案。如果能夠提出合法提案,也證明提案者確實已經付出了一定的工作量。
合法提案會在網絡中進行廣播,收到的用戶進行驗證后,會基于用戶認為的最長鏈基礎上繼續(xù)難題的計算。因此,系統(tǒng)中可能出現(xiàn)鏈的分叉(Fork),但最終會有一條鏈成為最長的鏈。
Hash問題具有不可逆的特點,因此,目前除了暴力計算外,還沒有有效的算法進行解決。如果獲得符合要求的nonce,則說明在概率上是付出了對應的算力。誰的算力多,誰最先解決問題的概率就越大。當掌握超過全網一半算力時,從概率上就能控制網絡中鏈的走向。
參與POW計算比賽的人,將付出不小的經濟成本(硬件、電力、維護等)。當沒有最終成為首個算出合法nonce值的幸運兒時,成本都將被沉沒掉。如果有人嘗試惡意破壞,需要付出大量的經濟成本。
權益證明(Proof of Stake,PoS)最早在2013年被提出,最早在Peercoin系統(tǒng)中被實現(xiàn),擁有股份越多的人越容易獲取記賬權(同時越傾向于維護網絡的正常工作)。
典型的過程是通過保證金(代幣、資產、名聲等具備價值屬性的物品即可)來對賭一個合法的塊成為新的區(qū)塊,收益為抵押資本的利息和交易服務費。提供證明的保證金(例如通過轉賬貨幣記錄)越多,則獲得記賬權的概率就越大。合法記賬者可以獲得收益。POS試圖解決在 POW中大量資源被浪費的缺點,受到了廣泛關注。惡意參與者將存在保證金被罰沒的風險,即損失經濟利益。
通常,對于POS需要掌握超過全網1/3的資源才有可能左右最終的結果
POS也有一些改進的算法,包括授權股權證明機制(DPOS),即所有股東投票選出一個董事會,董事會中成員才有權進行代理記賬。DPOS算法在實踐中得到了不錯的驗證,但并沒有理論上的證明。
2017年 8月,來自愛丁堡大學和康涅狄格大學的 Aggelos Kiayias等學者在論文《Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol》中提出了Ouroboros區(qū)塊鏈共識協(xié)議,可以達到誠實行為的近似納什均衡,認為是首個可證實安全的POS協(xié)議。
比特幣的交易網絡最為人詬病的一點便是交易性能:全網每秒7筆左右的交易速度,遠低于傳統(tǒng)的金融交易系統(tǒng);同時,等待6個塊的可信確認將導致約1個小時的最終確認時間。為了提升性能,比特幣社區(qū)提出了閃電網絡等創(chuàng)新的設計。
閃電網絡的主要思路十分簡單——將大量交易放到比特幣區(qū)塊鏈之外進行,只把關鍵環(huán)節(jié)放到鏈上進行確認。最早于2015 年2月在論文《The Bitcoin Lightning Network:Scalable Off-Chain Instant Payments》中提出。閃電網絡主要通過引入智能合約的思想來完善鏈下的交易渠道。核心的概念主要有兩個:RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract)。RSMC解決了鏈下交易的確認問題,HTLC解決了支付通道的問題。
RSMC(Recoverable Sequence Maturity Contract),即可撤銷的順序成熟度合同。首先假定交易雙方之間存在一個微支付通道(資金池)。交易雙方先預存一部分資金到微支付通道里,初始情況下雙方的分配方案等于預存的金額。每次發(fā)生交易,需要對交易后產生資金分配結果共同進行確認,同時簽字把舊版本的分配方案作廢掉。任何一方需要提現(xiàn)時,可以將手里雙方簽署過的交易結果寫到區(qū)塊鏈網絡中,從而被確認。只有在提現(xiàn)時候才需要通過區(qū)塊鏈。
任何一個版本的方案都需要經過雙方的簽名認證才合法。任何一方在任何時候都可以提出提現(xiàn),提現(xiàn)時需要提供一個雙方都簽名過的資金分配方案(意味著肯定是某次交易后的結果,被雙方確認過,但未必是最新的結果)。在一定時間內,如果另外一方拿出證明表明這個方案已經被作廢(非最新的交易結果),則資金罰沒給質疑方;否則按照提出方的結果進行分配。罰沒機制可以確保了沒人會故意拿一個舊的交易結果來提現(xiàn)。
另外,即使雙方都確認了某次提現(xiàn),首先提出提現(xiàn)一方的資金到賬時間要晚于對方,鼓勵大家盡量都在鏈外完成交易。通過RSMC,可以實現(xiàn)大量中間交易發(fā)生在鏈外。
微支付通道是通過Hashed Timelock Contract來實現(xiàn)的,中文意思是哈希的帶時鐘的合約,即限時轉賬。通過智能合約,雙方約定轉賬方先凍結一筆錢,并提供一個哈希值,如果在一定時間內有人能提出一個字符串,使得哈希計算后的值跟已知提供的哈希值匹配,則錢轉給接收方。
4、閃電網絡的實現(xiàn)RSMC 保障了兩個人之間的直接交易可以在鏈下完成,HTLC保障任意兩個人之間的轉賬都可以通過一條支付通道來完成。閃電網絡整合了RSMC和HTLC兩種機制,就可以實現(xiàn)任意兩個人之間的交易都在鏈下完成。
在整個交易中,智能合約起到中介的重要角色,而區(qū)塊鏈網絡則確保最終的交易結果被確認。
側鏈(Sidechain)協(xié)議允許資產在比特幣區(qū)塊鏈和其它區(qū)塊鏈之間互轉。側鏈也來自比特幣社區(qū),最早是在2013年12月提出,2014 年4月立項,由Blockstream公司(由比特幣核心開發(fā)者 Adam Back、Matt Corallo等共同發(fā)起成立)主導研發(fā)。側鏈協(xié)議于 2014年10月在白皮書《Enabling Blockchain Innovations with Pegged Sidechains》中公開。
側鏈誕生前,眾多山寨幣的出現(xiàn)正在碎片化整個數(shù)字貨幣市場,再加上以太坊等項目的競爭,一些比特幣開發(fā)者希望能借助側鏈的形式擴展比特幣的底層協(xié)議。
以比特幣區(qū)塊鏈作為主鏈(Parent chain),其它區(qū)塊鏈作為側鏈,二者通過雙向掛鉤(Two-way peg),可實現(xiàn)比特幣從主鏈轉移到側鏈進行流通。
側鏈可以是一個獨立的區(qū)塊鏈,有自己按需定制的賬本、共識機制、交易類型、腳本和合約的支持等。側鏈不能發(fā)行比特幣,但可以通過支持與比特幣區(qū)塊鏈掛鉤來引入和流通一定數(shù)量的比特幣。當比特幣在側鏈流通時,主鏈上對應的比特幣會被鎖定,直到比特幣從側鏈回到主鏈。側鏈機制可將一些定制化或高頻的交易放到比特幣主鏈之外進行,實現(xiàn)比特幣區(qū)塊鏈的擴展。側鏈的核心原理在于能夠凍結一條鏈上的資產,然后在另一條鏈上產生,可以通過多種方式來實現(xiàn)。
在比特幣系統(tǒng)中驗證交易時,涉及到交易合法性檢查、雙重花費檢查、腳
本檢查等。由于驗證過程需要完整的UTXO記錄,通常要由運行著完整功能節(jié)點的礦工來完成。
而很多時候,用戶只關心與自己相關的交易,比如當用戶收到其他人號稱發(fā)來的比特幣時,只希望能夠知道交易是否合法、是否已在區(qū)塊鏈中存在了足夠的時間(即獲得足夠的確認),而不需要自己成為完整節(jié)點做出完整驗證。
中本聰設計的簡單支付驗證(Simplified Payment Verification,SPV)可以實現(xiàn)這一點。SPV能夠以較小的代價判斷某個支付交易是否已經被驗證過(存在于區(qū)塊鏈中),以及得到了多少算力保護(定位包含該交易的區(qū)塊在區(qū)塊鏈中的位置)。SPV 客戶端只需要下載所有區(qū)塊的區(qū)塊頭(Block Header),并進行簡單的定位和計算工作就可以給出驗證結論。
側鏈協(xié)議中,用SPV來證明一個交易確實已經在區(qū)塊鏈中發(fā)生過,稱為SPV證明(SPV Proof)。一個SPV證明包括兩部分內容:一組區(qū)塊頭的列表,表示工作量證明;一個特定輸出(output)確實存在于某個區(qū)塊中的密碼學證明。
側鏈協(xié)議的設計難點在于如何讓資產在主鏈和側鏈之間安全流轉,即接受資產的鏈必須確保發(fā)送資產的鏈上的幣被可靠鎖定。
側鏈協(xié)議采用雙向掛鉤機制實現(xiàn)比特幣向側鏈轉移和返回。主鏈和側鏈需要對對方的特定交易做SPV驗證。完整過程如下:
A、當用戶要向側鏈轉移比特幣時,首先在主鏈創(chuàng)建交易,待轉移的比特幣被發(fā)往一個特殊的輸出,并在主鏈上被鎖定。
B、等待一段確認期,使得上述交易獲得足夠的工作量確認。
C、用戶在側鏈創(chuàng)建交易提取比特幣,需要在這筆交易的輸入指明上述主鏈被鎖定的輸出,并提供足夠的SPV證明。
D、等待一段競爭期,防止雙重花費***。
E、比特幣在側鏈上自由流通。
F、當用戶想讓比特幣返回主鏈時,采取類似的反向操作。首先在側鏈創(chuàng)建交易,待返回的比特幣被發(fā)往一個特殊的輸出。先等待一段確認期后,在主鏈用足夠的對側鏈輸出的SPV證明來解鎖最早被鎖定的輸出。競爭期過后,主鏈比特幣恢復流通。
比特幣的設計目標在于支持一套安全、開放、分布式的數(shù)字貨幣系統(tǒng),因此,比特幣協(xié)議的設計中很多地方都體現(xiàn)了權衡(trade-off)的思想。
A、區(qū)塊容量:更大的區(qū)塊容量可以帶來更高的交易吞吐率,但會增加挖礦成本,帶來中心化的風險,同時增大存儲的代價。兼顧多方面的考慮,當前的區(qū)塊容量上限設定為1MB。
B、出塊間隔時間:更短的出塊間隔可以縮短交易確認的時間,但也可能導致分叉增多,降低網絡可用性。
C、腳本支持程度:更強大的腳本指令集可以帶來更多靈活性,但也會引入更多安全風險。
比特幣協(xié)議不會一成不變。當需要修復漏洞、擴展功能或調整結構時,比特幣需要在全網的配合下進行升級。升級通常涉及更改交易的數(shù)據(jù)結構或區(qū)塊的數(shù)據(jù)結構。
由于分布在全球的節(jié)點不可能同時完成升級來遵循新的協(xié)議,因此比特幣區(qū)塊鏈在升級時可能發(fā)生分叉(Fork)。對于一次升級,如果把網絡中升級了的節(jié)點稱為新節(jié)點,未升級的節(jié)點稱為舊節(jié)點,根據(jù)新舊節(jié)點相互兼容性上的區(qū)別,可分為軟分叉(Soft Fork)和硬分叉(Hard Fork)。
如果舊節(jié)點仍然能夠驗證接受新節(jié)點產生的交易和區(qū)塊,則稱為軟分叉。舊節(jié)點可能不理解新節(jié)點產生的一部分數(shù)據(jù),但不會拒絕。網絡既向后和向前兼容,因此這類升級可以平穩(wěn)進行。
如果舊節(jié)點不接受新節(jié)點產生的交易和區(qū)塊,則稱為硬分叉。網絡只向后兼容,不向前兼容。這類升級往往引起一段時間內新舊節(jié)點所認可的區(qū)塊不同,分出兩條鏈,直到舊節(jié)點升級完成。
盡管通過硬分叉升級區(qū)塊鏈協(xié)議的難度大于軟分叉,但軟分叉能做的事情畢竟有限,一些大膽的改動只能通過硬分叉完成。
交易延展性(Transaction Malleablility)是比特幣的一個設計缺陷,是指當交易發(fā)發(fā)起者對交易簽名(sign)后,交易ID仍然可能被改變。
發(fā)起者對交易的簽名(scriptSig)位于交易的輸入(vin)當中,屬于交易內容的一部分。交易ID(txid)是整個交易內容的 Hash值,因此,造成***者(尤其是簽名方)可以通過改變scriptSig來改變txid,而交易仍舊保持合法。例如,反轉ECDSA簽名過程中的S值,簽名仍然合法,交易仍然能夠被傳播。
延展性***能改變交易ID,但交易的輸入和輸出不會被改變,所以***者不會直接盜取比特幣。因此,延展性***在比特幣網絡一直存在,仍未被根治。
然而,延展性***仍然會帶來一些問題。比如,在原始交易未被確認之前廣播ID改變了的交易可能誤導相關方對交易狀態(tài)的判斷,甚至發(fā)動拒絕服務***;多重簽名場景下一個簽名者有能力改變交易ID,給其他簽名者的資產帶來潛在風險。同時,延展性問題也會阻礙閃電網絡等比特幣擴展方案的實施。
比特幣當前將區(qū)塊容量限制在1MB以下。隨著用戶和交易量的增加,區(qū)塊容量限制已逐漸不能滿足比特幣的交易需求,使得交易日益擁堵、交易手續(xù)費不斷上漲。
關于比特幣擴容的持續(xù)爭論從2015年便已開始,期間有一系列方案被擺上臺面,包括各種鏈上擴容提議、用側鏈或閃電網絡擴展比特幣等??紤]到比特幣復雜的社區(qū)環(huán)境,任何擴容方案想要達成廣泛共識都比較困難,不同的方案之間也很難調和。
當前,擴容之爭主要集中在兩派:代表核心開發(fā)者的Bitcoin Core團隊主推的隔離見證方案和Bitcoin Unlimited團隊推出的方案。
隔離見證(Segregated Witness,簡稱SegWit)是指將交易中的簽名部分從交易的輸入中隔離出來,放到交易末尾的被稱為見證(Witness)的字段當中。
對交易ID 的計算將不再包含簽名部分,是延展性問題的一種解法,給引入閃電網絡等第二層協(xié)議增強了安全性。
同時,隔離見證會將區(qū)塊容量上限理論上提高到4MB。
Bitcoin Unlimited方案(簡稱 BU)是指擴展比特幣客戶端,使礦工可以自由配置想要生成和驗證的區(qū)塊的容量。
根據(jù)方案的設想,區(qū)塊容量的上限會根據(jù)眾多節(jié)點和礦工的配置進行自然收斂。
比特幣的匿名特性,使得其上交易的監(jiān)管變得十分困難。不少非法分子利用其匿名性,通過比特幣轉移資金。例如WannaCry 網絡病毒向受害者勒索比特幣,短短三天時間里傳播并影響到全球150多個國家。
但通過比特幣就可以實現(xiàn)完全匿名化并不現(xiàn)實。雖然交易賬戶自身是匿名的Hash地址,但一些研究成果(如《An analysis of anonymity in the bitcoin system》)表明,通過分析大量公開可得的交易記錄,有很大概率可以追蹤到比特幣的實際轉移路線,甚至可以追蹤到真實用戶。
比特幣客戶端用于和比特幣網絡進行交互,同時可以參與到網絡的維護。
客戶端分為三種:完整客戶端、輕量級客戶端和在線客戶端。
完整客戶端:存儲所有的交易歷史記錄,功能完備。
輕量級客戶端:不保存交易副本,交易需要向別人查詢。
在線客戶端:通過網頁模式來瀏覽第三方服務器提供的服務。
比特幣客戶端下載地址:https://bitcoin.org/en/download
基于比特幣客戶端,可以很容易實現(xiàn)用戶錢包功能。
比特幣錢包存儲和保護用戶的私鑰,并提供查詢比特幣余額、收發(fā)比特幣等功能。根據(jù)私鑰存儲方式不同,錢包主要分為以下幾種:
離線錢包:離線存儲私鑰,也稱為“冷錢包”。安全性相對最強,但無法直接發(fā)送交易,便利性差。
本地錢包:用本地設備存儲私鑰??芍苯酉虮忍貛啪W絡發(fā)送交易,易用性強,但本地設備存在被***風險。
在線錢包:用錢包服務器存儲經用戶口令加密過的私鑰。易用性強,但錢包服務器同樣可能被***。
多重簽名錢包:由多方共同管理一個錢包地址,比如2of 3模式下,集合三位管理者中的兩位的私鑰便可以發(fā)送交易。
比特幣錢包下載地址:https://bitcoin.org/en/choose-your-wallet
比特幣礦機是專門為“挖礦”設計的硬件設備,目前主要包括基于GPU和ASIC芯片的專用礦機。礦機往往采用特殊的設計來加速挖礦過程中的計算處理。
礦機最重要的屬性是可提供的算力(通常以每秒可進行 Hash計算的次數(shù)來表示)和所需要的功耗。當算力足夠大,可以在概率意義上挖到足夠多的新的區(qū)塊,來彌補電力費用時,礦機是可以盈利的;當單位電力產生的算力不足以支付電力費用時,礦機無法盈利,只能被淘汰。
目前,比特幣網絡中的全網算力仍然在快速增長中,礦工需要綜合考慮算力變化、比特幣價格、功耗帶來的電費等許多問題,需要算好經濟賬。
當前文章:區(qū)塊鏈快速入門(七)——比特幣-創(chuàng)新互聯(lián)
文章地址:http://muchs.cn/article10/piido.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網站、網站排名、標簽優(yōu)化、用戶體驗、網站設計、ChatGPT
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)