區塊鏈快速入門(七)——比特幣

來源:互聯網
上載者:User

標籤:sequence   輸入   rabl   理論   十分   初始   http   protoc   cat   

區塊鏈快速入門(七)——比特幣一、比特幣簡介

比特幣(BitCoin,BTC)是基於區塊鏈技術的一種數字貨幣實現,比特幣網路是曆史上首個經過大規模長時間檢驗的數字貨幣系統。
自2009 年正式上線以來,比特幣價格經曆了數次的震蕩,目前每枚比特幣市場價格超過6000 美金,並曾經一度接近20000美金。
比特幣網路在功能上具有如下特點:
A、去中心化
沒有任何獨立個體可以對網路中交易進行破壞,任何交易請求都需要大多數參與者的共識。
B、匿名性
比特幣網路中賬戶地址是匿名的,無法從交易資訊關聯到具體的個體,但也很難進行審計
C、通脹預防
比特幣的發行需要通過挖礦計算來進行,發行量每四年減半,總量上限為2100萬枚,無法被超發。

二、比特幣實現原理1、比特幣實現原理簡介

比特幣網路是一個分布式的點對點網路,網路中的礦工通過挖礦來競爭對交易記錄的記賬權,擁有記賬權的礦工負責產生區塊,記錄交易記錄的過程,維護網路的正常運行。
區塊鏈網路提供一個公用可見的記賬本,記賬本並非記錄每個賬戶的餘額,而是用來記錄發生過的交易的曆史資訊,可以避免重放***,即某個合法交易被多次重新發送造成***。

2、比特幣的交易過程

比特幣網路中每次發生交易,使用者需要將交易記錄寫到比特幣網路賬本中,等網路確認後即可認為交易完成。
除了挖礦獲得獎勵的coinbase交易只有輸出,正常情況下每個交易需要包括若干輸入和輸出,未經使用(引用)的交易輸出(Unspent Transaction Outputs,UTXO)可以被新的交易引用作為其合法的輸入。被使用過的交易的輸出(Spent Transaction Outputs,STXO),則無法被引用作為合法輸入。
因此,比特幣網路中一筆合法的交易,必須是引用某些已存在交易的UTXO(必須是屬於付款方才能合法引用)作為新交易的輸入,並產生新的UTXO(將屬於收款方)。
在交易過程中,付款方如何證明自己所引用的UTXO合法?比特幣中通過“簽名指令碼”來實現,並且指定“輸出指令碼”來限制將來能使用新UTXO者只能為指定收款方。對每筆交易,付款方需要進行簽名確認。並且,對每一筆交易來說,總輸入不能小於總輸出。總輸入相比總輸出多餘的部分稱為交易費用(Transaction Fee),為產生包含該交易區塊的礦工所獲得。目前規定每筆交易的交易費用不能小於0.0001BTC,交易費用越高,越多礦工願意包含該交易,也就越早被放到網路中。交易費用在獎勵礦工的同時,也避免了網路受到大量***。
交易中金額的最小單位是“聰”,即一億分之一(10^-8)比特幣。
剛放進網路中的交易(深度為0)並非是即時得到確認的。進入網路中的交易存在被推翻的可能性,一般要再產生幾個新的區塊後(深度大於0)才認為該交易被確認。

3、賬戶(地址)

比特幣採用了非對稱的密碼編譯演算法,使用者自己保留私密金鑰,對自己發出的交易進行簽名確認,並公開公開金鑰。
比特幣的賬戶地址其實就是使用者公開金鑰經過一系列Hash(HASH160或先進行SHA256,然後進行 RIPEMD160)及編碼運算後產生的160位(20位元組)的字串。
一般地,常常對賬戶地址串進行Base58Check編碼,並添加前導位元組(表明支援哪種指令碼)和4位元組校正位元組,以提高可讀性和準確性。
賬戶並非直接是公開金鑰內容,而是Hash後的值,避免公開金鑰過早公開後導致被破解出私密金鑰。

4、交易

交易是完成比特幣功能的核心概念,一條交易可能包括如下資訊:
A、付款人地址:合法的地址,公開金鑰經過SHA256和RIPEMD160兩次Hash得到160位Hash串。
B、付款人對交易的簽字確認:確保交易內容不被篡改。
C、付款人資金的來源交易ID:從哪個交易的輸出作為本次交易的輸入。
D、交易的金額:多少錢,跟輸入的差額為交易的服務費。
E、收款人地址:合法的地址。
F、時間戳記:交易何時能生效。
網路中節點收到交易資訊後,將進行如下檢查:
A、交易是否已經處理過。
B、交易是否合法。包括地址是否合法、發起交易者是否是輸入地址的合法擁有者、是否是UTXO。
C、交易的輸入之和是否大於輸出之和。
檢查都通過,則將交易標記為合法的未確認交易,並在網路內進行廣播。
使用者可以從blockchain.info網站查看即時的交易資訊,一個樣本交易的內容如下:

5、交易指令碼

指令碼(Script)是保障交易完成(主要用於檢驗交易是否合法)的核心機制,當所依附的交易發生時被觸發。通過指令碼機制而非寫死交易過程,使比特幣網路實現了一定的可擴充性。比特幣指令碼語言是一種非圖靈完備的語言。
一般每個交易都會包括兩個指令碼:負責輸入的解鎖指令碼(scriptSig)和負責輸出的鎖定指令碼(scriptPubKey)。
輸出指令碼一般由付款方對交易設定鎖定,用來對能動用交易的輸出(例如,要花費該交易的輸出)的對象(收款方)進行許可權控制,例如限制必須是某個公開金鑰的擁有者才能花費這筆交易。
認領指令碼則用來證明自己可以滿足交易輸出指令碼的鎖定條件,即對某個交易的輸出(比特幣)的擁有權。
輸出指令碼目前支援兩種類型:
P2PKH:Pay-To-Public-Key-Hash,允許使用者將比特幣發送到一個或多個典型的比特幣地址上(證明擁有該公開金鑰),前導位元組一般為0x00。
P2SH:Pay-To-Script-Hash,支付者建立一個輸出指令碼,裡邊包含另一個指令碼(認領指令碼)的雜湊,一般用於需要多人簽名的情境,前導位元組一般為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、區塊

比特幣區塊鏈的一個區塊不能超過1MB,將主要包括如下內容:
A、區塊大小:4位元組
B、區塊頭:80位元組
C、交易個數計數器:1~9位元組
D、所有交易的具體內容,可變長,匹配Merkle樹葉子節點順序。
其中,區塊頭資訊包括:
A、版本號碼:4位元組
B、上一個區塊頭的Hash值:連結到上一個合法的塊上,對其區塊頭進行兩次SHA256操作,32位元組
C、本區塊所包含的所有交易的Merkle樹根的雜湊值:兩次SHA256操作,32位元組
D、時間戳記:4位元組
E、難度指標:4位元組
F、Nonce:4位元組,POW 問題的答案。
可見,要對區塊鏈的完整性進行檢查,只需要檢驗各個區塊頭部資訊即可,無需擷取到具體的交易內容,是簡單交易驗證(Simple Payment Verification,SPV)的基本原理。另外,通過頭部的連結,提供時序關係的同時加大了對區塊中資料進行篡改的難度。
一個樣本區塊如下:

7、如何避免作惡

基於經濟博弈原理。在一個開放的網路中,法通過技術手段保證每個人都是合作的。但可以通過經濟博弈來讓合作者得到利益,讓非合作者遭受損失和風險。
比特幣網路中所有試圖參與者(礦工)都首先要付出挖礦的代價,進行算力消耗,越想拿到新區塊的決定權,抵押的算力越多。一旦失敗,算力都會被沒收掉,成為沉沒成本。當網路中存在眾多參與者時,個體試圖拿到新區塊決定權要付出的算力成本是巨大的,進行一次作惡付出的代價已經超過可能帶來的好處。

8、負反饋調節

比特幣網路在設計上,很好的體現了負反饋的控制論基本原理。
比特幣網路中礦工越多,系統就越穩定,比特幣價值就越高,但挖到礦的機率會降低。反之,網路中礦工減少,會讓系統更容易導致被***,比特幣價值越低,但挖到礦的機率會提高。因此,比特幣的價格理論上應該穩定在一個合適的值(網路穩定性也會穩定在相應的值),價格乘以挖到礦的機率,恰好達到礦工的收益預期。
從長遠角度看,硬體成本是下降的,但每個區塊的比特幣獎勵每隔4年減半,最終將在2140年達到2100萬枚,之後將完全依靠交易的服務費來鼓勵礦工對網路的維護。
比特幣最小單位是“聰”,即10^(-8) 比特幣,總“聰”數為2.1E15。對於64位處理器來說,高精度浮點計數的限制導致單個數值不能超過2^53約 等於9E15。

9、共識機制

傳統共識問題往往是考慮在一個相對封閉的分布式系統中,允許同時存在正常節點、故障節點,如何快速達成一致。
對於比特幣網路來說,它是完全開放的,可能面向各種***情況,同時基於Internet的網路品質只能保證“儘力而為”,導致問題更加複雜,傳統的一致性演算法在這種情境下難以實用。
因此,比特幣網路不得不對共識的目標和過程都進行了一系列限制,提出了基於POW的共識機制。
首先是不實現面向最終確認的共識,而是基於機率、隨時間逐步增強確認的共識。現有達成的結果在理論上都可能被推翻,只是***者要付出的代價隨時間而指數級上升,被推翻的可能性隨之指數級的下降。
此外,考慮到Internet的尺度,達成共識的時間相對比較長。按照區塊(一組交易)來進行階段性的確認(快照),提高網路整體的可用性。
最後,限制網路中共識的噪音。通過進行大量的Hash計算和少數的合法結果來限制合法提案的個數,進一步提高網路中共識的穩定性。

三、挖礦1、挖礦基本原理

挖礦是參與維護比特幣網路的節點,通過協助產生新區塊來擷取一定量新增的比特幣的過程。當使用者向比特幣網路中發布交易後,需要有人將交易進行確認,形成新的區塊,串聯到區塊鏈中。在一個互相不信任的分布式系統中,比特幣網路採用挖礦的方式來解決交易的確認。
目前,每10分鐘左右產生一個不超過1MB大小的區塊(記錄10分鐘內發生的驗證過的交易內容),串聯到最長的鏈尾部,每個區塊的成功提交者可以得到系統12.5個比特幣的獎勵(獎勵作為區塊內的第一個交易,一定區塊數後才能使用),以及使用者附加到交易上的支付服務費用。即便沒有任何使用者交易,礦工也可以自行產生合法的區塊並獲得獎勵。
每個區塊的獎勵最初是50個比特幣,每隔 21萬個區塊自動減半,即4年時間,最終比特幣總量穩定在2100萬個。因此,比特幣是一種通縮的貨幣。

2、挖礦過程

挖礦的具體過程為:參與者綜合上一個區塊的Hash值,上一個區塊產生之後的新的驗證過的交易內容,再加上自己猜測的一個隨機數X,一起打包到一個候選新區塊,讓新區塊的Hash值小於比特幣網路中給定的一個數(難度值)。
系統每隔兩周(即經過2016個區塊)會根據上一周期的挖礦時間來調整挖礦難度(通過調整限制數的大小),來調節產生區塊的時間穩定在 10 分鐘左右。為了避免震蕩,每次調整的最大幅度為4倍。曆史上最快的出塊時間小於10s,最慢的出塊時間超過1個小時。
為了挖到礦,參與處理區塊的使用者端往往需要付出大量的時間和計算力。算力一般以每秒進行多少次Hash計算為單位,記為h/s。目前,比特幣網路算力峰值已經達到了每秒數百億億次。
滙豐銀行分析師Anton Tonev和Davy Jose曾表示,比特幣區塊鏈(通過挖礦)提供了一個局部的、迄今為止最優的解決方案:如何在分散的系統中驗證信任。區塊鏈本質上解決了傳統依賴於第三方的問題,因為協議不只滿足了中心化機構追蹤交易的需求,還使得陌生人之間產生信任。區塊鏈的技術和安全的過程使得陌生人之間在沒有被信任的第三方時產生信任。

3、挖礦的評價

2010年以前,挖礦還是一個非常熱門的盈利行業。但是隨著相關技術和裝置的發展,現在個人進行挖礦的收益已經降得很低。從機率上說,由於當前參與挖礦的計算力實在過於龐大(已經超出大部分的超算中心),一般的算力已經不可能挖到比特幣。
從普通的CPU(2009年)、到後來的GPU(2010年)和 FPGA(2011年末)、到後來的ASIC礦機(2013 年年初,目前單片算力已達每秒數百億次Hash 計算)、再到現在眾多礦機聯合組成礦池(知名礦池包括F2Pool、BitFury、BTCC等)。數年間,比特幣礦機的技術走完了過去幾十年的整合電路技術進化曆程,並且還頗有創新之處。全網的算力已超過每秒10^18 次Hash計算。
基本上個體達到1/3的計算力,比特幣網路就存在被破壞的風險;達到1/2的算力,從機率上就掌控整個網路。但是要實現這麼大的算力,將需要付出巨大的經濟成本。

