解說加密貨幣(2):如何儲存冥幣

上次寫完《解說加密貨幣(1):以冥通銀行的冥幣為例》之後,有陰間的朋友向我追問加密錢包的問題。這也難怪,對於陰間的朋友而言,加密冥幣是否可行,很大程度上取決於使用上是否方便可靠。尤其是第一次來陰間報到的民眾,能夠安全地保管身上的冥幣是非常重要的。因此,今天我就再寫寫加密錢包。

 剛到達陰間的民眾

加密錢包雖名「錢包」,裡面裝的卻不是錢,而是由數字和英文字組成的私鑰 (private key) 和公鑰 (public key)。私鑰是一條隨機的字串,相當於交易密碼。

在區塊鏈的世界裡,錢只不過是一筆數據,記錄著每個帳戶的結餘。交易是把新的結餘寫進區塊鏈,而進行交易的智能合約是一個電腦程式。至於加密錢包裡的鑰匙,則是用來驗證進行交易時的權限。

以下我繼續以 EOS 為例,示範如何用 EOSIO 設定加密錢包。

首先我們要製作私鑰和公鑰。方法很簡單:

cleos create key --to-console
Private key: 5Jm2KdmKoyEqJ5YUZ6Z69HJQDkmaP1fEMErovB2Wpckg7GfYffX

Public key: EOS8mczb2J2ReZA16V6azDzQtZS3vBcAvnDwCpY3BArSUWNjCeVGT

cleos create key --to-console
Private key: 5Jy9mAuwKRZYHP97q9gu5kEM1gyVJfnMGYdcFZZvAerwnsRgDLB

Public key: EOS4usEvHui3nRUuX1SJtnNdxEwRwoiChGMZCxGqVzVPih6mcyvVM

私鑰是一串隨機字串,由私鑰可以產生公鑰,反過來則不行。私鑰像密碼一樣重要,千萬不要丟失,也不能隨便公開。(上面的兩條私鑰是用來示範的,沒有連到我的任何加密錢包,不用打我主意。)

至於要執行兩次,是因為在 EOSIO 中,每個帳戶都要有 owner 及 active 兩對鑰匙。在下面的命令中,我為剛來的 trump 建立一個冥幣帳戶,並同時匯入兩對鑰匙的公鑰:

cleos create account eosio trump EOS8mczb2J2ReZA16V6azDzQtZS3vBcAvnDwCpY3BArSUWNjCeVGT EOS4usEvHui3nRUuX1SJtnNdxEwRwoiChGMZCxGqVzVPih6mcyvVM
executed transaction: 3465c244208a591b47851251da2e6f77a7640a1d796e0f8e86de6e96759a4500 200 bytes 813 us

# eosio <= eosio::newaccount {"creator":"eosio","name":"trump","owner":{"threshold":1,"keys":[{"key":"EOS8mczb2J2ReZA16V6azDzQtZS3...

warning: transaction executed locally, but may not be confirmed by the network yet ]

就是這麼簡單。以下顯示 trump 的資料,可以見到兩條公鑰都放在裡面了:

cleos get account trump
permissions:

owner 1: 1 EOS8mczb2J2ReZA16V6azDzQtZS3vBcAvnDwCpY3BArSUWNjCeVGT

 active 1: 1 EOS4usEvHui3nRUuX1SJtnNdxEwRwoiChGMZCxGqVzVPih6mcyvV
M
memory:
 quota: 83.89 KiB used: 3.365 KiB
...

但是 trump 仍未能使用他帳戶裡的冥幣,我們還得為他建立相應的加密錢包:

cleos wallet create -n trumpWallet
Creating wallet: trumpWallet

Save password to use in the future to unlock this wallet.

Without password imported keys will not be retrievable.

"A MASTER PASSWORD"

把剛才用來建立 trump 戶口的兩條私鑰加進錢包中:

cleos wallet import --private-key 5Jm2KdmKoyEqJ5YUZ6Z69HJQDkmaP1fEMErovB2Wpckg7GfYffX
imported private key for: EOS8mczb2J2ReZA16V6azDzQtZS3vBcAvnDwCpY3BArSUWNjCeVGT

cleos wallet import --private-key 5Jy9mAuwKRZYHP97q9gu5kEM1gyVJfnMGYdcFZZvAerwnsRgDLB
imported private key for: EOS4usEvHui3nRUuX1SJtnNdxEwRwoiChGMZCxGqVzVPih6mcyvVM

這就完成了。我們可以查看錢包中的鑰匙:

cleos wallet private_keys -n trumpWallet
password: [[
    "EOS6QgmYLX4oM8r6768WRGRLS7z71F6wa2KeTRyutepDSDHj5GusP",
    "5Jm2KdmKoyEqJ5YUZ6Z69HJQDkmaP1fEMErovB2Wpckg7GfYffX"
  ],[
    "EOS4usEvHui3nRUuX1SJtnNdxEwRwoiChGMZCxGqVzVPih6mcyvVM",
    "5Jy9mAuwKRZYHP97q9gu5kEM1gyVJfnMGYdcFZZvAerwnsRgDLB"
  ],
...
]

由這個例子可見,所謂的錢包,只不過是一個儲存密碼鑰匙的電腦檔案而已。現在 trump 只要好好保管這個錢包的數據,尤其是當中的私鑰,便可以隨時提取他的冥幣了!

不過對於一般民眾來說,要使用這樣的錢包始終有些不便。於是,便有人開發出一些電腦軟件或手機APP形式的加密錢包。下圖是我用的 Secrypto,用來保管我寫文章賺回來的 LikeCoin:

加密錢包的手機APP示例

圖中的 0xda35… 是錢包的公開位址,類似於上面的公鑰,可作收款之用。如果加密冥幣成功發行,陽間的朋友只要知道類似的公開位址,便能用手機APP向陰間的親友匯款。如此無火匯款,既安全方便又可防止加劇陽間碳排放,實為一石數鳥之舉也。而右上角寫著 Private Key 的字樣,代表這個錢包還儲存著我的私鑰,情況跟上面用 EOSIO 來保存私鑰相同。

(註:此處 LikeCoin 乃係以太網上的加密貨幣,跟我上面用來做示範的 EOS 不同。至於未來的加密冥幣要在哪一個區塊鏈上發行,有待地府當局確認。)

有些人擔心,以數碼格式儲存私鑰會有被盜的危險,於是他們會選擇把密碼鑰匙印在紙上,然後放在安全的地方,這也不失為一個辦法。至於記性夠好的朋友,當然也以用記的。

但是請留意,私鑰是進入加密錢包的唯一憑證。尤其對於陰間的朋友而言,雖然加密冥幣不會像紙幣般容易丟失,但是十殿閻羅裡有那麼多驚險場面,萬一被鬼差嚇完之後忘記了私鑰就慘了。

就算沒有被嚇壞,最後喝完孟婆的 magic tea,甚麼公鑰私鑰都會忘記得一乾二淨,這是目前加密冥幣所遇到的最大技術困難,據悉銀行方面正與孟婆亭接洽商討對策。在解決問題之前,找個安全的地方放好一份後備的私鑰還是有必要的(例如以胎記的形式印在身上)。

孟婆亭 (Meng Po’s Magic Tea Cafe)

以上便是加密錢包的大概情況。跟上一篇文章一樣,這篇文章也不是技術教程,只是想展示加密錢包的具體做法,讓大家有個明確的概念。至於技術教程,有機會再寫。

About the Author

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *