用OP_CLTV解決QuadrigaCX交易所冷錢包私鑰丟失難題
近日,QuadrigaCX交易所CEO意外死亡,由於交易所冷錢包的私鑰只有其自己知道,導致冷錢包被鎖死,其中的代幣全部丟失,直接損失1.4億美元。那麼,怎麼才能避免這種情況的發生呢?網上一些文章提出用多重簽名技術來實現,但這需要CEO對其他高管的信任,相信他們不會揹著自己聯手轉移資金,這在很多場合下是不現實的。 其實,比特幣(包括BCH和BSV)提供了一個CHECKLOCKTIMEVERIFY指令(OP_CLTV)可以解決這個兩難問題。CEO只需要將冷錢包中的資金轉到下述指令碼的P2SH地址即可:
OP_IF <now + 1 year> OP_CLTV OP_DROP 2 <CFO's pubkey> <COO's pubkey> <CTO's pubkey> 3 OP_CHECKMULTISIG OP_ELSE <CEO's pubkey> OP_CHECKSIGVERIFY OP_ENDIF
OP_IF後面2行指令允許公司CFO、COO、CTO三人中的任意兩人可以花費資金,但必須在本交易打包的一年以後才行,在一年內幾遍他們提供了正確的簽名也無法完成轉賬。這樣可以避免他們在未經CEO同意的情況下串謀轉移資金,保護冷錢包資金的安全。
正常情況下,CEO可以隨時花費這個地址的資金,萬一CEO意外身亡,在該交易打包的一年以後,公司的CFO、COO、CTO可以利用2-of-3多重簽名將資金轉出。也就是說,最多等待一年時間,冷錢包中的資金就可以正常使用了,客戶只是需要等一段時間,而不會有實際的資金損失。
CEO需要做的就是每隔一年時間,重新將資金轉移到一個新的P2SH地址中,指令碼內容與上述程式碼所示一樣,只要修改一下到期時間即可。
對於其他幣種,也都有類似的手段來實現上述操作,本文就不一一贅述了。