四、共識機制1、POW

工作量證明通過計算來猜測一個數值(nonce),使得拼湊上交易資料後內容的Hash值滿足規定的上限(來源於hashcash)。由於Hash難題在目前計算模型下需要大量的計算,可以保證在一段時間內,系統中只能出現少數合法提案。如果能夠提出合法提案,也證明提案者確實已經付出了一定的工作量。
合法提案會在網路中進行廣播,收到的使用者進行驗證後,會基於使用者認為的最長鏈基礎上繼續難題的計算。因此,系統中可能出現鏈的分叉(Fork),但最終會有一條鏈成為最長的鏈。
Hash問題具有無法復原的特點,因此,目前除了暴力計算外,還沒有有效演算法進行解決。如果獲得符合要求的nonce,則說明在機率上是付出了對應的算力。誰的算力多,誰最先解決問題的機率就越大。當掌握超過全網一半算力時,從機率上就能控制網路中鏈的走向。
參與POW計算比賽的人,將付出不小的經濟成本(硬體、電力、維護等)。當沒有最終成為首個算出合法nonce值的幸運兒時,成本都將被沉沒掉。如果有人嘗試惡意破壞,需要付出大量的經濟成本。

2、POS

權益證明(Proof of Stake,PoS)最早在2013年被提出,最早在Peercoin系統中被實現,擁有股份越多的人越容易擷取記賬權(同時越傾向於維護網路的正常工作)。
典型的過程是通過保證金(代幣、資產、名聲等具備價值屬性的物品即可)來對賭一個合法的塊成為新的區塊,收益為抵押資本的利息和交易服務費。提供證明的保證金(例如通過轉賬貨幣記錄)越多,則獲得記賬權的機率就越大。合法記賬者可以獲得收益。POS試圖解決在 POW中大量資源被浪費的缺點,受到了廣泛關注。惡意參與者將存在保證金被罰沒的風險,即損失經濟利益。
通常,對於POS需要掌握超過全網1/3的資源才有可能左右最終的結果
POS也有一些改進的演算法,包括授權股權證明機制(DPOS),即所有股東投票選出一個董事會,董事會中成員才有權進行代理記賬。DPOS演算法在實踐中得到了不錯的驗證,但並沒有理論上的證明。
2017年 8月,來自愛丁堡大學和康乃狄克大學的 Aggelos Kiayias等學者在論文《Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol》中提出了Ouroboros區塊鏈共識協議,可以達到誠實行為的近似納什均衡,認為是首個可證實安全的POS協議。

五、閃電網路1、閃電網路簡介

比特幣的交易網路最為人詬病的一點便是交易效能:全網每秒7筆左右的交易速度,遠低於傳統的金融交易系統;同時,等待6個塊的可信確認將導致約1個小時的最終確認時間。為了提升效能,比特幣社區提出了閃電網路等創新的設計。
閃電網路的主要思路十分簡單——將大量交易放到比特幣區塊鏈之外進行,只把關鍵環節放到鏈上進行確認。最早於2015 年2月在論文《The Bitcoin Lightning Network:Scalable Off-Chain Instant Payments》中提出。閃電網路主要通過引入智能合約的思想來完善鏈下的交易渠道。核心的概念主要有兩個:RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract)。RSMC解決了鏈下交易的確認問題,HTLC解決了支付通道的問題。

2、RSMC

