自製龍珠 去中心管理比特幣遺產

港府昨天入稟申請禁制令,附上 32 條 YouTube 影片鏈接,禁止傳播《願榮光歸香港》(Glory to Hong Kong),企圖避免搜索「香港國歌」時,《願榮光》出現於首位的尷尬。我認為這個做法不錯,希望港府也能申請禁制所有敗壞的書本,好讓小市民如我積極配合,整理香港去中央圖書館時知道該收藏甚麼書目,維護國家安全,免墮法網。

薑糖請放心,Tim Cook 一定會配合中國香港政府下架《願榮光歸香港》,讓姜濤重登冠軍

本週轉一下話題,談談遺產。以往不少人問過 ChatCKX,密碼貨幣的遺產可以怎樣處理,趁這次週報,讓我們公開討論這個華人禁忌。

釐清需求:去中心管理比特幣遺產

就像接案子的斜槓,首先我得釐清需求。標題說的「去中心」(in a decentralized way),是指不依賴單一組織或個人。反過來說,使用傳統的遺產安排,把私鑰交予律師並託付於自己死後轉交受益人,可能會出現甚麼問題,這個不難想像。平日我傾向以「分散式」表達「decentralized」,不過在此語境容易產生「把遺產分散出去」的歧異,唯有沿用「去中心」這個說法。

另外,以下討論的方法其實適用於幾乎任何密碼貨幣,標題說「比特幣」是因為比較好懂,畢竟它是一個超然的存在,是「儲存價值的密碼貨幣」的代名詞,分散程度最高,適合作為遺產的載體。題外話,因此我不主張 BRC-20 等功能。

其次,如果遺產只包含以太幣和其他使用以太坊承載的幣種,可以用一些相對簡單,比較接近地球人習慣的方法管理遺產,這些日後可以再作討論。但以太幣雖然主流,畢竟不是密碼貨幣的全部,使用 solidity 智能合約等方法,沒法處理如比特幣、LikeCoin 等遺產。

最後,我們關心的是自主管理(self-custody)的比特幣,假如資產存放於中心化交易所(centralized exchnage,CEX),以下方法既不適合也不必要,用戶只需要聯繫客戶服務,查詢如何處理身後交易所內資產,比如 Coinbase 就可在提供死亡證後,讓家人接管死者帳號。

反正,只要資產存放於 CEX,而假設交易所於某一國家註冊,傳統的法例就應該能處理遺產。再說,既然生前把大部分資產存放於 CEX,大概也不會覺得處理遺產時需要使用去中心的方式。

SLIP-39:原理等同龍珠

換言之,本文介紹的是在不依賴單一組織或個人的前提下,於死後把管理密碼貨幣資產的私鑰,交予遺產的接管人。

方法說出來其實相當簡單,只是把私鑰分成幾塊碎片分別交予親友,事前拜托他們於自己死後將碎片交予遺產接管人,再把碎片重新組合成私鑰使用。

當然,雖然說來簡單,還是牽涉一些細節:

  1. 把私鑰分成碎片,不是自行按每幾個字切開,把助記詞平分幾份,比如把 24 字的助記詞分成第 1-8、9-16、17-24 詞的 3 份碎片。
  2. 正確的方法是按 SLIP-39 標準,以密碼學原理把助記詞分成 m 份,並指定當中 n 份可以重新合併出完整的助記詞。
  3. 舉例,你可以把助記詞分成 5 份碎片,並設定只要掌握當中的 3 份碎片,就能重新組合出完整的助記詞。
  4. 「n of m」這個選擇,基本原則是 n >= 2、n < m、m >= 3;因為如果 n 小於 2,便完全沒有去中心的效果;如果 n 等於 m,雖然也無不可,但萬一當中任何一人丟失碎片,便永遠無法重新組合出助記詞,換言之也缺乏去中心化避免單點故障的意義,也因此 m 需要是 3 或以上。
  5. 視乎個人情況,2/3、3/4、3/5、4/6、4/7、5/7 等都是合理的安排,可按想要達到的保險程度作決定。

或許你已經發現,假如 n=m=7,就是我們熟悉的七龍珠。不過,如果當年拿美星人製作龍珠時考慮到 n < m 的原則,那麼… 我們就沒有那麼多龍珠的故事可看了。

步驟演示

