5月15日,Coinbase在比特幣現金區塊鏈上檢測了一個depth-2鏈上重組,重組的目標,是被錯誤地發送到比特幣隔離見證地址上的比特幣現金資金,這些地址以前是不可花費的,但是在5月15日比特幣現金硬分叉升級的時候,一部分資金被恢復可以使用了。根據公開數據顯示,重組是由兩名礦工之間算力斗爭造成的,結果讓139萬美元被發送到了最初預定的接收者那里,而8.2萬美元被發送到了未知地址。
第一部分:比特幣現金上的雙重支付
比特幣現金網絡每年會進行兩次硬分叉,這也是他們預定協議升級工作的一部分。最近的一次升級發生在太平洋時間5月15日星期三上午5點,其中主要涉及兩個變化:
1、啟動Schnorr簽名,這種簽名是一種加密簽名系統,也是比特幣現金擴容解決方案發展路線中的一部分;
2、允許隔離見證恢復。隔離見證是一種在比特幣網絡上有效但在比特幣現金網絡上無效的地址格式。但是,比特幣現金代幣偶爾會被發送到隔離見證地址,在這次比特幣現金硬分叉之前,這些地址里的代幣是不能花費的。然而,這次升級改變了這些代幣的狀態,在某些情況下,代幣狀態已經從不可花費變成了可以被比特幣現金礦工認領。
事件時間表
比特幣現金升級發生在太平洋時間5月15日星期三上午5點,這導致礦工會根據新的共識規則生成區塊,區塊582689成為了第一個在升級后規則下生產出的區塊。在太平洋時間上午5點20分到9點05分之間,在比特幣現金分叉幣BitcoinABC上發現了一個漏洞,讓礦工生產出了空區塊,結果導致比特幣現金內存池中的交易擠壓。而在此期間,還沒來得及升級的比特幣現金區塊鏈則被延展到了一個新區塊582680上。
在BitcoinABC實施了漏洞補丁后不久,兩個區塊582698和582699就分別被兩個獨立礦工開采了,這兩個礦工在Coinbase交易中用“unknown”和“Prohasing”字符串標識了這兩個區塊。“Unknown”礦工開采的是區塊582698,其中包括了從1000多個隔離見證地址中花費的比特幣現金交易。
太平洋時間5月15日星期三上午9點10分,Coinbase檢測到一個“雙區塊”區塊鏈重組,區塊高度582698和582699的區塊被一個更長的鏈給孤立出來了,而區塊高度為582698到582701的區塊則是由BTC.top和BTC.com兩個礦池開采的。區塊582701包括了一個獨立的雙重支付交易,而該交易包含了孤立區塊582699。雙重支付交易似乎來自于BSV網絡重播,因為這些交易并不是從隔離見證地址花費,而且看上去和其他雙重支付交易也沒有任何關聯度。
太平洋時間5月15日星期三上午10點零五分,區塊582705被BTC.top開采出來。該區塊包含了1278個交易,這些交易將大部分輸入被雙重支付到了孤立區塊582698中的28個隔離見證花費交易里。但是,孤立交易輸入中有56個沒有被包含在雙重支付交易里,而雙重支付交易輸入中有120個輸入也不在孤立交易的輸入里。所有這些雙重支付都被發送到了與之等效的有效比特幣現金地址上,后續我們會進一步解釋這個問題。
動態 | 火狐瀏覽器添加新選項以自動阻止加密挖掘腳本:據coindesk報道,Mozilla發布了火狐瀏覽器(Firefox)的更新版本,其中添加了一個新選項,使用戶可以選擇自動阻止加密挖掘腳本。[2019/5/23]
太平洋時間5月15日星期三下午12點53分,區塊582715被另一個不知名的礦工開采。這個區塊包含了13個交易,該交易輸入被雙重支付到了之前孤立區塊582698中28個隔離見證花費交易里的25個交易。孤立交易的輸入中有1181個沒有包含在雙重支付交易中,因為其中許多輸入已經在區塊582705中使用了,同時雙重支付交易里的564個輸入也不在原始孤立交易輸入里。點擊此鏈接,可以看到一個交易實例,其中第六個輸入被區塊582715內包含交易的第三十個輸入重復使用了。這些雙重支付被發送到了13個比特幣現金地址,我們會在附錄A中提供這些地址的具體信息。基于區塊鏈分析,我們相信所有地址已經把他們的資金轉移到了Bitfinex和HitBTC兩家加密貨幣交易所。
雙重支付分析
這次涉及到雙重支付的交易總數為29筆,涉及的比特幣現金數量為3796BCH,雙重支付交易被分成了三組:
1、區塊582701中1筆交易,包含4BCH,但似乎這筆交易與其他雙重支付無關;
2、區塊582705中有1278筆交易,包含3655BCH,其中有將隔離見證地址的比特幣現金花費到了有效的等值比特幣現金地址;
3、區塊582715中有13筆交易,其中有極可能將隔離見證地址里的比特幣現金發送到了被前文提及的“Unkown”礦工控制的比特幣現金地址,這些交易包含的輸入并沒有包含在BTC.top開采出的582705區塊里。
根據我們檢查得出的結論,在區塊582705中雙重支付的隔離見證輸入被發送到了它們最初的預期接收者。這意味著,挖掘區塊582705的礦工能夠將有效的比特幣現金等價物到處到無效的隔離見證地址,這種做法其實和此前那個“Unknown”礦工對孤立區塊582698和主鏈區塊5827015的做法是一樣的。唯一不同的是,BTC.top決定將這些資金發送給最初的預期接收者。
基于這些事實,似乎有一個算力在搶奪認領已經發送到隔離見證地址的比特幣現金。在之前硬分叉升級被激活之后的幾個小時,BitcoinABC阻止了比特幣現金礦工驗證區塊中所有交易,所以這場爭奪戰從很早時候就已經開始了。區塊582698包含了從隔離見證地址發送到與“Unknown”礦工關聯地址的比特幣現金花費。重組從主鏈中刪除了這些花費,接著這筆花費被區塊582705中隔離見證地址內等值的比特幣現金給替換了。之后,區塊582715被“Unknown”礦工開采,該礦工收集了剩余交易,而且還把保留在隔離見證地址里的一小部分比特幣現金發送到了一個未知地址。基于這些區塊中的Coinbase數據,Coinbase認為挖掘主鏈區塊582715的礦工和挖掘孤立區塊582698的礦工是同一個“人”。
聲音 | 眼鏡蛇Cobra評論V神:籌資制造量子計算機挖掘比特幣是騙子行為:比特幣官方論壇Bitcoin.org持有人Cobra評論V神稱,你的預估能力沒有問題,你只是在說謊,你一直就知道制造出挖掘比特幣的量子計算機的可能性為0%,但你為了錢騙了大家。此前,Cobra評論V神稱,你和Craig Wright的共同點在于你們都是騙子和技術人員。你正在籌錢建造一臺挖掘比特幣的量子計算機,但這幾乎是不可能完成的。稍后V神回復,我認為這個項目有大約1-10%的成功機會,所以并不是沒有成功的可能,如果成功,它將產生的巨大的影響是值得投入資源的。后來我意識到我對該項目的估計過高了,我被騙了。[2018/11/13]
雙重支付交易樣本
以下是來自區塊582698“Unknown”礦工的樣本交易,其中包含了從一些隔離見證地址花費的比特幣現金代幣交易。在這次比特幣現金硬分叉升級之前,這些代幣是無法被訪問的。
圖一:孤立隔離見證交易樣本
在上面的交易ebc4中,“Unknown”礦工將46個輸入花費在了“1My1”開頭的單個地址上……這個交易輸入的獨特之處在于它們都是隔離見證地址,比如上圖中特別圈出的“35hL”開頭的那個地址。
下圖中是出現在區塊582705中的交易,該交易被雙重支付在了上述樣本里。需要注意的是,那個“35hL”開頭的隔離見證地址也是該交易的輸入,這導致下面那個交易變成了雙重支付。
圖二:區塊582705“e872”開頭地址的雙重支付交易
BTC.top沒有像“Unknown”礦工那樣聚合隔離見證輸入,而是將相同的輸入雙重支付到了單獨的抵制。這些單獨的抵制其實是無效隔離見證抵制上的有效等值比特幣現金。舉個例子,來自“35hL”開頭的隔離見證地址中所有的資金轉移到了“1EVW”開頭的有效比特幣現金地址。
為了更好地理解這個操作是如何完成的,我們需要再深入研究一下隔離見證地址的運作機制。
第二部分:從隔離見證地址花費比特幣現金
作為5月15日比特幣現金硬分叉升級的一部分,比特幣現金網絡對清除堆棧規則做了例外處理,目的是為了允許在隔離見證地址恢復比特幣現金。只要滿足下面兩個條件,修改清除堆棧規則就能讓任何人在隔離見證地址上花費比特幣現金:
條件一:公鑰哈希、或與隔離見證地址相關的解鎖腳本是已知的,將資金發送到隔離見證地址時并不會泄露這些信息,但是從隔離見證地址發送資金的過程中會選址這些信息。因此,如果一個特定的隔離見證地址已經接收到了比特幣現金,但隨后又在比特幣區塊鏈上發送了比特幣,那么在比特幣現金網絡上也會顯示花費了同樣金額的資金;
分析 | 針對iPhone的加密挖掘攻擊軟件增加近400%:據Cryptovest報道,Check Point最新的全球威脅指數顯示,研究人員發現,針對iphone的加密挖掘惡意軟件攻擊增加了近400%。其中,在9月的最后兩周出現了激增,如此同時針對Safari瀏覽器用戶的攻擊也顯著增加。根據Check Point的數據,Coinhive自2017年12月以來一直被認為是最大的威脅。現在其不同之處在于,挖掘腳本運行在更多iOS平臺用戶經常訪問的站點上。在加密貨幣挖掘惡意軟件中,一種名為Dorkbot的蠕蟲病排名第二;XMRig最近較少被用于攻擊,降至第八位。[2018/10/16]
條件二:礦工必須同意開采這筆交易,因為從隔離見證地址花費的比特幣現金交易并不是標準交易,這意味著雖然他們是有效的交易但不會通過網絡傳播,因為網絡節點拒絕中繼轉發非標準交易。
恢復P2WPKH隔離見證資金
正如我們之前所提到的,為了在比特幣現金網絡上將花費資金意外地發送到P2WPKH隔離見證地址,礦工必須要知道改地址的公鑰哈希。公鑰哈希有兩種獲取方式,一種可以直接從地址所有者那里獲得,另外如果相同的隔離見證地址已經在比特幣區塊鏈上花費了資金,那么就能從比特幣區塊鏈上對應的交易中提取。
舉個例子,在下面這筆交易中,比特幣現金被發送到了“35hL”開頭的隔離見證地址
圖三:在比特幣現金網絡上向一個隔離見證地址發送資金
之后,一筆轉賬交易在比特幣網絡上相同的隔離見證地址上完成,對應的比特幣后來又從這個隔離見證地址上被花費掉,此時改地址的公鑰哈希就顯示出來了。
圖四:在比特幣網絡上發送一個樣本隔離見證地址
下面那筆交易,是將比特幣存入到了比特幣網絡上的隔離見證地址,上面那筆交易在一個區塊之后花掉了這些比特幣,而上面那筆交易里包含之前隔離見證地址的公鑰哈希,其原始格式如下所示:
{“txid”:”3ffbf713629fcf66ae6e7155c1f931ad3e6108e47d557c247831c1b7f617a266",”hash”:”469395c9292e04f0b476b77d420d882ecf7bb67be01c0314b503802e26705d32",”version”:1,”size”:249,”vsize”:167,”weight”:666,”locktime”:0,”vin”:,”sequence”:4294967295}],”vout”:[{“value”:0.01542272,”n”:0,”scriptPubKey”:{“asm”:”OP_DUPOP_HASH1604aed1e7a21ee87a69be93dbeda198d65752ff73aOP_EQUALVERIFYOP_CHECKSIG”,”hex”:”76a9144aed1e7a21ee87a69be93dbeda198d65752ff73a88ac”,”reqSigs”:1,”type”:”pubkeyhash”,”addresses”:
動態 | 印度3萬臺路由器被加密貨幣挖掘惡意軟件侵襲:據thenextweb報道,加密貨幣挖掘惡意軟件侵襲巴西數十萬臺路由器之后,黑客已經破壞了印度另外3萬臺路由器。互聯網安全部門Banbreach提道,在過去的一個月中,在印度受感染路由器的數量翻了一番。受感染路由器最多的前三大城市增長率為500%。[2018/10/6]
}},{“value”:0.00049692,”n”:1,”scriptPubKey”:{“asm”:”0532b4f8533e6a0d51ee537ec48319228b374f4cb”,”hex”:”0014532b4f8533e6a0d51ee537ec48319228b374f4cb”,”reqSigs”:1,”type”:”witness_v0_keyhash”,”addresses”:}}]}
一旦5月15日的比特幣現金硬分叉升級修改了清潔堆棧規則,意味著比特幣現金礦工可以使用上述公鑰哈希將隔離見證地址中的資金花費掉,舉個例子,下面這筆交易就花費了相關資金:
圖五:在比特幣現金網絡上花費了一個隔離見證地址里的資金
如果查看原始數據的話,你可以在比特幣網絡上找到與上述比特幣網絡里這筆交易完全相同的公鑰HASH160:
{“txid”:”e872243f11d82ee348b2ae736dccd6b432f719e88c778b5513489f890c19a56d”,”hash”:”e872243f11d82ee348b2ae736dccd6b432f719e88c778b5513489f890c19a56d”,”version”:1,”size”:108,”locktime”:0,”vin”:,”vout”:}}]}
因此,一旦比特幣現金清潔堆棧規則被修改,那么來自比特幣區塊鏈上這個地址的資金可以被任何一個比特幣現金礦工花費,只要那個地址里有比特幣現金存在。在區塊582698和582699里交易的情況下,對應的比特幣現金就會被花費到未知地址上。但是在出現雙重支付的區塊582705交易情況下,比特幣現金是在一些特殊地址上被花費了。
那么,BTC.top如何能夠挖掘到特定的隔離見證交易呢?答案其實就是在上文中提到的,他們的目標地址其實與原始隔離見證地址被相同的私鑰控制。一旦你知道了隔離見證地址的公鑰哈希,那么就可以很容易找到對應的比特幣現金地址——這也是要花費這筆錢的首要條件。生成這個地址所使用的方法,其實就是普通的比特幣/比特幣現金地址推導算法,只是中間跳過了HASH160這個步驟,因為我們已經從公鑰哈希中獲得了對應的哈希:
$echo‘93fdaf42a7b8e82fede6fe0f6184536a11193cce’|bxaddress-encode
動態 | 請愿平臺屏幕保護程序利用閑置計算機挖掘加密貨幣:據newsbtc消息,在線請愿平臺Change.org創建了一個屏幕保護程序,將閑置的計算機系統用作比特幣挖礦。獲得的收益將用于資助Change.org基金會。[2018/7/17]
1EVWEWrvrjcpHXPtEvY3D4JfWLrzRVtMQc
通過將資金發送到與隔離見證地址具有相同私鑰控制的那個地址,礦工就能訪問此前無法恢復的資金,并花費這筆錢。
恢復P2WSH隔離見證資金
上面的示例僅適用于發送到P2WPKH類型的隔離見證地址,但是還有另一種類型的隔離見證地址:P2WSH。以下是恢復由比特幣BTC.top玩家資金的一個示例交易,其中就展示了一個P2WSH的隔離見證地址:
圖六:從一個P2WSH隔離見證地址回復資金
需要注意的是,“3G8Z”開頭的那個隔離見證地址被發送到了一個“35VG”開頭的P2SH地址,而不是“1”開頭的P2PKH地址。“3G8Z”開頭的地址,其實是一個多重簽名P2SH腳本,該腳本最初是在比特幣改進提案BIP-141中被定義的,因此也使得交易恢復變得更加復雜。
與P2WPKH一樣,解鎖腳本可以從比特幣網絡上相應的交易中獲取:
{“txid”:”085685b104a6ee79d90546a27873d52fdf9cd252aa714d4f533a780bfe31dd88",”hash”:”300564866319ba006cfecea46b354c649c5f91fe778f5857091977efd11824c0",”version”:1,”size”:408,”vsize”:216,”weight”:864,”locktime”:0,”vin”:
[{“txid”:”acc8ef9eca068e36062b050321fd8e4adf13bcad49718eb4f992e29c6426a512",”vout”:1,”scriptSig”:
{“asm”:”0020883a730777b7119f563b84221abd5c742665f659d4c835ad771fb0bfb21064be”,”hex”:”220020883a730777b7119f563b84221abd5c742665f659d4c835ad771fb0bfb21064be”},”txinwitness”:
,”sequence”:4294967295}],”vout”:
[{“value”:0.01848363,”n”:0,”scriptPubKey”:{“asm”:”OP_HASH160c55c269abd40a8d21519d44b030c7d14e1ecd544
OP_EQUAL”,”hex”:”a914c55c269abd40a8d21519d44b030c7d14e1ecd54487",”reqSigs”:1,”type”:”scripthash”,”addresses”:
}},
{“value”:0.0262,”n”:1,”scriptPubKey”:{“asm”:”OP_DUPOP_HASH16089e5e15821fe9c9ec96b078c0e1ed72db3743589OP_EQUALVERIFYOP_CHECKSIG”,”hex”:”76a91489e5e15821fe9c9ec96b078c0e1ed72db374358988ac”,”reqSigs”:1,”type”:”pubkeyhash”,”addresses”:
}}]}
獲得使用腳本簽名確認的原始隔離見證地址的HASH160,這樣就可以用于恢復交易了:
$echo‘0020883a730777b7119f563b84221abd5c742665f659d4c835ad771fb0bfb21064be’|bxbitcoin160|bxaddress-encode-v5
3G8Z2tdL1GwC9NcjBC6Ycghnc84cJshN1f
但是,為了將這些錢發送到比特幣現金網絡上的非隔離見證地址,我們就必須要查看比特幣交易隔離見證部分中的解鎖腳本。注意上面最后一個txinwitness條目,它定義了一個多簽名腳本,可以按如下方式解碼:
$echo
‘5221026965ff50ba461b7bc54ae88c5dd45f334db242d0bf63a5bd5a6158835784b8f82102f864ea0765243a045bf572b6f62bb2ccd0c736ffcda21442ecc252eb32c388262103e3f2e6c762fd7aeafcd390b492accf5cd1108cf1eff1b8f78f76a56442e8684e53ae’|bxscript-decode
2
3checkmultisig
為了在比特幣現金網絡上復制同樣的行為,我們需要基于上面完整的檢查多重簽名(checkmultisig)腳本生成等效的P2SH地址:
$echo
‘5221026965ff50ba461b7bc54ae88c5dd45f334db242d0bf63a5bd5a6158835784b8f82102f864ea0765243a045bf572b6f62bb2ccd0c736ffcda21442ecc252eb32c388262103e3f2e6c762fd7aeafcd390b492accf5cd1108cf1eff1b8f78f76a56442e8684e53ae’|bxbitcoin160|bxaddress-encode-v5
35VGQpXdATDdkArZpafKwCMJRsoFwi6Gab
這個地址對應于BTC.top在恢復交易中使用的那個地址,兩個地址是一樣的,并且可以由比特幣現金網絡上同一個預期接收者解鎖。
總結
Coinbase的調查正在進行中,不過Coinbase的分析范圍僅限于雙重支付交易。但需要注意的是,有些在隔離見證地址上花費的比特幣現金交易并不是雙重支付,因此不會被包含在本次分析之中。現在的重點在于需要充分了解究竟有多少比特幣現金被發送到了隔離見證地址,目前在隔離見證地址中到底還有多少比特幣現金,在隔離見證地址內能夠被花費的比特幣現金數量有多少,以及還有多少比特幣現金被發送到了不相關的地址。
上述隔離見證恢復機制,是通過收集比特幣區塊鏈上記錄的公鑰、或是解鎖腳本數據來實現的。由于這些信息時公開的,因此也創造了一個競爭條件,而這也意味著在BTC.top礦池有機會執行隔離見證恢復之前,未知礦工其實有可能已經嘗試將這筆錢花費出去了。
不過,Coinbase發現BTC.top通過技術解決方案將用戶錯誤丟失的比特幣現金給恢復了,而且他們選擇將這些錢還給目標收款人,而不是占為己有。
附錄A
在區塊582715中被礦工挖出的恢復隔離見證地址資金的比特幣現金地址:
qzgxrv03axyj43tlghez3lfx0w7qgzc4lupuuhn7rj
qreyu2fng05c8pu2dgt5qlrm4fnhqeqg4shqaetvqx
qr505me362r482zmztpf374trh0azme4xuwanu94l0
qrt28quv2ur4rk27mj5ts0c0z9akqgl9ss34xfpc9p
qpczrc2ueqc0lfp72u9fh08um8a3nqlgyclz3q00a6
qr586dnpnc9nysv4e00z8zzc5nanxamy8ggaanuktq
qrwertpzqn53xhhcy9r5rgl4qglzu64tgs6pxry5kh
qz2mjv4gurwxr2qm9yurke4le6tl7w9hsqzzjnc06r
qp8ap9hhuljhegylvqcg5t05a5tddzt565pdf83jxj
qp3y94tyrvjn5y38sh02mq87g2j7hrktyy2tnrut7k
qpxw8w8yh5xhq9w2hxzfse9qyq6u0yx3q57nzvh46n
qqtzhnu2th0f5u8ay3wrp8v7ugkmvp7ypuqc4lfyuu
qpu7jawy36a7cvamcyc2y4lgn7ckq0pwpg3r9tydc3
尊敬的用戶: K網國際站將于新加坡時間2019年5月31日上線PS。已于2019年5月27日10:00開啟PS的充提幣服務,5月31日10:00正式開啟交易.
1900/1/1 0:00:00晚間BTC走勢逐漸膠著,布林帶縮口逐漸縮小,量能也漸漸處于萎靡狀態,截止到晚間19時,成交量僅120億元,凈流出不到1億元,多空雙方市場的意志也在減弱,持倉比例接近持平.
1900/1/1 0:00:00Etherscan的數據顯示,6月1日以太坊網絡新增了19.5萬個新地址,創下2018年1月以來新高。同時,以太坊的交易量也達到了一年多來的最高水平,6月1日以太坊交易量超過95萬筆.
1900/1/1 0:00:00針對當前區塊鏈行業日益突出的安全問題,6月21日,在中國區塊鏈安全高峰論壇上,大會倡議發起中國區塊鏈安全聯盟.
1900/1/1 0:00:00LinuxKernel開發者RustyRussell表示了對區塊獎勵逐漸減少的擔憂。他在近期近期發表的文章中質疑了加密資產管理平臺Interchange聯合創始人DanHeld的觀點,后者認為隨.
1900/1/1 0:00:00據TokenGazer數據顯示,BTC價格早間從$8500下挫至$7900左右。市場對此有較多解讀,其中呼聲較高的是來自Coinbase的砸盤.
1900/1/1 0:00:00