RSMC(Recoverable Sequence Maturity Contract),即可撤銷的順序成熟度等級合約。首先假定交易雙方之間存在一個微支付通道(資金池)。交易雙方先預存一部分資金到微支付通道裡,初始情況下雙方的分配方案等於預存的金額。每次發生交易,需要對交易後產生資金分配結果共同進行確認,同時簽字把舊版本的分配方案作廢掉。任何一方需要提現時,可以將手裡雙方簽署過的交易結果寫到區塊鏈網路中,從而被確認。只有在提現時候才需要通過區塊鏈。
任何一個版本的方案都需要經過雙方的簽名認證才合法。任何一方在任何時候都可以提出提現,提現時需要提供一個雙方都簽名過的資金分配方案(意味著肯定是某次交易後的結果,被雙方確認過,但未必是最新的結果)。在一定時間內,如果另外一方拿出證明表明這個方案已經被作廢(非最新的交易結果),則資金罰沒給質疑方;否則按照提出方的結果進行分配。罰沒機制可以確保了沒人會故意拿一箇舊的交易結果來提現。
另外,即使雙方都確認了某次提現,首先提出提現一方的資金到賬時間要晚於對方,鼓勵大家盡量都在鏈外完成交易。通過RSMC,可以實現大量中間交易發生在鏈外。

3、HTLC

微支付通道是通過Hashed Timelock Contract來實現的,中文意思是雜湊的帶時鐘的合約,即限時轉賬。通過智能合約,雙方約定轉賬方先凍結一筆錢,並提供一個雜湊值,如果在一定時間內有人能提出一個字串,使得雜湊計算後的值跟已知提供的雜湊值匹配,則錢轉給接收方。

4、閃電網路的實現

RSMC 保障了兩個人之間的直接交易可以在鏈下完成,HTLC保障任意兩個人之間的轉賬都可以通過一條支付通道來完成。閃電網路整合了RSMC和HTLC兩種機制,就可以實現任意兩個人之間的交易都在鏈下完成。
在整個交易中,智能合約起到中介的重要角色,而區塊鏈網路則確保最終的交易結果被確認。

六、側鏈1、側鏈簡介

側鏈(Sidechain)協議允許資產在比特幣區塊鏈和其它區塊鏈之間互轉。側鏈也來自比特幣社區,最早是在2013年12月提出,2014 年4月立項,由Blockstream公司(由比特幣核心開發人員 Adam Back、Matt Corallo等共同發起成立)主導研發。側鏈協議於 2014年10月在白皮書《Enabling Blockchain Innovations with Pegged Sidechains》中公開。
側鏈誕生前,眾多山寨幣的出現正在片段化整個數字貨幣市場,再加上以太坊等項目的競爭,一些比特幣開發人員希望能藉助側鏈的形式擴充比特幣的底層協議。
以比特幣區塊鏈作為主鏈(Parent chain),其它區塊鏈作為側鏈,二者通過雙向掛鈎(Two-way peg),可實現比特幣從主鏈轉移到側鏈進行流通。

側鏈可以是一個獨立的區塊鏈,有自己按需定製的賬本、共識機制、交易類型、指令碼和合約的支援等。側鏈不能發行比特幣,但可以通過支援與比特幣區塊鏈掛鈎來引入和流通一定數量的比特幣。當比特幣在側鏈流通時,主鏈上對應的比特幣會被鎖定,直到比特幣從側鏈回到主鏈。側鏈機制可將一些定製化或高頻的交易放到比特幣主鏈之外進行,實現比特幣區塊鏈的擴充。側鏈的核心原理在於能夠凍結一條鏈上的資產,然後在另一條鏈上產生,可以通過多種方式來實現。

2、SPV證明

在比特幣系統中驗證交易時,涉及到交易合法性檢查、雙重花費檢查、腳
本檢查等。由於驗證過程需要完整的UTXO記錄,通常要由運行著完整功能節點的礦工來完成。
而很多時候,使用者只關心與自己相關的交易,比如當使用者收到其他人號稱發來的比特幣時,只希望能夠知道交易是否合法、是否已在區塊鏈中存在了足夠的時間(即獲得足夠的確認),而不需要自己成為完整節點做出完整驗證。
中本聰設計的簡單支付驗證(Simplified Payment Verification,SPV)可以實現這一點。SPV能夠以較小的代價判斷某個支付交易是否已經被驗證過(存在於區塊鏈中),以及得到了多少算力保護(定位包含該交易的區塊在區塊鏈中的位置)。SPV 用戶端只需要下載所有區塊的區塊頭(Block Header),並進行簡單的定位和計算工作就可以給出驗證結論。
側鏈協議中,用SPV來證明一個交易確實已經在區塊鏈中發生過,稱為SPV證明(SPV Proof)。一個SPV證明包括兩部分內容:一組區塊頭的列表,表示工作量證明;一個特定輸出(output)確實存在於某個區塊中的密碼學證明。

