在BCH硬分叉後防止重放攻擊-2
重放攻擊原理和防範措施——如何安全分離BCH的分
第0章 引言
即將面臨的比特幣分裂,如何保證你的幣在分裂後肯定留下兩種幣?一個重點要防範的風險就是重放攻擊。
第1章 重放攻擊原理
首先講明白,重放攻擊其實根本就不是攻擊。目前幣圈流傳的各種關於重放攻擊的言論有點過於危言聳聽了。
重放攻擊,這裡的“攻擊”根本就不是別人對你發起的某種侵略或偷盜行為。而是因為比特幣區塊鏈分裂後的兩個分支鏈,都有相同的地址、私鑰和交易格式。你在分裂點前的幣,自動會被分裂後的兩條鏈都承認。
如果你使用分裂點前的幣發起一筆交易,在兩條鏈上這筆交易都會有效。這就是顯得你發了兩筆交易,這裡的另外一筆,就是“重放”。
我打個比方來解釋這個,在國軍退守臺灣後,蔣公將大陸的很多機構都照樣在臺灣複製了一遍。比如在臺灣也建了清華大學。而在大陸的北京,也是有一個清華大學。
如果你在美國給清華大學寫一封信,就是用紙,讓郵遞員送的那種信。但收件地址上只寫了“中國清華大學XXX收”
這個收件地址即可以解讀為是北京的清華大學,也可以解讀為臺灣的清華大學。這下郵遞員麻煩了,他乾脆將你的信影印一遍,送到兩個大學去。
這就是重放攻擊。因為本來你只想寄給臺灣的清華大學,但現在卻被重放到了北京的清華大學。
所謂的防範重放攻擊,就是想辦法讓你發的交易,只在一條鏈上有效,在另一條鏈上無效。從而可以避免“重放”。
第2章 領取分裂幣
BCH分裂前使用者需要注意的最重要的知識點有兩個,第一個是掌握私鑰。第二個是做好重防保護。
不過我們還是要面對現實,比特幣確實很難用,對很多使用者來說,可能真的搞不清楚私鑰是個啥玩意。第一推薦真的自己去搞清楚來,如果實在是搞不清楚,那就存放在講信用的交易所吧。
分裂後,使用者如何領取分裂幣呢?
領取分裂幣的過程其實非常簡單,只要使用者將私鑰匯入到分裂幣錢包,就完成了領取。
分裂後,第一步需要做的就是確認你有多少分裂幣。這個一般使用區塊鏈瀏覽器就可以查詢的到。一般一個區塊鏈幣誕生後,一定會有一個區塊鏈瀏覽器的,你只需要將你分裂前的收幣地址複製到區塊鏈瀏覽器去檢視一下,就可以知道自己有多少分裂幣了。
現在Bitcoin abc是有區塊瀏覽器的
https://bch.btc.com
Bitcoin sv暫時還沒有找到可用的區塊瀏覽器。
第二步是安裝分裂後的錢包。分裂後,去下載最新的錢包。一般來說下載一個開發者做的完整節點錢包是最為安全的。但因為要下載整個區塊鏈,所以也是最麻煩的。只要你知道如何匯出和匯入私鑰,使用SPV輕錢包也是一樣的,安全性上也是足夠的。
bitcoin abc在這裡下載錢包:
https://download.bitcoinabc.org/0.18.4/
bitcoin sv在這裡下載錢包,目前沒有windows版本的
https://github.com/bitcoin-sv/bitcoin-sv/releases
鑑於目前生態比較混亂,不建議使用輕錢包。
第三步就是匯入私鑰進錢包。
如果使用者使用的是完整節點做錢包,比特幣都保護在wallet.dat檔案裡。當分裂後,使用者只需要重新下載分裂幣的完整節點錢包,並且將wallet.dat檔案匯入進去就可以完成分裂幣的領取了。
如果使用者使用的是輕錢包,則需要你想辦法將原來的私鑰明文匯出,並匯入到分裂幣的輕錢包中。但鑑於目前生態比較混亂,不建議使用輕錢包。
請注意,上述領取分裂幣的過程根本就沒有發生任何的發幣過程。
第3章 使用者主動設計防重放保護
1.在分裂前,請將自己的幣存在自己控制私鑰的地址上。
2.為了保險起見,建議一定要存一個只有小余額(比如0.01BCH)的地址,這個地址裡的幣就是用來測試用的。
3.分裂後,下載新的分裂後的兩個BCH錢包,將私鑰匯入到BCH錢包。
4.分裂後,等一天,到礦池(如果交易所提供提現,就從交易所買)買0.011BCH-abc,和0.012BCH-sv,都往你的地址上發,發就對了。注意一定要帶不一樣的小數尾數。
這一步需要強調一下,為什麼要等一天?因為比特幣的區塊獎勵成熟度是100個區塊,即比特幣挖礦的Coinbase獎勵在100個區塊後才能花。這裡說的從交易所裡買幣,最根本有效的應該是從礦池買分裂後100個區塊的發出來的coinbase幣。因為分裂後的coinbase幣絕對是隻可能在一條鏈上有效,在另一條鏈上是無效的。但為什麼我們覺得從交易所買幣也可能有用呢?是因為絕大多數交易所都會做好幣的防重放保護,否則他們不敢開啟提現功能。
5.然後你將你的錢包同步區塊,你就會發現,在BCH-abc錢包只能收到0.011BCH,而BCH-sv錢包只能收到0.012BCH。這兩筆交易是不能被重放的,因為它們是來自分裂後的區塊。這樣你的幣就被汙染了,就不可能被重放了。
6.將你汙染的幣,全部(注意一定是全部)發到另一個你自己控制私鑰的地址上。這樣操作,哪怕是這筆交易被重放了,因為目標地址的私鑰是你自己控制的,所以哪怕是被重放也是重放到你自己的地址上。
7.記得先使用你分裂前做好的0.01BCH的那個錢包來完成測試。然後再將你的大額錢包做分離。
最後,放輕鬆。重放不是攻擊,沒多大事,只要小心一點,就OK。