快速了解比特幣

比特幣的歷史可以追溯到2008年10月,一個名叫中本聰?shù)纳衩厝宋镌谝粋€密碼學朋克論壇上發(fā)表了一篇比特幣:一種點對點的電子現(xiàn)金系統(tǒng)的文章,這篇文章被看成是比特幣的白皮書。

比特幣具有以下特點:

創(chuàng)建了無需信任中心的貨幣發(fā)行機制;

發(fā)行數(shù)量由程序決定,無法隨意修改;

交易賬本完全公開可追溯,不可篡改;

密碼學理論保證貨幣防偽造,防雙花;

數(shù)字簽名機制保證交易完整可信,不可抵賴和撤銷。

區(qū)塊鏈依靠安全的哈希算法保證所有區(qū)塊數(shù)據(jù)不可更改;

交易數(shù)據(jù)依靠Merkle Hash確保無法修改,整個區(qū)塊依靠Block Hash確保區(qū)塊無法修改;

工作量證明機制(挖礦)保證修改區(qū)塊鏈的難度非常巨大從而無法實現(xiàn)。

使用數(shù)字簽名時,每個人都可以自己生成一個秘鑰對,這個秘鑰對包含一個私鑰和一個公鑰:私鑰被稱為Secret Key或者Private Key,私鑰必須嚴格保密,不能泄漏給其他人;公鑰被稱為Public Key,可以公開給任何人:

數(shù)字簽名的三個作用:防偽造,防篡改,防抵賴。 常用的數(shù)字簽名算法有:RSA算法,DSA算法和ECDSA算法

如果丟失了私鑰,就永遠無法花費對應公鑰的比特幣!

要特別注意,比特幣的地址并不是公鑰,而是公鑰的哈希,即從公鑰能推導出地址,但從地址不能反推公鑰,因為哈希函數(shù)是單向函數(shù)。

比特幣的公鑰是根據(jù)私鑰由ECDSA算法推算出來的,公鑰有壓縮和非壓縮兩種表示方法,可互相轉(zhuǎn)換。

比特幣的地址是公鑰哈希的編碼,并不是公鑰本身,通過公鑰可推導出地址。

通過地址不可推導出公鑰,通過公鑰不可推導出私鑰。

哈希算法輸出長度(bit)輸出長度(字節(jié))

MD5128 bit16 bytes

RipeMD160160 bits20 bytes

SHA-1160 bits20 bytes

SHA-256256 bits32 bytes

SHA-512512 bits64 bytes

比特幣使用的哈希算法有兩種:SHA-256和RipeMD160

比特幣使用兩種哈希算法,一種是對數(shù)據(jù)進行兩次SHA-256計算,這種算法在比特幣協(xié)議中通常被稱為hash256或者dhash。

另一種算法是先計算SHA-256,再計算RipeMD160,這種算法在比特幣協(xié)議中通常被稱為hash160。

比特幣的挖礦原理就是一種工作量證明機制。

實際的難度是根據(jù)bits由一個公式計算出來,比特幣協(xié)議要求計算出的區(qū)塊的哈希值比難度值要小,這個區(qū)塊才算有效:注意,難度值越小,說明哈希值前面的0越多,計算難度越大。

比特幣網(wǎng)絡的難度值是不斷變化的,它的難度值保證大約每10分鐘產(chǎn)生一個區(qū)塊,而難度值在每2015個區(qū)塊調(diào)整一次:如果區(qū)塊平均生成時間小于10分鐘,說明全網(wǎng)算力增加,難度值也會增加,如果區(qū)塊平均生成時間大于10分鐘,說明全網(wǎng)算力減少,難度值也會減少。因此,難度值隨著全網(wǎng)算力的增減會動態(tài)調(diào)整。

比特幣總量被限制為約2100萬個比特幣,初始挖礦獎勵為每個區(qū)塊50個比特幣,以后每4年減半。

比特幣挖礦是一種帶經(jīng)濟激勵的工作量證明機制;

工作量證明保證了修改區(qū)塊鏈需要極高的成本,從而使得區(qū)塊鏈的不可篡改特性得到保護;

比特幣的網(wǎng)絡安全實際上就是依靠強大的算力保障的。

比特幣的支付實際上并不是直接支付到對方的地址,而是一個腳本,這個腳本的意思是:誰能夠提供另外一個腳本,讓這兩個腳本能順利執(zhí)行通過,誰就能花掉這筆錢:

P2PKH(Pay to Public Key Hash)腳本。

使用錢包軟件創(chuàng)建的交易都是標準的支付腳本,但是,比特幣的交易本質(zhì)是成功執(zhí)行解鎖腳本和鎖定腳本,所以,可以編寫各種符合條件的腳本。

智能合約:當一個預先編好的條件被觸發(fā)時,智能合約可以自動執(zhí)行相應的程序,自動完成數(shù)字資產(chǎn)的轉(zhuǎn)移。保險、貸款等金融活動在將來都可以以智能合約的形式執(zhí)行。智能合約以程序來替代傳統(tǒng)的紙質(zhì)文件條款,并由計算機強制執(zhí)行,將具有更高的更低的信任成本和運營成本。

比特幣采用腳本的方式進行可編程支付:通過執(zhí)行解鎖腳本確認某個UTXO的資產(chǎn)可以被私鑰持有人轉(zhuǎn)移給其他人。

以3開頭的地址就是比特幣的多重簽名地址,但從地址本身無法得知簽名所需的M/N。 大型機構(gòu)的比特幣通常都使用多重簽名地址以保證安全。

多重簽名可以實現(xiàn)N個人持有私鑰,其中M個人同意即可花費資金的功能。

多重簽名降低了單個私鑰丟失的風險。

支付比特幣到一個多重簽名地址實際上是創(chuàng)建一個P2SH輸出。

還沒有被下一個交易花費的Output被稱為UTXO:Unspent TX Output,即未花費交易輸出。給定任何一個區(qū)塊,計算當前所有的UXTO金額之和,等同于自創(chuàng)世區(qū)塊到給定區(qū)塊的挖礦獎勵之和。

比特幣區(qū)塊鏈使用UTXO模型,它沒有賬戶這個概念;

重建整個地址-余額數(shù)據(jù)庫需要掃描整個區(qū)塊鏈,并按每個交易依次更新記錄,即可得到當前狀態(tài)。

Segwit地址又稱隔離見證地址。在比特幣區(qū)塊鏈上,以bc開頭的地址,這種地址就是隔離見證地址。使用了Bech32編碼;

比特幣交易的延展性(Transaction Malleability)攻擊。

在某一筆交易發(fā)出但并未落塊的時間內(nèi),對簽名進行修改,使之仍是一個有效的交易。注意黑客并無法修改任何輸入輸出的地址和金額,僅能修改簽名。但由于簽名的修改,使得整個交易的哈希被改變了。如果修改后的交易先被打包,雖然原始交易會被丟棄,且并不影響交易安全,但這個延展性攻擊可用于攻擊交易所。

要解決延展性攻擊的問題,有兩個辦法,一是對交易簽名進行歸一化(Normalize)另一個辦法是把簽名數(shù)據(jù)移到交易之外,這樣交易本身的哈希就不會變化。不含簽名的交易計算出的哈希稱為wtxid,為此引入了一種新的隔離見證地址。

比特幣延展性攻擊的原因是ECDSA簽名總是有兩個有效簽名,且可以相互計算;

規(guī)范ECDSA簽名格式可強制使用固定簽名(例如總是使用較小值的簽名)。

根據(jù)某種確定性算法,只需要管理一個根私鑰,即可實時計算所有“子私鑰”的管理方式,稱為HD錢包。HD是Hierarchical Deterministic的縮寫,意思是分層確定性。先確定根私鑰root,然后根據(jù)索引計算每一層的子私鑰:

HD錢包采用分層確定性算法通過根擴展私鑰計算所有層級的所有子擴展私鑰,繼而得到擴展公鑰和地址;

可以通過普通衍生和硬化衍生兩種方式計算擴展子私鑰,后者更安全,但對應的擴展公鑰無法計算硬化衍生的子擴展公鑰;

通過擴展公鑰可以在沒有擴展私鑰的前提下計算所有普通子擴展公鑰,此特性可實現(xiàn)觀察錢包。

比特幣的BIP-44規(guī)范定義了一種如何派生私鑰的標準,它本身非常簡單:m / purpose' / coin_type' / account' / change / address_index

其中,purpose總是44,coin_type在SLIP-44中定義,例如,0=BTC,2=LTC,60=ETH等。account表示用戶的某個“賬戶”,由用戶自定義索引,change=0表示外部交易,change=1表示內(nèi)部交易,address_index則是真正派生的索引為0~231的地址。

實現(xiàn)了BIP-44規(guī)范的錢包可以管理所有幣種。相同的根擴展私鑰在不同錢包上派生的一組地址都是相同的。

注意:不要自己挑選助記詞,原因一是隨機性太差,二是缺少校驗。

為了解決初始化種子的易用性問題,BIP-39規(guī)范提出了一種通過助記詞來推算種子的算法

根據(jù)助記詞推算種子的算法是PBKDF2,使用的哈希函數(shù)是Hmac-SHA512,其中,輸入是助記詞的UTF-8編碼,并設置Key為mnemonic+用戶口令,循環(huán)2048次,得到最終的64字節(jié)種子。

要特別注意:用戶除了需要記住助記詞外,還可以額外設置一個口令。HD種子的生成依賴于助記詞和口令,丟失助記詞或者丟失口令(如果設置了口令的話)都將導致HD錢包丟失!

HD錢包通過Bloom Filter可以高效監(jiān)控鏈上的所有地址,并根據(jù)是否是本地管理的地址決定如何計算錢包余額。

布隆過濾器(Bloom Filter)原理是將每個元素通過若干個哈希函數(shù)映射成一個位數(shù)組的若干個點,將其置1。檢索的時候,先計算給定元素對應位是否全1,如果是全1,則給定元素很可能存在,否則,元素必定不存在。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容