3、雙向掛鈎

側鏈協議的設計痛點在於如何讓資產在主鏈和側鏈之間安全流轉,即接受資產的鏈必須確保發送資產的鏈上的幣被可靠鎖定。

側鏈協議採用雙向掛鈎機制實現比特幣向側鏈轉移和返回。主鏈和側鏈需要對對方的特定交易做SPV驗證。完整過程如下:
A、當使用者要向側鏈轉移比特幣時,首先在主鏈建立交易,待轉移的比特幣被發往一個特殊的輸出,並在主鏈上被鎖定。
B、等待一段確認期,使得上述交易獲得足夠的工作量確認。
C、使用者在側鏈建立交易提取比特幣,需要在這筆交易的輸入指明上述主鏈被鎖定的輸出,並提供足夠的SPV證明。
D、等待一段競爭期,防止雙重花費***。
E、比特幣在側鏈上自由流通。
F、當使用者想讓比特幣返回主鏈時,採取類似的反向操作。首先在側鏈建立交易,待返回的比特幣被發往一個特殊的輸出。先等待一段確認期後,在主鏈用足夠的對側鏈輸出的SPV證明來解鎖最早被鎖定的輸出。競爭期過後,主鏈比特幣恢複流通。

七、熱點問題1、設計中的權衡

比特幣的設計目標在於支援一套安全、開放、分布式的數字貨幣系統,因此,比特幣協議的設計中很多地方都體現了權衡(trade-off)的思想。
A、區塊容量:更大的區塊容量可以帶來更高的交易吞吐率,但會增加挖礦成本,帶來中心化的風險,同時增大儲存的代價。兼顧多方面的考慮,當前的區塊容量上限設定為1MB。
B、出塊間隔時間:更短的出塊間隔可以縮短交易確認的時間,但也可能導致分叉增多,降低網路可用性。
C、指令碼支援程度:更強大的指令碼指令集可以帶來更多靈活性,但也會引入更多安全風險。

2、分叉

比特幣協議不會一成不變。當需要修複漏洞、擴充功能或調整結構時,比特幣需要在全網的配合下進行升級。升級通常涉及更改交易的資料結構或區塊的資料結構。
由於分布在全球的節點不可能同時完成升級來遵循新的協議,因此比特幣區塊鏈在升級時可能發生分叉(Fork)。對於一次升級,如果把網路中升級了的節點稱為新節點,未升級的節點稱為舊節點,根據新舊節點相互相容性上的區別,可分為軟分叉(Soft Fork)和硬分叉(Hard Fork)。
如果舊節點仍然能夠驗證接受新節點產生的交易和區塊,則稱為軟分叉。舊節點可能不理解新節點產生的一部分資料,但不會拒絕。網路既向後和向前相容,因此這類升級可以平穩進行。
如果舊節點不接受新節點產生的交易和區塊,則稱為硬分叉。網路只向後相容,不向前相容。這類升級往往引起一段時間內新舊節點所認可的區塊不同,分出兩條鏈,直到舊節點升級完成。
儘管通過硬分叉升級區塊鏈協議的難度大於軟分叉,但軟分叉能做的事情畢竟有限,一些大膽的改動只能通過硬分叉完成。

3、交易延展性

交易延展性(Transaction Malleablility)是比特幣的一個設計缺陷,是指當交易發發起者對交易簽名(sign)後,交易ID仍然可能被改變。
發起者對交易的簽名(scriptSig)位於交易的輸入(vin)當中,屬於交易內容的一部分。交易ID(txid)是整個交易內容的 Hash值,因此,造成***者(尤其是簽名方)可以通過改變scriptSig來改變txid,而交易仍舊保持合法。例如,反轉ECDSA簽名過程中的S值,簽名仍然合法,交易仍然能夠被傳播。
延展性***能改變交易ID,但交易的輸入和輸出不會被改變,所以***者不會直接盜取比特幣。因此,延展性***在比特幣網路一直存在,仍未被根治。
然而,延展性***仍然會帶來一些問題。比如,在原始交易未被確認之前廣播ID改變了的交易可能誤導相關方對交易狀態的判斷,甚至發動拒絕服務***;多重簽名情境下一個簽名者有能力改變交易ID,給其他簽名者的資產帶來潛在風險。同時,延展性問題也會阻礙閃電網路等比特幣擴充方案的實施。