以下讓我召喚 5 位老朋友,由 Alice 示範如何把私鑰分成 3 份碎片,分別交予 Bob、Carol 和 Dave,並囑咐 3 位朋友在自己死後把碎片交到 Eve 手上。3 位朋友裡面,只要其中 2 位滿足承諾,Eve 就能 召喚神龍 組合出助記詞。

  1. 首先,Alice 需要到 Github 下載打碎和組合助記詞的工具
    https://github.com/likecoin/mnemonic-secret-sharing
    運行該工具需要使用到 Node.js,建議最低用 v14。
  2. Alice 的電腦並未安裝 Node.js,因此先到官網下載並安裝
    https://nodejs.org/en/download
  3. Alice 是 Mac 用戶,使用 Terminal 解壓從 Github 下載的 zip 檔,關掉 WiFi 和所有連線,運行:
    node index.js
    如你是 Windows 用戶,可使用 Command 進行以上操作;至於 Linux 的用戶…不需我多講了吧。
  4. Alice 直接拍 enter,讓程式生成新助記詞並同時分成 3 份碎片。如要把現有助記詞拆分成碎片,可以輸入自己的助記詞(請 DYOR – do your own research)。
  5. Alice 按程序提示,分別回覆 3(m)、2(n)、bob、carol、dave。
  6. Alice 分別抄下屬於 Bob、Carol 和 Dave 的碎片。


  7. Alice 抄下 24 字助記詞自用,無需亦不應向 Bob、Carol 和 Dave 透露。
  8. Alice 把 3 份助記詞碎片分別交予 Bob、Carol 和 Dave,囑咐 3 位於自己去世後把碎片交予 Eve。

注意事項

除了以上步驟,還有些注意事項(best practices):

  1. 以上方法不會暴露 Alice 的錢包地址和資產。
  2. mnemonic-secret-sharing 為以前 LikeCoin 開發團隊實際使用的工具,網上還有其他工具可供選擇,如 SLIP-39 和 Mnemonic Shares 網頁等。這些工具看起來比較「人性化」,但也因此產生若干風險,比如你要怎樣知道一個網頁有否在伺服器端存下你的助記詞等。選用的話,請務必 DYOR。
  3. 考慮人選時注意各種層面的分散,最理想的是 Bob、Carol、Dave 互不認識;最差的是 Bob、Carol、Dave 三者為好友或親人。
  4. Bob、Carol、Dave 不需要也不應該知道除自己外還有多少人、甚麼人持有私鑰碎片。
  5. 所有數位溝通,需使用端對端加密的工具如 Signal。透露私鑰碎片前,應該確認對方身分。
  6. 除了私鑰碎片,Alice 最好同時提供更多資訊予托管人,比如 Eve 的加密聯繫方法,Eve 以外的備選承繼人等等。
  7. Alice 可加入除身故外,其他把碎片交予 Eve 的條件,比如失聯一年,失去人身自由半年等等。
  8. Eve 可預先得悉 Alice 過身後會有人聯繫,碎片的組合方法,資產放在哪些區塊鏈等資料,但沒必要知道碎片托管人的具體身分。
  9. 每年演習,確認 Bob、Carol、Dave 保存好私鑰碎片,避免丟失、沒法辨識自己字跡,誤以為 Alice 開玩笑等各種潛在問題。
  10. Bob、Carol、Dave 的人選除了親朋好友,只要符合以上原則,也可以是機構和律師等。

集齊龍珠 召喚神龍

明白到以上原理,應該就能想到「七龍珠」的具體用法還有很多變化,比如說,遺產除了是資產,也可以是資料和藝術作品,況且對於一位作者來說,作品就是資產。

又例如,以上方法同時產生的效果是,Bob、Dave、Carol 充當了 Alice 私鑰的分散式備份。事實上,Ledger 上月弄得滿城風雨的 Recover 功能,使用的正是這個方法,但分別是 Bob、Dave、Carol 都是由 Ledger 選定,而且身分公開,且是註冊公司,總得聽命於某些政府。

最後,不厭其煩地再次提醒,私鑰以及其碎片是你的資產的藏寶圖,不能公開,也不應以手機拍照,備份到雲端。以上我為作出了「完美」的錯誤示範,貼出了 Alice 的私鑰碎片,有興趣的讀者大可一嚐駭客滋味,透過線索組合出 Alice 的私鑰,偷取裡頭的資產。為免大家空手而回,我特意發送了一些 LIKE 和 3 個本文的 Writing NFT 到 Alice 的默認 LikeCoin 地址,各位手快的話請高抬貴手,不要一次過全部轉走,留點樂趣給手慢的讀者。


Comments

在〈自製龍珠 去中心管理比特幣遺產〉中有 1 則留言

  1. 「hevangel」的個人頭像

    都已經過了這麼久估不到那個地址還有少少PEPE剩。
    上次拿了個NFT,今天路過看看,順手拿走了那些PEPE。
    謝謝。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *