自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

區(qū)塊鏈分叉帶來(lái)的安全挑戰(zhàn)

區(qū)塊鏈
區(qū)塊鏈分叉分為軟分叉和硬分叉。本文主要探討的是硬分叉,一種不支持向后兼容的軟件升級(jí)方式。

如果要成功分叉一條區(qū)塊鏈并不容易,并非直接復(fù)制原網(wǎng)絡(luò)的代碼即可,需要進(jìn)行基本的修改才能保證它安全運(yùn)行,為此,我們總結(jié)了幾種常見(jiàn)的安全問(wèn)題及防護(hù)方法。

網(wǎng)絡(luò)層

由于分叉鏈?zhǔn)仟?dú)立于原網(wǎng)絡(luò)的區(qū)塊鏈,首先需要在網(wǎng)絡(luò)層(P2P)進(jìn)行隔離:

1、種子節(jié)點(diǎn)

種子節(jié)點(diǎn),也稱(chēng) bootnode 或者 seednode,是區(qū)塊鏈啟動(dòng)時(shí)網(wǎng)絡(luò)首先會(huì)嘗試進(jìn)行連接的節(jié)點(diǎn)。分叉鏈在啟動(dòng)時(shí)首先連接種子節(jié)點(diǎn)列表里的節(jié)點(diǎn),從而進(jìn)一步發(fā)現(xiàn)網(wǎng)絡(luò)中其它的對(duì)等節(jié)點(diǎn),然后才能進(jìn)一步同步區(qū)塊,達(dá)成共識(shí)。因而必須要修改種子節(jié)點(diǎn)列表,防止連接到原網(wǎng)絡(luò)的節(jié)點(diǎn)。

2、異形攻擊

即使種子節(jié)點(diǎn)列表改變了,但并不代表分叉網(wǎng)絡(luò)不會(huì)連接到原網(wǎng)絡(luò),因?yàn)殡p方的 P2P 協(xié)議是相同的,如果有一個(gè)節(jié)點(diǎn)無(wú)意中添加了另外一個(gè)網(wǎng)絡(luò)的節(jié)點(diǎn)連接,那么兩個(gè)節(jié)點(diǎn)將成功握手,并將對(duì)方添加到節(jié)點(diǎn)地址池。不僅如此,雙方節(jié)點(diǎn)還會(huì)將自己節(jié)點(diǎn)里的地址分享給對(duì)方,進(jìn)而造成雙邊網(wǎng)絡(luò)節(jié)點(diǎn)池互相污染。關(guān)于這個(gè)問(wèn)題,慢霧此前曾單獨(dú)披露過(guò)《沖突的公鏈!來(lái)自 P2P 協(xié)議的異形攻擊漏洞》。

為了解決地址池互相污染的問(wèn)題,需要在通信協(xié)議上做網(wǎng)絡(luò)識(shí)別。早期的以太坊并不支持網(wǎng)絡(luò)分隔,但后續(xù)的版本中在協(xié)議里加入了 NetworkID 做為網(wǎng)絡(luò)區(qū)分的標(biāo)志,NetworkID 通常是每個(gè)鏈的 ChainID,例如以太坊主網(wǎng)的 NetworkID 和 ChainID 都為 1,而 ETHW 初始版本中并未對(duì) NetworkID 進(jìn)行分叉,可能存在異形攻擊漏洞。

在比特幣網(wǎng)絡(luò)中,使用的是 Magic 值來(lái)標(biāo)識(shí)不同的網(wǎng)絡(luò),通常在 chainparams 里進(jìn)行定義,例如比特幣主網(wǎng)值為 F9BEB4D9,測(cè)試網(wǎng)值為 FABFB5DA。

共識(shí)層

1、交易隔離

通常與區(qū)塊鏈交互時(shí),我們需要用自己的私鑰簽署一筆交易,隨后這筆交易被廣播到網(wǎng)絡(luò),并被礦工或者出塊節(jié)點(diǎn)打包到區(qū)塊中。但如果區(qū)塊鏈出現(xiàn)分叉,這筆交易可能會(huì)被兩個(gè)網(wǎng)絡(luò)分別打包到不同的區(qū)塊當(dāng)中,假設(shè)這是一筆原鏈上 的轉(zhuǎn)賬,那么分叉鏈上也會(huì)有相同的一筆轉(zhuǎn)賬,顯然這是一個(gè)非預(yù)期行為,會(huì)造成資產(chǎn)損失。

這時(shí)就需要對(duì)交易進(jìn)行重放保護(hù),在早期以太坊的版本中沒(méi)有做這樣的保護(hù),后來(lái) EIP155 之后在交易結(jié)構(gòu)中加入了 ChainID,確保用戶(hù)簽署的交易只用于當(dāng)前網(wǎng)絡(luò)。如果對(duì)以太坊進(jìn)行分叉,那么也需要對(duì) ChainID 進(jìn)行重新定義,當(dāng)然這并不是只修改配置里的 ChainID 這么簡(jiǎn)單,因?yàn)榉植骀溞枰獙?duì)舊的區(qū)塊做兼容,所以需要在分叉高度之后使用新的 ChainID,才能保證分叉鏈正常運(yùn)行。

比特幣的交易結(jié)構(gòu)中不存在 ChainID,那么它是如何做重放保護(hù)的呢?比特幣使用了一種叫做 UTXO 的模型,簡(jiǎn)單說(shuō)它是對(duì)一筆交易(UTXO)進(jìn)行花費(fèi),而不是對(duì)賬號(hào)進(jìn)行花費(fèi),通常全新啟動(dòng)的網(wǎng)絡(luò)不會(huì)存在相同的兩筆交易,也就不存在重放的場(chǎng)景。

但是在硬分叉的情況下,還是會(huì)存在交易重放的問(wèn)題,例如 2017 年的 BCH 分叉以及后來(lái)的BSV分叉。BCH 通過(guò)在交易數(shù)據(jù)簽名添加SIGHASH_FORKID(0x40),使得 BCH 上的交易和 BTC 的交易不再互相兼容,從而達(dá)到重放保護(hù)的目的。

2、算力調(diào)整

在分叉前,原鏈占有全網(wǎng)所有的算力,那么依據(jù) PoW 共識(shí)算法,它的出塊計(jì)算難度也是比較高的。分叉后,算力分散到不同的區(qū)塊鏈上,那么分叉鏈由于共識(shí)不足通常無(wú)法獲得足夠的算力去生產(chǎn)新的區(qū)塊,區(qū)塊的增長(zhǎng)會(huì)陷入停滯。這時(shí)有必要降低分叉后的初始計(jì)算難度,給分叉鏈贏得一個(gè)快速調(diào)整算力的時(shí)間窗口。

3、防范 51% 攻擊

網(wǎng)絡(luò)和交易都隔離開(kāi)了,區(qū)塊鏈分叉了,新區(qū)塊順利產(chǎn)出,一切都看似正常。然而安全問(wèn)題依舊突出,它依舊存在一種更普遍、更難以防御的攻擊:51% 攻擊。

挖礦是逐利的,當(dāng)出現(xiàn)分叉幣時(shí),哪邊的挖礦收益高礦工就會(huì)把算力切換到那個(gè)網(wǎng)絡(luò),但現(xiàn)實(shí)是分叉幣往往幣價(jià)低,導(dǎo)致整體的算力十分低。以 ETHW 分叉為例,我們從 2miners 上看到,原 ETH 網(wǎng)絡(luò)算力峰值最高超過(guò) 900TH/s,而在寫(xiě)稿時(shí) ETHW 的算力只有 30TH/s 左右,大量算力消失并不是好事,它隨時(shí)可以對(duì) ETHW 發(fā)起 51% 攻擊。

對(duì)于這種 51% 攻擊的防范幾乎沒(méi)有什么很好的方法,只能通過(guò)增加確認(rèn)數(shù)來(lái)防范。

應(yīng)用層

我們把建立在交易上的應(yīng)用,如基于虛擬機(jī)的智能合約,統(tǒng)歸為應(yīng)用層。區(qū)塊鏈在分叉時(shí),也會(huì)對(duì)運(yùn)行在區(qū)塊鏈上的應(yīng)用產(chǎn)生巨大影響。

1、簽名重放

簽名重放與上文提到的交易重放是相同道理的,有一些合約,例如 Gnosis Safe,它會(huì)在合約里驗(yàn)證用戶(hù)的簽名,如果簽名里沒(méi)有包含 ChainID,那么這個(gè)簽名非??赡芸梢栽趦蓚€(gè)鏈上重放,導(dǎo)致資產(chǎn)損失。

2、預(yù)言機(jī)失效

分叉后的區(qū)塊鏈多數(shù)智能合約依舊可以正常運(yùn)行,例如 Token 合約、AMM 合約,這些自運(yùn)行系統(tǒng)不依賴(lài)于鏈下數(shù)據(jù)就可以穩(wěn)定運(yùn)行,但類(lèi)似 MakerDAO 等借貸系統(tǒng),高度依賴(lài)預(yù)言機(jī)的價(jià)格數(shù)據(jù),在失去鏈下喂價(jià)支持后,它將無(wú)法繼續(xù)運(yùn)行下去。

3、價(jià)格劇變

區(qū)塊鏈分叉了,一個(gè)應(yīng)用同時(shí)運(yùn)行在兩個(gè)鏈上,用戶(hù)該使用哪個(gè)鏈上的應(yīng)用?哪個(gè)算是“正統(tǒng)”的呢?這個(gè)問(wèn)題又回到了共識(shí)上,通常哪個(gè)區(qū)塊鏈擁有正統(tǒng)的共識(shí),那么它上面的資產(chǎn)就會(huì)保留原有的價(jià)值共識(shí),而另一個(gè)區(qū)塊鏈上的資產(chǎn)會(huì)在瞬間失去價(jià)值。

這種價(jià)格上的劇烈變化,會(huì)導(dǎo)致 DeFi 應(yīng)用徹底崩潰,借貸應(yīng)用永遠(yuǎn)無(wú)法平倉(cāng),有一些有識(shí)之士會(huì)抓住分叉的時(shí)間窗口,把“歸零”的資產(chǎn)通過(guò) AMM 等應(yīng)用兌換成主鏈代幣,從而保留了一些價(jià)值,在 ETHW 分叉事件中,我們觀察到了大量分叉鏈上的套利行為。

總結(jié)

至此,我們從網(wǎng)絡(luò)層、共識(shí)層和應(yīng)用層對(duì)區(qū)塊鏈分叉的安全性進(jìn)行了分析,可以看到其中存在的技術(shù)風(fēng)險(xiǎn),對(duì)于分叉我們需要十分審慎地對(duì)待。并且,不少分叉的背后不僅僅是技術(shù)變革的需要,有的可能存在商業(yè)上的直接利益,例如發(fā)起方在分叉中直接獲取大量的分叉幣,這些都需要用戶(hù)準(zhǔn)確認(rèn)識(shí),避免不必要的損失。

區(qū)塊鏈?zhǔn)且环N去中心化的系統(tǒng),它的升級(jí)不依賴(lài)于單一個(gè)人或組織,因此分叉在區(qū)塊鏈里難以避免,雖然給社區(qū)用戶(hù)帶來(lái)混亂,但也促進(jìn)了系統(tǒng)向前發(fā)展以更好地服務(wù)社會(huì)。

責(zé)任編輯:華軒 來(lái)源: 中金網(wǎng)
相關(guān)推薦

2023-05-10 11:12:14

2020-07-30 13:00:10

區(qū)塊鏈區(qū)塊鏈技術(shù)

2024-02-22 11:23:16

2018-03-23 11:23:14

2021-10-12 16:11:19

區(qū)塊鏈安全比特幣

2022-02-18 14:27:17

區(qū)塊鏈安全技術(shù)

2018-11-22 10:05:02

區(qū)塊鏈數(shù)字貨幣分叉

2018-08-03 16:15:42

區(qū)塊鏈物聯(lián)網(wǎng)企業(yè)價(jià)值

2023-08-02 07:01:37

2022-03-25 13:39:40

區(qū)塊鏈技術(shù)房地產(chǎn)

2019-01-08 14:55:38

2019-02-15 10:04:49

2017-11-24 11:10:38

區(qū)塊鏈礦工分叉

2018-10-21 15:11:02

2009-05-22 18:06:01

虛擬化服務(wù)器存儲(chǔ)

2014-03-21 09:30:29

BYON無(wú)線(xiàn)熱點(diǎn)無(wú)線(xiàn)接入點(diǎn)

2019-11-29 18:10:04

區(qū)塊鏈大數(shù)據(jù)機(jī)器學(xué)習(xí)

2018-06-25 17:05:09

區(qū)塊鏈數(shù)字貨幣比特幣

2018-09-06 14:15:06

區(qū)塊鏈區(qū)塊鏈技術(shù)

2020-11-17 09:33:47

區(qū)塊鏈
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)