4、擴容爭議

比特幣當前將區塊容量限制在1MB以下。隨著使用者和交易量的增加,區塊容量限制已逐漸不能滿足比特幣的交易需求,使得交易日益擁堵、交易手續約不斷上漲。
關於比特幣擴容的持續爭論從2015年便已開始,期間有一系列方案被擺上檯面,包括各種鏈上擴容提議、用側鏈或閃電網路擴充比特幣等。考慮到比特幣複雜的社區環境,任何擴容方案想要達成廣泛共識都比較困難,不同的方案之間也很難調和。
當前,擴容之爭主要集中在兩派:代表核心開發人員的Bitcoin Core團隊主推的隔離見證方案和Bitcoin Unlimited團隊推出的方案。
隔離見證(Segregated Witness,簡稱SegWit)是指將交易中的簽名部分從交易的輸入中隔離出來,放到交易末尾的被稱為見證(Witness)的欄位當中。
對交易ID 的計算將不再包含簽名部分,是延展性問題的一種解法,給引入閃電網路等第二層協議增強了安全性。
同時,隔離見證會將區塊容量上限理論上提高到4MB。
Bitcoin Unlimited方案(簡稱 BU)是指擴充比特幣用戶端,使礦工可以自由配置想要產生和驗證的區塊的容量。
根據方案的設想,區塊容量的上限會根據眾多節點和礦工的配置進行自然收斂。

5、比特幣的監管和追蹤

比特幣的匿名特性,使得其上交易的監管變得十分困難。不少非法分子利用其匿名性,通過比特幣轉移資金。例如WannaCry 網路病毒向受害者勒索比特幣,短短三天時間裡傳播並影響到全球150多個國家。
但通過比特幣就可以實現完全匿名化並不現實。雖然交易賬戶自身是匿名的Hash地址,但一些研究成果(如《An analysis of anonymity in the bitcoin system》)表明,通過分析大量公開可得的交易記錄,有很大機率可以追蹤到比特幣的實際轉移路線,甚至可以追蹤到真實使用者。

八、比特幣相關工具1、用戶端

比特幣用戶端用於和比特幣網路進行互動,同時可以參與到網路的維護。
用戶端分為三種:完整用戶端、輕量級用戶端和線上用戶端。
完整用戶端:儲存所有的交易記錄,功能完備。
輕量級用戶端:不儲存交易副本,交易需要向別人查詢。
線上用戶端:通過網頁模式來瀏覽第三方伺服器提供的服務。
比特幣用戶端:https://bitcoin.org/en/download
基於比特幣用戶端,可以很容易實現使用者錢包功能。

2、錢包

比特幣錢包儲存和保護使用者的私密金鑰,並提供查詢比特幣餘額、收發比特幣等功能。根據私密金鑰儲存方式不同,錢包主要分為以下幾種:
離線錢包:離線儲存私密金鑰,也稱為“冷錢包”。安全性相對最強,但無法直接發送交易,便利性差。
本地錢包:用本地裝置儲存私密金鑰。可直接向比特幣網路發送交易,易用性強,但本地裝置存在被***風險。
線上錢包:用錢包伺服器儲存經使用者口令加密過的私密金鑰。易用性強,但錢包伺服器同樣可能被***。
多重簽名錢包:由多方共同管理一個錢包地址,比如2of 3模式下,集合三位管理者中的兩位的私密金鑰便可以發送交易。
比特幣錢包:https://bitcoin.org/en/choose-your-wallet

3、礦機

比特幣礦機是專門為“挖礦”設計的硬體裝置,目前主要包括基於GPU和ASIC晶片的專用礦機。礦機往往採用特殊的設計來加速挖礦過程中的計算處理。
礦機最重要的屬性是可提供的算力(通常以每秒可進行 Hash計算的次數來表示)和所需要的功耗。當算力足夠大,可以在機率意義上挖到足夠多的新的區塊,來彌補電力費用時,礦機是可以盈利的;當單位電力產生的算力不足以支付電力費用時,礦機無法盈利,只能被淘汰。
目前,比特幣網路中的全網算力仍然在快速增長中,礦工需要綜合考慮算力變化、比特幣價格、功耗帶來的電費等許多問題,需要算好經濟賬。

區塊鏈快速入門(七)——比特幣

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.